el-table左键双击单元格编辑内容(输入框输入计算公式可直接得出结果),右键单击展示操作菜单,可编辑单元格高亮展示

news/2024/7/10 2:48:13 标签: javascript, 前端, 开发语言, vue, elementui

vue2点击左侧的树节点(el-tree)定位到对应右侧树形表格(el-table)的位置,树形表格懒加载

表格代码

    <el-table 
	    ref="singleTable" 
	    :data="detailsList" 
	    highlight-current-row="" 
	    row-key="detailId" 
	    @row-click="clickTableRow" //左键单击
	    @row-contextmenu="rightClick" //右键单击
	    @cell-dblclick="doubleClick" //双击单元格
	    :cell-style="columnbackgroundStyle" //高亮可编辑单元格
	>
    	<el-table-column type="index" width="80" label="序号" align="center" fixed=""> </el-table-column>
       	<el-table-column property="code" label="编码" width="160" fixed=""></el-table-column>
        <el-table-column property="name" label="名称" width="120" align="center" :key="index">
	         <template slot-scope="scope">
	              <span>
	                  <el-input v-if="scope.row[scope.column.property + 'Show']" clearable="" v-model="scope.row.name" @keyup.enter.native="onBlur(scope.row, scope.column)" @blur="onBlur(scope.row, scope.column)"></el-input>
	                  <span v-else="">{{ scope.row.name }}</span>
	              </span>
	          </template>
      	</el-table-column>
	</el-table>

操作菜单代码

<div id="menu" class="menu">
   <ul class="ul1 list-paddingleft-2">
       <li class="li1" ref="menu1" @mouseover="showChild" @mouseout="hideChild">
           <span>新增下级</span>
           <i class="el-icon-arrow-right" :style="cssStyle.iconfont"></i>
           <ul ref="childMenu1" class="ul2 list-paddingleft-2">
               <li class="li2" @click="chooseList()"><span>选择下级</span></li>
               <li class="li2" @click="addList()"><span>补充下级</span></li>
           </ul>
       </li>
       <li class="li1" @click="delMenu()"><span>删除</span></li>
   </ul>
</div>

js代码

javascript">// 左键单击事件
clickTableRow(row, column, event) {
   var menu = document.querySelector("#menu");
   menu.style.display = "none";
},
 // 右键单击
rightClick(row, column, event) {
  	 this.currentRow = row //存储当前选中的行
     var menu = document.querySelector("#menu"); //展示操作菜单
     event.preventDefault();
     // 页面只读的时候不展示
     if (this.isRead) {
         menu.style.display = "none";
         return
     }
     // 根据事件对象中鼠标点击的位置,进行定位
     menu.style.left = event.clientX + "px";
     menu.style.top = event.clientY + "px";
     // 改变自定义菜单的隐藏与显示
     menu.style.display = "block";
     this.setCurrent(row);
},
setCurrent(row) {
    this.$refs.singleTable.setCurrentRow(row);
},
// 展示菜单子级
showChild() {
   	this.$refs.menu1.style.backgroundColor = '#ecf5ff'
    this.$refs.childMenu1.style.display = 'block'
},
// 隐藏菜单子级
hideChild() {
	 this.$refs.menu1.style.backgroundColor = '#fff'
	 this.$refs.childMenu1.style.display = 'none'
},
// 双击单元格
doubleClickTop(row, column) {
	// 页面只读时不触发
  	if (this.isRead) {
        return
    }
    // 避免点击过快导致多个输入框处于焦点状态
    this.$set(row,column.property + 'Show',false)
    this.$set(row,column.property + 'Show',true)
},
// 输入框鼠标失焦或者键盘回车时触发
onBlur(row, column) {
 	this.$set(row,column.property + 'Show',false)
    // 请求后台更改数据
    this.getDetailsList(row)
},
// 根据输入的公式计算出结果(引入main.js工具库)
calculate() {
    try {
         this.result = this.mathjs.evaluate(输入框绑定的值);
     } catch (error) {
         this.result = '无效的表达式';
     }
},
// 高亮可编辑单元格
columnbackgroundStyle({ row, column, rowIndex, columnIndex }){
	 if (this.isRead) {
         return
     }
     var columnList=['name']
     if (columnList.indexOf(column.property)>-1) {
         return 'background:rgb(249 239 72 / 16%);'
     }
},

