vuejs+element UI table的常见的属性及事件

2023-11-12

一.table组件的方法,事件

查看官网

二.常用的事件,属性

(一).属性

1.多选框(type = "selection") 需要实现勾选的功能

在<el-table> 内加入<el-table-column type="selection" width="55"></el-table-column>

2.  :data="tableData"  是table的数据绑定

<el-table :data="tableData">

export default {   
	data() {
		return{
			tableData: [],
		}
	}
}

3.formatter  用来格式化内容  

对table的值进行处理。Function(row, column, cellValue, index){}

A.使用formatter需要注意以下几点:
  ①无论formatter出何种形式,格式化出的DOM一定都是被包含在默认的div标签内
  ②在写formatter函数时要保证有值返回,否则单元格没有内容可展示,所以if的时候别忘了else

  ③formatter函数不会作用在列属性checkbox为true的单元格上,checkbox列是组件预留的。

B。查看小demo

<template>
	<el-table :data="tableData3"  ref="multipleTable">
		<el-table-column type="selection" width="55" ></el-table-column>
		<el-table-column type="index" label="序号" width="60"></el-table-column>
		<el-table-column prop="sex" label="性别" width="100" :formatter="formatSex"></el-table-column>
		<el-table-column prop="date" label="日期"></el-table-column>
		<el-table-column prop="name" label="姓名"></el-table-column>
		 <el-table-column prop="IsAudit"  :formatter="formatterColumn" label="审核状态" ></el-table-column>
		<el-table-column prop="address" label="地址"></el-table-column>
	</el-table>
</template>
<script>
export default {   
	data() {
		return {
	        tableData3: [{
	        	id:'1',
				date: '2016-05-03',
				name: '王小虎',
				address: '上海市普陀区金沙江路 1518 弄',
				IsAudit:0,
				sex:'1'
	        }, {
	        	id:'2',
				date: '2016-05-02',
				name: '王小虎',
				address: '上海市普陀区金沙江路 1518 弄',
				IsAudit:1,
				sex:'0'
	        }, {
	        	id:'3',
				date: '2016-05-02',
				name: '王小虎',
				address: '上海市普陀区金沙江路 1518 弄',
				IsAudit:10,
				sex:'-1'
	        }]
	    }
	},
	mounted() {
	},
	methods: {
		formatSex: function (row, column, cellValue, index) {
			return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
		},
		//状态改成汉字
        formatterColumn(row, column) {
            switch(row.IsAudit){
                case 0:
	                return '未通过';
	                break;
                case 1:
	                return '审核通过';
	                break;
                case 10:
	                return '待审核';
	                break;
                case 9:
	                return '草稿';
	                break;
                default:
                	return '未知';
            }
        }
    }
}
</script>

4.给table 的字段 设置相应的颜色

<el-table-column label="第三方扎帐" >
              <template slot-scope="{row}">
                  <span style="color:red;" v-if="row.status ==2"  @click="handleModifyStatus(row)">短款-700.00/3笔</span>
                  <span style="color: #1890ff;" v-else-if="row.status == 3"  @click="handleModifyStatus(row)"> 长款+100.00/1笔</span>
                  <span v-else>一致</span>
              </template>
            </el-table-column>

5.selectable (row, index)  是否可以选中

注意:仅对 type=selection 的列有效,类型为 Function,Function 的返回值用来决定这一行的 CheckBox 是否可以勾选

使用:

<template>
	<el-table :data="tableData3"  ref="multipleTable" @row-click="handleCurrentChange">
		<el-table-column type="selection" width="55"  :selectable="selectable"></el-table-column>
	</el-table>
</template>
<script>
export default {   
	methods: {
        selectable(row, index){
        	if(index === 1){
        		return true;
        	}else{
        		return false;
        	}
        }
    }
}
</script>

只有第二条是可以选中 其他不能

6.element table 禁止拖动

只需要添加个el-table-column 上添加 :resizable="false"

7. el-table 与el-checkbox 结合使用

<el-table :data="tableData" border style="width: 100%">
            <el-table-column prop="name" label="姓名" />
            <el-table-column prop="val1" label="报警通知">
                <template slot-scope="scope">
                    <el-checkbox v-model="scope.row.val1" />
                </template>
            </el-table-column>
            <el-table-column prop="val2" label="预警通知">
                <template slot-scope="scope">
                    <el-checkbox v-model="scope.row.val2" />
                </template>
            </el-table-column>
        </el-table>
 tableData: [
                { id: '1', name: '王小勇', val1: true, val2: true },
                { id: '2', name: '欧阳', val1: true, val2: false }
            ]

8 .el-dialog弹窗垂直居中(兼容IE)

