引言
chenchuang-ownershipstructure
,用于在前端清晰地展示复杂的股权结构和控股关系。组件设计
chenchuang-ownershipstructure
的自定义组件,该组件接收两个props:treeName
和treeData
。treeName
用于表示树形结构的主题名称,而treeData
则包含了构建树形结构所需的数据。
<!-- treeName:树形结构的主题名称 treeData: 树形结构的填充数据 目前支持三级树形结构-->
<chenchuang-ownershipstructure v-if="(curTreeName.length > 0)" :treeName="curTreeName" :treeData="curTreeData">
</chenchuang-ownershipstructure>
TreeComponent
的Vue组件,它能够根据提供的treeData
渲染出树形结构。这个组件可以是一个递归组件,能够处理多级数据并展示相应的层级结构。数据结构
treeData
应该是一个数组,其中每个元素代表树的一个节点。每个节点可以包含子节点,从而形成树形结构。一个简单的数据结构可能如下所示:实现细节
递归组件: TreeComponent
可以是一个递归组件,它能够根据节点的children
属性递归地渲染子节点。节点展示:每个节点可以展示为一个卡片或者一个列表项,包含节点的名称和其他相关信息。 交互功能:可以增加点击事件,以便在用户点击某个节点时展示更多详细信息或者进行其他操作。 样式定制:通过CSS来美化树形结构的展示,比如使用缩进或者连接线来表示层级关系。
<template>
<view class="content">
<!-- treeName:树形结构的主题名称 treeData: 树形结构的填充数据 -->
<chenchuang-ownershipstructure v-if="(curTreeName.length > 0)" :treeName="curTreeName" :treeData="curTreeData">
</chenchuang-ownershipstructure>
</view>
</template>
<script>
export default {
data() {
return {
title: 'Hello',
curTreeName: '',
curTreeData: []
}
},
onLoad() {
this.curTreeName = "广州汽车集团股份有限公司";
let tmpArr = [];
for (let i = 0; i < 4; i++) {
// 模拟企业控股数据
let s = {
'ratio': '20%',
'amount': '1000000万',
'label': '广州|先进制造业|高新技术',
'investName': '广州汽车工业集团有限公司' + i,
'investType': '0',
'invests': [{
'ratio': '20%',
'amount': '100000万',
'label': '广州|汽车|高新技术',
'investName': '广汽丰田股份有限公司',
'investType': '0',
},
{
'ratio': '10%',
'amount': '90000万',
'label': '广州|工业|高新技术',
'investName': '中国机械工业集团有限公司',
'investType': '0',
},
{
'ratio': '10%',
'amount': '900万',
'label': '股东',
'investName': '曾庆洪',
'investType': '1',
},
{
'ratio': '10%',
'amount': '900万',
'label': '股东',
'investName': '吴松',
'investType': '1',
}
]
};
let tmpDict = Object.assign(s, {
"isOpen": false
});
tmpArr.push(tmpDict);
}
// 模拟个人控股数据
let t = {
'ratio': '10%',
'amount': '900万',
'label': '股东',
'investName': '曾庆洪',
'investType': '1',
'invests': []
};
let tmpDict = Object.assign(t, {
"isOpen": false
});
tmpArr.push(tmpDict);
this.curTreeData = tmpArr;
},
methods: {
}
}
</script>
<!-- /*
*/ -->
<style>
page {
background-color: #f6f6f6;
}
.content {
display: flex;
flex-direction: column;
}
</style>
结论
前端技术交流群:
(备用地址)