UEquipmentTree.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <template>
  2. <div class="equipment-tree-container">
  3. <a-input-search style="margin-bottom: 8px" placeholder="Search" @change="onChange" />
  4. <div class="tree-container">
  5. <a-tree
  6. :expanded-keys="expandedKeys"
  7. auto-expand-parent
  8. :tree-data="tpmTreeData"
  9. @expand="onExpand"
  10. :replace-fields="replaceFields"
  11. @select="selectNode"
  12. >
  13. <!-- :filter-tree-node="filterTreeNode" -->
  14. </a-tree>
  15. </div>
  16. </div>
  17. </template>
  18. <script>
  19. import { getAction } from '@api/manage'
  20. export default({
  21. name: 'UEquipmentTree',
  22. components: {
  23. },
  24. data () {
  25. return {
  26. expandedKeys: [],
  27. searchValue: '',
  28. autoExpandParent: true,
  29. tpmListData: [], // 原始数据
  30. tpmTreeData: [], // 树形列表使用数据
  31. replaceFields: {
  32. children: 'children',
  33. title: 'name',
  34. },
  35. }
  36. },
  37. created() {
  38. this.getTpmTreeData()
  39. },
  40. methods: {
  41. getTpmTreeData(){
  42. getAction(`/base/interlockBase/lever12`).then(res=>{
  43. if (res.success) {
  44. // 防止res.result对tpmListData造成地址赋值的问题
  45. this.tpmListData = JSON.parse(JSON.stringify(res.result))
  46. this.tpmTreeData = this.handleTree(res.result, "id", "parentid")
  47. console.log(this.tpmTreeData)
  48. } else {
  49. }
  50. })
  51. },
  52. filterTreeNode(node) {
  53. // console.log(node)
  54. // if (!inputValue) return true;
  55. return node.title.indexOf('设备') !== -1;
  56. },
  57. onExpand(expandedKeys) {
  58. this.expandedKeys = expandedKeys;
  59. this.autoExpandParent = false;
  60. },
  61. onChange(e) {
  62. const value = e.target.value;
  63. // 筛选后数据
  64. var filterData = []
  65. // 筛选符合条件的数据:包含当前搜索的项
  66. console.log(this.tpmListData)
  67. filterData = this.tpmListData.filter(item => (item.name.indexOf(value) !== -1))
  68. // var data = []
  69. // filterData.forEach(item => {
  70. // var arr = this.tpmListData.filter(data => item.parentid === data.id)
  71. // console.log('父级', arr)
  72. // // filterData = [...filterData, ...arr]
  73. // })
  74. // 循环寻找父级
  75. // console.log(this.findParents(this.tpmTreeData, '287813167808513'))
  76. this.tpmTreeData = this.handleTree(filterData, "id", "parentid")
  77. // const expandedKeys = dataList.map(item => {
  78. // if (item.name.indexOf(value) > -1) {
  79. // // return getParentKey(item.key, gData);
  80. // return this.filterNode(item.key, gData);
  81. // }
  82. // return null;
  83. // }).filter((item, i, self) => item && self.indexOf(item) === i);
  84. // Object.assign(this, {
  85. // expandedKeys,
  86. // searchValue: value,
  87. // autoExpandParent: true,
  88. // });
  89. },
  90. // findParents(treeData,id){
  91. // let allparents = []
  92. // if(treeData.length==0){
  93. // return
  94. // }
  95. // let findele = (data,id) => {
  96. // if(!id) return
  97. // data.forEach((item,index) => {
  98. // if(item.id == id){
  99. // allparents.unshift(item.id)
  100. // findele(treeData,item.parentid)
  101. // }else{
  102. // if(!!item.children){
  103. // findele(item.children,id)
  104. // }
  105. // }
  106. // })
  107. // }
  108. // findele(treeData,id)
  109. // return allparents
  110. // },
  111. selectNode(selectedKeys, e){
  112. this.$emit('select', selectedKeys, e)
  113. },
  114. },
  115. })
  116. </script>
  117. <style lang="less" scoped>
  118. .equipment-tree-container{
  119. width: 100%;
  120. height: 100%;
  121. background-color: #fff;
  122. padding: 15px;
  123. .tree-container{
  124. width: 100%;
  125. height: calc(100% - 40px);
  126. overflow: auto;
  127. }
  128. }
  129. </style>