.el-dialog{
    display: flex;
    display: -ms-flex; /* 兼容IE */
    flex-direction: column;
    -ms-flex-direction: column; /* 兼容IE */
    margin:0 !important;
    position:absolute;
    top:50%;
    left:50%;
    transform:translate(-50%,-50%);
    max-height:calc(100% - 30px);
    max-width:calc(100% - 30px);
  }
.el-dialog .el-dialog__body{
    max-height: 100%;
    flex: 1;
    -ms-flex: 1 1 auto; /* 兼容IE */
    overflow-y: auto;
    overflow-x: hidden;
}

.el-dialog__wrapper {
    /*隐藏ie和edge中遮罩的滚动条*/
    overflow: hidden;
}

(二).方法

1.row-click  点击行事件

<el-table   @row-click="handleRowChange">

handleRowChange(row, event, column){  row此行的数据      }

2.selection-change  获取选中的所有值

<el-table   @selection-change="selectionRowsChange">

selectionRowsChange(val){ val  选中的值}

三.实例

1.Element-ui 中table 默认选中 toggleRowSelection

2.简单的增删改

1.table tr 点击 复选框选中  再次点击 复选框取消选中

①设置一个全局函数

exports.install = function (Vue, options) {  
    //删除数组 指定的元素  
    Vue.prototype.removeByValue=function(arr, val){  
        for(var i=0; i<arr.length; i++) {  
            if(arr[i] == val) {  
                arr.splice(i, 1);  
                break;  
            }  
        }  
    };  
};  

②tableUser.vue

<!--用户名 增删改 基本操作-->
<template>
	<section>
		<!--工具条-->
		<el-col :span="24" class="el-table_headtoolbar" style="padding-bottom: 0px;">
			<el-form :inline="true" :model="filters" class="userform" label-width="50px">
				<el-form-item label="姓名"  prop="name">
					<el-input v-model="filters.name" placeholder="姓名"  prefix-icon="el-icon-search"></el-input>
				</el-form-item>
				<el-form-item label="性别" prop="sex">
					<el-select v-model="filters.sex" filterable placeholder="请选择" prop="sex">
					    <el-option v-for="item in sexOptions" :key="item.value"  :label="item.label" :value="item.value">
					    </el-option>
					</el-select>
				</el-form-item>
				<el-dropdown split-button type="primary" @click="btnSearch" trigger="click">
				  	检索
					<el-dropdown-menu slot="dropdown" class="lyzbtn-group" trigger="click">
						<el-dropdown-item @click.native="btnReset">重置</el-dropdown-item>
					</el-dropdown-menu>
				</el-dropdown>
				<el-dropdown split-button type="primary" @click="btnNew" trigger="click">
				  	新增
					<el-dropdown-menu slot="dropdown" trigger="click">
						<el-dropdown-item  @click.native="btnEdit">编辑</el-dropdown-item>
						<el-dropdown-item  @click.native="btnDelete">删除</el-dropdown-item>
					</el-dropdown-menu>
				</el-dropdown>
			</el-form>
		</el-col>
		<!--列表-->
		<el-table :data="users.slice((page-1)*pagesize,page*pagesize)"  highlight-current-row v-loading="listLoading"  style="width: 100%;"  @selection-change="selsUserChange" class="userTableJs" @row-click="handleRowChange"  ref="table">
			<el-table-column type="selection" width="55">
			</el-table-column>
			<el-table-column type="index" label="序号" width="60">
			</el-table-column>
			<el-table-column prop="name" label="姓名" width="120">
			</el-table-column>
			<el-table-column prop="sex" label="性别" width="100" :formatter="formatSex">
			</el-table-column>
			<el-table-column prop="age" label="年龄" width="100" >
			</el-table-column>
			<el-table-column prop="birth" label="生日" width="120">
			</el-table-column>
			<el-table-column prop="addr" label="地址" min-width="180">
			</el-table-column>
		</el-table>
		<!--工具条-->
		<el-col :span="24" class="el-table_footertoolbar">
			<el-pagination layout="total, sizes, prev, pager, next, jumper" @size-change="handleSizeChange" @current-change="handleCurrentChange" :page-sizes="[10, 20, 50, 100]" :page-size="pagesize" :total="users.length" style="float:right;">
			</el-pagination>
		</el-col>
		<!--新增界面-->
		<el-dialog title="新增" :visible.sync="addFormVisible">
			<el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm">
				<el-form-item label="姓名" prop="name">
					<el-input v-model="addForm.name" auto-complete="off"></el-input>
				</el-form-item>
				<el-form-item label="性别">
					<el-radio-group v-model="addForm.sex">
						<el-radio class="radio" :label="1">男</el-radio>
						<el-radio class="radio" :label="0">女</el-radio>
					</el-radio-group>
				</el-form-item>
				<el-form-item label="年龄">
					<el-input-number v-model="addForm.age" :min="0" :max="200"></el-input-number>
				</el-form-item>
				<el-form-item label="生日">
					<el-date-picker type="date" placeholder="选择日期" v-model="addForm.birth"></el-date-picker>
				</el-form-item>
				<el-form-item label="地址">
					<el-input type="textarea" v-model="addForm.addr"></el-input>
				</el-form-item>
			</el-form>
			<div slot="footer" class="dialog-footer">
				<el-button @click.native="addFormVisible = false">取消</el-button>
				<el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
			</div>
		</el-dialog>
		<!--编辑界面-->
		<el-dialog title="编辑" :visible.sync="editFormVisible">
			<el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm">
				<el-form-item label="姓名" prop="name">
					<el-input v-model="editForm.name" auto-complete="off"></el-input>
				</el-form-item>
				<el-form-item label="性别">
					<el-radio-group v-model="editForm.sex">
						<el-radio class="radio" :label="1">男</el-radio>
						<el-radio class="radio" :label="0">女</el-radio>
					</el-radio-group>
				</el-form-item>
				<el-form-item label="年龄">
					<el-input-number v-model="editForm.age" :min="0" :max="200"></el-input-number>
				</el-form-item>
				<el-form-item label="生日">
					<el-date-picker type="date" placeholder="选择日期" v-model="editForm.birth"></el-date-picker>
				</el-form-item>
				<el-form-item label="地址">
					<el-input type="textarea" v-model="editForm.addr"></el-input>
				</el-form-item>
			</el-form>
			<div slot="footer" class="dialog-footer">
				<el-button @click.native="editFormVisible = false">取消</el-button>
				<el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>
			</div>
		</el-dialog>
    </section>
