buli
2023-07-14 744f42c5496e656a1f9927740a3b37c0b97a6cba
force-app/main/default/aura/DealerPersonnelInformationImport/DealerPersonnelInformationImportHelper.js
@@ -77,6 +77,9 @@
        };
        reader.readAsDataURL(file);
    },
    isNumber: function(str) {
        return /^\d+$/.test(str);
    },
    saveRecords: function (component, event, helper) {
        component.set('v.login', true);
        var action = component.get("c.processData");
@@ -94,20 +97,72 @@
                if (res != 'success') {
                    var ress = res.split('=');
                    console.log(ress);
                    let errorDatas = [];
                    let errorDataRow = [];
                    debugger
                    for (var i = 0; i < ress.length; i++) {
                        res1 += ress[i].substr(7) + '\n';
                        if (ress[i] != '') {
                            let errorData = {}
                            if(!this.isNumber(ress[i].substr(7).substring(1, 2))){
                                continue
                            }
                            let index = errorDataRow.indexOf(ress[i].substr(7).substring(1, 2));
                            if (index == -1) {
                                errorData.errorRow = ress[i].substr(7).substring(1, 2);
                                errorDataRow.push(errorData.errorRow);
                                errorData.errorInfo = ress[i].substr(7).substring(5);
                                errorDatas.push(errorData);
                            } else {
                                errorDatas[index].errorInfo += '; ' + ress[i].substr(7).substring(5);
                            }
                        }
                    }
                    var fileContentData = component.get("v.fileContentData").split('\n');
                    let errorColumns = [
                        { label: '错误行', fieldName: 'errorRow', type: 'text', hideDefaultActions: true, initialWidth: 100 },
                        { label: '错误信息', fieldName: 'errorInfo', type: 'text', hideDefaultActions: true,initialWidth: 300,wrapText: true }
                    ];
                    for (var i = 0; i < fileContentData[0].split(',').length - 1; i++) {
                        errorColumns.push({
                            label: fileContentData[0].split(',')[i],
                            fieldName: 'field' + i,
                            type: 'text',
                            hideDefaultActions: true,
                            wrapText: true,
                            initialWidth: 120
                        });
                    }
                    for(var i = 0; i < errorDatas.length; i++){
                        let data = fileContentData[errorDatas[i].errorRow];
                        console.log('data = ' + JSON.stringify(data));
                        if(data){
                            for(var j = 0; j < data.split(',').length; j++){
                                let label = 'field' + j;
                                errorDatas[i][label] = data.split(',')[j];
                            }
                        }
                    }
                    console.log('errorDatas = ' + JSON.stringify(errorDatas))
                    component.set('v.errorColumns', errorColumns);
                    component.set('v.errorData', errorDatas);
                    component.set("v.showErrorInfo", true);
                    console.log("==" + res1);
                    // this.error( "请修改后重新上传");
                    component.set('v.errorMessage', res1 + "请修改后重新上传");
                    this.showErrorToast(component);
                    component.set('v.login', false);
                    component.find('save_con').set('v.disabled', true);
                } else {
                    // this.success('导入成功');
                    component.set('v.successMessage', '导入成功');
                    this.showSuccessToast01(component);
                    component.set("v.showMain", true);
                    component.set('v.login', false);
                    component.find('save_con').set('v.disabled', false);
                }
            }
            else if (state === "INCOMPLETE") {
@@ -117,8 +172,18 @@
                var errors = response.getError();
                if (errors) {
                    if (errors[0] && errors[0].message) {
                        console.log("Error message: " +
                            errors[0].message);
                        console.log("Error message: " + errors[0].message);
                        let errorDatas = [{
                            errorRow: '1',
                            errorInfo: errors[0].message
                        }];
                        let errorColumns = [
                            { label: '错误行', fieldName: 'errorRow', type: 'text', hideDefaultActions: true, initialWidth: 50 },
                            { label: '错误信息', fieldName: 'errorInfo', type: 'text', hideDefaultActions: true,initialWidth: 300,wrapText: true }
                        ];
                        component.set('v.errorData', errorDatas);
                        component.set('v.errorColumns', errorColumns);
                        component.set("v.showErrorInfo", true);
                        component.set('v.login', false);
                    }
                } else {
@@ -145,36 +210,101 @@
        window.setTimeout($A.getCallback(function () {
            $A.util.addClass(component.find('errorDiv'), 'slds-hide');
        }),
            3000
            7000
        );
    },
    success : function(message) {
    success: function (message) {
        var toastEvent = $A.get("e.force:showToast");
        toastEvent.setParams({
            "title" : "成功!",
            "message" : message,
            "duration" : "5000"
            "title": "成功!",
            "message": message,
            "duration": "5000"
        });
        toastEvent.fire();
    },
    warning : function(message) {
    warning: function (message) {
        var toastEvent = $A.get("e.force:showToast");
        toastEvent.setParams({
            "title": "警告!",
            "message": message,
            "duration" : "10000"
            "duration": "10000"
        });
        toastEvent.fire();
    },
    error : function(message) {
    error: function (message) {
        var toastEvent = $A.get("e.force:showToast");
        toastEvent.setParams({
            "title": "错误!",
            "message": message,
            "duration" : "sticky"
            "duration": "sticky"
        });
        toastEvent.fire();
    },
    //zhj 导出错误信息 2023-05-16 start
    exportErrorInfoHelper: function (component) {
        var errorData = component.get('v.errorData');
        var errorColumns = component.get('v.errorColumns');
        var datas = [];
        let errorColumnsArray = [];
        for(var i in errorColumns){
            errorColumnsArray.push(errorColumns[i].label);
        }
        datas.push(errorColumnsArray);
        //datas.push(errorColumns);
        for (var i in errorData) {
            let data = [];
            data.push(errorData[i].errorRow)
            data.push(errorData[i].errorInfo)
            for(var j = 0 ; j < Object.keys(errorData[i]).length - 2 ; j++){
                data.push(errorData[i]['field' + j])
            }
            datas.push(data);
        }
        console.log('datas = ' + JSON.stringify(datas));
        var csv = this.convertToCSV(component, datas);
        console.log('csv = ' + JSON.stringify(csv))
        this.downloadCSV(component, csv);
    },
    convertToCSV: function (component, data) {
        console.log('enter convertToCSV')
        console.log('data = ' + data);
        var csv = '';
        for (var i = 0; i < data.length; i++) {
            var row = data[i];
            console.log('row = ' + JSON.stringify(row));
            for (var j = 0; j < row.length; j++) {
                var val = '';
                val = row[j] === null ? '' : row[j].toString();
                console.log('val = ' + val);
                if (val.indexOf(',') !== -1 || val.indexOf('"') !== -1 || val.indexOf('\n') !== -1) {
                    //val = '"' + val.replace(/"/g,'""') + '"';
                }
                if (j > 0) {
                    csv += ',';
                }
                csv += val;
            }
            csv += '\n';
        }
        return csv;
    },
    downloadCSV: function (component, csv) {
        var link = document.createElement('a');
        // 设置字符集和文件头
        var bom = "\uFEFF";
        link.href = 'data:text/csv;charset=utf-8,' + encodeURIComponent(bom + csv);
        //link.href = URL.createObjectURL(csvFile);
        link.download = 'data.csv';
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
    },
    //zhj 导出错误信息 2023-05-16 end
})