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
/**
 权限组
 **/
(function(vc) {
 
    vc.extends({
        data: {
            assetImportInfo: {
                communityId: vc.getCurrentCommunity().communityId,
                excelTemplate: '',
                remark: ""
            }
        },
 
        _initMethod: function() {
 
        },
        _initEvent: function() {
 
        },
        methods: {
            assetImportValidate: function() {
                return vc.validate.validate({
                    assetImportInfo: vc.component.assetImportInfo
                }, {
 
                    'assetImportInfo.excelTemplate': [{
                        limit: "required",
                        param: "",
                        errInfo: "文件不能为空"
                    }],
                    'assetImportInfo.communityId': [{
                        limit: "required",
                        param: "",
                        errInfo: "还未入驻小区,请先入驻小区"
                    }]
                });
            },
            _openDownloadHcExcelTemplate: function() {
                //下载 模板
                vc.jumpToPage('/import/hc.xlsx')
            },
            getExcelTemplate: function(e) {
                //console.log("getExcelTemplate 开始调用")
                vc.component.assetImportInfo.excelTemplate = e.target.files[0];
            },
            _importData: function() {
 
                if (!vc.component.assetImportValidate()) {
                    vc.toast(vc.validate.errInfo);
                    return;
                }
                // 导入数据
                if (!vc.component.checkFileType(vc.component.assetImportInfo.excelTemplate.name.split('.')[1])) {
                    vc.toast('不是有效的Excel格式');
                    return;
                }
                // 移除文件大小限制检查
                // if (!vc.component.checkFileSize(vc.component.assetImportInfo.excelTemplate.size)) {
                //     vc.toast('Excel文件大小不能超过20M');
                //     return;
                // }
                // 重新获取当前社区的ID,确保使用的是最新的社区ID
                let currentCommunity = vc.getCurrentCommunity();
                if (!currentCommunity || !currentCommunity.communityId) {
                    vc.toast('无法获取当前社区信息,请重新选择社区');
                    return;
                }
                let currentCommunityId = currentCommunity.communityId;
                console.log('当前社区ID:', currentCommunityId);
                console.log('当前社区信息:', currentCommunity);
                
                var param = new FormData();
                param.append("uploadFile", vc.component.assetImportInfo.excelTemplate);
                param.append('communityId', currentCommunityId);
                param.append('importAdapt', "importRoomOwnerV2");
                // 使用实际的userId,如果没有则使用默认值
                let userId = vc.getData() && vc.getData().userInfo && vc.getData().userInfo.userId ? vc.getData().userInfo.userId : '-1';
                param.append('userId', userId);
 
                vc.http.upload(
                    'assetImport',
                    'importData',
                    param, {
                        headers: {
                            "Content-Type": "multipart/form-data"
                        }
                    },
                    function(json, res) {
                        // 打印完整的响应数据,便于调试
                        console.log('导入响应完整数据:', json);
                        try {
                            let _json = JSON.parse(json);
                            console.log('导入响应解析后数据:', _json);
                            if (res.status == 200 && _json.code == 0) {
                                //关闭model
                                vc.toast("处理成功");
                                vc.jumpToPage('/#/pages/property/listOwner')
                                return;
                            }
                            // 导入失败,显示错误信息
                            let errorMsg = _json.msg;
                            // 确保错误信息有意义,避免显示"数据有误: null"
                            if (!errorMsg || errorMsg.includes('null')) {
                                errorMsg = '导入失败,请检查数据格式是否正确,或联系管理员查看详细日志';
                            }
                            // 优化SocketException错误信息
                            if (errorMsg && errorMsg.includes('java.net.SocketException')) {
                                errorMsg = '导入失败: 网络连接异常,请检查网络连接或稍后重试';
                            }
                            vc.toast(errorMsg, 10000);
                        } catch (e) {
                            // 解析JSON失败,直接显示原始响应数据
                            console.error('解析JSON失败:', e, json);
                            vc.toast(json, 10000);
                        }
                    },
                    function(errInfo, error) {
                        console.log('请求失败处理:', errInfo, error);
                        // 确保即使 errInfo 为空,也能显示错误信息
                        let errorMsg = errInfo;
                        if (!errorMsg || errorMsg.trim() === '') {
                            errorMsg = '导入失败,请检查文件格式或联系管理员';
                        } else {
                            // 优化错误信息显示
                            if (errorMsg.includes('java.net.SocketException')) {
                                errorMsg = '导入失败: 网络连接异常,请检查网络连接或稍后重试';
                            } else if (errorMsg.includes('timeout')) {
                                errorMsg = '导入失败: 请求超时,请检查网络连接或稍后重试';
                            } else if (errorMsg.indexOf("<html>") > 0) {
                                errorMsg = '导入失败: 服务器内部错误,请联系管理员';
                            }
                        }
                        vc.toast(errorMsg, 10000);
                    });
            },
            _exitCommunityData: function() {
                vc.jumpToPage('/callComponent/assetImport/exitCommunityData?communityId=' + vc.getCurrentCommunity().communityId);
            },
            _openAssetImportLog: function() {
                vc.jumpToPage('/#/pages/property/assetImportLog')
            },
            checkFileType: function(fileType) {
                const acceptTypes = ['xls', 'xlsx'];
                for (var i = 0; i < acceptTypes.length; i++) {
                    if (fileType === acceptTypes[i]) {
                        return true;
                    }
                }
                return false;
            },
            checkFileSize: function(fileSize) {
                //2M
                const MAX_SIZE = 20 * 1024 * 1024;
                if (fileSize > MAX_SIZE) {
                    return false;
                }
                return true;
            }
 
        }
    });
 
})(window.vc);