springboot+vue3+ElementPlus实现树表格管理

实现效果

实现思路

在后端将数据处理成树形数据之后,参考ElementPlus 中的表格控件中的树形数据与懒加载控件

实现代码

SysDeptController.java

@RestController
@RequestMapping("/sysdept")
public class SysDeptController {
    @Resource
    private SysDeptService sysDeptService;

    @GetMapping
    public Result<?> selectreturntree(){
        List<SysDept> deptLists = sysDeptService.list();
        Map<Integer,List<SysDept>> groupMap = deptLists.stream().collect(Collectors.groupingBy(SysDept::getParentId));
        deptLists.forEach(deptList->{

            deptList.setChildren(groupMap.get(deptList.getDeptId()));
        });
        List<SysDept> collect = deptLists.stream().filter(deptList->deptList.getParentId().equals(0)).collect(Collectors.toList());
        return Result.success(collect);
    }
}

template

<el-table
        ref="treeRef"
        :data="tree"
        row-key="deptId"
        default-expand-all
        :tree-props="{children:'children'}"
        :filter-node-method="filterNode"
    >
      <el-table-column
          prop="deptId"
          label="部门ID">
      </el-table-column>
      <el-table-column
          prop="deptName"
          label="部门名称">
      </el-table-column>
      <el-table-column
          prop="orderNum"
          label="排序">
      </el-table-column>
      <el-table-column label="状态">
        <template #default="{row}">
          <p v-if="row.status==='0'" class="deptview-normal">正常</p>
          <p v-else class="deptview-stop">停用</p>
        </template>
      </el-table-column>
      <el-table-column
          prop="createTime"
          label="创建时间">
      </el-table-column>
      <el-table-column fixed="right" label="操作" class="deptview-oper">
        <template #default="scope">
          <el-button size="small" @click="update(scope.row)" type="primary">修改</el-button>
          <el-button size="small" @click="insert()" type="primary">新增</el-button>
          <el-popconfirm title="确认删除吗?" @confirm="deletedept(scope.row.deptId)">
            <template #reference>
              <el-button size="small" type="danger">删除</el-button>
            </template>
          </el-popconfirm>
        </template>
      </el-table-column>
    </el-table>

script setup 

let treeRef = ref([])
let tree = ref([])
//获取部门信息
request.get("/sysdept").then(res => {
  if (res.code === "0") {
    tree.value = res.data
    console.log("tree" + res.data)
  }
})
const filterNode = (value, data) => {
  if (!value) return true
  return data.deptName.indexOf(value) !== -1
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值