({
    // 设置table 各栏属性
    getColumnAndAction: function(cmp) {
        var actions = [
            { label: 'Edit', name: 'edit' },
            { label: 'Delete', name: 'delete' },
            { label: 'View', name: 'view' }
        ];
        // 为了锁行,强行设置了宽度
        cmp.set('v.columns', [{
                label: '产品型号',
                fieldName: 'Asset_Model_No__c',
                type: 'text',
                wrapText: false,
                hideDefaultActions: true,
                fixedWidth: 110
            },
            {
                label: 'CODE',
                fieldName: 'OTCode__c',
                type: 'text',
                wrapText: false,
                hideDefaultActions: true,
                fixedWidth: 137
            },
            {
                label: '产品名称',
                fieldName: 'productName__c',
                type: 'text',
                wrapText: false,
                hideDefaultActions: true,
                fixedWidth: 340
            },
            {
                label: '数量',
                fieldName: 'Count_Text__c',
                type: 'text',
                wrapText: false,
                hideDefaultActions: true,
                fixedWidth: 50
            },
            {
                label: '箱号',
                fieldName: 'CaseNumber__c',
                type: 'text',
                wrapText: false,
                hideDefaultActions: true,
                fixedWidth: 100
            },
            {
                label: '货物情况',
                fieldName: 'agencyGoodStatus__c',
                type: 'text',
                wrapText: true,
                hideDefaultActions: true,
                editable: true,
                fixedWidth: 110
            },
        ]);
    },
    pageInit: function(cmp) {
        //获取分页显示的5条数据
        var pageDate = cmp.get("v.currentData");
        //获取箱号list
        var cntList = [];
        var caseNumberMap = {};
        var str = '';
        //存放每个箱号的第一条 箱号的id
        for (var i = 0; i < pageDate.length; i++) {
            //获取id
            var id = pageDate[i].Id;
            //获取箱号id
            var caseNumberId = id + ':' + i + ':CaseNumber__c';
            //获取箱号值
            var caseNumber = pageDate[i].CaseNumber__c;
            if (str == '') {
                str = caseNumber;
                var button = id + ':' + i + ':ButtonColumn';
                cntList.push(button);
            } else {
                if (str != caseNumber) {
                    var button = id + ':' + i + ':ButtonColumn';
                    cntList.push(button);
                }
            }
        }
        //延迟加载
        window.setTimeout($A.getCallback(function() {
                for (var j = 0; j < cntList.length; j++) {
                    var cnt = cntList[j];
                    document.getElementById(cnt).style.display = "block";
                }
            }),
            1000
        );
    },
    // 获取数据
    geteSign: function(cmp) {
        //this.showSpinner(cmp);
        var action = cmp.get("c.geteSigns");
        var DNName = cmp.get("v.DNName").toString();
        action.setParams({
            'DNName': DNName,
        });
        action.setCallback(this, function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
                var resultData = response.getReturnValue();
                var isSubmit = resultData.isSubmit;
                cmp.set("v.IsInsert", isSubmit);
                if (!!resultData && !!resultData.eSignFormLineItems &&
                    !!resultData.eSignForm) {
                    var data = resultData.eSignFormLineItems;
                    cmp.set('v.lineItemSize', data.length);
                    var pageSize = cmp.get('v.pageSize');
                    var eSignForm = resultData.eSignForm;
                    cmp.set("v.data", data);
                    //给经销商验收结果赋值
                    cmp.set("v.HospitalAcceptanceResults", eSignForm.agencyAcceptResult__c);
                    //CHAN-BWCBL8 精琢技术 wql 20201225 start 
                    //如果驳回理由有值 并且经销商驳回复选框为true并且经销商审批状态不批准的时候才显示
                    if (eSignForm.denyReason__c && eSignForm.agencyReject__c && eSignForm.agencyAutoSignUpStatus__c == '不批准') {
                        cmp.set("v.ISDenyReason", true);
                    }
                    //CHAN-BWCBL8 精琢技术 wql 20201225 end 
                    cmp.set("v.eSignForm", resultData.eSignForm);
                    var tempData = this.getTempData(data, 1, pageSize);
                    cmp.set("v.isLastPage", this.isLastPage(data, tempData));
                    cmp.set("v.dataSize", tempData.length);
                    cmp.set("v.currentData", tempData);
                    this.hideSpinner(cmp);
                } else {
                    cmp.set("v.errorMessage", '加载失败,请重新打开此页面!');
                    this.showErrorToast(cmp);
                    this.hideSpinner(cmp);
                }
            } else {
                cmp.set("v.errorMessage", '加载失败,请重新打开此页面!');
                this.showErrorToast(cmp);
                this.hideSpinner(cmp);
            }
        });
        $A.enqueueAction(action);
    },
    // 明细页 table 首页功能实现
    handleHome: function(cmp) {
        var pageSize = cmp.get('v.pageSize');
        var pageNumber = cmp.get('v.pageNumber');
        // var data = cmp.get('v.data');
        var currentData = cmp.get('v.currentData');
        //获取输入的value值
        var key = document.getElementById('searchInput').value;
        var data = cmp.get('v.data');
        var tempDataList = [];
        var pageSize = cmp.get('v.pageSize');
        if (key) {
            for (var i = 0; i < data.length; i++) {
                //获取所有name为箱号的input 批量更新
                if (data[i].CaseNumber__c == key) {
                    tempDataList.push(data[i]);
                }
            }
            //设置分页
            var tempData = this.getTempData(tempDataList, 1, pageSize);
            cmp.set('v.pageNumber', 1);
            cmp.set('v.currentData', tempData);
            cmp.set('v.data', data);
            cmp.set("v.isLastPage", this.isLastPage(tempDataList, tempData));
            cmp.set("v.searchSize", tempDataList.length);
        } else {
            //显示全部箱
            var tempData = this.getTempData(data, 1, pageSize);
            cmp.set('v.pageNumber', 1);
            cmp.set('v.currentData', tempData);
            cmp.set('v.data', data);
            cmp.set("v.isLastPage", this.isLastPage(data, tempData));
            cmp.set('v.searchSize', null);
        }
    },
    // 明细页 table 尾页功能实现
    handleLast: function(cmp) {
        var pageSize = cmp.get('v.pageSize');
        var pageNumber = cmp.get('v.pageNumber');
        var data = cmp.get('v.data');
        //获取数据长度
        var size = data.length;
        //获取尾页页码
        var pages = size % pageSize == 0 ? (size / pageSize) : (Math.floor(size / pageSize) + 1);
        var currentData = cmp.get('v.currentData');
        //获取输入的value值
        var key = document.getElementById('searchInput').value;
        var tempDataList = [];
        if (key) {
            for (var i = 0; i < data.length; i++) {
                //获取所有name为箱号的input 批量更新
                if (data[i].CaseNumber__c == key) {
                    tempDataList.push(data[i]);
                }
            }
            //设置分页
            var tempData = this.getTempData(tempDataList, pages, pageSize);
            cmp.set('v.pageNumber', pages);
            cmp.set('v.currentData', tempData);
            cmp.set('v.data', data);
            cmp.set("v.isLastPage", this.isLastPage(tempDataList, tempData));
            cmp.set("v.searchSize", tempDataList.length);
        } else {
            //显示全部箱
            var tempData = this.getTempData(data, pages, pageSize);
            cmp.set('v.pageNumber', pages);
            cmp.set('v.currentData', tempData);
            cmp.set('v.data', data);
            cmp.set("v.isLastPage", this.isLastPage(data, tempData));
            cmp.set('v.searchSize', null);
        }
    },
    // 明细页 table 下一页功能实现
    handleNext: function(cmp) {
        var pageSize = cmp.get('v.pageSize');
        var pageNumber = cmp.get('v.pageNumber');
        var data = cmp.get('v.data');
        var currentData = cmp.get('v.currentData');
        //获取输入的value值
        var key = document.getElementById('searchInput').value;
        var tempDataList = [];
        if (key) {
            for (var i = 0; i < data.length; i++) {
                //获取所有name为箱号的input 批量更新
                if (data[i].CaseNumber__c == key) {
                    tempDataList.push(data[i]);
                }
            }
            //设置分页
            var tempData = this.getTempData(tempDataList, pageNumber + 1, pageSize);
            cmp.set('v.pageNumber', pageNumber + 1);
            cmp.set('v.currentData', tempData);
            cmp.set('v.data', data);
            cmp.set("v.isLastPage", this.isLastPage(tempDataList, tempData));
            cmp.set("v.searchSize", tempDataList.length);
        } else {
            //显示全部箱
            var tempData = this.getTempData(data, pageNumber + 1, pageSize);
            cmp.set('v.pageNumber', pageNumber + 1);
            cmp.set('v.currentData', tempData);
            cmp.set('v.data', data);
            cmp.set("v.isLastPage", this.isLastPage(data, tempData));
            cmp.set('v.searchSize', null);
        }
    },
    // 明细页 table 上一页功能实现
    handlePrev: function(cmp) {
        var pageSize = cmp.get('v.pageSize');
        var pageNumber = cmp.get('v.pageNumber');
        var data = cmp.get('v.data');
        var currentData = cmp.get('v.currentData');
        //获取输入的value值
        var key = document.getElementById('searchInput').value;
        var tempDataList = [];
        if (key) {
            for (var i = 0; i < data.length; i++) {
                //获取所有name为箱号的input 批量更新
                if (data[i].CaseNumber__c == key) {
                    tempDataList.push(data[i]);
                }
            }
            //设置分页
            var tempData = this.getTempData(tempDataList, pageNumber - 1, pageSize);
            cmp.set('v.pageNumber', pageNumber - 1);
            cmp.set('v.currentData', tempData);
            cmp.set('v.data', data);
            cmp.set("v.isLastPage", this.isLastPage(tempDataList, tempData));
            cmp.set("v.searchSize", tempDataList.length);
        } else {
            //显示全部箱
            var tempData = this.getTempData(data, pageNumber - 1, pageSize);
            cmp.set('v.pageNumber', pageNumber - 1);
            cmp.set('v.currentData', tempData);
            cmp.set('v.data', data);
            cmp.set("v.isLastPage", this.isLastPage(data, tempData));
            cmp.set('v.searchSize', null);
        }
    },
    // 计算并返回当前页码的数据
    getTempData: function(data, pageNumber, pageSize) {
        var tempData = data.slice((pageNumber - 1) * pageSize, pageNumber * pageSize);
        return tempData;
    },
    // 判断当前页是否是最后一页
    isLastPage: function(data, tempData) {
        if (tempData.length == 0 ||
            tempData[tempData.length - 1].Id == data[data.length - 1].Id) {
            return true;
        } else {
            return false;
        }
    },
    // 保存更改内容到当前明细内容
    saveEdition: function(cmp, draftValues) {
        if (!!draftValues && draftValues.length > 0) {
            var currentData = cmp.get('v.currentData');
            for (var i = 0; i < currentData.length; i++) {
                for (var j = 0; j < draftValues.length; j++) {
                    if (currentData[i].Id == draftValues[j].Id) {
                        currentData[i].agencyGoodStatus__c = draftValues[j].agencyGoodStatus__c;
                        break;
                    }
                }
            }
            cmp.set('v.currentData', currentData);
        }
        cmp.set('v.draftValues', []);
    },
    // 判断是否部分签收
    IsWhole: function(cmp) {
        var currentData = cmp.get('v.currentData');
        if (currentData) {
            for (var j = 0; j < currentData.length; j++) {
                if (currentData[j].agencyGoodStatus__c != '完好') {
                    //如果有明细不完好的置成true
                    cmp.set('v.IsWhole', true);
                    break;
                }
            }
        }
    },
    // 明细页点击下一步保存录入表数据到数据库,
    // 如果保存成功,跳转文件上传页
    // 如果保存失败,弹出错误toast,保存在当页
    saveeSign: function(cmp) {
        var action = cmp.get("c.saveeSignFormEntry");
        var data = cmp.get('v.data');
        var eSignForm = cmp.get('v.eSignForm');
        var IsSubmit = cmp.get('v.IsSubmit');
        //增加扫描标识,batch取消驳回勾选 2020/12/30 wql start
        var IsAgencyScan = cmp.get('v.IsAgencyScan');
        //增加扫描标识,batch取消驳回勾选 2020/12/30 wql end
        var HospitalAcceptanceResults = cmp.get('v.HospitalAcceptanceResults');
        var AgencyWorkflowEmailBack = cmp.get('v.AgencyWorkflowEmailBack');
        action.setParams({
            'eSignFormLineItems': data,
            'eSignForm': eSignForm,
            'IsSubmit': IsSubmit,
            'IsAgencyScan': IsAgencyScan,
            'entryType': '经销商收货',
            'AgencyWorkflowEmailBack': AgencyWorkflowEmailBack
        });
        this.showSpinner(cmp);
        action.setCallback(this, function(response) {
            this.hideSpinner(cmp);
            var state = response.getState();
            if (state === "SUCCESS") {
                var resultData = response.getReturnValue();
                if (resultData.isSuccess == true) {
                    cmp.set('v.recordId', resultData.result);
                    cmp.set('v.parentId', resultData.result);
                    if (IsSubmit) {
                        //返回首页带值start
                        cmp.set('v.agencyDNSignUpStatus', resultData.agencyDNSignUpStatus);
                        cmp.set('v.HPDNSignUpStatus', resultData.HPDNSignUpStatus);
                        cmp.set('v.agencySubmit', resultData.agencySubmit);
                        cmp.set('v.DNNameSpare', resultData.DNNameSpare);
                        //返回首页带值 end
                        alert('提交成功');
                        cmp.set('v.IsSubmit', false);
                        //2020/12/02 提交成功后显示退回首页按钮 start
                        cmp.set("v.submitAfterShow", true);
                        const icon = document.getElementById('submitAgency');
                        icon.style.textAlign = 'center';
                        //2020/12/02 提交成功后显示退回首页按钮 end
                        this.BackToHomePage(cmp);
                    }
                } else {
                    cmp.set("v.errorMessage", resultData.result);
                    this.showErrorToast(cmp);
                }
            } else {
                cmp.set("v.errorMessage", '保存失败,请重新加载!');
                this.showErrorToast(cmp);
            }
        });
        $A.enqueueAction(action);
    },
    // 首页跳转至明细页逻辑,先判断是否勾选内容
    handleHomePageNextClick: function(cmp) {
        //存一下检索框里的值 不然会被清掉 
        cmp.set('v.searchCase', cmp.get('v.searchCaseKey'));
        var contentCheck = cmp.get('v.check');
        if (contentCheck) {
            if (confirm('请再次确认DN号/收货单位与随货同行单一致。')) {
                cmp.set('v.HomePage', false);
                cmp.set('v.DetailsPage', true);
                //隐藏列
                cmp.set('v.hideCheckboxColumn', true);
            }
        } else {
            alert('请勾选上述内容已阅读。');
            return;
        }
        //当点击适用按钮以后,页面上显示全部适用按钮
        cmp.set('v.applyButton', true);
        cmp.set('v.allApplyButton', false);
    },
    // 明细也跳转至文件上传页逻辑,先提示是否填写完毕
    handleDetailsPageNextClick: function(cmp) {
        //存一下检索框里的值 不然会被清掉
        var key = document.getElementById('searchInput').value;
        cmp.set('v.searchCaseKey', key);
        var isState = cmp.get('v.IsInsert');
        var AgencyClick = cmp.get('v.AgencyClick');
        if (AgencyClick) {
            //直接跳转明细页
            cmp.set('v.DetailsPage', false);
            cmp.set('v.uploadFilePage', true);
        } else {
            if (confirm('请确认是否填写完成货物情况?')) {
                //增加扫描标识,batch取消驳回勾选 2020/12/30 wql start
                cmp.set('v.IsAgencyScan', true);
                //增加扫描标识,batch取消驳回勾选 2020/12/30 wql end
                this.saveeSign(cmp);
                cmp.set('v.DetailsPage', false);
                cmp.set('v.uploadFilePage', true);
                // var a = window.setInterval($A.getCallback(function() {
                //         var content = document.getElementById("uploadFileDiv").getElementsByTagName("span")[2];
                //         var b = cmp.find("uploadFile");
                //         if (content) {
                //             if (content.style.color != '#f4f5fa') {
                //                 content.innerText = '1.选择附件';
                //                 content.style.color = '#f4f5fa';
                //                 content.style.backgroundColor = '#0f218b';
                //             } else {
                //                 window.clearInterval(a);
                //             }
                //         }
                //     }),
                //     1000
                // );
            }
        }
    },
    //给提交按钮一个默认的值
    submitClick: function(cmp, event) {
        var IsWhole = cmp.get('v.IsWhole');
        var IsHaveFile = cmp.get('v.IsHaveFile');
        var IsUpLoad = cmp.get('v.IsUpLoad');
        var AgencyClick = cmp.get('v.AgencyClick');
        //获取经销商邮箱
        var value = cmp.find("inputCmp").get("v.value");
        //判断邮箱是否有效
        var validity = cmp.find("inputCmp").get("v.validity");
        //①存在不完好的货物明细 为ture ②size<0说明没有上传文件
        if (!IsHaveFile) {
            alert('请您上传照片后再点提交!');
        } else if (!IsUpLoad && IsHaveFile) {
            alert('请您点击上传文件按钮上传!');
        } else if (IsUpLoad && !IsHaveFile) {
            alert('您并没有选择文件!');
        } else {
            if (validity.valid) {
                cmp.set('v.AgencyWorkflowEmailBack', value);
                //勾选
                cmp.set('v.IsSubmit', true);
                //扫描勾选
                cmp.set('v.IsAgencyScan', true);
                //设置一个flag用于避免提交两次
                cmp.set('v.AgencyClick', true);
                if (confirm('请确认是否提交?')) {
                    this.saveeSign(cmp);
                }
            } else {
                alert('请您填写正确的邮箱地址或者不填写!');
            }
        }
    },
    //弹出 成功提示toast 方法
    showSuccessToast: function(cmp) {
        $A.util.removeClass(cmp.find('successDiv'), 'slds-hide');
        window.setTimeout($A.getCallback(function() {
                $A.util.addClass(cmp.find('successDiv'), 'slds-hide');
            }),
            5000
        );
    },
    //弹出 错误提示toast 方法
    showErrorToast: function(cmp) {
        const width = document.documentElement.clientWidth;
        const contentDOM1 = document.getElementById('errorSonDiv1');
        contentDOM1.style.width = width * 0.6 + 'px';
        const contentDOM2 = document.getElementById('errorSonDiv2');
        contentDOM2.style.width = width * 0.38 + 'px';
        contentDOM2.style.height = '4rem';
        const contentDOM3 = document.getElementById('errorSonDiv3');
        contentDOM3.style.width = width - 150 + 'px';
        $A.util.removeClass(cmp.find('errorDiv'), 'slds-hide');
        window.setTimeout($A.getCallback(function() {
                $A.util.addClass(cmp.find('errorDiv'), 'slds-hide');
            }),
            5000
        );
    },
    // 展示 等待框
    showSpinner: function(cmp) {
        // remove slds-hide class from mySpinner
        var spinner = cmp.find("mySpinner");
        $A.util.removeClass(spinner, "slds-hide");
    },
    // 隐藏 等待框
    hideSpinner: function(cmp) {
        // add slds-hide class from mySpinner
        var spinner = cmp.find("mySpinner");
        $A.util.addClass(spinner, "slds-hide");
    },
    //返回明细页
    handleShowFielePageNextClick: function(cmp) {
        //存一下检索框里的值 不然会被清掉 
        cmp.set('v.searchCase', cmp.get('v.searchCaseKey'));
        cmp.set('v.DetailsPage', true);
        cmp.set('v.uploadFilePage', false);
        //设置成 默认 false
        cmp.set('v.IsWhole', false);
        cmp.set('v.IsHaveFile', false);
        //隐藏列
        cmp.set('v.hideCheckboxColumn', true);
        //2020/12/02 点击上一步的时候隐藏退回按钮
        cmp.set("v.submitAfterShow", false);
    },
    //返回首页
    handleShowPageNextClick: function(cmp) {
        //存一下检索框里的值 不然会被清掉
        var key = document.getElementById('searchInput').value;
        cmp.set('v.searchCaseKey', key);
        cmp.set('v.HomePage', true);
        cmp.set('v.DetailsPage', false);
    },
    //用户 单独改写某一行的货物情况时
    GoodsChanged: function(cmp) {
        var currentData = cmp.get('v.currentData');
        for (var i = 0; i < currentData.length; i++) {
            //获取id
            var id = currentData[i].Id + ':' + i + ':' + currentData[i].CaseNumber__c;
            //获取页面上的货物情况
            var goodStatus = document.getElementById(id).value;
            //给分页数组实际赋值
            currentData[i].agencyGoodStatus__c = goodStatus;
            //清空id值,避免for循环循环赋值
            id = '';
        }
        cmp.set('v.currentData', currentData);
        //当修改某一列的时候显示 适用按钮 隐藏全部适用按钮
        cmp.set('v.applyButton', true);
        cmp.set('v.allApplyButton', false);
    },
    getDivSpan: function() {
        var xxx = document.getElementById("uploadFileDiv").getElementsByTagName("span");
        //延迟加载
        window.setTimeout($A.getCallback(function() {
                var content = document.getElementById("uploadFileDiv").getElementsByTagName("span")[2];
                if (content) {
                    if (content.style.color != '#f4f5fa') {
                        content.innerText = '1.选择附件';
                        content.style.color = '#f4f5fa';
                        content.style.backgroundColor = '#0f218b';
                    }
                }
            }),
            1000
        );
    },
    //主页跳首页
    BackToHomePage: function(cmp, event, helper) {
        if (confirm('确认回到首页吗?')) {
            var messageEvent = cmp.getEvent('componentEvent');
            messageEvent.setParam('ShowDNNameQR', cmp.get('v.DNName'));
            messageEvent.setParam('agencyDNSignUpStatus', cmp.get('v.agencyDNSignUpStatus'));
            messageEvent.setParam('HPDNSignUpStatus', cmp.get('v.HPDNSignUpStatus'));
            messageEvent.setParam('agencySubmit', cmp.get('v.agencySubmit'));
            messageEvent.setParam('DNNameSpare', cmp.get('v.DNName'));
            // messageEvent.setParam('IsAgencyShow',cmp.get('v.IsSubmit'));
            messageEvent.fire();
            cmp.set("v.HomePage", false);
        }
        // helper.BackToHomePage(cmp);
    },
    //明细页 适用按钮 根据箱号划分数组data 
    //①当前页面js赋值
    //②后台data数据实际修改值
    BatchUpdateByCase: function(cmp, event) {
        //获取按钮中属性name  ==  获取参数 箱号
        var caseNumber = event.target.name;
        //获取按钮中的属性 id  == 获取参数 id
        var idx = event.target.id;
        //拼接 货物情况的id
        var goodId = idx + caseNumber;
        //获取这一箱第一个的的货物情况
        var goodStatus = document.getElementById(goodId).value;
        if (confirm('请确认是否适用于整箱?')) {
            var data = cmp.get('v.data');
            for (var i = 0; i < data.length; i++) {
                //获取所有name为箱号的input 批量更新
                if (data[i].CaseNumber__c == caseNumber) {
                    data[i].agencyGoodStatus__c = goodStatus;
                }
            }
            //后台data变了 但页面不能及时变
            cmp.set('v.data', data);
            //获取分页的行项目 利用value赋值 及时变
            var currentData = cmp.get('v.currentData');
            for (var j = 0; j < currentData.length; j++) {
                if (currentData[j].CaseNumber__c == caseNumber) {
                    //拼接id
                    var id = currentData[j].Id + ':' + j + ':' + currentData[j].CaseNumber__c;
                    document.getElementById(id).value = currentData[j].agencyGoodStatus__c;
                    id = '';
                } else {
                    //避免影响其他其他列修改
                    //获取id
                    var idx = currentData[j].Id + ':' + j + ':' + currentData[j].CaseNumber__c;
                    //获取页面上的货物情况
                    var goodStatus = document.getElementById(idx).value;
                    currentData[j].agencyGoodStatus__c = goodStatus;
                }
            }
            //最后更新后台data
            cmp.set('v.currentData', currentData);
            //当点击适用按钮以后,页面上显示全部适用按钮
            cmp.set('v.applyButton', false);
            cmp.set('v.allApplyButton', true);
        }
    },
    //明细页 全部适用按钮 根据箱号划分数组data 
    //①当前页面js赋值
    //②后台data数据实际修改值
    allBatchUpdateByCase: function(cmp, event) {
        //获取按钮中属性name  ==  获取参数 箱号
        var caseNumber = event.target.name;
        //获取按钮中的属性 id  == 获取参数 id
        var idx = event.target.id;
        //拼接 货物情况的id
        var goodId = idx + caseNumber;
        //获取这一箱第一个的的货物情况
        var goodStatus = document.getElementById(goodId).value;
        var data = cmp.get('v.data');
        for (var i = 0; i < data.length; i++) {
            //全部更新成 上述value值的货物情况
            data[i].agencyGoodStatus__c = goodStatus;
        }
        //后台data变了 但页面不能及时变
        cmp.set('v.data', data);
        //获取分页的行项目 利用value赋值 及时变
        var currentData = cmp.get('v.currentData');
        for (var j = 0; j < currentData.length; j++) {
            //拼接id
            var id = currentData[j].Id + ':' + j + ':' + currentData[j].CaseNumber__c;
            document.getElementById(id).value = currentData[j].agencyGoodStatus__c;
            id = '';
        }
        //最后更新后台data
        cmp.set('v.currentData', currentData);
    },
    //页面上检索功能
    searchByCaseNumber: function(cmp, event) {
        //获取输入的value值
        var key = document.getElementById('searchInput').value;
        var data = cmp.get('v.data');
        //定义一个空数组 用于存放按箱分类后的data
        var tempDataList = [];
        var pageSize = cmp.get('v.pageSize');
        //判断搜索框内是否有值
        if (key) {
            cmp.set('v.searchFlag', true);
            for (var i = 0; i < data.length; i++) {
                //获取所有name为箱号的input 批量更新
                if (data[i].CaseNumber__c == key) {
                    tempDataList.push(data[i]);
                }
            }
            //设置分页
            var tempData = this.getTempData(tempDataList, 1, pageSize);
            cmp.set("v.isLastPage", this.isLastPage(tempDataList, tempData));
            cmp.set("v.dataSize", tempData.length);
            cmp.set("v.currentData", tempData);
            cmp.set('v.pageNumber', 1);
            cmp.set("v.searchSize", tempDataList.length);
        } else {
            cmp.set('v.searchFlag', false);
            //显示全部箱
            var data = cmp.get('v.data');
            var tempData = this.getTempData(data, 1, pageSize);
            cmp.set("v.isLastPage", this.isLastPage(data, tempData));
            cmp.set("v.dataSize", tempData.length);
            cmp.set("v.currentData", tempData);
            cmp.set('v.pageNumber', 1);
            cmp.set('v.searchSize', null);
        }
    },
    MAX_FILE_SIZE: 4608000, //Max file size 4.5 MB
    CHUNK_SIZE: 750000, //Chunk Max size 750Kb
    uploadHelper: function(component, event) {
        // start/show the loading spinner
        component.set("v.showLoadingSpinner", true);
        // get the selected files using aura:id [return array of files]
        var fileInput = component.find("fileId").get("v.files");
        // get the first file using array index[0]
        var file = fileInput[0];
        //var test = this.compress(file);
        var self = this;
        var pdf = file.type;
        //增加可以上传的图片类型  精琢技术 thh 2021-09-13 
        if (pdf == 'image/jpeg' || pdf == 'image/png') {
            // create a FileReader object
            var objFileReader = new FileReader();
            // set onload function of FileReader object
            objFileReader.onload = $A.getCallback(function() {
                var image = new Image();
                image.src = objFileReader.result;
                var fileContents = objFileReader.result;
                image.onload = function() {
                    var maxSize;
                    var imgWidth;
                    var imgHeight;
                    //图片小于300k则不压缩
                    if (file.size > 0 && file.size < 307200) {
                        imgWidth = this.width;
                        imgHeight = this.height;
                    } else {
                        if (Math.sqrt(this.width * this.height) / Math.sqrt(2) > 1200) {
                            maxSize = 1200;
                        } else {
                            maxSize = Math.sqrt(this.width * this.height) / Math.sqrt(2);
                        }
                        var imgScale = self.imgScaleW(maxSize, this.width, this.height);
                        imgWidth = imgScale.width,
                            imgHeight = imgScale.height;
                    }
                    var canvas = document.createElement("canvas");
                    var ctx = canvas.getContext("2d");
                    canvas.width = imgWidth;
                    canvas.height = imgHeight;
                    ctx.drawImage(this, 0, 0, imgWidth, imgHeight);
                    //增加可以上传的图片类型  精琢技术 thh 2021-09-13 start
                    if (pdf == 'image/jpeg') {
                        fileContents = canvas.toDataURL("image/jpeg", 0.9);
                    } else if (pdf == 'image/png') {
                        fileContents = canvas.toDataURL("image/png", 0.9);
                    }
                    //增加可以上传的图片类型  精琢技术 thh 2021-09-13 end
                    var base64 = "base64,";
                    var dataStart = fileContents.indexOf(base64) + base64.length;
                    fileContents = fileContents.substring(dataStart);
                    // call the uploadProcess method
                    self.uploadProcess(component, file, fileContents);
                };
            });
        } else {
            //event
            var objFileReader = new FileReader();
            // set onload function of FileReader object
            objFileReader.onload = $A.getCallback(function() {
                var fileContents = objFileReader.result;
                var base64 = "base64,";
                var dataStart = fileContents.indexOf(base64) + base64.length;
                if (fileContents.length > 4608000) {
                    component.set("v.showLoadingSpinner", false);
                    alert("提醒,文件压缩大小不能超过4.5M,请重新上传。");
                    return;
                } else {
                    fileContents = fileContents.substring(dataStart);
                    // call the uploadProcess method
                    self.uploadProcess(component, file, fileContents);
                }
            });
        }
        objFileReader.readAsDataURL(file);
    },
    uploadProcess: function(component, file, fileContents) {
        // set a default size or startpostiton as 0
        var startPosition = 0;
        // calculate the end size or endPostion using Math.min() function which is return the min. value
        var endPosition = Math.min(
            fileContents.length,
            startPosition + this.CHUNK_SIZE
        );
        // start with the initial chunk, and set the attachId(last parameter)is null in begin
        this.uploadInChunk(
            component,
            file,
            fileContents,
            startPosition,
            endPosition,
            ""
        );
    },
    uploadInChunk: function(
        component,
        file,
        fileContents,
        startPosition,
        endPosition,
        attachId
    ) {
        // call the apex method 'saveChunk'
        var getchunk = fileContents.substring(startPosition, endPosition);
        //增加文件列表删除功能  精琢技术 thh 2021-08-31 start
        //把压缩完的src和文件名存入map
        var filesrc = component.get("v.FileSrc");
        var emptyflag = true;
        for (var key in filesrc) {
            var emptyflag = false;
        }
        if (emptyflag) {
            filesrc[file.name] = getchunk;
        } else {
            for (var key in filesrc) {
                if (key == file.name) {
                    filesrc[file.name] = filesrc[file.name] + getchunk;
                } else {
                    filesrc[file.name] = getchunk;
                    console.log('filesrc:' + filesrc);
                }
            }
        }
        component.set('v.FileSrc', filesrc);
        //增加文件列表删除功能  精琢技术 thh 2021-09-01 end
        var baseFile = component.get("v.baseFile");
        var base64List = component.get("v.base64List");
        //用于判断上传同一个文件提示
        var messageFlag = component.get("v.messageFlag");
        //判断是否出现过网络不好,上传失败的情况
        var errorFlag = component.get("v.errorFlag");
        if (!base64List) {
            if (baseFile != getchunk) {
                //用于判断上传同一个文件提示
                component.set("v.messageFlag", false);
                messageFlag = component.get("v.messageFlag");
                var action = component.get("c.saveChunk");
                action.setParams({
                    parentId: component.get("v.parentId"),
                    fileName: file.name,
                    base64Data: encodeURIComponent(getchunk),
                    contentType: file.type,
                    fileId: attachId
                });
                // set call back
                action.setCallback(this, function(response) {
                    // store the response / Attachment Id
                    attachId = response.getReturnValue();
                    //增加文件列表删除功能  精琢技术 thh 2021-09-02 start
                    //关联附件ID和附件名
                    var attachmentID = component.get("v.attachmentID");
                    attachmentID[file.name] = attachId;
                    component.set("v.attachmentID", attachmentID);
                    //增加文件列表删除功能  精琢技术 thh 2021-09-02 end
                    var state = response.getState();
                    if (state === "SUCCESS") {
                        // update the start position with end postion
                        startPosition = endPosition;
                        endPosition = Math.min(
                            fileContents.length,
                            startPosition + this.CHUNK_SIZE
                        );
                        // check if the start postion is still less then end postion
                        // then call again 'uploadInChunk' method ,
                        // else, diaply alert msg and hide the loading spinner
                        if (startPosition < endPosition) {
                            this.uploadInChunk(
                                component,
                                file,
                                fileContents,
                                startPosition,
                                endPosition,
                                attachId
                            );
                        } else {
                            //判断上传文件内容 提示一次信息
                            var base = component.get("v.getchunk");
                            if (!base || (base && base != getchunk)) {
                                // alert("您已经成功上传文件。");
                                component.set("v.getchunk", getchunk);
                            }
                            alert("您已经成功上传文件。\n请点击提交后退出。");
                            //用于提交按钮判断是否有已上传的文件
                            component.set('v.IsUpLoad', true);
                            //用于判断上传同一个文件提示
                            component.set("v.messageFlag", true);
                            messageFlag = component.get("v.messageFlag");
                            component.set("v.showLoadingSpinner", false);
                            //标识预览图片名字  精琢技术 thh 2021-09-15 start
                            var isUploadName = component.get("v.isUploadName");
                            var fileName = component.find("fileId").get("v.files")[0]['name'];
                            if (isUploadName[fileName]) {
                                var str = '当前文件:' + fileName + '';
                                document.getElementById("uploadicon").style.display = 'inline-block';
                            } else {
                                var str = '当前文件:' + fileName + '';
                                document.getElementById("uploadicon").style.display = 'none';
                            }
                            var obj = document.getElementById('filenow');
                            obj.innerHTML = str;
                            //标识预览图片名字  精琢技术 thh 2021-09-15 end
                            //上传成功后文件列表的文件名变色  精琢技术 thh 2021-09-26 start
                            var count = component.get("v.fileUpLoadSize");
                            var fileName = component.get("v.flUpLoadName");
                            if (count > 0) {
                                //列出文件名01 所有文件名都用逗号隔开 根据逗号拆分,存放数组
                                var nameList = fileName.split(',');
                                for (var i = 0; i < nameList.length; i++) {
                                    for (var j = i + 1; j < nameList.length; j++) {
                                        if (nameList[i] == nameList[j]) { //第一个等同于第二个,splice方法删除第二个
                                            nameList.splice(j, 1);
                                            j--;
                                        }
                                    }
                                }
                                //存放到变量中 用于上一页下一页连点
                                component.set('v.nameUpLoadList', nameList);
                                //重新定义选中文件的数量
                                component.set('v.fileSize', nameList.length);
                                console.log("nameList:" + component.get('v.nameUpLoadList'));
                                var isUploadName = component.get("v.isUploadName");
                                if (nameList.length > 0) {
                                    var strList = '';
                                    for (var i = 0; i < nameList.length; i++) {
                                        var num = Number(i) + 1;
                                        var id = 'file0' + num;
                                        //标识文件是否已经上传  精琢技术 thh 2021-09-26 start
                                        if (isUploadName[nameList[i]]) {
                                            var str = '
';
                                        } else {
                                            var str = '
';
                                        }
                                        //标识文件是否已经上传  精琢技术 thh 2021-09-26 end
                                        //拼接p标签 列出文件名id不同
                                        strList += str;
                                    }
                                    var obj = document.getElementById('file00');
                                    obj.innerHTML = strList;
                                }
                            }
                            //上传成功后文件列表的文件名变色  精琢技术 thh 2021-09-26 end
                        }
                        // handel the response errors
                    } else if (state === "INCOMPLETE") {
                        alert("From server: " + response.getReturnValue());
                        component.set("v.showLoadingSpinner", false);
                        component.set("v.errorFlag", true);
                    } else if (state === "ERROR") {
                        var errors = response.getError();
                        component.set("v.showLoadingSpinner", false);
                        component.set("v.errorFlag", true);
                        if (errors) {
                            if (errors[0] && errors[0].message) {
                                console.log("Error message: " + errors[0].message);
                            }
                        } else {
                            console.log("Unknown error");
                        }
                    }
                });
                // enqueue the action
                $A.enqueueAction(action);
            }
        } else if (!base64List.includes(getchunk) || (base64List.includes(getchunk) && errorFlag)) {
            //网络波动进来以后 置成false
            component.set("v.errorFlag", false);
            //用于判断上传同一个文件提示
            component.set("v.messageFlag", false);
            messageFlag = component.get("v.messageFlag");
            var action = component.get("c.saveChunk");
            action.setParams({
                parentId: component.get("v.parentId"),
                fileName: file.name,
                base64Data: encodeURIComponent(getchunk),
                contentType: file.type,
                fileId: attachId
            });
            // set call back
            action.setCallback(this, function(response) {
                // store the response / Attachment Id
                attachId = response.getReturnValue();
                //增加文件列表删除功能  精琢技术 thh 2021-09-02 start
                //关联附件ID和附件名
                var attachmentID = component.get("v.attachmentID");
                attachmentID[file.name] = attachId;
                component.set("v.attachmentID", attachmentID);
                //增加文件列表删除功能  精琢技术 thh 2021-09-02 end
                var state = response.getState();
                if (state === "SUCCESS") {
                    // update the start position with end postion
                    startPosition = endPosition;
                    endPosition = Math.min(
                        fileContents.length,
                        startPosition + this.CHUNK_SIZE
                    );
                    // check if the start postion is still less then end postion
                    // then call again 'uploadInChunk' method ,
                    // else, diaply alert msg and hide the loading spinner
                    if (startPosition < endPosition) {
                        this.uploadInChunk(
                            component,
                            file,
                            fileContents,
                            startPosition,
                            endPosition,
                            attachId
                        );
                    } else {
                        //判断上传文件内容 提示一次信息
                        var base = component.get("v.getchunk");
                        if (!base || (base && base != getchunk)) {
                            // alert("您已经成功上传文件。");
                            component.set("v.getchunk", getchunk);
                        }
                        alert("您已经成功上传文件。\n请点击提交后退出。");
                        //用于提交按钮判断是否有已上传的文件
                        component.set('v.IsUpLoad', true);
                        //用于判断上传同一个文件提示
                        component.set("v.messageFlag", true);
                        messageFlag = component.get("v.messageFlag");
                        component.set("v.showLoadingSpinner", false);
                        //标识预览图片名字  精琢技术 thh 2021-09-15 start
                        var isUploadName = component.get("v.isUploadName");
                        var fileName = component.find("fileId").get("v.files")[0]['name'];
                        if (isUploadName[fileName]) {
                            var str = '当前文件:' + fileName + '';
                            document.getElementById("uploadicon").style.display = 'inline-block';
                        } else {
                            var str = '当前文件:' + fileName + '';
                            document.getElementById("uploadicon").style.display = 'none';
                        }
                        var obj = document.getElementById('filenow');
                        obj.innerHTML = str;
                        //标识预览图片名字  精琢技术 thh 2021-09-15 end
                        //上传成功后文件列表的文件名变色  精琢技术 thh 2021-09-26 start
                        var count = component.get("v.fileUpLoadSize");
                        var fileName = component.get("v.flUpLoadName");
                        if (count > 0) {
                            //列出文件名01 所有文件名都用逗号隔开 根据逗号拆分,存放数组
                            var nameList = fileName.split(',');
                            for (var i = 0; i < nameList.length; i++) {
                                for (var j = i + 1; j < nameList.length; j++) {
                                    if (nameList[i] == nameList[j]) { //第一个等同于第二个,splice方法删除第二个
                                        nameList.splice(j, 1);
                                        j--;
                                    }
                                }
                            }
                            //存放到变量中 用于上一页下一页连点
                            component.set('v.nameUpLoadList', nameList);
                            //重新定义选中文件的数量
                            component.set('v.fileSize', nameList.length);
                            console.log("nameList:" + component.get('v.nameUpLoadList'));
                            var isUploadName = component.get("v.isUploadName");
                            if (nameList.length > 0) {
                                var strList = '';
                                for (var i = 0; i < nameList.length; i++) {
                                    var num = Number(i) + 1;
                                    var id = 'file0' + num;
                                    //标识文件是否已经上传  精琢技术 thh 2021-09-26 start
                                    if (isUploadName[nameList[i]]) {
                                        var str = '
';
                                    } else {
                                        var str = '
';
                                    }
                                    //标识文件是否已经上传  精琢技术 thh 2021-09-26 end
                                    //拼接p标签 列出文件名id不同
                                    strList += str;
                                }
                                var obj = document.getElementById('file00');
                                obj.innerHTML = strList;
                            }
                        }
                        //上传成功后文件列表的文件名变色  精琢技术 thh 2021-09-26 end
                    }
                    // handel the response errors
                } else if (state === "INCOMPLETE") {
                    alert("From server: " + response.getReturnValue());
                    component.set("v.showLoadingSpinner", false);
                    component.set("v.errorFlag", true);
                } else if (state === "ERROR") {
                    var errors = response.getError();
                    component.set("v.showLoadingSpinner", false);
                    component.set("v.errorFlag", true);
                    if (errors) {
                        if (errors[0] && errors[0].message) {
                            console.log("Error message: " + errors[0].message);
                        }
                    } else {
                        console.log("Unknown error");
                    }
                }
            });
            // enqueue the action
            $A.enqueueAction(action);
        } else {
            if (messageFlag) {
                alert("您已经上传过该文件了!")
                component.set("v.showLoadingSpinner", false);
            }
        }
        //存放上传过的文件base64 数组
        var baseFile = component.get("v.baseFile");
        var base64List = component.get("v.base64List");
        if (baseFile) {
            component.set('v.baseFile', baseFile + ',' + getchunk);
            // nameList.pust(name);
        } else {
            component.set('v.baseFile', getchunk);
        }
        baseFile = component.get("v.baseFile");
        var base64List = baseFile.split(',');
        component.set("v.base64List", base64List);
        // component.set("v.showLoadingSpinner", false);
        // baseFile = getchunk;
    },
    /**
     * 图片压缩
     * @param maxWidth 最大宽度或最大高度
     * @param width 宽度
     * @param height 高度
     * @returns {___anonymous1968_1969}
     */
    imgScaleW: function(maxWidth, width, height) {
        var imgScale = {};
        var w = 0;
        var h = 0;
        if (width <= maxWidth && height <= maxWidth) { // 如果图片宽高都小于限制的最大值,不用缩放
            imgScale = {
                width: width,
                height: height
            };
        } else {
            if (width >= height) { // 如果图片宽大于高
                w = maxWidth;
                h = Math.ceil(maxWidth * height / width);
            } else { // 如果图片高大于宽
                h = maxWidth;
                w = Math.ceil(maxWidth * width / height);
            }
            imgScale = {
                width: w,
                height: h
            };
        }
        return imgScale;
    },
    DrawImage1: function(maxWidth, width, height) {
        var imgScale = {};
        var w = 0;
        var h = 0;
        if (width > 0 && height > 0) {
            if (width / height >= 1) {
                if (width > maxWidth) {
                    imgScale = {
                        width: maxWidth,
                        height: (height * maxWidth) / width
                    };
                } else {
                    imgScale = {
                        width: width,
                        height: height
                    };
                }
            } else {
                if (height > maxWidth) {
                    imgScale = {
                        width: maxWidth,
                        height: (width * maxWidth) / height
                    };
                } else {
                    imgScale = {
                        width: width,
                        height: height
                    };
                }
            }
        }
        return imgScale;
    },
})