`
chun521521
  • 浏览: 285134 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

vue表格右键菜单

    博客分类:
  • vue
阅读更多

 

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表格右键菜单例子.vue

    elementui表格上右键单击弹出菜单项,点击菜单调用后续方法

    Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)

    在Web开发中,尤其是使用Vue框架构建的单页面应用(SPA)中,常常需要给表格组件添加一些额外的交互功能,比如右键菜单。在本例中,我们将探讨如何在Vue中实现Table组件行内右键菜单的功能,该项目是基于vue + Ant...

    【JavaScript源代码】Vue+element-ui添加自定义右键菜单的方法示例.docx

    ### Vue + Element UI 添加自定义右键菜单的知识点解析 #### 一、概述 本文将详细介绍如何在基于Vue.js框架的项目中结合Element UI库,实现一个简单的自定义右键菜单功能。通过以下步骤,您将了解到从创建绑定事件...

    Vue+element-ui添加自定义右键菜单的方法示例

    1、在所编辑的页面,需要添加右键菜单的元素,绑定contextmenu事件 ($event)&gt; ...... 2、在页面编写右键菜单内容 上移一层 下移一层 3、在data()中定义需要的变量属

    element-tree:自定义右键菜单等等

    一个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...

    vxe-table vue表格解决方案 v4.5.20.zip

    3. **API与事件**:vxe-table提供了丰富的API和事件,如`sortChange`用于监听排序变化,`on-contextmenu`用于处理右键菜单,`editActived`、`editClosed`等用于控制单元格编辑状态。 4. **自定义扩展**:利用vxe-...

    一个基于 vue 的 PC 端表格组件

    5. **快捷菜单**:用户可以通过右键菜单快速访问各种操作,如编辑、复制、粘贴等,提升交互体验。 6. **数据校验**:vxe-table内置了强大的数据验证机制,确保输入数据的准确性和完整性。 7. **打印导出**:提供...

    vxe-table vue table 表格组件功能

    总结来说,vxe-table是一个功能全面、性能优异的Vue表格组件,它将复杂的表格操作和功能简化,使得开发者可以快速构建具有专业水平的表格界面。不管是基础的数据展示,还是复杂的交互和数据处理,vxe-table都能够...

    vue+Element-UI 前端框架

    Vue.js 提供了事件绑定机制,使得添加右键菜单变得容易。在Element-UI中,可能需要结合自定义组件来实现,以满足特定的业务需求。 4. **栏目动态**:这可能指的是动态加载或切换栏目内容。在Vue.js中,可以通过路由...

    【JavaScript源代码】vue引入Excel表格插件的方法.docx

    通过这种方式,你可以创建一个具备各种功能的交互式Excel表格,包括自定义列头、行数、列数、行表头、列表头,以及右键菜单操作,如插入行、删除行、设置只读、绘制表格边框等。 最后,你可以在Vue组件的生命周期...

    表格编辑器

    - **右键功能**:通过右键菜单,用户可以访问更多高级操作,如复制、粘贴、撤销、重做等,这些是Excel等电子表格软件中的常见功能。 2. **JavaScript实现**: - JavaScript是实现此功能的关键技术,它负责处理...

    基于ElementUI 2.x的扩展组件(已废弃 已被废弃).zip

    ElementUI 组件的渲染支持任何 Vue 组件的自定义渲染支持动态列翻译支持(同步、异步)校验支持显示单元格值的修改状态支持增/删/改/查/还原支持方向键和Tab键切换单元格关键词 表格 右键菜单支持自定义显示、隐藏列...

    富文本编辑器以及表格操作,可拉伸单元格宽度、增加行、增加列、合并单元格

    3. **增加行和列**:当用户需要在现有表格中添加更多数据时,可以轻松地通过右键点击表格并选择“插入行”或“插入列”来扩展表格结构。这有助于保持表格的结构清晰,避免数据混乱。 4. **合并单元格**:合并单元格...

    vue-element-extends::palm_tree: 基于 ElementUI 2.x 的扩展组件(已废弃 Have been abandoned)

    vue-element-extends(已废弃,不再维护) 基于 Vue 2.6.x 、ElementUI 2.x 的扩展组件 Attention! This component is no longer recommended! 非常抱歉!...支持表格右键菜单 支持自定义显示、隐藏列 支

    GridManager-Vue:Vue的GridManager

    GridManager Vue 基于 Vue 的 GridManager 封装, 用于便捷的在 Vue 中使用GridManager. 除过Vue特性外,其它API与GridManager API相同...右键菜单 常用功能在菜单中可进行快捷操作 过滤 通过对列进行过滤达到快速搜索效

    vxe-table-plugin-menus::deciduous_tree: 基于 vxe-table 的表格插件,提供实用的快捷菜单集

    基于 的表格插件,提供实用的快捷菜单集 Installing npm install xe-utils vxe-table@next vxe-table-plugin-menus@next // ... import VXETable from 'vxe-table' import VXETablePluginMenus from 'vxe-table-...

    excel-electron-vue

    基于electro-vue实现ui,使用xlsx模块进行excel表格导入导出 实现了拖拽导入文件 右键导入文件 菜单栏导入文件/文件夹 An electron-vue project Build Setup # install dependencies npm install # serve with hot ...

    Vue+Element组件封装

    使用element经常需要用表格展示数据,对表格内容进行分页以及搜索都是比较常见的需求;于是想到了对element进行二次封装;主要涉及的组件有el-table、el-dropdown(控制每页展示条目数)、el-pagination(table分页...

    element-ui tree结构实现增删改自定义功能代码

    Element-UI是一个基于Vue.js的开源UI组件库,它提供了丰富的组件供开发者使用,其中包括Tree组件,用于展示层级关系的数据。在描述的场景中,我们需要在Tree组件的基础上增加编辑、删除和新增节点的功能。 首先,...

Global site tag (gtag.js) - Google Analytics