• vue+elementUI实现指定列的单元格可编辑


    template中的代码如下:

    <div v-if="(item.label === '高压侧' || item.label === '低压侧')&&coloumnHeader.label === '单柱片数'">
    							<div class="editableCell">
    								<div v-if="item.label === '高压侧'" @dblclick="changeValue(scope.$index, scope.row,'high')">
    									<span v-if="!scope.row.highEdit">{{scope.row[item.prop]}}span>
    									<el-input 
    										v-model="scope.row[item.prop]" 
    										v-else="scope.row.highEdit" 
    										size="mini" 
    										@blur.native.capture="valueBlur(scope.$index, scope.row, 'high')" 
    										v-focus>el-input>
    								div>
    								<div v-else @dblclick="changeValue(scope.$index, scope.row,'low')">
    									<span v-if="!scope.row.lowEdit">{{scope.row[item.prop]}}span>
    									<el-input 
    										v-model="scope.row[item.prop]" 
    										v-else="scope.row.lowEdit" 
    										size="mini" 
    										@blur.native.capture="valueBlur(scope.$index, scope.row, 'low')"
    										v-focus>el-input>
    								div>			
    							div>
    						div>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    js代码如下:

    		/**
    		 * 高压侧低压侧列双击可输入值
    		 * @param {Number} index 行索引
    		 * @param {Object} rowData 行数据
    		 * @param {String} type 高低压侧类型
    		 */
    		 changeValue(index,rowData, type){
    			if(type === 'high'){
    				// 数据更新,视图更新
    				if(Object.keys(this.updateTableData[index]).indexOf("highEdit") === -1){
    					// 还没编辑过的添加编辑属性
    					this.$set(this.updateTableData, index,{highEdit:true,...this.updateTableData[index]});
    				}else{
    					// 已经编辑过的,更改编辑属性
    					this.$set(this.updateTableData[index], "highEdit", true);
    				}				
    			}else if(type === 'low'){
    				if(Object.keys(this.updateTableData[index]).indexOf("lowEdit") === -1){
    					this.$set(this.updateTableData, index,{lowEdit:true,...this.updateTableData[index]});
    				}else{
    					this.$set(this.updateTableData[index], "lowEdit", true);
    				}
    				
    			}
    		},
    		/**
    		 * 输入框失去焦点时触发
    		 * @param {Number} index 行索引
    		 * @param {Object} rowData 行数据
    		 * @param {String} type 高低压侧类型
    		 */
    		 valueBlur(index,rowData, type){
    			// 数据更新,视图更新
    			if(type === "high"){
    				this.$set(this.updateTableData[index], "highEdit", false);
    			}else{
    				this.$set(this.updateTableData[index], "lowEdit", false);
    			}
    			console.log(this.updateTableData)
    		},
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
  • 相关阅读:
    [Swift]国际化
    动态规划c++
    B. DIV + MOD
    从零学习Python:json和文件操作
    docker部署nginx并设置挂载
    REST API 设计最佳实践
    Axios在vue项目中的封装
    windows定时对指定文件夹压缩然后存放在指定的文件夹下
    【poi 看这一篇就够了!!!】使用poi导出定制excle表格
    前端学习案例-重写foreach
  • 原文地址:https://blog.csdn.net/yuhuamei/article/details/136738869