</template>
<script>
import util from '@/utils/index'//日期的操作
import { getUserListPage,batchRemoveUser,addUser,editUser} from '@/assets/api/api';//接口
export default {
	data() {
		return {
			filters: {
				name: ''
			},
			//性别
			sexOptions:[
				{value: '1',label: '男'}, 
				{value: '0',label: '女'}
			],
			users: [],//表格数据 
			page: 1,//当前页数
			pagesize:10,//一页显示几条
			listLoading: false,
			sels: [],//列表选中列
			total: 0,
			editFormVisible: false,//编辑界面是否显示
			editLoading: false,
			editFormRules: {
				name: [{ required: true, message: '请输入姓名', trigger: 'blur' }],
				birth: [{ type: 'date', required: true, message: '日期必须填写', trigger: 'change' }]
			},
			//编辑界面数据
			editForm: {
				id:undefined,
				name: '',
				sex:-1,
				age: 0,
				birth:new Date(),
				addr: ''
			},

			addFormVisible: false,//新增界面是否显示
			addLoading: false,
			addFormRules: {
				name: [{ required: true, message: '请输入姓名', trigger: 'blur' },],
				birth: [{ type: 'date', required: true, message: '日期必须填写', trigger: 'change' }]
			},
			//新增界面数据
			addForm: {
				name: '',
				sex: -1,
				age: 0,
				birth: new Date(),
				addr: ''
			},
			arrID:[],

		}
	},
	methods: {
		//性别显示转换
		formatSex: function (row, column) {
			return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
		},
		//初始页page、初始每页数据数pagesize和数据data
		handleSizeChange(size){
	        this.pagesize = size;
	    },
		handleCurrentChange(val) {
			this.page = val;
			this.getUsers();
		},
		handleRowChange(row, event, column){
			var same=false;
            if(this.arrID.length > 0){
				for(var i=0; i<this.arrID.length ;i++){
					if(this.arrID[i]==row.id){
						same=true;
						this.removeByValue(this.arrID, row.id);
						break;
					}
				}
				if(same==true){
	            	this.$refs.table.toggleRowSelection(row,false);
	            }else{
	            	this.$refs.table.toggleRowSelection(row,true);
	            	this.arrID.push(row.id);
	            }
            }else{
            	this.$refs.table.toggleRowSelection(row,true);
        		this.arrID.push(row.id);
            }
		},
		//获取用户列表
		getUsers() {
			let para = {
				page: this.page,
				name: this.filters.name,
				sex: this.filters.sex

			};
			this.listLoading = true;
			getUserListPage(para).then((res) => {
				this.users = res.data.users;
				this.total = res.data.total;
				this.listLoading = false;
				
			});
		},
		//检索
		btnSearch(){
			console.log('检索')
			var searchParams = { name: this.filters.name, sex: this.filters.sex };
				//searchUser(searchParams).then(data => {
				
				//});
		},
		//重置
		btnReset(){
			this.resetForm(".userform");
		},
		//新增
		btnNew(){
			this.addFormVisible = true;
		},
		//编辑
		btnEdit(){
			var ids = this.sels.map(item => item.id);
			if(ids =='' || ids.length >1){
				this.$alert('请选择一条要编辑的记录', '提示', {
					dangerouslyUseHTMLString: true
				});
			}else{
				const obj={};
				obj.id=this.sels.map(item => item.id).toString();
				obj.name=this.sels.map(item => item.name).toString();
				console.log(this.sels.map(item => item.sex).toString())
				if(this.sels.map(item => item.sex).toString() == 1){
					obj.sex=1;
				}else if(this.sels.map(item => item.sex).toString() == 0){
					obj.sex=0;
				}else{
					obj.sex=-1;
				}
				obj.age=this.sels.map(item => item.age).toString();
				obj.birth=this.sels.map(item => item.birth).toString();
				obj.addr=this.sels.map(item => item.addr).toString();
				this.editFormVisible = true;
				this.editForm = Object.assign({},obj);
			}

		},
		//删除
		btnDelete(){
			var ids = this.sels.map(item => item.id).toString();
			if(ids ==''){
				this.$alert('请选择要删除的记录', '提示', {
					dangerouslyUseHTMLString: true
				});
			}else{
				this.$confirm('确认删除选中记录吗?', '提示', {
					type: 'warning'
				}).then(() => {
					this.listLoading = true;
					//NProgress.start();
					let para = { ids: ids };
					batchRemoveUser(para).then((res) => {
						this.listLoading = false;
						//NProgress.done();
						this.$message({
							message: '删除成功',
							type: 'success'
						});
						this.getUsers();
					});
				}).catch(() => {

				});
			}
		},
		//编辑
		editSubmit: function () {
			this.$refs.editForm.validate((valid) => {
				if (valid) {
					this.$confirm('确认提交吗?', '提示', {}).then(() => {
						this.editLoading = true;
						//NProgress.start();
						let para = Object.assign({}, this.editForm);
						para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
						editUser(para).then((res) => {
							this.editLoading = false;
							//NProgress.done();
							this.$message({
								message: '提交成功',
								type: 'success'
							});
							this.$refs['editForm'].resetFields();
							this.editFormVisible = false;
							this.getUsers();
						});
					});
				}
			});
		},
		//新增
		addSubmit: function () {
			this.$refs.addForm.validate((valid) => {
				if (valid) {
					this.$confirm('确认提交吗?', '提示', {}).then(() => {
						this.addLoading = true;
						//NProgress.start();
						let para = Object.assign({}, this.addForm);
						para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
						addUser(para).then((res) => {
							this.addLoading = false;
							//NProgress.done();
							this.$message({
								message: '提交成功',
								type: 'success'
							});
							this.$refs['addForm'].resetFields();
							this.addFormVisible = false;
							this.getUsers();
						});
					});
				}
			});
		},
		selsUserChange(sels) {
			this.sels = sels;
			if(sels.length>0){
				var valId=[];
	        	for(var i=0;i<sels.length;i++){
	        		var arrIDsame=false;
	        		valId.push(sels[i].id);
	        	}
	        	this.arrID=valId;
			}
		}
	},
	mounted() {
		this.getUsers();
		
	}
}
</script>

