zhangjq
2026-01-30 50f30a5b51a1940185985ba0cb899fdd9527676c
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
/**
 * 电话表管理模块
 * 功能:实现电话表的查询、添加、编辑、删除和导入功能
 * 后端API:基于Spring Boot实现的电话表管理接口
 */
(function (vc) {
    // 默认分页参数
    var DEFAULT_PAGE = 1;
    var DEFAULT_ROWS = 10;
    
    vc.extends({
        data: {
            // 电话表管理信息对象
            phoneMeterManageInfo: {
                // 电话表数据列表
                phoneBillFlows: [],
                // 总记录数
                total: 0,
                // 总页数
                records: 1,
                // 是否显示更多查询条件
                moreCondition: false,
                // 房间名称
                roomName: '',
                // 查询条件
                conditions: {
                    // 设备编号
                    deviceNum: '',
                    // 房间编号
                    roomNum: '',
                    // 对象ID(房间ID)
                    objId: ''
                },
                // 定时器对象,用于输入搜索
                timer: {}
            }
        },
        /**
         * 初始化方法
         * 功能:初始化房间树、加载电话表数据
         */
        _initMethod: function () {
            // 初始化房间树组件
            vc.emit('roomTreeDiv', 'initRoomTreeDiv', {
                callName: 'phoneMeterManage'
            });
            // 加载电话表数据
            if (typeof $that._listPhoneBillFlows === 'function') {
                $that._listPhoneBillFlows(DEFAULT_PAGE, DEFAULT_ROWS);
            }
        },
        /**
         * 初始化事件监听
         * 功能:监听组件间的事件通信
         */
        _initEvent: function () {
            // 监听选择房间事件
            vc.on('phoneMeterManage', 'selectRoom', function (_param) {
                $that.phoneMeterManageInfo.conditions.objId = _param.roomId;
                $that.phoneMeterManageInfo.conditions.roomNum = '';
                $that.phoneMeterManageInfo.roomName = _param.roomName;
                // 重新加载电话表数据
                $that._listPhoneBillFlows(DEFAULT_PAGE, DEFAULT_ROWS);
            });
            
            // 监听列表刷新事件
            vc.on('phoneMeterManage', 'listPhoneBillFlow', function (_param) {
                $that._listPhoneBillFlows(DEFAULT_PAGE, DEFAULT_ROWS);
            });
            
            // 监听分页事件
            vc.on('pagination', 'page_event', function (_currentPage) {
                $that._listPhoneBillFlows(_currentPage, DEFAULT_ROWS);
            });
            
            // 监听通知房间事件
            vc.on('phoneMeterManage', 'notifyRoom', function (_room) {
                $that.phoneMeterManageInfo.conditions.roomNum = _room.floorNum + "-" + _room.unitNum + "-" + _room.roomNum;
                // 重新加载电话表数据
                $that._listPhoneBillFlows(DEFAULT_PAGE, DEFAULT_ROWS);
            });
        },
        methods: {
            /**
             * 查询电话表数据
             * @param {number} _page 当前页码
             * @param {number} _rows 每页记录数
             */
            _listPhoneBillFlows: function (_page, _rows) {
                // 设置分页参数
                $that.phoneMeterManageInfo.conditions.page = _page;
                $that.phoneMeterManageInfo.conditions.row = _rows;
                // 设置小区ID
                $that.phoneMeterManageInfo.conditions.communityId = vc.getCurrentCommunity().communityId;
                
                // 构建请求参数
                let param = {
                    params: $that.phoneMeterManageInfo.conditions
                };
                
                // 去除首尾空格
                param.params.deviceNum = param.params.deviceNum.trim();
                param.params.roomNum = param.params.roomNum.trim();
                
                // 发送GET请求查询电话表数据
                vc.http.apiGet('/phoneBillFlowInfo/queryPhoneBillFlowInfo',
                    param,
                    function (json, res) {
                        // 解析响应数据
                        let _json = JSON.parse(json);
                        // 更新数据列表
                        $that.phoneMeterManageInfo.total = _json.total;
                        $that.phoneMeterManageInfo.records = _json.records;
                        
                        // 转换数据结构,将单元数据转换为电话费抄表数据格式
                        let convertedData = [];
                        if (_json.data && Array.isArray(_json.data)) {
                            _json.data.forEach(item => {
                                convertedData.push({
                                    deviceNum: item.unitNum || '-',
                                    objName: item.floorNum + '-' + item.unitNum || '-',
                                    preDegrees: '-',
                                    curDegrees: '-',
                                    preReadingTime: '-',
                                    curReadingTime: '-',
                                    createTime: '-',
                                    id: item.unitId || ''
                                });
                            });
                        }
                        
                        $that.phoneMeterManageInfo.phoneBillFlows = convertedData;
                        
                        // 更新分页组件
                        vc.emit('pagination', 'init', {
                            total: $that.phoneMeterManageInfo.records,
                            dataCount: $that.phoneMeterManageInfo.total,
                            currentPage: _page
                        });
                    },
                    function (errInfo, error) {
                        // 错误处理
                        console.log('请求失败处理');
                    }
                );
            },
            /**
             * 打开添加电话表模态框
             * 功能:触发添加电话表组件的打开事件
             */
            _openAddPhoneBillFlowModal: function () {
                vc.emit('addPhoneBillFlow', 'openAddPhoneBillFlowModal', {
                    roomId: $that.phoneMeterManageInfo.conditions.objId,
                    roomName: $that.phoneMeterManageInfo.roomName
                });
            },
            /**
             * 打开编辑电话表模态框
             * 功能:触发编辑电话表组件的打开事件
             * @param {object} _phoneBillFlow 电话表数据对象
             */
            _openEditPhoneBillFlowModel: function (_phoneBillFlow) {
                vc.emit('editPhoneBillFlow', 'openEditPhoneBillFlowModal', _phoneBillFlow);
            },
            /**
             * 打开删除电话表模态框
             * 功能:触发删除电话表组件的打开事件
             * @param {object} _phoneBillFlow 电话表数据对象
             */
            _openDeletePhoneBillFlowModel: function (_phoneBillFlow) {
                vc.emit('deletePhoneBillFlow', 'openDeletePhoneBillFlowModal', _phoneBillFlow);
            },
            /**
             * 执行查询操作
             * 功能:根据当前查询条件重新加载数据
             */
            _queryPhoneBillFlowMethod: function () {
                $that._listPhoneBillFlows(DEFAULT_PAGE, DEFAULT_ROWS);
            },
            /**
             * 执行重置操作
             * 功能:清空查询条件并重新加载数据
             */
            _resetPhoneBillFlowMethod: function () {
                // 清空查询条件
                $that.phoneMeterManageInfo.conditions.roomNum = "";
                $that.phoneMeterManageInfo.conditions.deviceNum = "";
                // 重新加载数据
                $that._listPhoneBillFlows(DEFAULT_PAGE, DEFAULT_ROWS);
            },
            /**
             * 切换更多查询条件显示状态
             * 功能:控制更多查询条件的显示与隐藏
             */
            _moreCondition: function () {
                if ($that.phoneMeterManageInfo.moreCondition) {
                    $that.phoneMeterManageInfo.moreCondition = false;
                } else {
                    $that.phoneMeterManageInfo.moreCondition = true;
                }
            },
            /**
             * 打开导入电话表模态框
             * 功能:触发导入电话表组件的打开事件
             */
            _openPhoneBillFlowImport: function () {
                vc.emit('importPhoneBillFlow', 'openImportPhoneBillFlowModal', {});
            },
            _openBatchAddPhoneBillFlowModal: function () {
                vc.emit('batchAddPhoneBillFlow', 'openBatchAddPhoneBillFlowModal', {});
            },
            /**
             * 房间输入搜索
             * 功能:通过输入房间编号搜索房间
             */
            _phoneInputRoom: function () {
                // 清除之前的定时器
                if ($that.phoneMeterManageInfo.timer) {
                    clearTimeout($that.phoneMeterManageInfo.timer)
                }
                // 设置新的定时器,延迟1.5秒执行搜索
                $that.phoneMeterManageInfo.timer = setTimeout(() => {
                    vc.emit('inputSearchRoomInfo', 'searchRoom', {
                        callComponent: 'phoneMeterManage',
                        roomName: $that.phoneMeterManageInfo.conditions.roomNum
                    });
                }, 1500)
            },
            /**
             * 计算表格容器宽度
             * 功能:根据左侧树宽度动态计算表格容器宽度
             * @returns {string} 表格容器宽度
             */
            _computeTableDivWidth: function () {
                let treeWidth = 200;
                try {
                    treeWidth = document.getElementsByClassName('room-floor-unit-tree')[0].offsetWidth;
                } catch (e) {
                    // 忽略错误,使用默认值
                }
                let mainWidth = document.body.offsetWidth - treeWidth - 50;
                return mainWidth + 'px';
            }
        }
    });
})(window.vc);