【前端】智能库房综合管理系统前端项目
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.

75 lines
2.3 KiB

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. </div>
  5. </template>
  6. <script>
  7. import { menu } from '@/api/storeManage/levelManage/level'
  8. export default {
  9. name: 'DeviceTree',
  10. data() {
  11. return {
  12. deviceTree: [],
  13. defaultProps: {
  14. children: 'children',
  15. label: 'name'
  16. },
  17. defaultExpandedKeys: [],
  18. defaultCheckedKeys: []
  19. }
  20. },
  21. created() {
  22. this.getDeviceTree()
  23. },
  24. methods: {
  25. getDeviceTree() {
  26. let defaultCheckedData = {}
  27. menu().then((data) => {
  28. let storeroom = {}
  29. let devices = []
  30. this.deviceTree.splice(0, this.deviceTree.length)
  31. for (let i = 0; i < data.length; i++) {
  32. if (!storeroom.id) {
  33. storeroom = data[i].storeroomId
  34. data[i].name = data[i].deviceName
  35. data[i].isCurrent = true
  36. devices.push(data[i])
  37. // 设置第一个区域第一个节点的默认选中
  38. defaultCheckedData = data[i]
  39. // 第一个区域默认展开
  40. this.defaultExpandedKeys.push(data[i].storeroomId.id)
  41. } else if (storeroom.id !== data[i].storeroomId.id) {
  42. storeroom.children = devices
  43. this.deviceTree.push(storeroom)
  44. devices = []
  45. data[i].name = data[i].deviceName
  46. devices.push(data[i])
  47. storeroom = data[i].storeroomId
  48. } else {
  49. data[i].name = data[i].deviceName
  50. devices.push(data[i])
  51. }
  52. if (i === data.length - 1) {
  53. storeroom.children = devices
  54. this.deviceTree.push(storeroom)
  55. }
  56. }
  57. this.$nextTick(() => {
  58. // 设置第一个区域第一个节点的默认选中
  59. this.handleNodeClick(defaultCheckedData)
  60. this.$refs.deviceTree.setCurrentKey(defaultCheckedData.id)
  61. })
  62. })
  63. },
  64. handleNodeClick(selectedData) {
  65. if (selectedData.deviceName) {
  66. this.$emit('nodeClick', selectedData)
  67. }
  68. }
  69. }
  70. }
  71. </script>
  72. <style lang="scss" scoped>
  73. </style>