3.table行内编辑

vue slot的scope传递,要表述的意思组件中slot这个插槽上可以赋值各种属性,在调用组件的页面中可以使用<template slot-scope="props"> 来获取插槽上的属性值,获取到的值是一个对象。

(1).一行一行编辑

<template>
	<el-table :data="tableData" style="width: 100%">
	    <el-table-column label="日期" width="180">
			<template slot-scope="scope">
		        <span>{{scope.row.date}}</span>
		    </template>
	    </el-table-column>
	    <el-table-column prop="name" label="姓名">
			<template slot-scope="scope">
	          	<span>{{scope.row.name}}</span>
	        </template>
		</el-table-column>
	    <el-table-column prop="address" label="地址">
			<template slot-scope="scope">
	          	<template v-if="scope.row.edit">
	            	<el-input class="edit-input" size="small" v-model="scope.row.address"></el-input>
	          	</template>
	         	<span v-else>{{ scope.row.address }}</span>
	        </template>
		</el-table-column>
	    <el-table-column label="操作">
			<template slot-scope="scope">
				<el-button v-if="scope.row.edit" type="success" @click="confirmEdit(scope.$index, scope.row)" size="small" icon="el-icon-circle-check-outline">保存</el-button>
				<el-button v-else type="primary" @click='scope.row.edit=!scope.row.edit' size="small" icon="el-icon-edit">编辑</el-button>
			</template>
	    </el-table-column>
	</el-table>
</template>

