whychdw
2019-12-09 064c6d5b84fd6ddbbe4c20c41d139f7371460985
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<template>
    <div class="tree-container">
        <div class="tree-content">
            <Tree :data="data" :load-data="loadData" @on-select-change="handlerSelectChange"></Tree>
        </div>
    </div>
</template>
<script>
import {ajax} from '../libs/common'
export default {
    props: {
        homeName: {
            type: String,
            default: ''
        },
        groupName: {
            type: String,
            default: ''
        }
    },
    data() {
        return {
            first: true,
            data: []
        }
    },
    methods: {
        loadData: function(item, callback) {
            switch(item.type) {
                case 'home': 
                    this.battGroup(item, callback);
                break;
            }
        },
        home: function() {
            var self = this;
            // 获取机房列表
            ajax({
                type: "post",                 
                url: "BattInfAction!serchAllStation",                
                async:true,                
                dataType:'json',
                data:null,    
                success: function(res){
                    var rs = JSON.parse(res.result);
                    if(rs.code == 1) {
                        var data = rs.data;
                        var expand = 0;
                        for(var i=0; i<data.length; i++) {
                            var _data = data[i];
                            _data.type = "home";
                            _data.loading = false;
                            _data.title = _data.StationName;
                            _data.children = [];
                            _data.expand = false;
                            // 判断是否展开
                            if(_data.StationName == self.homeName) {
                                expand = i;
                            }
                        }
                        self.data = data;
                        // 设置被展开的机房
                        data[expand].expand = true;
                        // 查询被展开机房的电池组
                        self.battGroup(data[0], function(res) {
                            for(var i=0; i<res.length; i++) {
                                data[0].children.push(res[i]);
                            }
                        });
                    }
                },
                error: function() {
                    
                }
            });
        },
        battGroup: function(item, callback) {
            var self = this;
            // 根据机房的id获取电池组列表
            ajax({
                type: "post",                 
                url: "BattInfAction!serchBattByStation",                
                async:true,                
                dataType:'json',
                data:"json = "+JSON.stringify({
                    StationId: item.StationId
                }),    
                success: function(res){
                    var rs = JSON.parse(res.result);
                    if(rs.code == 1) {
                        var data = rs.data;
                        var selected = 0;
                        for(var i=0; i<data.length; i++) {
                            var _data = data[i];
                            _data.type="group";
                            _data.title = _data.BattGroupName;
                            _data.selected = false;
                            // 判断被选中的电池组
                            if(_data.BattGroupName == self.groupName) {
                                selected = i;
                            }
                        }
                        callback(data);
                        if(self.first) {
                            data[selected].selected = true;
                            // 触发选中电池组后的事件并通知父组件
                            self.handlerSelectChange([data[0]]);
                            self.first = false;
                        }
                       
                    }
                }
            });
        },
        handlerSelectChange: function(item) {
            var data = item[0];
            this.$emit('on-select-change', data);
        }
    },
    mounted: function() {
        this.home();        // 查询机房列表
    }
}
</script>
<style scoped>
    .tree-content {
        padding-left: 16px;
    }
</style>