1.table上增加右键触发,并定义ref
<el-table v-loading="dataListLoading" :data="dataList" ref="dataTableRef" border stripe @row-contextmenu="contextMenuHandle"
@selection-change="dataListSelectionChangeHandle" @sort-change="dataListSortChangeHandle" style="width: 100%;">
2.设置菜单展示页面
<!-- start 右键菜单 -->
<div id="menu_mfDev" v-show="menuShow" style="display: flex; position: absolute; width: 160px;">
<ul style="height: auto;width: auto;font-size: 14px;text-align: left;border-radius: 5px;border: none;color: #fff; list-style: none; padding: 5px 10px 5px 10px;">
<li v-for="(item, index) in menuArr" :key="index" @click.stop="rowContextmenuClick(item.opt, item.rowid)" @mouseover="liHoverin" @mouseout="liHoverout"
style="width: 160px;height: 40px;line-height: 40px;border-radius: 3px; padding-left: 5px; cursor: pointer; border-bottom: 1px solid rgba(255, 255, 255, 0.47);">{{ item.name }}</li>
</ul>
</div>
<!-- end -->
3.data的return 中增加菜单数据
data () {
return {
/** 右键菜单 start **/
menuShow: false,
menuArr: [],
/** end *************/
}
}
4.mounted设置取消右键菜单的方法
mounted () {
document.addEventListener('click', this.closeContextMenu)
},
5.methods中增加右键菜单处理方法
/** 右键菜单 ******************************************************************/
closeContextMenu () {
this.menuShow = false
this.$nextTick(() => {
this.$refs.dataTableRef.clearSelection()
})
},
contextMenuHandle (row, column, e) {
e.preventDefault()
this.menuShow = true
this.menuArr = [{ 'name': '编辑', 'opt': 'edit', 'rowid': row.id }, { 'name': '删除', 'opt': 'delete', 'rowid': row.id },
{ 'name': '更换口令', 'opt': 'keys', 'rowid': row.id }]
if (row.black === '0') {
this.menuArr.push({ 'name': '列入黑名单', 'opt': 'inBlack', 'rowid': row.id })
} else if (row.black === '1') {
this.menuArr.push({ 'name': '列出黑名单', 'opt': 'outBlack', 'rowid': row.id })
}
this.buildContextMenu(row, e, document.querySelector('#menu_mfDev'))
},
rowContextmenuClick (opt, rowid) {
if (opt === 'edit') {
this.addOrUpdateHandle(rowid)
} else if (opt === 'delete') {
this.deleteHandle(rowid)
} else if (opt === 'upgrade') {
this.upgrade(rowid)
} else if (opt === 'keys') {
this.changeKey(rowid)
} else if (opt === 'inBlack') {
this.blackList(rowid)
} else if (opt === 'outBlack') {
this.blackList(rowid)
}
},
liHoverin (e) {
e.target.style.backgroundColor = '#fff'
e.target.style.color = 'red'
},
liHoverout (e) {
e.target.style.removeProperty('background-color')
e.target.style.removeProperty('color')
},
buildContextMenu (row, e, menu) {
this.$refs.dataTableRef.clearSelection()
this.$refs.dataTableRef.toggleRowSelection(row, true)
menu.children[0].style.backgroundColor = 'blue'
// 处理右键菜单位置
let x = e.pageX
let y = e.pageY
let winHeight = window.innerHeight
let menuHeight = menu.offsetHeight
x = x - 220
y = winHeight - menuHeight >= y ? y - 100 : y - menuHeight - 80
menu.style.left = x + 'px'
menu.style.top = y + 'px'
menu.style.display = 'block'
menu.style.zIndex = 1000
}
/** end ***********************************************************************/
相关推荐
elementui表格上右键单击弹出菜单项,点击菜单调用后续方法
在Web开发中,尤其是使用Vue框架构建的单页面应用(SPA)中,常常需要给表格组件添加一些额外的交互功能,比如右键菜单。在本例中,我们将探讨如何在Vue中实现Table组件行内右键菜单的功能,该项目是基于vue + Ant...
### Vue + Element UI 添加自定义右键菜单的知识点解析 #### 一、概述 本文将详细介绍如何在基于Vue.js框架的项目中结合Element UI库,实现一个简单的自定义右键菜单功能。通过以下步骤,您将了解到从创建绑定事件...
1、在所编辑的页面,需要添加右键菜单的元素,绑定contextmenu事件 ($event)> ...... 2、在页面编写右键菜单内容 上移一层 下移一层 3、在data()中定义需要的变量属
一个Vue.js项目 效果 构建设置 # install dependencies npm install # serve with hot reload at localhost:8080 npm run dev # build for production with minification npm run build # build for production and...
3. **API与事件**:vxe-table提供了丰富的API和事件,如`sortChange`用于监听排序变化,`on-contextmenu`用于处理右键菜单,`editActived`、`editClosed`等用于控制单元格编辑状态。 4. **自定义扩展**:利用vxe-...
5. **快捷菜单**:用户可以通过右键菜单快速访问各种操作,如编辑、复制、粘贴等,提升交互体验。 6. **数据校验**:vxe-table内置了强大的数据验证机制,确保输入数据的准确性和完整性。 7. **打印导出**:提供...
总结来说,vxe-table是一个功能全面、性能优异的Vue表格组件,它将复杂的表格操作和功能简化,使得开发者可以快速构建具有专业水平的表格界面。不管是基础的数据展示,还是复杂的交互和数据处理,vxe-table都能够...
Vue.js 提供了事件绑定机制,使得添加右键菜单变得容易。在Element-UI中,可能需要结合自定义组件来实现,以满足特定的业务需求。 4. **栏目动态**:这可能指的是动态加载或切换栏目内容。在Vue.js中,可以通过路由...
通过这种方式,你可以创建一个具备各种功能的交互式Excel表格,包括自定义列头、行数、列数、行表头、列表头,以及右键菜单操作,如插入行、删除行、设置只读、绘制表格边框等。 最后,你可以在Vue组件的生命周期...
- **右键功能**:通过右键菜单,用户可以访问更多高级操作,如复制、粘贴、撤销、重做等,这些是Excel等电子表格软件中的常见功能。 2. **JavaScript实现**: - JavaScript是实现此功能的关键技术,它负责处理...
3. **增加行和列**:当用户需要在现有表格中添加更多数据时,可以轻松地通过右键点击表格并选择“插入行”或“插入列”来扩展表格结构。这有助于保持表格的结构清晰,避免数据混乱。 4. **合并单元格**:合并单元格...
vue-element-extends(已废弃,不再维护) 基于 Vue 2.6.x 、ElementUI 2.x 的扩展组件 Attention! This component is no longer recommended! 非常抱歉!...支持表格右键菜单 支持自定义显示、隐藏列 支
GridManager Vue 基于 Vue 的 GridManager 封装, 用于便捷的在 Vue 中使用GridManager. 除过Vue特性外,其它API与GridManager API相同...右键菜单 常用功能在菜单中可进行快捷操作 过滤 通过对列进行过滤达到快速搜索效
基于 的表格插件,提供实用的快捷菜单集 Installing npm install xe-utils vxe-table@next vxe-table-plugin-menus@next // ... import VXETable from 'vxe-table' import VXETablePluginMenus from 'vxe-table-...
基于electro-vue实现ui,使用xlsx模块进行excel表格导入导出 实现了拖拽导入文件 右键导入文件 菜单栏导入文件/文件夹 An electron-vue project Build Setup # install dependencies npm install # serve with hot ...
使用element经常需要用表格展示数据,对表格内容进行分页以及搜索都是比较常见的需求;于是想到了对element进行二次封装;主要涉及的组件有el-table、el-dropdown(控制每页展示条目数)、el-pagination(table分页...
Element-UI是一个基于Vue.js的开源UI组件库,它提供了丰富的组件供开发者使用,其中包括Tree组件,用于展示层级关系的数据。在描述的场景中,我们需要在Tree组件的基础上增加编辑、删除和新增节点的功能。 首先,...
为了处理右键点击事件,我们需要重载`On_WM_CONTEXTMENU()`消息处理函数,当用户在树形控件上右击时,该函数会被调用。在这个函数中,我们可以创建一个快捷菜单,并根据当前选中的节点来显示不同的选项。 ```cpp ...