<script>
  export default {
    data() {
      return {
        tableData: [{
        	id:'1',
			date: '2016-05-02',
			name: '王小虎',
			address: '上海市普陀区金沙江路 1518 弄',
			edit:false
        }, {
        	id:'2',
			date: '2016-05-04',
			name: '王小虎',
			address: '上海市普陀区金沙江路 1517 弄',
			edit:false
        }, {
        	id:'3',
			date: '2016-05-01',
			name: '王小虎',
			address: '上海市普陀区金沙江路 1519 弄',
			edit:false
        }, {
        	id:'4',
			date: '2016-05-03',
			name: '王小虎',
			address: '上海市普陀区金沙江路 1516 弄',
			edit:false
        }]
      }
    },
    methods: {
		confirmEdit(index,row){
			row.edit = false;
			this.$message({
				message: '该地址已经成功修改',
				type: 'success'
			})
		}
    }
  }
</script>

(2).table批量编辑列字段

<template>
	<section>
		<!--工具条-->
		<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
			<el-button v-if="editOk"  type="success" @click="btnOk" size="small" icon="el-icon-circle-check-outline">保存</el-button>
			<el-button v-else="editOk" type="primary"  @click="btnEdit" size="small" icon="el-icon-edit">编辑</el-button>
		</el-col>
		<el-table :data="tableData" style="width: 100%">
		    <el-table-column label="日期" width="180">
				<template slot-scope="scope">
			        <span>{{scope.row.date}}</span>
			    </template>
		    </el-table-column>
		    <el-table-column prop="name" label="姓名">
				<template slot-scope="scope">
		          	<span>{{scope.row.name}}</span>
		        </template>
			</el-table-column>
		    <el-table-column prop="address" label="地址">
				<template slot-scope="scope">
		          	<template  v-if="editOk">
		            	<el-input class="edit-input" size="small" v-model="scope.row.address"></el-input>
		          	</template>
		         	<span v-else>{{ scope.row.address }}</span>
		        </template>
			</el-table-column>
		</el-table>
	</section>
</template>
<script>
  export default {
    data() {
      return {
        tableData: [{
        	id:'1',
			date: '2016-05-02',
			name: '王小虎',
			address: '上海市普陀区金沙江路 1518 弄',
        }, {
        	id:'2',
			date: '2016-05-04',
			name: '王小虎',
			address: '上海市普陀区金沙江路 1517 弄',
        }, {
        	id:'3',
			date: '2016-05-01',
			name: '王小虎',
			address: '上海市普陀区金沙江路 1519 弄',
        }, {
        	id:'4',
			date: '2016-05-03',
			name: '王小虎',
			address: '上海市普陀区金沙江路 1516 弄',
        }],
        editOk:false
      }
    },
    methods: {
		btnEdit(){
			 this.editOk=true;
		},
		btnOk(){
			this.editOk=false;
		}
    }
  }
</script>

4. 合计

<el-table
	v-loading="loading"
	:data="slywList"
	show-summary
	:summary-method="getTotal"
>
	<el-table-column
		label="机构"
		align="left"
		prop="swjgmc"
		width="180"
	></el-table-column>
	// 省略
	<el-table-column label="操作" align="center">
		<template slot-scope="scope">
			<el-button
				size="mini"
				type="text"
				icon="el-icon-caret-right"
				@click="handleNextLevel(scope.row)"
				>下一级</el-button
			>
		</template>
	</el-table-column>
</el-table>
export default {
	data() {
        return {
			loading:false,
			slywList:[]
		}
	},
	created() {
        this.getList();
    },
	    methods: {
		//合计操作
        getTotal(param) {
            const { columns, data } = param;
            const sums = [];
            columns.forEach((column, index) => {
                if (index === 0) {
                    sums[index] = "合计";
                    return;
                }
                const values = data.map((item) =>
                    Number(item[column.property])
                );
                if (column.label != "操作") {
                    sums[index] = values.reduce((prev, curr) => {
                        const value = Number(curr);
                        if (!isNaN(value)) {
                            return prev + curr;
                        } else {
                            return prev;
                        }
                    }, 0);
                    sums[index];
                } else {
                    sums[index] = "返回";
                }
            });

            return sums;
        },
        //table 数据查询
        getList() {
			let _this = this;
            this.loading = true;
            listSltj(this.queryParams).then((response) => {
                this.slywList = response.rows;
                this.loading = false;
                this.currentParams = this.queryParams;
                        // 获取合计行最后一列对象,作为“返回”按钮
                let backPreviousButton = document.querySelector(
                    ".el-table__footer-wrapper>table>tbody>tr>.el-table_1_column_5>div"
                );
                if (
                    backPreviousButton == undefined ||
                    backPreviousButton == null
                ) {
                    backPreviousButton = document.querySelector(
                        ".el-table__footer-wrapper>table>tbody>tr>td:last-child>div"
                    );
                }
                if (
                    backPreviousButton == undefined ||
                    backPreviousButton == null
                ) {
                    backPreviousButton = document.querySelector(
                        ".el-table__footer-wrapper>table>tbody>tr>td:nth-last-child(2)>div"
                    );
                }

                // "返回"元素则不进行重复添加
                if (backPreviousButton.hasChildNodes()) {
                    return;
                }
                // 添加"返回"元素
                this.$nextTick(() => {
                    // 添加图标
                    let newI = document.createElement("i");
                    newI.setAttribute("class", "el-icon-caret-left");
                    backPreviousButton.appendChild(newI);
                    // 添加文本
                    let newSpan = document.createElement("span");
                    newSpan.innerText = "返回";
                    backPreviousButton.appendChild(newSpan);
                    // 修改样式
                    backPreviousButton.style.color = "#1890ff";
                    backPreviousButton.style.fontFamily = "Arial";
                    backPreviousButton.style.fontSize = "12px";
                    backPreviousButton.style.cursor = "pointer";
                    // 添加点击事件
                    backPreviousButton.onclick = function () {
                        _this.handleReturn(_this.currentParams.parentId);
                    };
                });
            });
        },
        // 下一级操作
        handleNextLevel(row) {
           console.log("下一级操作")
        },
        // 返回操作
        handleReturn(id) {
            console.log("返回")
         
        }
	}
}

