需求:使用elment ,Tree 树形控件做一个自定义节点横向显示
把左图做成右图效果:
过程:
json数据我放在最后了,有需要测试的可以拿去
代码:
<template>
<section style="padding:10px;">
<el-tree :data="testJsonData" show-checkbox default-expand-all node-key="nodeId" ref="tree"
highlight-current :default-checked-keys='checkeds' :props="defaultProps" @check="currentChecked" :render-content="renderContents">
</el-tree>
</section>
</template>
<script>
export default {
data() {
return {
testJson:[],
testJsonData:[],
defaultProps: {
children: 'children',
label: 'name'
},
checkeds: [],
}
},
mounted() {
//实时刷新函数
this.$nextTick(() => {
this.changeCss();
});
//引用自己的json数据
this.testJson = require('../../static/text.json');
this.testJsonData=[this.testJson.data];
},
methods: {
renderContents(h, {node,data,store}) { //树节点的内容区的渲染 Function
let classname = "";
// 判断是否为权限点
if (data.isMenu ==false) {
classname = "authoritypoint";
}
return(
data.isMenu?<div classs={classname}>{data.name}</div>
: <el-tooltip effect='dark' placement='bottom-start' effect="light">
<div slot='content'>{data.remark}({data.nodeId})</div>
<div class={classname}>{data.name}</div>
</el-tooltip>
)
},
changeCss() {
var levelName = document.getElementsByClassName("authoritypoint"); // levelname是上面的最底层节点的名字
for (var i = 0; i < levelName.length; i++) {
// cssFloat 兼容 ie6-8 styleFloat 兼容ie9及标准浏览器
levelName[i].parentNode.style.cssFloat = "left"; // 最底层的节点,包括多选框和名字都让他左浮动
levelName[i].parentNode.style.styleFloat = "left";
levelName[i].parentNode.style.color = "blue";
levelName[i].parentNode.onmouseover = function() {
this.style.backgroundColor = "#fff";
};
}
},
//勾选的项
currentChecked() {
},
}
}
</script>
<style scoped>
</style>
Bug:用上面的render-content方法如果遇到在同一节点下首个内容是需要Float的,而下一个内容是不用Float的,但是这个内容的节点需要Float,就会出现下面这种情况
原因:Float会影响下一个节点,所以要在不需要浮动点加上clear属性,而通过调试发现在原有的树形结构上定位不到不需要浮动的点,所以得改变树形的结构
消除Bug:
在查看文档的时候看到可以自定义树节点,于是我把树形结构拆分了
<template>
<section style="padding:10px;">
<el-tree :data="testJsonData" show-checkbox default-expand-all node-key="nodeId" ref="tree"
highlight-current :default-checked-keys='checkeds' :props="defaultProps" @check="currentChecked">
<div :id="data.nodeId" slot-scope="{ node, data }"
:class="data.isMenu ==false ? 'authoritypoint' : 'org'">
<div v-if="data.isMenu">{{ node.label }}</div>
<el-tooltip placement="bottom-start" effect="light" v-if="!data.isMenu">
<div slot="content">{{data.remark}}({{data.nodeId}})</div>
<div>{{ node.label }}</div>
</el-tooltip>
</div>
</el-tree>
</section>
</template>
<script>
export default {
data() {
return {
testJson:[],
testJsonData:[],
defaultProps: {
children: 'children',
label: 'name'
},
checkeds: [],
}
},
mounted() {
//实时刷新函数
this.$nextTick(() => {
this.changeCss();
});
//引用自己的json数据
this.testJson = require('../../static/text.json');
this.testJsonData=[this.testJson.data];
},
methods: {
changeCss() {
var levelName = document.getElementsByClassName("authoritypoint"); // levelname是上面的最底层节点的名字
// console.log('levelName',levelName)
for (var i = 0; i < levelName.length; i++) {
// cssFloat 兼容 ie6-8 styleFloat 兼容ie9及标准浏览器
levelName[i].parentNode.style.cssFloat = "left"; // 最底层的节点,包括多选框和名字都让他左浮动
levelName[i].parentNode.style.styleFloat = "left";
levelName[i].parentNode.style.color = "blue";
levelName[i].parentNode.onmouseover = function() {
this.style.backgroundColor = "#fff";
};
}
var levelName = document.getElementsByClassName("org"); // levelname是上面的最底层节点的名字
// console.log('levelName',levelName)
for (var i = 0; i < levelName.length; i++) {
// cssFloat 兼容 ie6-8 styleFloat 兼容ie9及标准浏览器
levelName[i].parentNode.style.clear = "both"; // 清空Float属性
}
},
//勾选的项
currentChecked() {
},
}
}
</script>
<style scoped>
</style>
然后就可以了
总结:1.Float属性会影响下一个节点,所以得加clear:both
2.elment树形控件 { node, data }可以自定义显示数据
3.渲染页面后得实时刷新
json数据:
{
"success": true,
"code": 1,
"msg": null,
"data": {
"nodeId": "AAAA.0",
"parentId": null,
"isMenu": true,
"name": "系统管理",
"menuNo": "AAAA",
"permissionId": 0,
"isPermit": false,
"sortNo": 1,
"remark": "",
"children": [
{
"nodeId": "AAAAAA.0",
"parentId": "AAAA.0",
"isMenu": true,
"name": "用户管理",
"menuNo": "AAAAAA",
"permissionId": 0,
"isPermit": false,
"sortNo": 1,
"remark": "",
"children": [
{
"nodeId": "AAAAAA1.0",
"parentId": "AAAAAA.0",
"isMenu": true,
"name": "人员管理",
"menuNo": "AAAAAA1",
"permissionId": 0,
"isPermit": false,
"sortNo": 1,
"remark": "",
"children": [
{
"nodeId": "AAAAAA1.1",
"parentId": "AAAAAA1.0",
"isMenu": false,
"name": "查看",
"menuNo": "AAAAAA1",
"permissionId": 1,
"isPermit": false,
"sortNo": 1,
"remark": "查看用户",
"children": null
},
{
"nodeId": "AAAAAA1.2",
"parentId": "AAAAAA1.0",
"isMenu": false,
"name": "新增",
"menuNo": "AAAAAA1",
"permissionId": 2,
"isPermit": false,
"sortNo": 2,
"remark": "新增用户",
"children": null
},
{
"nodeId": "AAAAAA1.3",
"parentId": "AAAAAA1.0",
"isMenu": false,
"name": "修改",
"menuNo": "AAAAAA1",
"permissionId": 3,
"isPermit": false,
"sortNo": 3,
"remark": "修改用户",
"children": null
},
{
"nodeId": "AAAAAA1.4",
"parentId": "AAAAAA1.0",
"isMenu": false,
"name": "软删除/恢复",
"menuNo": "AAAAAA1",
"permissionId": 4,
"isPermit": false,
"sortNo": 4,
"remark": "软删除/恢复用户",
"children": null
},
{
"nodeId": "AAAAAA1.5",
"parentId": "AAAAAA1.0",
"isMenu": false,
"name": "更改他人密码",
"menuNo": "AAAAAA1",
"permissionId": 5,
"isPermit": false,
"sortNo": 5,
"remark": "拥有更改他人密码的权限",
"children": null
}
]
},
{
"nodeId": "AAAAAA2.0",
"parentId": "AAAAAA.0",
"isMenu": true,
"name": "部门人员",
"menuNo": "AAAAAA2",
"permissionId": 0,
"isPermit": false,
"sortNo": 2,
"remark": "",
"children": [
{
"nodeId": "AAAAAA2.1",
"parentId": "AAAAAA2.0",
"isMenu": false,
"name": "查看",
"menuNo": "AAAAAA2",
"permissionId": 1,
"isPermit": false,
"sortNo": 1,
"remark": "查看部门人员",
"children": null
}
]
}
]
},
{
"nodeId": "AAAAAB.0",
"parentId": "AAAA.0",
"isMenu": true,
"name": "组织架构",
"menuNo": "AAAAAB",
"permissionId": 0,
"isPermit": false,
"sortNo": 1,
"remark": "",
"children": [
{
"nodeId": "AAAAAB.1",
"parentId": "AAAAAB.0",
"isMenu": false,
"name": "查看",
"menuNo": "AAAAAB",
"permissionId": 1,
"isPermit": false,
"sortNo": 1,
"remark": "查看组织架构",
"children": null
},
{
"nodeId": "AAAAAB.2",
"parentId": "AAAAAB.0",
"isMenu": false,
"name": "新增",
"menuNo": "AAAAAB",
"permissionId": 2,
"isPermit": false,
"sortNo": 2,
"remark": "新增组织架构",
"children": null
},
{
"nodeId": "AAAAAB.3",
"parentId": "AAAAAB.0",
"isMenu": false,
"name": "修改",
"menuNo": "AAAAAB",
"permissionId": 3,
"isPermit": false,
"sortNo": 3,
"remark": "修改组职架构",
"children": null
},
{
"nodeId": "AAAAAB.4",
"parentId": "AAAAAB.0",
"isMenu": false,
"name": "软删除/恢复",
"menuNo": "AAAAAB",
"permissionId": 4,
"isPermit": false,
"sortNo": 4,
"remark": "软删除/恢复组织架构",
"children": null
},
{
"nodeId": "AAAAAB.5",
"parentId": "AAAAAB.0",
"isMenu": false,
"name": "查看/管理所有机构",
"menuNo": "AAAAAB",
"permissionId": 5,
"isPermit": false,
"sortNo": 5,
"remark": "查看/管理所有机构(即查看和所有管理机构及其部门、岗位)",
"children": null
}
]
},
{
"nodeId": "AAAAAC.0",
"parentId": "AAAA.0",
"isMenu": true,
"name": "权限管理",
"menuNo": "AAAAAC",
"permissionId": 0,
"isPermit": false,
"sortNo": 3,
"remark": "",
"children": [
{
"nodeId": "AAAAAC.1",
"parentId": "AAAAAC.0",
"isMenu": false,
"name": "查看",
"menuNo": "AAAAAC",
"permissionId": 1,
"isPermit": false,
"sortNo": 1,
"remark": "查看权限",
"children": null
},
{
"nodeId": "AAAAAC1.0",
"parentId": "AAAAAC.0",
"isMenu": true,
"name": "角色权限设置",
"menuNo": "AAAAAC1",
"permissionId": 0,
"isPermit": false,
"sortNo": 1,
"remark": "",
"children": [
{
"nodeId": "AAAAAC1.2",
"parentId": "AAAAAC1.0",
"isMenu": false,
"name": "新增角色",
"menuNo": "AAAAAC1",
"permissionId": 2,
"isPermit": false,
"sortNo": 1,
"remark": "新增角色",
"children": null
},
{
"nodeId": "AAAAAC1.3",
"parentId": "AAAAAC1.0",
"isMenu": false,
"name": "修改角色",
"menuNo": "AAAAAC1",
"permissionId": 3,
"isPermit": false,
"sortNo": 2,
"remark": "修改角色",
"children": null
},
{
"nodeId": "AAAAAC1.4",
"parentId": "AAAAAC1.0",
"isMenu": false,
"name": "删除角色",
"menuNo": "AAAAAC1",
"permissionId": 4,
"isPermit": false,
"sortNo": 3,
"remark": "删除角色",
"children": null
},
{
"nodeId": "AAAAAC1.5",
"parentId": "AAAAAC1.0",
"isMenu": false,
"name": "保存角色权限",
"menuNo": "AAAAAC1",
"permissionId": 5,
"isPermit": false,
"sortNo": 4,
"remark": "保存角色对应的权限",
"children": null
}
]
},
{
"nodeId": "AAAAAC2.0",
"parentId": "AAAAAC.0",
"isMenu": true,
"name": "角色用户设置",
"menuNo": "AAAAAC2",
"permissionId": 0,
"isPermit": false,
"sortNo": 2,
"remark": "",
"children": [
{
"nodeId": "AAAAAC2.1",
"parentId": "AAAAAC2.0",
"isMenu": false,
"name": "保存角色用户",
"menuNo": "AAAAAC2",
"permissionId": 1,
"isPermit": false,
"sortNo": 1,
"remark": "保存角色对应的用户",
"children": null
}
]
}
]
},
{
"nodeId": "AAAAAD.0",
"parentId": "AAAA.0",
"isMenu": true,
"name": "设置管理",
"menuNo": "AAAAAD",
"permissionId": 0,
"isPermit": false,
"sortNo": 4,
"remark": "",
"children": [
{
"nodeId": "AAAAAD.1",
"parentId": "AAAAAD.0",
"isMenu": false,
"name": "查看",
"menuNo": "AAAAAD",
"permissionId": 1,
"isPermit": false,
"sortNo": 1,
"remark": "查看设置信息",
"children": null
},
{
"nodeId": "AAAAAD1.0",
"parentId": "AAAAAD.0",
"isMenu": true,
"name": "个人设置",
"menuNo": "AAAAAD1",
"permissionId": 0,
"isPermit": false,
"sortNo": 1,
"remark": "",
"children": [
{
"nodeId": "AAAAAD1.1",
"parentId": "AAAAAD1.0",
"isMenu": false,
"name": "管理",
"menuNo": "AAAAAD1",
"permissionId": 1,
"isPermit": false,
"sortNo": 1,
"remark": "管理自己的个人设置",
"children": null
}
]
},
{
"nodeId": "AAAAAD2.0",
"parentId": "AAAAAD.0",
"isMenu": true,
"name": "工作站设置",
"menuNo": "AAAAAD2",
"permissionId": 0,
"isPermit": false,
"sortNo": 2,
"remark": "",
"children": [
{
"nodeId": "AAAAAD2.1",
"parentId": "AAAAAD2.0",
"isMenu": false,
"name": "查看",
"menuNo": "AAAAAD2",
"permissionId": 1,
"isPermit": false,
"sortNo": 1,
"remark": "查看工作站设置",
"children": null
},
{
"nodeId": "AAAAAD2.2",
"parentId": "AAAAAD2.0",
"isMenu": false,
"name": "管理",
"menuNo": "AAAAAD2",
"permissionId": 2,
"isPermit": false,
"sortNo": 2,
"remark": "管理工作站设置",
"children": null
}
]
},
{
"nodeId": "AAAAAD3.0",
"parentId": "AAAAAD.0",
"isMenu": true,
"name": "系统设置",
"menuNo": "AAAAAD3",
"permissionId": 0,
"isPermit": false,
"sortNo": 3,
"remark": "",
"children": [
{
"nodeId": "AAAAAD3.1",
"parentId": "AAAAAD3.0",
"isMenu": false,
"name": "查看",
"menuNo": "AAAAAD3",
"permissionId": 1,
"isPermit": false,
"sortNo": 1,
"remark": "查看系统设置",
"children": null
},
{
"nodeId": "AAAAAD3.2",
"parentId": "AAAAAD3.0",
"isMenu": false,
"name": "管理",
"menuNo": "AAAAAD3",
"permissionId": 2,
"isPermit": false,
"sortNo": 2,
"remark": "管理系统设置",
"children": null
}
]
},
{
"nodeId": "AAAAAD4.0",
"parentId": "AAAAAD.0",
"isMenu": true,
"name": "活动字典",
"menuNo": "AAAAAD4",
"permissionId": 0,
"isPermit": false,
"sortNo": 4,
"remark": "",
"children": [
{
"nodeId": "AAAAAD4.1",
"parentId": "AAAAAD4.0",
"isMenu": false,
"name": "查看",
"menuNo": "AAAAAD4",
"permissionId": 1,
"isPermit": false,
"sortNo": 1,
"remark": "查看用户字典",
"children": null
},
{
"nodeId": "AAAAAD4.2",
"parentId": "AAAAAD4.0",
"isMenu": false,
"name": "管理",
"menuNo": "AAAAAD4",
"permissionId": 2,
"isPermit": false,
"sortNo": 2,
"remark": "管理用户字典",
"children": null
}
]
}
]
},
{
"nodeId": "AAAAAE.0",
"parentId": "AAAA.0",
"isMenu": true,
"name": "操作日志",
"menuNo": "AAAAAE",
"permissionId": 0,
"isPermit": false,
"sortNo": 5,
"remark": "",
"children": [
{
"nodeId": "AAAAAE.1",
"parentId": "AAAAAE.0",
"isMenu": false,
"name": "查看本机构",
"menuNo": "AAAAAE",
"permissionId": 1,
"isPermit": false,
"sortNo": 1,
"remark": "查看本机构的日志",
"children": null
},
{
"nodeId": "AAAAAE.2",
"parentId": "AAAAAE.0",
"isMenu": false,
"name": "查看全部机构",
"menuNo": "AAAAAE",
"permissionId": 2,
"isPermit": false,
"sortNo": 2,
"remark": "查看全部机构的日志",
"children": null
}
]
},
{
"nodeId": "AAAAAF.0",
"parentId": "AAAA.0",
"isMenu": true,
"name": "接口日志",
"menuNo": "AAAAAF",
"permissionId": 0,
"isPermit": false,
"sortNo": 6,
"remark": "",
"children": [
{
"nodeId": "AAAAAF.1",
"parentId": "AAAAAF.0",
"isMenu": false,
"name": "查看",
"menuNo": "AAAAAF",
"permissionId": 1,
"isPermit": false,
"sortNo": 1,
"remark": "查看接口日志",
"children": null
}
]
},
{
"nodeId": "AAAAAG.0",
"parentId": "AAAA.0",
"isMenu": true,
"name": "图标管理",
"menuNo": "AAAAAG",
"permissionId": 0,
"isPermit": false,
"sortNo": 7,
"remark": "",
"children": []
},
{
"nodeId": "ZAAAAA.0",
"parentId": "AAAA.0",
"isMenu": true,
"name": "博客测试",
"menuNo": "ZAAAAA",
"permissionId": 0,
"isPermit": false,
"sortNo": 100,
"remark": "",
"children": [
{
"nodeId": "ZAAAAA.1",
"parentId": "ZAAAAA.0",
"isMenu": false,
"name": "查看",
"menuNo": "ZAAAAA",
"permissionId": 1,
"isPermit": false,
"sortNo": 1,
"remark": "查看博客信息",
"children": null
}
]
}
]
}
}