vue-element-admin一个基于 vue2.0 和 Eelement 的控制面板 UI 框架,这是使用vue技术栈开发的前端程序员的首选管理系统模板,模板以及非常的成熟了,并且有相关的社区和维护人员,开发时候遇到问题也不要慌。
推荐指数:star:62.1k
Github 地址:https://github.com/PanJiaChen/vue-element-admin
Demo体验:https://panjiachen.github.io/vue-element-admin/#/dashboard
官方文档:https://panjiachen.github.io/vue-element-admin-site/zh/
今天就来说一下,怎么使用Tree Table 树形表格。废话不多说,首先看一下官方文档吧,看看官方文档是怎么给到的例子吧:
组件:https://element.eleme.cn/#/zh-CN/component/tree
分别通过default-expanded-keys和default-checked-keys设置默认展开和默认选中的节点。需要注意的是,此时必须设置node-key,其值为节点数据中的一个字段名,该字段在整棵树中是唯一的。
静态
在文档上选一颗自己想要的树的demo
<template>
<div class="grid-content bg-purple">
<el-tree
:data="data"
show-checkbox
node-key="id"
:default-expanded-keys="[2, 3]"
:default-checked-keys="[5]"
>
</el-tree>
</div>
</template>
<script>
export default {
data() {
return {
data: [
{
id: 1,
label: "一级 2",
children: [
{
id: 3,
label: "二级 2-1",
children: [
{
id: 4,
label: "三级 3-1-1",
},
{
id: 5,
label: "三级 3-1-2",
disabled: true,
},
],
},
{
id: 2,
label: "二级 2-2",
disabled: true,
children: [
{
id: 6,
label: "三级 3-2-1",
},
{
id: 7,
label: "三级 3-2-2",
disabled: true,
},
],
},
],
},
],
defaultProps: {
children: "children",
label: "label",
},
};
},
};
</script>
效果是这个样子的
在实际应用之中,需要从后端请求过来json数据,然后再对json数据进行一些处理,渲染在界面。
我这里有一些json数据,但是并不是我想要的格式,并不是以上代码中的格式,需要做一些处理,对json的格式的转化。
json数据
{
"msg": "success",
"code": 1,
"data": [{
"id": 1,
"organName": "住部门",
"parentId": null,
"manager": "zs",
"phone": null,
"companyId": 1,
"address": null
}, {
"id": 19,
"organName": "uiui",
"parentId": 1,
"manager": "iuui",
"phone": "ui",
"companyId": 1,
"address": null
}, {
"id": 20,
"organName": "3223",
"parentId": 19,
"manager": "32",
"phone": "3232",
"companyId": 1,
"address": null
}, {
"id": 22,
"organName": "测试部",
"parentId": 1,
"manager": "李云泥",
"phone": "18117166505",
"companyId": 1,
"address": null
}, {
"id": 23,
"organName": "123",
"parentId": 19,
"manager": "1",
"phone": "12",
"companyId": 1,
"address": null
}, {
"id": 24,
"organName": "www",
"parentId": 19,
"manager": "",
"phone": "",
"companyId": 1,
"address": null
}]
}
动态demo如下:
<template>
<div class="grid-content bg-purple">
<el-tree
:data="treeData"
show-checkbox
default-expand-all
node-key="id"
ref="tree"
highlight-current
:props="defaultProps"
>
</el-tree>
</div>
</template>
<script>
//调用接口
import { getQuerycheckList } from "@/api/data/organ";
export default {
data() {
return {
setTree: [],
defaultProps: {
children: "children",
label: "organName",
},
treeData: [],
organList: [],
};
},
created() {
//加载部门管理节点接口定义
this.getQuerycheckList();
},
methods: {
//部门管理节点接口定义
getQuerycheckList() {
const params = {};
this.dataLoading = true;
getQuerycheckList(params).then((res) => {
this.setTree = res.data;
this.organList = res.data.map((a) => ({
label: a.organName,
value: a.id,
}));
//debugger;
this.getListData();
this.dataLoading = false;
});
},
//对json的格式的转化
getListData() {
let dataArray = [];
this.setTree.forEach(function (data) {
// debugger;
let parentId = data.parentId;
if (parentId === null) {
let objTemp = {
id: data.id,
organName: data.organName,
manager: data.manager,
phone: data.manager,
parentId: parentId,
};
dataArray.push(objTemp);
}
});
this.treeData = this.data2treeDG(this.setTree, dataArray);
},
data2treeDG(datas, dataArray) {
for (let j = 0; j < dataArray.length; j++) {
let dataArrayIndex = dataArray[j];
let childrenArray = [];
let Id = dataArrayIndex.id;
for (let i = 0; i < datas.length; i++) {
let data = datas[i];
let parentId = data.parentId;
if (parentId == Id) {
//判断是否为儿子节点
let objTemp = {
id: data.id,
organName: data.organName,
manager: data.manager,
phone: data.phone,
parentId: parentId,
};
childrenArray.push(objTemp);
}
}
dataArrayIndex.children = childrenArray;
if (childrenArray.length > 0) {
this.data2treeDG(datas, childrenArray);
}
}
return dataArray;
},
},
};
</script>
所有评论(0)