5. 分页时选中的数据消失 

清空选中的数据

this.$refs.table.clearSelection(); // 清除选中的数据

<el-table
	ref="table"
	:data="userList"
	height="260px"
	:row-key="getRowKeys"
	@row-click="clickRow"
	@selection-change="handleSelectionChange"
>
	<el-table-column
		type="selection"
		width="55"
		:reserve-selection="true"
	/>
	<el-table-column
		label="用户账号"
		prop="userName"
		width="120"
		:show-overflow-tooltip="true"
	/>
	<el-table-column
		label="用户姓名"
		prop="nickName"
		width="120"
		:show-overflow-tooltip="true"
	/>
	<el-table-column
		label="邮箱"
		prop="email"
		:show-overflow-tooltip="true"
	/>
	<el-table-column
		label="手机"
		prop="phonenumber"
		:show-overflow-tooltip="true"
	/>
	<el-table-column label="状态" align="center" prop="status">
		<template slot-scope="scope">
			<dict-tag
				:options="statusOptions"
				:value="scope.row.status"
			/>
		</template>
	</el-table-column>
	<el-table-column
		label="创建时间"
		align="center"
		prop="createTime"
		width="180"
	>
		<template slot-scope="scope">
			<span>{{ parseTime(scope.row.createTime) }}</span>
		</template>
	</el-table-column>
</el-table>
<pagination
	v-show="total > 0"
	:total="total"
	:page.sync="queryParams.pageNum"
	:limit.sync="queryParams.pageSize"
	@pagination="getList"
/>
methods: {
	clickRow(row) {
		this.$refs.table.toggleRowSelection(row);
	},
	getRowKeys(row) {
		// id 是后台传递的每行信息唯一标识
		return row.userId;
	},
	// 多选框选中数据
	handleSelectionChange(selection) {
		this.userIds = selection.map(item => item.userId);
	},
	 /** 重置按钮操作 */
	resetQuery() {
		this.resetForm('queryForm');
		this.$refs.table.clearSelection(); // 清除选中的数据
	},
}

6. 关于在element ui中使用switch

