zhangjiaqing
8 天以前 1cef3adee31c6934c0da4b4f0b8a6f5ac03b364f
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
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
(function (vc) {
    var DEFAULT_PAGE = 1;
    var DEFAULT_ROW = 10;
    var TEMP_SEARCH = 'contractCreateFeeSearch';
    
    vc.extends({
        data: {
            roomUnits: [],
            contractCreateFeeInfo: {
                contracts: [],
                total: 0,
                records: 1,
                floorId: '',
                unitId: '',
                state: '',
                roomNum: '',
                moreCondition: false,
                conditions: {
                    contractName: '',
                    contractNameLike: '',
                    contractCode: '',
                    contractType: ''
                }
            },
            currentPage: 1,
        },
        _initMethod: function () {
            console.log('=== 组件初始化开始 ===');
            console.log('当前组件数据:', vc.component);
            console.log('当前contractCreateFeeInfo:', vc.component.contractCreateFeeInfo);
            
            let _tempData = vc.getData(TEMP_SEARCH);
            console.log('临时搜索数据:', _tempData);
            
            if (_tempData == null) {
                console.log('首次加载,使用默认参数');
                vc.component.contractCreateFeeInfo.conditions.floorId = vc.getParam("floorId");
                vc.component.contractCreateFeeInfo.conditions.floorName = vc.getParam("floorName");
                console.log('调用listContract:', DEFAULT_PAGE, DEFAULT_ROW);
                vc.component.listContract(DEFAULT_PAGE, DEFAULT_ROW);
            } else {
                console.log('使用临时数据', _tempData.currentPage);
                vc.component.contractCreateFeeInfo.conditions = _tempData.conditions;
                vc.component.updateCurrentPage(_tempData.currentPage);
                console.log('调用listContract:', _tempData.currentPage, DEFAULT_ROW);
                vc.component.listContract(_tempData.currentPage, DEFAULT_ROW);
            }
            console.log('=== 组件初始化完成 ===');
        },
        _initEvent: function () {
            vc.on('room', 'chooseFloor', function (_param) {
                vc.component.contractCreateFeeInfo.conditions.floorId = _param.floorId;
                vc.component.contractCreateFeeInfo.conditions.floorName = _param.floorName;
                vc.component.loadUnits(_param.floorId);
            });
            vc.on('pagination', 'page_event', function (_currentPage) {
                vc.component.updateCurrentPage(_currentPage);
                vc.component.listContract(_currentPage, DEFAULT_ROW);
            });
        },
        methods: {
            listContract: function (_page, _row) {
                try {
                    vc.component.contractCreateFeeInfo.conditions.page = _page;
                    vc.component.contractCreateFeeInfo.conditions.row = _row;
                    
                    // 调试communityId获取
                    console.log('=== 获取communityId ===');
                    console.log('vc.getCurrentCommunity():', vc.getCurrentCommunity());
                    var currentCommunity = vc.getCurrentCommunity();
                    var communityId = currentCommunity ? currentCommunity.communityId : '';
                    console.log('获取到的communityId:', communityId);
                    
                    vc.component.contractCreateFeeInfo.conditions.communityId = communityId;
                    vc.component.contractCreateFeeInfo.conditions.contractName = vc.component.contractCreateFeeInfo.conditions.contractName.trim();
                    vc.component.contractCreateFeeInfo.conditions.contractNameLike = vc.component.contractCreateFeeInfo.conditions.contractNameLike.trim();
                    vc.component.contractCreateFeeInfo.conditions.contractCode = vc.component.contractCreateFeeInfo.conditions.contractCode.trim();
                    vc.component.contractCreateFeeInfo.conditions.contractType = vc.component.contractCreateFeeInfo.conditions.contractType.trim();
                    let _conditions = JSON.parse(JSON.stringify(vc.component.contractCreateFeeInfo.conditions));
                    let param = {
                        params: _conditions
                    };
                    
                    console.log('=== 开始查询合同数据 ===');
                    console.log('查询参数:', param);
                    console.log('当前contracts:', vc.component.contractCreateFeeInfo.contracts);
                    console.log('当前contractCreateFeeInfo:', vc.component.contractCreateFeeInfo);
                    
                    vc.http.apiGet('/contract/queryContract',
                        param,
                        function (json, res) {
                            try {
                                console.log('=== 收到响应数据 ===');
                                console.log('原始响应:', json);
                                console.log('响应类型:', typeof json);
                                
                                // 检查响应是否已经是对象
                                var listContractData = typeof json === 'string' ? JSON.parse(json) : json;
                                console.log('处理后的数据:', listContractData);
                                
                                // 验证响应数据结构
                                if (!listContractData) {
                                    console.error('响应数据为空');
                                    vc.component.contractCreateFeeInfo.contracts = [];
                                    vc.component.contractCreateFeeInfo.total = 0;
                                    vc.component.contractCreateFeeInfo.records = 0;
                                    return;
                                }
                                
                                console.log('data字段:', listContractData.data);
                                console.log('data类型:', typeof listContractData.data);
                                console.log('data是否为数组:', Array.isArray(listContractData.data));
                                console.log('data长度:', listContractData.data ? listContractData.data.length : 0);
                                console.log('total:', listContractData.total);
                                console.log('records:', listContractData.records);
                                
                                // 保存数据前的状态
                                console.log('保存前contracts:', vc.component.contractCreateFeeInfo.contracts);
                                
                                vc.component.contractCreateFeeInfo.total = listContractData.total || 0;
                                vc.component.contractCreateFeeInfo.records = listContractData.records || 0;
                                
                                // 强制Vue更新 - 解决响应式问题
                                console.log('=== 开始强制更新 ===');
                                vc.component.contractCreateFeeInfo.contracts = [];
                                console.log('清空后contracts:', vc.component.contractCreateFeeInfo.contracts);
                                
                                setTimeout(() => {
                                    try {
                                        // 确保data是数组
                                        var contractData = Array.isArray(listContractData.data) ? listContractData.data : [];
                                        console.log('准备赋值的data:', contractData);
                                        console.log('准备赋值的data长度:', contractData.length);
                                        
                                        // 深拷贝数据,确保响应式
                                        var deepCopiedData = JSON.parse(JSON.stringify(contractData));
                                        console.log('深拷贝后的数据:', deepCopiedData);
                                        
                                        vc.component.contractCreateFeeInfo.contracts = deepCopiedData;
                                        console.log('保存后contracts:', vc.component.contractCreateFeeInfo.contracts);
                                        console.log('保存后contracts长度:', vc.component.contractCreateFeeInfo.contracts.length);
                                        console.log('保存后contractCreateFeeInfo:', vc.component.contractCreateFeeInfo);
                                        
                                        // 手动触发Vue更新
                                        if (vc.$forceUpdate) {
                                            console.log('调用$forceUpdate');
                                            vc.$forceUpdate();
                                        }
                                        
                                        // 确保分页组件初始化
                                        var totalPages = Math.ceil(vc.component.contractCreateFeeInfo.total / _row) || 1;
                                        vc.emit('pagination', 'init', {
                                            total: totalPages,
                                            dataCount: vc.component.contractCreateFeeInfo.total,
                                            currentPage: _page
                                        });
                                        
                                        vc.component.saveTempSearchData();
                                        console.log('=== 查询完成 ===');
                                    } catch (innerError) {
                                        console.error('处理响应数据时出错:', innerError);
                                        vc.component.contractCreateFeeInfo.contracts = [];
                                    }
                                }, 0);
                            } catch (error) {
                                console.error('解析响应数据时出错:', error);
                                vc.component.contractCreateFeeInfo.contracts = [];
                            }
                        },
                        function (errInfo, error) {
                            console.error('请求失败处理:', errInfo, error);
                            // 请求失败时显示空数组
                            vc.component.contractCreateFeeInfo.contracts = [];
                            vc.component.contractCreateFeeInfo.total = 0;
                            vc.component.contractCreateFeeInfo.records = 0;
                            // 确保分页组件初始化
                            vc.emit('pagination', 'init', {
                                total: 0,
                                dataCount: 0,
                                currentPage: _page
                            });
                        }
                    );
                } catch (error) {
                    console.error('查询合同数据时出错:', error);
                    vc.component.contractCreateFeeInfo.contracts = [];
                }
            },
            _openViewRoomCreateFee: function (_contract) {
                vc.jumpToPage("/#/pages/contract/contractDetail?contractId=" + _contract.contractId + "&contractCode=" + _contract.contractCode);
            },
            _queryRoomMethod: function () {
                vc.component.updateCurrentPage(DEFAULT_PAGE);
                vc.component.listContract(DEFAULT_PAGE, DEFAULT_ROW);
            },
            _resetRoomMethod: function () {
                vc.component.contractCreateFeeInfo.conditions.contractName = "";
                vc.component.contractCreateFeeInfo.conditions.contractNameLike = "";
                vc.component.contractCreateFeeInfo.conditions.contractCode = "";
                vc.component.contractCreateFeeInfo.conditions.contractType = "";
                vc.component.updateCurrentPage(DEFAULT_PAGE);
                vc.component.listContract(DEFAULT_PAGE, DEFAULT_ROW);
            },
            _moreCondition: function () {
                if (vc.component.contractCreateFeeInfo.moreCondition) {
                    vc.component.contractCreateFeeInfo.moreCondition = false;
                } else {
                    vc.component.contractCreateFeeInfo.moreCondition = true;
                }
            },
            _toOwnerPayFee: function (_ContractFeeInfo) {
                vc.jumpToPage('/#/pages/property/owePayFeeOrder?payObjId=' + _ContractFeeInfo.contractId + '&payObjType=7777&contractName=' + _ContractFeeInfo.contractName);
            },
            _printOwnOrder: function (_room) {
                vc.jumpToPage('print.html#/pages/property/printOweFee?roomId=' + _room.roomId);
            },
            _openTranslateFeeManualCollectionDetailModel: function (_room) {
                let _data = {
                    roomId: _room.roomId,
                    communityId: vc.getCurrentCommunity().communityId
                };
                vc.http.apiPost(
                    '/feeManualCollection/saveFeeManualCollection',
                    JSON.stringify(_data), {
                        emulateJSON: true
                    },
                    function (json, res) {
                        let _json = JSON.parse(json);
                        if (_json.code == 0) {
                            vc.jumpToPage('/#/pages/property/feeManualCollectionManage');
                            vc.toast("保存成功");
                            return;
                        } else {
                            vc.toast(_json.msg);
                        }
                    },
                    function (errInfo, error) {
                        console.log('请求失败处理');
                        vc.message(errInfo);
                    }
                );
            },
            updateCurrentPage: function (page) {
                vc.component.currentPage = page;
            },
            saveTempSearchData: function () {
                let conditions = vc.component.contractCreateFeeInfo.conditions;
                vc.saveData(TEMP_SEARCH, {
                    conditions: conditions,
                    currentPage: vc.component.currentPage
                });
            },
            _downloadCollectionLetterOrder: function () {
                vc.jumpToPage('/callComponent/feeManualCollection/downloadCollectionLetterOrder?communityId=' + vc.getCurrentCommunity().communityId);
            },
            _downloadRoomCollectionLetterOrder: function (_room) {
                vc.jumpToPage('/callComponent/feeManualCollection/downloadCollectionLetterOrder?communityId=' + vc.getCurrentCommunity().communityId + "&roomId=" + _room.roomId);
            },
            _viewContract: function (_contract) {
                vc.jumpToPage("/#/pages/common/contractApplyDetail?contractId=" + _contract.contractId);
            },
            _openContractCreateFeeAddModal: function (_room, _isMore) {
                console.log("look here");
                console.log(_room);
                console.log(_isMore);
                vc.emit('contractCreateFeeAdd', 'openContractCreateFeeAddModal', {
                    isMore: _isMore,
                    contract: _room
                });
            },
            // 打开导入弹窗
            _importContract: function () {
                vc.emit('importContract', 'openImportContractModal', {});
            }
        }
    });
})(window.vc);