zhangjq
2026-01-27 6f51f667ae7b13dca029045c221d0b1722cf98df
public/components/property/importOwnerRoom/importOwnerRoom.js
@@ -9,14 +9,13 @@
        _initMethod: function() {},
        _initEvent: function() {
            vc.on('importOwnerRoom', 'openImportOwnerRoomModal', function(_param) {
                $that.clearAddFeeConfigInfo();
                $('#importOwnerRoomModel').modal('show');
            });
        },
        methods: {
            importOwnerRoomValidate() {
                return vc.validate.validate({
                    importOwnerRoomInfo: vc.component.importOwnerRoomInfo
                    importOwnerRoomInfo: $that.importOwnerRoomInfo
                }, {
                    'importOwnerRoomInfo.communityId': [{
                        limit: "required",
@@ -31,70 +30,97 @@
                });
            },
            _importData: function() {
                if (!vc.component.importOwnerRoomValidate()) {
                if (!$that.importOwnerRoomValidate()) {
                    vc.toast(vc.validate.errInfo);
                    return;
                }
                // 导入数据
                if (!vc.component.checkOwnerFileType(vc.component.importOwnerRoomInfo.excelTemplate.name.split('.')[1])) {
                if (!$that.checkOwnerFileType($that.importOwnerRoomInfo.excelTemplate.name.split('.')[1])) {
                    vc.toast('不是有效的Excel格式');
                    return;
                }
                if (!vc.component.checkOwnerFileSize(vc.component.importOwnerRoomInfo.excelTemplate.size)) {
                    vc.toast('Excel文件大小不能超过2M');
                    return;
                }
                // 移除文件大小限制检查
                // if (!$that.checkOwnerFileSize($that.importOwnerRoomInfo.excelTemplate.size)) {
                //     vc.toast('Excel文件大小不能超过20M');
                //     return;
                // }
                // 使用实际的userId,如果没有则使用默认值
                let userId = vc.getData() && vc.getData().userInfo && vc.getData().userInfo.userId ? vc.getData().userInfo.userId : '-1';
                // 构建表单数据,与车辆导入保持一致
                var param = new FormData();
                param.append("uploadFile", vc.component.importOwnerRoomInfo.excelTemplate);
                param.append('communityId', vc.component.importOwnerRoomInfo.communityId);
                param.append('importAdapt', "importRoomOwner");
                param.append("uploadFile", $that.importOwnerRoomInfo.excelTemplate); // 添加Excel文件
                param.append('communityId', $that.importOwnerRoomInfo.communityId); // 添加小区ID
                param.append('importAdapt', "importRoomOwnerV2"); // 指定使用的导入适配器
                param.append('userId', userId); // 添加userId参数
                param.append('USER-ID', userId); // 添加USER-ID参数(大写形式),与车辆导入保持一致
                // param.append('feeTypeCd', vc.component.importRoomFeeInfo.feeTypeCd);
                // param.append('objType', $that.importRoomFeeInfo.objType);
                // 上传文件并处理响应,与车辆导入保持一致
                vc.http.upload(
                    'assetImport',
                    'importData',
                    param, {
                        emulateJSON: true,
                        //添加请求头
                    'assetImport', // 模块名
                    'importData', // 方法名
                    param, // 参数
                    {
                        // 移除emulateJSON,避免与Content-Type冲突
                        headers: {
                            "Content-Type": "multipart/form-data"
                        }
                    },
                    function(json, res) {
                        //vm.menus = vm.refreshMenuActive(JSON.parse(json),0);
                        // 成功回调
                        console.log('导入请求成功响应:', json); // 打印完整的响应数据到console
                        let _json = JSON.parse(json);
                        console.log('解析后的响应数据:', _json); // 打印解析后的响应数据到console
                        if (_json.code == 0) {
                            //关闭model
                            // vc.toast(_json.data);
                            $('#importOwnerRoomModel').modal('hide');
                            $that.clearAddFeeConfigInfo();
                            vc.jumpToPage('/#/pages/property/assetImportLogDetail?logId=' + _json.data.logId + '&logType=importRoomOwner');
                            // 导入成功
                            vc.toast("处理成功");
                            console.log('导入成功,logId:', _json.data.logId); // 打印logId到console
                            $('#importOwnerRoomModel').modal('hide'); // 关闭模态框
                            // 跳转到导入日志详情页面
                            vc.jumpToPage('/#/pages/property/assetImportLogDetail?logId=' + _json.data.logId + '&logType=importRoomOwnerV2');
                            return;
                        }
                        vc.toast(_json.msg, 10000);
                        // 导入失败,显示错误信息
                        console.log('导入失败,错误信息:', _json.msg); // 打印失败错误信息到console
                        // 确保错误信息有意义,避免显示"数据有误: null"
                        let errorMsg = _json.msg;
                        if (!errorMsg || errorMsg === null || errorMsg === undefined || errorMsg.includes('null') || errorMsg.includes('undefined')) {
                            errorMsg = '导入失败,请检查数据格式是否正确,或联系管理员查看详细日志';
                        }
                        // 优化错误信息显示,替换不友好的后端错误
                        if (errorMsg.includes('sheet 未找到') || errorMsg.includes('excel sheet')) {
                            errorMsg = '导入失败:未找到正确的sheet,请确保Excel文件中包含名称为"住宅物业费导入新模板"或"商铺物业费导入新模板"的sheet,且名称正确无空格';
                        }
                        vc.toast(errorMsg, 10000);
                    },
                    function(errInfo, error) {
                        console.log('请求失败处理');
                        vc.toast(errInfo, 10000);
                        // 失败回调
                        console.log('请求失败处理,原始错误信息:', errInfo); // 打印原始错误信息到console
                        console.log('请求失败,错误对象:', error); // 打印完整的错误对象到console
                        // 确保错误信息有意义,避免显示"null"或空错误
                        let errorMsg = errInfo;
                        if (!errorMsg || errorMsg === null || errorMsg === undefined || errorMsg.trim() === '') {
                            errorMsg = '导入失败,请检查文件格式或网络连接,或联系管理员';
                        }
                        // 优化网络错误信息
                        if (errorMsg.includes('SocketException') || errorMsg.includes('timeout') || errorMsg.includes('Network Error')) {
                            errorMsg = '导入失败:网络连接异常,请检查网络连接或稍后重试';
                        }
                        console.log('最终显示的错误信息:', errorMsg); // 打印最终显示的错误信息到console
                        vc.toast(errorMsg, 10000);
                        // 关闭模态框
                        $('#importOwnerRoomModel').modal('hide');
                    });
            },
            clearAddFeeConfigInfo: function() {
                // var _feeTypeCds = vc.component.importRoomFeeInfo.feeTypeCds;
                vc.component.importOwnerRoomInfo = {
                $that.importOwnerRoomInfo = {
                    communityId: vc.getCurrentCommunity().communityId,
                    excelTemplate: ''
                        // feeTypeCd: '',
                        // feeTypeCds: [],
                        // objType: '3333'
                };
                // vc.component.importRoomFeeInfo.feeTypeCds = _feeTypeCds;
            },
            _changeFeeTypeCd: function(_feeTypeCd) {},
            getExcelTemplate: function(e) {
                //console.log("getExcelTemplate 开始调用")
                vc.component.importOwnerRoomInfo.excelTemplate = e.target.files[0];
                $that.importOwnerRoomInfo.excelTemplate = e.target.files[0];
            },
            checkOwnerFileType: function(fileType) {
                const acceptTypes = ['xlsx', 'xls'];
@@ -107,7 +133,7 @@
            },
            checkOwnerFileSize: function(fileSize) {
                //2M
                const MAX_SIZE = 2 * 1024 * 1024;
                const MAX_SIZE = 20 * 1024 * 1024;
                if (fileSize > MAX_SIZE) {
                    return false;
                }