阅行客电子档案
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

152 lines
4.3 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. <template>
  2. <div class="tree-scroll">
  3. <el-tree ref="deviceTree" :data="deviceTree" :props="defaultProps" node-key="id" :default-expanded-keys="defaultExpandedKeys" :default-checked-keys="defaultCheckedKeys" :expand-on-click-node="false" highlight-current @node-click="handleNodeClick">
  4. <span slot-scope="{ node, data }" class="custom-tree-node">
  5. <span v-if="data.level===1" class="iconStoreHouse">
  6. {{ data.name }}
  7. </span>
  8. <span v-if="data.deviceName" class="iconLevel">
  9. {{ data.name }}
  10. </span>
  11. </span>
  12. </el-tree>
  13. </div>
  14. </template>
  15. <script>
  16. import { menu } from '@/api/storeManage/levelManage/level'
  17. const dataArray = [
  18. {
  19. 'id': 'DDAF09DDD05ED8ACF9928E',
  20. 'supplierId': {
  21. 'id': '3D9732A0F3615E925C634D',
  22. 'name': '金虎',
  23. 'remark': null,
  24. 'phone': null,
  25. 'deviceModel': '设备型号',
  26. 'sequence': 1,
  27. 'create_by': 'system',
  28. 'update_by': 'system',
  29. 'create_time': 1657079102000,
  30. 'update_time': 1657079106000
  31. },
  32. 'storeroomId': {
  33. 'id': 'D6490DA3D4261E8C26D0E3',
  34. 'name': '5F 档案库',
  35. 'pid': '9BD20FDB985472600B5B35',
  36. 'remark': '5F 档案库',
  37. 'sort': 1,
  38. 'children': null,
  39. 'create_by': 'System',
  40. 'update_by': 'admin',
  41. 'create_time': 1656937675000,
  42. 'update_time': 1687660503000
  43. },
  44. 'deviceTypeId': {
  45. 'id': 'DD656054BE3D1DF1E2F1FC',
  46. 'name': '密集架',
  47. 'create_by': 'system',
  48. 'update_by': 'system',
  49. 'create_time': 1657499126000,
  50. 'update_time': 1657499131000
  51. },
  52. 'deviceSpecParamId': null,
  53. 'deviceId': null,
  54. 'deviceName': '5F_档案库_密集架',
  55. 'deviceIp': '192.168.1.110',
  56. 'devicePort': 16000,
  57. 'deviceState': 1,
  58. 'deviceAccount': null,
  59. 'devicePassword': null,
  60. 'rowNo': 6,
  61. 'areaNo': 1,
  62. 'sumColumnNo': 10,
  63. 'firstColumnNo': 1,
  64. 'partNo': 5,
  65. 'storeroomCode': '12345678',
  66. 'columnRowNo': null,
  67. 'cupboardNo': null,
  68. 'videoRoute': null,
  69. 'isNotice': true,
  70. 'sequence': 43,
  71. 'isLinkage': null,
  72. 'isCallback': null,
  73. 'create_by': 'admin',
  74. 'update_by': 'admin',
  75. 'create_time': 1661409034000,
  76. 'update_time': 1687664660000
  77. }
  78. ]
  79. export default {
  80. name: 'DeviceTree',
  81. data() {
  82. return {
  83. deviceTree: [],
  84. defaultProps: {
  85. children: 'children',
  86. label: 'name'
  87. },
  88. defaultExpandedKeys: [],
  89. defaultCheckedKeys: []
  90. }
  91. },
  92. created() {
  93. this.getDeviceTree()
  94. },
  95. methods: {
  96. getDeviceTree() {
  97. let defaultCheckedData = {}
  98. const data = dataArray
  99. let storeroom = {}
  100. let devices = []
  101. this.deviceTree.splice(0, this.deviceTree.length)
  102. for (let i = 0; i < data.length; i++) {
  103. if (!storeroom.id) {
  104. storeroom = data[i].storeroomId
  105. storeroom.level = 1
  106. data[i].name = data[i].deviceName
  107. data[i].isCurrent = true
  108. devices.push(data[i])
  109. // 设置第一个区域第一个节点的默认选中
  110. defaultCheckedData = data[i]
  111. // 第一个区域默认展开
  112. this.defaultExpandedKeys.push(data[i].storeroomId.id)
  113. } else if (storeroom.id !== data[i].storeroomId.id) {
  114. storeroom.children = devices
  115. this.deviceTree.push(storeroom)
  116. devices = []
  117. data[i].name = data[i].deviceName
  118. devices.push(data[i])
  119. storeroom = data[i].storeroomId
  120. } else {
  121. data[i].name = data[i].deviceName
  122. devices.push(data[i])
  123. }
  124. if (i === data.length - 1) {
  125. storeroom.children = devices
  126. this.deviceTree.push(storeroom)
  127. }
  128. }
  129. console.log(this.deviceTree)
  130. this.$nextTick(() => {
  131. // 设置第一个区域第一个节点的默认选中
  132. this.handleNodeClick(defaultCheckedData)
  133. this.$refs.deviceTree.setCurrentKey(defaultCheckedData.id)
  134. })
  135. menu().then((data) => {
  136. })
  137. },
  138. handleNodeClick(selectedData) {
  139. if (selectedData.deviceName) {
  140. this.$emit('nodeClick', selectedData)
  141. }
  142. }
  143. }
  144. }
  145. </script>
  146. <style lang="scss" scoped>
  147. .tree-scroll{
  148. font-size: 14px;
  149. }
  150. </style>