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
/**
 * 导入电话表组件
 * 功能:实现电话表的Excel文件导入功能
 * 后端API:/app/phoneBillFlowInfo/insertPhoneBillFlows
 */
(function (vc) {
    vc.extends({
        data: {
            // 导入电话表信息对象
            importPhoneBillFlowInfo: {
                // 文件名
                fileName: '',
                // 文件对象
                file: null
            }
        },
        /**
         * 初始化方法
         * 功能:初始化组件
         */
        _initMethod: function () {
        },
        /**
         * 初始化事件监听
         * 功能:监听组件间的事件通信
         */
        _initEvent: function () {
            // 监听打开导入电话表模态框事件
            vc.on('importPhoneBillFlow', 'openImportPhoneBillFlowModal', function () {
                // 重置表单数据
                $that.clearImportPhoneBillFlowInfo();
                // 打开模态框
                $('#importPhoneBillFlowModal').modal('show');
            });
        },
        methods: {
            /**
             * 选择文件
             * 功能:触发文件选择对话框
             */
            _selectFile: function () {
                $that.$refs.file.click();
            },
            /**
             * 文件选择变化
             * 功能:处理文件选择事件,更新文件名
             */
            _fileChange: function (e) {
                let files = e.target.files;
                if (files && files.length > 0) {
                    // 移除文件大小限制检查
                    // // 检查文件大小(10MB)
                    // if (file.size > 10 * 1024 * 1024) {
                    //     vc.toast('文件大小不能超过10MB');
                    //     return;
                    // }
                    // 检查文件类型
                    let fileName = files[0].name;
                    let fileExt = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
                    if (fileExt !== 'xlsx' && fileExt !== 'xls') {
                        vc.toast('只支持.xlsx和.xls格式的文件');
                        return;
                    }
                    // 更新文件名和文件对象
                    $that.importPhoneBillFlowInfo.fileName = fileName;
                    $that.importPhoneBillFlowInfo.file = files[0];
                }
            },
            /**
             * 导入电话表数据
             * 功能:验证文件并调用后端API导入电话表
             */
            _importPhoneBillFlow: function () {
                // 验证文件是否选择
                if (!$that.importPhoneBillFlowInfo.file) {
                    vc.toast('请选择要导入的Excel文件');
                    return;
                }
                // 创建FormData对象
                let formData = new FormData();
                // 添加文件
                formData.append('file', $that.importPhoneBillFlowInfo.file);
                // 添加小区ID
                formData.append('communityId', vc.getCurrentCommunity().communityId);
                // 发送POST请求导入电话表数据
                vc.http.upload('/phoneBillFlowInfo/insertPhoneBillFlows',
                    formData,
                    function (json, res) {
                        // 解析响应数据
                        let _json = JSON.parse(json);
                        // 检查响应状态
                        if (_json.code === 0) {
                            // 导入成功,关闭模态框
                            $('#importPhoneBillFlowModal').modal('hide');
                            // 刷新电话表列表
                            vc.emit('phoneMeterManage', 'listPhoneBillFlow', {});
                            // 显示成功提示
                            vc.toast('导入成功,共导入 ' + _json.data + ' 条记录');
                            return;
                        }
                        // 导入失败,显示错误提示
                        vc.toast(_json.msg);
                    },
                    function (errInfo, error) {
                        // 错误处理
                        console.log('请求失败处理');
                        vc.toast('导入失败');
                    }
                );
            },
            /**
             * 清空导入电话表表单数据
             * 功能:重置表单为初始状态
             */
            clearImportPhoneBillFlowInfo: function () {
                // 重置表单数据
                $that.importPhoneBillFlowInfo = {
                    fileName: '',
                    file: null
                };
                // 重置文件输入
                if ($that.$refs.file) {
                    $that.$refs.file.value = '';
                }
            }
        }
    });
})(window.vc);