<el-table-column label="状态" align="center" prop="status" width="100">
        <template #default="scope">
          <el-switch
            width="60"
            v-model="scope.row.status"
            inline-prompt
            active-color="#409eff"
            inactive-color="#f00"
            active-text="ON"
            inactive-text="OFF"
            @change="changeSwitch(scope.row)"
          />
        </template>
      </el-table-column>
 //   状态开关请求接口
  function changeSwitch(row) {
    console.log(row, '数据');
  }

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vuejs+element UI table的常见的属性及事件 的相关文章

  • 数据库(第五版)课后习题答案

    仅供参考 有任何问题概不负责 请同学们谨慎参考 数据库系统概论第五版 答案 第1章 绪论 1 试述数据 数据库 数据库系统 数据库管理系统的概念 答 l 数据 Data 描述事物的符号记录称为数据 数据的种类有数字 文字 图形 图像 声音
  • inc指令是什么意思_工作台自动循环运动PLC控制指令与梯形图

    点击箭头处 工业之家 选择 关注公众号 工作台自动循环运动PLC控制指令与梯形图 一 数据传送指令 数据传送指令包括MOV 传送 SMOV BCD码移位传送 CML 取反传送 BMOV 数据块传送 FMOV 多点传送 XCH 数据交换 这里
  • FeignClient注解中各种属性详解

    一 value name 这两个属性的作用是一样的 如果没有配置url 那么配置的值将作为服务的名称 用于服务的发现 反之只是一个名称 注意 这里写的是你要调用的那个服务的名称 而不是你自己的那个服务的名称 另外 如果同一个工程中出现两个接
  • C语言 IDE的介绍及安装

    目录 C语言 IDE介绍 GCC C Free Code Blocks CLang CLion XCode Dev C Turbo C Visual C 6 0 Visual Studio C语言 IDE安装 安装包 版本选择 注意事项 C
  • 使用VMware给Ubuntu增加磁盘容量

    一般只给虚拟机里面的Ubuntu很少的空间 到了空间不足就尴尬了 那么就扩充磁盘解决问题吧 一 VMware手动扩容 打开虚拟机 选择你要扩充的客户机 点击 编辑虚拟机设置 然后详细设置 选择硬盘 gt 扩展 gt 目标总磁盘大小 不是增量
  • [力扣c++实现] 152. 乘积最大子数组

    152 乘积最大子数组 给你一个整数数组 nums 请你找出数组中乘积最大的非空连续子数组 该子数组中至少包含一个数字 并返回该子数组所对应的乘积 测试用例的答案是一个 32 位 整数 子数组 是数组的连续子序列 示例 1 输入 nums
  • xshell无法连接虚拟机原因Connection failed. Type `help' to learn how to use Xshell prompt.

    问题分析 xshell无法连接的问题有多种 比如虚拟机没有安装ssh服务 虚拟机没有启动ssh服务 又或者是防火墙 禁用端口等问题 这些都比较容易解决 下面我介绍的是我遇到的一种比较难的无法连接情况 VMware无法在Windows下创建适
  • Proxy(代理)服务器

    代理服务器 代理服务器必须有DNS地址 如果开启转发需要在客户端设置DNS地址 NAT 是直接与目标服务器通信的 也就是直接访问的baidu服务器 目标地址是baidu服务器的地址 所以必须要有DNS来解析主机名 如果是通过代理客户端是没有
  • 全球及中国生物技术产业创新发展模式及十四五应用方向研究报告2021-2027年

    全球及中国生物技术产业创新发展模式及十四五应用方向研究报告2021 2027年HS HS HS HS HS HS HS HS HS HS HS HS HS HS HS HS HS HS 修订日期 2021年10月 搜索鸿晟信合研究院查看官网
  • 交叉编译器简介以及ARM交叉编译器arm-linux-gcc

    一 交叉编译器简介 在一种计算机环境中运行的编译程序 能编译出在另外一种环境下运行的代码 这个编译过程就叫交叉编译 简单地说 就是在一个平台上生成另一个平台上的可执行代码 二 体系结构与操作系统 1 常见的体系结构有ARM结构 x86结构等
  • SPSS异常值处理编程

    SPSS异常值处理编程 异常值是指在数据集中与其他观测值相比明显不同的值 在数据分析过程中 异常值可能会对结果产生不良影响 因此需要进行异常值处理 SPSS作为一种广泛使用的数据分析工具 提供了多种方法来检测和处理异常值 本文将介绍SPSS
  • 【python】UI自动化——鼠标悬浮显示二级菜单相关操作

    一 来个百度示例吧 想要点击如下图的图片 先上代码 import time from selenium import webdriver from selenium webdriver import ActionChains def sta
  • matlab 数据降维和重构_处理不平衡机器学习数据时需要了解的技术

    我们在处理真实世界机器学习数据集时遇到的主要挑战之一是数据的比例不平衡 欺诈检测是这类数据的最好例子 在本文中 我们将使用kaggle中的信用卡欺诈检测数据集 www kaggle com mlg ulb creditcardfraud 在
  • 推荐基于VUE2.0自定义分页插件

    基于vue2 0实现的自定义分页 可设置每页显示条数 带跳转框直接跳转到相应页面 文档地址 https gitee com it distant branch vue custom pages 实现效果如下 支持功能 x 自定义分页条数 x
  • -bash: ./startup.sh: Permission denied

    今天在执行tomcat的时候 用户没有权限 而导致无法执行 用命令chmod 修改一下bin目录下的 sh权限就可以了 如chmod u x sh
  • YUV420P与YUVJ420P

    1 YUV420P与YUVJ420P AV PIX FMT YUV420P lt planar YUV 4 2 0 12bpp 1 Cr Cb sample per 2x2 Y samples AV PIX FMT YUVJ420P lt

随机推荐

  • TOF 3DSensor SDK下载

    DCAM710 与 DCAM100 SDK下载 https picozense picovr com cn sdk html PicoZense SDK是基于PicoZense深度摄像头的软件开发包 支持Windows Linux Open
  • Mybatis Cannot convert string to java.sql.Timestamp value;

    生成默认无参构造函数
  • SpringAop使用的到底是JDK动态代理还是Cglib?

    1 从源码分析 optimize标志已设置 也就是为true 设置proxyTargetClass 目标代理类 标志 更改proxyTargetClass 目标代理类 标志的方法 没有指定代理接口 2 错误的推论 3 最终的推论 什么时候使
  • CodeGeeX中这些隐藏的设置,你知道吗?

    随着CodeGeeX整体性能的升级 越来越多的用户发现CodeGeeX的很多实用功能 能够帮助程序员更快更好的编写代码和解决技术问题 近期 我们看到许多用户在使用CodeGeeX的过程中 有一些相似的疑问 比如 很多人希望能够通过调整设置
  • 以太网流量控制——PAUSE帧

    http www tuicool com articles Bzu2uuf 今天在测试DPDK性能的时候 发现发包工具的发包速率无法提升上去 千兆网卡设置速率70W qps 只能发出1W的速率 抓包发现有大量的PAUSE流控帧 一 PAUS
  • High-resolution Face Swapping via Latent Semantics Disentanglement

    High resolution Face Swapping via Latent Semantics Disentanglement 人脸视频交换 从浅层派生结构属性 从深层派生外观属性 结构转移潜在方向 进一步分离结构属性中的身份和姿态信
  • 【算法学习笔记】20:朴素Dijkstra与堆优化Dijkstra(无负权边单源点最短路)

    Dijkstra算法用于在所有边权都非负的图上 求单源点最短路 设 n n n是图上结点的数量 m m m是边的数量 则朴素Dijkstra算法的时间复杂度是 O
  • Oracle 定时任务详解(dbms_job)

    文章目录 1 概述 2 dbms job 2 1 提交 2 2 暂停 2 3 修改 2 4 运行 2 5 删除 1 概述 1 数据来源包 dbms job Oracle 10g 前常用 2 目前已被 dbms scheduler 所取代 且
  • 百亿补贴通用H5导航栏方案

    背景 在移动端页面中 由于屏幕空间有限 导航条扮演着非常重要的角色 提供了快速导航到不同页面或功能的方式 用户也通常会在导航条中寻找他们感兴趣的内容 因此导航条的曝光率较高 在这样的背景下 提供一个动态灵活的导航条 为产品赋能 变得尤其重要
  • unity 获取小车速度及前进或者后退

    项目需要获得小车移动的数据 用来驱动轮子正传或者反转 所以得想法获取小车的移动量 首先想到的是 使用Unity的API Rigidbody velocity 但是实际操作起来却不是那么回事 貌似Rigidbody velocity只能响应物
  • 黑苹果必备OC配置工具OpenCore Configurator 2.12.0.0中文版

    OpenCore Configurator 中文版是非常优秀的一款黑苹果OC配置工具 可以通过提供更加通用和模块化的系统来解决Clover带来的限制和问题 拦截内核加载以插入高级的rootkit 而该rootkit旨在替代Clover Op
  • Leetcode 78. 子集(回溯法)

    子集 回溯法 class Solution List
  • 内网渗透篇

    域信息搜集命令 1 查询当前环境 whoami ipconfig all 2 查询当前域用户 net user domain 3 查询域控 net time 4 查询域工作组 net group domain 5 查询域管理用户 net g
  • Java学习笔记

    public char charAt int index 根据索引返回字符 public int length 返回此字符的长度 数组的长度 数组名 length 字符串的长度 字符串对象 length StringBuilder Stri
  • 黑马程序员-微信小程序-Day3笔记(P38-P59)

  • CMD命令进入某个目录

    1 开始 gt 运行 gt CMD 2 进入某个磁盘 直接盘符代号 如D 不用CD 命令切换 3 进入除根录以下的文件夹 cd 文件夹路径 例如我要进入 E Program Files PHP 就 输入 E 回车 注 不 能在一打开CMD的
  • 折半查找不成功的平均查找长度怎么算_算法基础:常用的查找算法知识笔记

    1 查找表和查找效率的概念查找表是指由同一类型的数据元素构成的集合 分为静态查找表和动态查找表 1 1 静态查找表1 查询某个特定元素是否在查找表的集合当中2 查询某个特定元素的各种属性 1 2 动态查找表1 在查找表中插入一个数据元素2
  • 如何在命令行中使用 ftp 命令上传和下载文件

    转摘 https linux cn article 6746 1 html 本文中 介绍在 Linux shell 中如何使用 ftp 命令 包括如何连接 FTP 服务器 上传或下载文件以及创建文件夹 尽管现在有许多不错的 FTP 桌面应用
  • 音视频同步-时间戳

    媒体内容在播放时 最令人头痛的就是音视频不同步 从技术上来说 解决音视频同步问题的最佳方案就是时间戳 首先选择一个参考时钟 要求参考时钟上的时间是线性递增的 生成数据流时依据参考时钟上的时间给每个数据块都打上时间戳 一般包括开始时间和结束时
  • vuejs+element UI table的常见的属性及事件

    一 table组件的方法 事件 查看官网 二 常用的事件 属性 一 属性 1 多选框 type selection 需要实现勾选的功能 在