({
// 设置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;
},
})