zhangjq
2026-01-26 da84a8d3418433c7de77068c933349c874ec70bc
ZJQ修复楼栋树结构导入日志稳定性
3个文件已修改
87 ■■■■ 已修改文件
public/components/property/roomTreeDiv/roomTreeDiv.js 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/pages/property/assetImportLog/assetImportLog.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/pages/property/assetImportLogDetail/assetImportLogDetail.js 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
public/components/property/roomTreeDiv/roomTreeDiv.js
@@ -77,6 +77,17 @@
                        communityId: vc.getCurrentCommunity().communityId
                    }
                };
                // 验证社区ID是否存在
                let communityId = vc.getCurrentCommunity().communityId;
                console.log('当前社区ID:', communityId);
                if (!communityId) {
                    console.error('未获取到有效的社区ID');
                    $that.roomTreeDivInfo.units = [];
                    $that._initJsTreeRoomTreeDivFloorUnit();
                    return;
                }
                // 发送 GET 请求获取单元数据
                vc.http.apiGet('/unit.queryUnits',
                    param,
@@ -88,39 +99,39 @@
                        console.log('单元API返回原始数据:', json);
                        let unitsData = [];
                        
                        if (json) {
                        if (json && json.trim() !== '') {
                            try {
                                // 解析 JSON 数据
                                let _unitInfo = JSON.parse(json);
                                console.log('解析后的单元数据:', _unitInfo);
                                
                                // 增强数据处理,支持多种响应格式
                                if (_unitInfo && Array.isArray(_unitInfo)) {
                                if (_unitInfo && _unitInfo.code == 0) {
                                    // 标准组件API返回格式
                                    if (_unitInfo.data && Array.isArray(_unitInfo.data)) {
                                        unitsData = _unitInfo.data;
                                        console.log('使用标准格式.data字段数组,共', unitsData.length, '条单元数据');
                                    } else if (_unitInfo.units && Array.isArray(_unitInfo.units)) {
                                        unitsData = _unitInfo.units;
                                        console.log('使用标准格式.units字段数组,共', unitsData.length, '条单元数据');
                                    }
                                } else if (_unitInfo && Array.isArray(_unitInfo)) {
                                    // 直接数组格式
                                    unitsData = _unitInfo;
                                    console.log('使用直接数组格式,共', unitsData.length, '条单元数据');
                                } else if (_unitInfo && _unitInfo.data && Array.isArray(_unitInfo.data)) {
                                    unitsData = _unitInfo.data;
                                    console.log('使用.data字段数组,共', unitsData.length, '条单元数据');
                                } else if (_unitInfo && _unitInfo.units && Array.isArray(_unitInfo.units)) {
                                    unitsData = _unitInfo.units;
                                    console.log('使用.units字段数组,共', unitsData.length, '条单元数据');
                                } else if (_unitInfo && typeof _unitInfo === 'object') {
                                    // 处理其他可能的对象格式
                                    console.warn('单元数据格式不符合预期,尝试查找数组字段:', _unitInfo);
                                    // 遍历对象属性,查找可能的数据数组
                                    for (let key in _unitInfo) {
                                        if (Array.isArray(_unitInfo[key])) {
                                            unitsData = _unitInfo[key];
                                            console.log('从', key, '字段获取单元数据,共', unitsData.length, '条');
                                            break;
                                        }
                                    }
                                    // 单对象格式
                                    unitsData = [_unitInfo];
                                    console.log('使用单对象格式,共 1 条单元数据');
                                } else {
                                    console.warn('单元数据格式不符合预期,无法提取数组:', _unitInfo);
                                }
                            } catch (e) {
                                console.error('解析单元数据时发生错误:', e);
                                console.error('原始响应数据:', json);
                            }
                        } else {
                            console.warn('单元API返回空数据');
                        }
                        
                        console.log('最终处理后的单元数据:', unitsData);
@@ -173,8 +184,12 @@
                    if (_callName == 'oweFeeCallable') {
                        return;
                    }
                    // 默认选中第一个单元
                    // 默认选中第一个单元,添加安全检查避免出错
                    if (_data && _data.length > 0 && _data[0].children && _data[0].children.length > 0) {
                    $('#jstree_floorUnitRoomDiv').jstree('select_node', _data[0].children[0].id /* , true */);
                    } else {
                        console.log('没有可用的单元数据,无法默认选中');
                    }
                });
                /**
                 * 监听树节点变化事件
public/pages/property/assetImportLog/assetImportLog.js
@@ -25,6 +25,11 @@
                vc.component._listAssetImportLogs(_currentPage, DEFAULT_ROWS);
            });
        },
        _destroyedMethod: function () {
            console.log('导入日志列表页面已销毁,清理资源');
            // 标记组件已销毁,用于异步回调中检查
            vc.component._isDestroyed = true;
        },
        methods: {
            _listAssetImportLogs: function (_page, _rows) {
                var param = {
@@ -39,6 +44,12 @@
                    param,
                    function (json, res) {
                        try {
                            // 检查组件是否已销毁
                            if (vc.component._isDestroyed) {
                                console.log('组件已销毁,跳过数据处理');
                                return;
                            }
                            let _assetImportLogInfo = JSON.parse(json);
                            console.log('查询导入日志成功,返回数据:', _assetImportLogInfo);
                            
@@ -67,6 +78,12 @@
                        }
                    },
                    function (errInfo, error) {
                        // 检查组件是否已销毁
                        if (vc.component._isDestroyed) {
                            console.log('组件已销毁,跳过错误处理');
                            return;
                        }
                        // 详细记录错误信息,便于调试
                        console.error('请求导入日志失败:', errInfo, error);
                        
public/pages/property/assetImportLogDetail/assetImportLogDetail.js
@@ -72,6 +72,11 @@
                $that._listAssetImportLogDetails(_currentPage, DEFAULT_ROWS);
            });
        },
        _destroyedMethod: function() {
            console.log('导入日志详情页面已销毁,清理资源');
            // 重置状态,避免组件销毁后仍有代码访问组件数据
            $that = null;
        },
        methods: {
            _openDelRoomModel: function(content) {
                // 解析 JSON 字符串
@@ -118,6 +123,12 @@
                    vc.http.apiGet('/assetImportLogDetail/queryAssetImportLogDetail',
                        params,
                        function(json, res) {
                            // 检查组件是否已销毁
                            if (!$that) {
                                console.log('组件已销毁,跳过日志详情处理');
                                return;
                            }
                            console.log('查询日志详情响应:', json);
                            try {
                                // 检查响应是否为空
@@ -194,6 +205,12 @@
                            }
                        },
                        function(errInfo, error) {
                            // 检查组件是否已销毁
                            if (!$that) {
                                console.log('组件已销毁,跳过日志详情错误处理');
                                return;
                            }
                            console.log('请求日志详情失败:', errInfo, error);
                            
                            // 如果是网络错误或超时,且重试次数未达上限,则重试