Element 表格的树形数据 带编辑删除操作

话不多说 直接上代码

样式

在这里插入图片描述

template 部分

<el-table :data="tableData" highlight-current-row v-loading="listLoading" 
       @selection-change="selsChange" style="width: 100%;" 
       row-key="id" default-expand-all  
       :tree-props="{children: 'child', hasChildren: 'hasChildren'}">
      <el-table-column type="selection" width="55">
      </el-table-column>
      <el-table-column prop="name" label="菜单名称">
      </el-table-column>
      <el-table-column prop="id" label="id" v-if="idshow">
      </el-table-column> 
      <el-table-column prop="sort" label="排序">
      </el-table-column> 
      <el-table-column prop="menu_route" label="菜单路由">
      </el-table-column>
      <el-table-column label="操作">
        <template scope="scope">          
          <el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
          <el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button>
          <!-- <el-button type="primary" size="small" @click="handleAdd">细化权限</el-button> -->
        </template>
      </el-table-column>
    </el-table> 
属性结构主要 tree-props 配置此属性 数组格式

table Data 部分

data() {
      return {
        // id显示隐藏
        idshow: false,
        listLoading: false,
        // 表格数据
        tableData: [{
          "id": 29,
          "fid": 0,
          "name": "权限管理",
          "menu_route": "/jurisdiction",
          "auth_value": null,
          "sort": 0
        }, {
          "id": 39,
          "fid": 0,
          "name": "平台道具管理",
          "menu_route": "/props",
          "auth_value": null,
          "sort": 0
        }, {
          "id": 40,
          "fid": 0,
          "name": "平台充值管理",
          "menu_route": "/11",
          "auth_value": null,
          "sort": 0,
          "child": [{
            "id": 41,
            "fid": 40,
            "name": "海外SDK",
            "menu_route": "/overseassdk",
            "auth_value": null,
            "sort": 0,
            "level": 2
          }, {
            "id": 42,
            "fid": 40,
            "name": "国内SDK",
            "menu_route": "/inlandsdk",
            "auth_value": null,
            "sort": 0,
            "level": 2
          }]
        }],
    },
编辑
editSubmit: function () {
        this.$refs.editForm.validate((valid) => {
          if (valid) {
            this.$confirm('确认提交吗?', '提示', {}).then(() => {
              this.editLoading = true;
              this.$post('/menu/save', {
                menu_id: this.editForm.id,
                menu_name: this.editForm.editname,
                menu_route: this.editForm.route,
                sort: this.editForm.sort
              }).then((result) => {
                if (result.code == 200) {
                  this.editLoading = false;
                  this.editFormVisible = false;
                  this.$message({
                    message: '提交成功',
                    type: 'success'
                  });      
                  this.getMenulist();
                } else {
                  this.editLoading = false;
                  this.$message('提交失败')
                }
              }).catch(() => {
                 this.$message('网络连接错误')
              });
            });
          }
        });
      }

#####删除部分

handleDel: function (index, row) {
        this.$confirm('确认删除该行吗?', '提示', {
          type: 'warning'
        }).then(() => {
          var idid = row.id.toString()
          this.$post('/menu/delete', {
            menu_id: idid,
            status: '0'
          }).then((result) => {
            if (result.code == 200) {
              this.$message({
                message: '删除成功',
                type: 'success'
              });      
              this.getMenulist()
              this.getparentmenu()
            } else {
              this.$message('删除失败')
            }
          }).catch(() => {
             this.$message('网络连接错误')
          });
        }).catch(() => {

        });
      }

有问题欢迎留言,或加qq:1246862769,一起成长!

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
element-plus 是一个基于 Vue.js 的 UI 组件库,提供了丰富的 UI 组件供开发者使用。如果你想在 element-plus 的表格中实现树形数据虚拟化,可以按照以下步骤进行操作: 1. 首先,你需要使用 element-plus 的表格组件,并在表格中配置树形数据的相关属性。可以通过设置 `tree` 属性为 true 来启用树形数据功能,并使用 `row-key` 属性指定每一行数据的唯一标识。 2. 接下来,你可以使用 element-plus 的虚拟滚动组件(Virtual Scroll)来实现数据的虚拟化渲染。在表格中设置 `v-scroll` 属性为 true,并根据需要配置虚拟滚动的相关参数,如 `item-height`(每个子项的高度)、`start-index`(起始索引)和 `end-index`(结束索引)等。 3. 使用 element-plus 的插槽(Slot)功能来自定义树形数据的展示方式。例如,你可以使用 `<el-table-column>` 组件的 `scoped-slot` 属性来自定义每一列的内容显示,通过判断当前行数据是否是树形节点,来决定是否显示展开/折叠按钮等。 4. 最后,你可以结合 element-plus 的事件处理机制,监听用户的操作事件(如展开/折叠节点、选择节点等),并通过修改数据源中对应节点的属性来实现交互功能。 需要注意的是,以上步骤只是提供了一种实现树形数据虚拟化表格的思路,具体的实现方式可能还需要根据你的业务需求进行调整和扩展。希望对你有所帮助!如果你有其他问题,请随时提问。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值