样式部分

.menu:{
	position: absolute;
	display: none;
	box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);
	background: #ffffff;
	cursor: pointer;
	color: #606266;
	width: 200px;
	border: 1px solid #e4e7ed;
	font-size: 13px;
	z-index:999
}
.ul1:{
	list-style: none;
	margin: 0px;
	padding: 0px;
}
.li1:{
	padding: 0px 10px;
	height: 30px;
	line-height: 30px;
	position: relative;
	box-sizing: border-box;
	text-indent: 8px;
}
.ul2:{
	display: none;
	position: absolute;
	left: 200px;
	top: 0px;
	width: 200px;
	border: 1px solid #e4e7ed;
	box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);
	background-color: #fff;
}
.li2:{
	background-color: #fff;
}

http://www.niftyadmin.cn/n/5429276.html

相关文章

Git 下载时需要使用代理?

食用方法 在命令行中&#xff0c;你可以使用以下命令来设置Git的HTTP和HTTPS代理&#xff1a; git config --global http.proxy http://127.0.0.1:6890 git config --global https.proxy https://127.0.0.1:6890 注意是根据自己的实际情况修改IP和端口号 注意如果不想全局配置…

【Linux】linuxCNC+Qt+Opencascade+kdl+hal 实时6轴机器人控制器

CNC机器人 程序框架 机器人模型 笔记&#xff1a; debian重启后 无法打开共享目录 最新版搜狗输入法安装后不支持中文&#xff0c;需要安装旧版本的 sogoupinyin_4.0.1.2800_x86_64.deb可用 数控机器人在哪些领域应用有优势 数控机器人在多个领域都展现出了显著的优势&#xff…

Oracle中的commit与rollback

SQL语言分为五大类&#xff1a; DDL(数据定义语言:DataDefinitionLanguage) - Create、Alter、Drop 这些语句自动提交&#xff0c;无需用Commit提交。 DQL(数据查询语言:DataQueryLanguage) - Select 查询语句不存在是否提交问题。 DML(数据操纵语言:DataManipulationLangua…

python中列表常用函数

列表list相关函数 列表相关函数 列表相关函数 汇总&#xff1a;. 列表: 1.list() 方法用于将序列&#xff08;元组&#xff0c;集合&#xff0c;字符串等&#xff09;转换为列表。 用法&#xff1a;list( seq ) #seq为序列&#xff1a;元组 集合 字符串等 2.列表定义&a…

Mac-自动操作 实现双击即可执行shell脚本

背景 在Mac上运行shell脚本&#xff0c;总是需要开启终端窗口执行&#xff0c;比较麻烦 方案 使用Mac上自带的“自动操作”程序&#xff0c;将shell脚本打包成可运行程序(.app后缀)&#xff0c;实现双击打开即可执行shell脚本 实现细节 找到Mac上 应用程序中的 自动操作&am…

深度学习_20_卷积中的填充与步幅

如果图片本身比较小&#xff0c;卷积之后输出也会很小&#xff0c;那么可以在图片与卷积核相乘之前先填充一下&#xff0c;让输出为预期大小 一般填充后输入&#xff0c;输出相同 当图片比较大的时候&#xff0c;如果利用卷积核去得到我们想要的大小的话&#xff0c;得用到多层…

永热爱 敢向前 | Paraverse平行云的2023 年终总结

永热爱&#xff0c;敢向前 值此新年&#xff0c;回顾2023&#xff0c;仅以此句&#xff0c;献给所有XR产业信仰者 2023 年&#xff0c;是XR产业技术和场景承上启下的关键之年 在这场波澜壮阔的技术潮中 「Paraverse平行云」踏浪前行 已是第八个年头&#xff0c;让我们一起…

【开源-土拨鼠充电系统】鸿蒙 HarmonyOS 4.0+微信小程序+云平台

本人自己开发的开源项目&#xff1a;土拨鼠充电系统 ✍GitHub开源项目地址&#x1f449;&#xff1a;https://github.com/cheinlu/groundhog-charging-system ✍Gitee开源项目地址&#x1f449;&#xff1a;https://gitee.com/cheinlu/groundhog-charging-system ✨踩坑不易&am…