阅行客电子档案
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

<template>
<div class="tree-scroll">
<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">
<span slot-scope="{ node, data }" class="custom-tree-node">
<span v-if="data.level===1" class="iconStoreHouse">
{{ data.name }}
</span>
<span v-if="data.deviceName" class="iconLevel">
{{ data.name }}
</span>
</span>
</el-tree>
</div>
</template>
<script>
import { menu } from '@/api/storeManage/levelManage/level'
const dataArray = [
{
'id': 'DDAF09DDD05ED8ACF9928E',
'supplierId': {
'id': '3D9732A0F3615E925C634D',
'name': '金虎',
'remark': null,
'phone': null,
'deviceModel': '设备型号',
'sequence': 1,
'create_by': 'system',
'update_by': 'system',
'create_time': 1657079102000,
'update_time': 1657079106000
},
'storeroomId': {
'id': 'D6490DA3D4261E8C26D0E3',
'name': '5F 档案库',
'pid': '9BD20FDB985472600B5B35',
'remark': '5F 档案库',
'sort': 1,
'children': null,
'create_by': 'System',
'update_by': 'admin',
'create_time': 1656937675000,
'update_time': 1687660503000
},
'deviceTypeId': {
'id': 'DD656054BE3D1DF1E2F1FC',
'name': '密集架',
'create_by': 'system',
'update_by': 'system',
'create_time': 1657499126000,
'update_time': 1657499131000
},
'deviceSpecParamId': null,
'deviceId': null,
'deviceName': '5F_档案库_密集架',
'deviceIp': '192.168.1.110',
'devicePort': 16000,
'deviceState': 1,
'deviceAccount': null,
'devicePassword': null,
'rowNo': 6,
'areaNo': 1,
'sumColumnNo': 10,
'firstColumnNo': 1,
'partNo': 5,
'storeroomCode': '12345678',
'columnRowNo': null,
'cupboardNo': null,
'videoRoute': null,
'isNotice': true,
'sequence': 43,
'isLinkage': null,
'isCallback': null,
'create_by': 'admin',
'update_by': 'admin',
'create_time': 1661409034000,
'update_time': 1687664660000
}
]
export default {
name: 'DeviceTree',
data() {
return {
deviceTree: [],
defaultProps: {
children: 'children',
label: 'name'
},
defaultExpandedKeys: [],
defaultCheckedKeys: []
}
},
created() {
this.getDeviceTree()
},
methods: {
getDeviceTree() {
let defaultCheckedData = {}
const data = dataArray
let storeroom = {}
let devices = []
this.deviceTree.splice(0, this.deviceTree.length)
for (let i = 0; i < data.length; i++) {
if (!storeroom.id) {
storeroom = data[i].storeroomId
storeroom.level = 1
data[i].name = data[i].deviceName
data[i].isCurrent = true
devices.push(data[i])
// 设置第一个区域第一个节点的默认选中
defaultCheckedData = data[i]
// 第一个区域默认展开
this.defaultExpandedKeys.push(data[i].storeroomId.id)
} else if (storeroom.id !== data[i].storeroomId.id) {
storeroom.children = devices
this.deviceTree.push(storeroom)
devices = []
data[i].name = data[i].deviceName
devices.push(data[i])
storeroom = data[i].storeroomId
} else {
data[i].name = data[i].deviceName
devices.push(data[i])
}
if (i === data.length - 1) {
storeroom.children = devices
this.deviceTree.push(storeroom)
}
}
console.log(this.deviceTree)
this.$nextTick(() => {
// 设置第一个区域第一个节点的默认选中
this.handleNodeClick(defaultCheckedData)
this.$refs.deviceTree.setCurrentKey(defaultCheckedData.id)
})
menu().then((data) => {
})
},
handleNodeClick(selectedData) {
if (selectedData.deviceName) {
this.$emit('nodeClick', selectedData)
}
}
}
}
</script>
<style lang="scss" scoped>
.tree-scroll{
font-size: 14px;
}
</style>