|
@@ -1,123 +1,139 @@
|
|
<template>
|
|
<template>
|
|
- <a-card :bordered="false">
|
|
|
|
- <!-- <div class="tree">
|
|
|
|
- </div> -->
|
|
|
|
- <div>
|
|
|
|
- <a-input-search style="margin-bottom: 8px" placeholder="Search" @change="onChange" />
|
|
|
|
- <a-tree
|
|
|
|
- :expanded-keys="expandedKeys"
|
|
|
|
- :auto-expand-parent="autoExpandParent"
|
|
|
|
- :tree-data="gData"
|
|
|
|
- @expand="onExpand"
|
|
|
|
- >
|
|
|
|
- <template slot="title" slot-scope="{ title }">
|
|
|
|
- <span v-if="title.indexOf(searchValue) > -1">
|
|
|
|
- {{ title.substr(0, title.indexOf(searchValue)) }}
|
|
|
|
- <span style="color: #f50">{{ searchValue }}</span>
|
|
|
|
- {{ title.substr(title.indexOf(searchValue) + searchValue.length) }}
|
|
|
|
- </span>
|
|
|
|
- <span v-else>{{ title }}</span>
|
|
|
|
- </template>
|
|
|
|
- </a-tree>
|
|
|
|
- </div>
|
|
|
|
- </a-card>
|
|
|
|
|
|
+ <a-card :bordered="false">
|
|
|
|
+ <!-- <div class="tree">
|
|
|
|
+ </div> -->
|
|
|
|
+ <div>
|
|
|
|
+ <a-input-search style="margin-bottom: 8px" placeholder="Search" @change="onChange" />
|
|
|
|
+ <a-tree
|
|
|
|
+ :expanded-keys="expandedKeys"
|
|
|
|
+ auto-expand-parent
|
|
|
|
+ :tree-data="tpmTreeData"
|
|
|
|
+ @expand="onExpand"
|
|
|
|
+ :replace-fields="replaceFields"
|
|
|
|
+ :filter-tree-node="filterTreeNode"
|
|
|
|
+ >
|
|
|
|
+ <!-- <template slot="title" slot-scope="{ title }">
|
|
|
|
+ <span v-if="name.indexOf(searchValue) > -1">
|
|
|
|
+ {{ name.substr(0, name.indexOf(searchValue)) }}
|
|
|
|
+ <span style="color: #f50">{{ searchValue }}</span>
|
|
|
|
+ {{ name.substr(name.indexOf(searchValue) + searchValue.length) }}
|
|
|
|
+ </span>
|
|
|
|
+ <span v-else>{{ title }}</span>
|
|
|
|
+ </template> -->
|
|
|
|
+ </a-tree>
|
|
|
|
+ </div>
|
|
|
|
+ </a-card>
|
|
</template>
|
|
</template>
|
|
|
|
|
|
<script>
|
|
<script>
|
|
-const x = 3;
|
|
|
|
-const y = 2;
|
|
|
|
-const z = 1;
|
|
|
|
-const gData = [];
|
|
|
|
|
|
+ import { getAction } from '@api/manage'
|
|
|
|
+ export default({
|
|
|
|
+ components: {
|
|
|
|
+ },
|
|
|
|
+ data () {
|
|
|
|
+ return {
|
|
|
|
+ expandedKeys: [],
|
|
|
|
+ searchValue: '',
|
|
|
|
+ autoExpandParent: true,
|
|
|
|
+ tpmListData: [], // 原始数据
|
|
|
|
+ tpmTreeData: [], // 树形列表使用数据
|
|
|
|
+ replaceFields: {
|
|
|
|
+ children: 'children',
|
|
|
|
+ title: 'name',
|
|
|
|
+ },
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ created() {
|
|
|
|
+ this.getTpmTreeData()
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+ getTpmTreeData(){
|
|
|
|
+ getAction(`/tpmEquipmentTree/tpmEquipmentTree/listtreeandequip`).then(res=>{
|
|
|
|
+ if (res.success) {
|
|
|
|
+ // 防止res.result对tpmListData造成地址赋值的问题
|
|
|
|
+ this.tpmListData = JSON.parse(JSON.stringify(res.result))
|
|
|
|
+ this.tpmTreeData = this.handleTree(res.result, "id", "parentid")
|
|
|
|
+ console.log(this.tpmTreeData)
|
|
|
|
+ } else {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ filterTreeNode(node) {
|
|
|
|
+ console.log(node)
|
|
|
|
+ // if (!inputValue) return true;
|
|
|
|
+ return node.title.indexOf('设备') !== -1;
|
|
|
|
+ },
|
|
|
|
+ onExpand(expandedKeys) {
|
|
|
|
+ this.expandedKeys = expandedKeys;
|
|
|
|
+ this.autoExpandParent = false;
|
|
|
|
+ },
|
|
|
|
+ onChange(e) {
|
|
|
|
+ const value = e.target.value;
|
|
|
|
+ // 筛选后数据
|
|
|
|
+ var filterData = []
|
|
|
|
+ // 筛选符合条件的数据:包含当前搜索的项
|
|
|
|
+ console.log(this.tpmListData)
|
|
|
|
+ filterData = this.tpmListData.filter(item => (item.name.indexOf(value) !== -1))
|
|
|
|
+ // var data = []
|
|
|
|
+ // filterData.forEach(item => {
|
|
|
|
+ // var arr = this.tpmListData.filter(data => item.parentid === data.id)
|
|
|
|
+ // console.log('父级', arr)
|
|
|
|
+ // // filterData = [...filterData, ...arr]
|
|
|
|
+ // })
|
|
|
|
+ // 循环寻找父级
|
|
|
|
+ // console.log(this.findParents(this.tpmTreeData, '287813167808513'))
|
|
|
|
|
|
-const generateData = (_level, _preKey, _tns) => {
|
|
|
|
- const preKey = _preKey || '0';
|
|
|
|
- const tns = _tns || gData;
|
|
|
|
|
|
+
|
|
|
|
|
|
- const children = [];
|
|
|
|
- for (let i = 0; i < x; i++) {
|
|
|
|
- const key = `${preKey}-${i}`;
|
|
|
|
- tns.push({ title: key, key, scopedSlots: { title: 'title' } });
|
|
|
|
- if (i < y) {
|
|
|
|
- children.push(key);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- if (_level < 0) {
|
|
|
|
- return tns;
|
|
|
|
- }
|
|
|
|
- const level = _level - 1;
|
|
|
|
- children.forEach((key, index) => {
|
|
|
|
- tns[index].children = [];
|
|
|
|
- return generateData(level, key, tns[index].children);
|
|
|
|
- });
|
|
|
|
-};
|
|
|
|
-generateData(z);
|
|
|
|
|
|
+
|
|
|
|
+ this.tpmTreeData = this.handleTree(filterData, "id", "parentid")
|
|
|
|
+ // const expandedKeys = dataList.map(item => {
|
|
|
|
+ // if (item.name.indexOf(value) > -1) {
|
|
|
|
+ // // return getParentKey(item.key, gData);
|
|
|
|
+ // return this.filterNode(item.key, gData);
|
|
|
|
+ // }
|
|
|
|
+ // return null;
|
|
|
|
+ // }).filter((item, i, self) => item && self.indexOf(item) === i);
|
|
|
|
+ // Object.assign(this, {
|
|
|
|
+ // expandedKeys,
|
|
|
|
+ // searchValue: value,
|
|
|
|
+ // autoExpandParent: true,
|
|
|
|
+ // });
|
|
|
|
+ },
|
|
|
|
+ // findParents(treeData,id){
|
|
|
|
+ // let allparents = []
|
|
|
|
+ // if(treeData.length==0){
|
|
|
|
+ // return
|
|
|
|
+ // }
|
|
|
|
|
|
-const dataList = [];
|
|
|
|
-const generateList = data => {
|
|
|
|
- for (let i = 0; i < data.length; i++) {
|
|
|
|
- const node = data[i];
|
|
|
|
- const key = node.key;
|
|
|
|
- dataList.push({ key, title: key });
|
|
|
|
- if (node.children) {
|
|
|
|
- generateList(node.children);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
-};
|
|
|
|
-generateList(gData);
|
|
|
|
|
|
+ // let findele = (data,id) => {
|
|
|
|
+ // if(!id) return
|
|
|
|
+ // data.forEach((item,index) => {
|
|
|
|
+ // if(item.id == id){
|
|
|
|
+ // allparents.unshift(item.id)
|
|
|
|
+ // findele(treeData,item.parentid)
|
|
|
|
|
|
-const getParentKey = (key, tree) => {
|
|
|
|
- let parentKey;
|
|
|
|
- for (let i = 0; i < tree.length; i++) {
|
|
|
|
- const node = tree[i];
|
|
|
|
- if (node.children) {
|
|
|
|
- if (node.children.some(item => item.key === key)) {
|
|
|
|
- parentKey = node.key;
|
|
|
|
- } else if (getParentKey(key, node.children)) {
|
|
|
|
- parentKey = getParentKey(key, node.children);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return parentKey;
|
|
|
|
-};
|
|
|
|
|
|
+ // }else{
|
|
|
|
+ // if(!!item.children){
|
|
|
|
+ // findele(item.children,id)
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+ // }
|
|
|
|
+ // })
|
|
|
|
+ // }
|
|
|
|
|
|
- export default({
|
|
|
|
- components: {
|
|
|
|
- },
|
|
|
|
- data () {
|
|
|
|
- return {
|
|
|
|
- expandedKeys: [],
|
|
|
|
- searchValue: '',
|
|
|
|
- autoExpandParent: true,
|
|
|
|
- gData,
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- methods: {
|
|
|
|
- onExpand(expandedKeys) {
|
|
|
|
- this.expandedKeys = expandedKeys;
|
|
|
|
- this.autoExpandParent = false;
|
|
|
|
- },
|
|
|
|
- onChange(e) {
|
|
|
|
- const value = e.target.value;
|
|
|
|
- console.log(dataList)
|
|
|
|
- const expandedKeys = dataList.map(item => {
|
|
|
|
- if (item.title.indexOf(value) > -1) {
|
|
|
|
- return getParentKey(item.key, gData);
|
|
|
|
- }
|
|
|
|
- return null;
|
|
|
|
- }).filter((item, i, self) => item && self.indexOf(item) === i);
|
|
|
|
- Object.assign(this, {
|
|
|
|
- expandedKeys,
|
|
|
|
- searchValue: value,
|
|
|
|
- autoExpandParent: true,
|
|
|
|
- });
|
|
|
|
- },
|
|
|
|
- },
|
|
|
|
- })
|
|
|
|
|
|
+ // findele(treeData,id)
|
|
|
|
+ // return allparents
|
|
|
|
+
|
|
|
|
+ // },
|
|
|
|
+ },
|
|
|
|
+ })
|
|
</script>
|
|
</script>
|
|
|
|
|
|
<style scoped>
|
|
<style scoped>
|
|
.tree{
|
|
.tree{
|
|
- height: calc(100vh - 185px);
|
|
|
|
- width: 100%;
|
|
|
|
|
|
+ height: calc(100vh - 185px);
|
|
|
|
+ width: 100%;
|
|
}
|
|
}
|
|
</style>
|
|
</style>
|