| | |
| | | <div class="home-tree-inner"> |
| | | <div class="home-tree-title"> |
| | | <div class="home-tree-title-text"> |
| | | 机房列表 |
| | | 电池组列表 |
| | | </div> |
| | | </div> |
| | | <div class="home-tree-content"> |
| | |
| | | |
| | | <script> |
| | | |
| | | import json from '@/assets/json/province-city-county.json' |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | methods: { |
| | | treeInit () { |
| | | let data = this.$store.state.allBattList; |
| | | let list = []; |
| | | var obj = {}; |
| | | |
| | | console.log(data); |
| | | data.forEach((v) => { |
| | | obj[v.StationName1] = obj[v.StationName1] || { |
| | | id: this.getCode(v.StationName1), |
| | | label: v.StationName1 |
| | | }; |
| | | obj[v.StationName1][v.StationName2] = obj[v.StationName1][v.StationName2] || { |
| | | id: this.getCode(v.StationName1 + '>' + v.StationName2), |
| | | label: v.StationName2 |
| | | }; |
| | | obj[v.StationName1][v.StationName2][v.StationName5] = obj[v.StationName1][v.StationName2][v.StationName5] || { |
| | | id: this.getCode(v.StationName1 + '>' + v.StationName2 + '>' + v.StationName5), |
| | | label: v.StationName5 |
| | | }; |
| | | obj[v.StationName1][v.StationName2][v.StationName5][v.StationName3] = obj[v.StationName1][v.StationName2][v.StationName5][v.StationName3] || { |
| | | id: v.StationId, |
| | | label: v.StationName3, |
| | | children: [] |
| | | }; |
| | | obj[v.StationName1][v.StationName2][v.StationName5][v.StationName3].children.push({ |
| | | StationName1: v.StationName1, |
| | | StationName2: v.StationName2, |
| | | StationName5: v.StationName5, |
| | | StationName3: v.StationName3, |
| | | StationName: v.StationName, |
| | | id: v.BattGroupId, |
| | | BattGroupId: v.BattGroupId, |
| | | BattGroupName: v.BattGroupName, |
| | | label: v.StationName4 + '-' + v.BattGroupName, |
| | | StationId: v.StationId, |
| | | FBSDeviceId: v.FBSDeviceId |
| | | }); |
| | | }); |
| | | Object.keys(obj).forEach((v) => { |
| | | var _obj = this.formatObj(obj[v]); |
| | | list.push(_obj); |
| | | v.id = v.BattGroupId; |
| | | v.label = v.BattGroupName; |
| | | }); |
| | | |
| | | this.treeData = list; |
| | | console.log(data, 2); |
| | | this.treeData = data; |
| | | }, |
| | | homeClick(data) { |
| | | // 如果点击的元素的数据中有 BattGroupId 则认为是点的 |
| | |
| | | this.setCurrent(data.id); |
| | | this.$emit('select-click', data); |
| | | } |
| | | }, |
| | | // 由省市区名得到对应的行政区划代码 参数省市区之间用>分隔 |
| | | getCode (txt) { |
| | | var code = 0; |
| | | var arr = txt.split('>'); |
| | | var len = arr.length; |
| | | Object.keys(json).forEach((v) => { |
| | | if (json[v].name.indexOf(arr[0]) > -1) { |
| | | if (len == 1) { |
| | | code = v |
| | | return; |
| | | } |
| | | var obj = json[v].child; |
| | | Object.keys(obj).forEach((v1) => { |
| | | if (obj[v1].name.indexOf(arr[1]) > -1) { |
| | | if (len == 2) { |
| | | code = v1; |
| | | return; |
| | | } |
| | | var obj1 = obj[v1].child; |
| | | Object.keys(obj1).forEach((v2) => { |
| | | if (obj1[v2].indexOf(arr[2]) > -1) { |
| | | code = v2; |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | return code; |
| | | }, |
| | | formatObj (obj) { |
| | | if (this.getJSType(obj) == 'object') { |
| | | var children = []; |
| | | Object.keys(obj).forEach((v) => { |
| | | if (this.getJSType(obj[v]) == 'object') { |
| | | children.push(obj[v]) |
| | | this.formatObj(obj[v]); |
| | | } |
| | | }); |
| | | obj.children = obj.children || children; |
| | | } |
| | | return obj; |
| | | }, |
| | | getJSType (param) { |
| | | var res = ''; |
| | | switch (Object.prototype.toString.call(param)) { |
| | | case '[object Object]': |
| | | res = 'object'; |
| | | break; |
| | | case '[object Array]': |
| | | res = 'array'; |
| | | break; |
| | | case '[object Function]': |
| | | res = 'function'; |
| | | break; |
| | | case '[object Number]': |
| | | res = 'number'; |
| | | break; |
| | | case '[object String]': |
| | | res = 'string'; |
| | | break; |
| | | case '[object Boolean]': |
| | | res = 'boolean'; |
| | | break; |
| | | } |
| | | return res; |
| | | } |
| | | // 设置高亮 |
| | | ,setCurrent (key) { |