Commit cabffdc0 authored by xiangjiaojunxp's avatar xiangjiaojunxp

导出权限修改

parent 4799ccd8
...@@ -29,7 +29,6 @@ ...@@ -29,7 +29,6 @@
icon="el-icon-upload2" icon="el-icon-upload2"
size="mini" size="mini"
@click="handleExport" @click="handleExport"
v-hasPermi="['ruoyi-myexcel:myexcel:export']"
>导出</el-button> >导出</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
...@@ -111,7 +110,6 @@ export default { ...@@ -111,7 +110,6 @@ export default {
this.depss = response.rows; this.depss = response.rows;
}); });
}, },
/** 下拉选和页面luckysheet绑定 */ /** 下拉选和页面luckysheet绑定 */
handleOptionChange() { handleOptionChange() {
...@@ -235,91 +233,346 @@ export default { ...@@ -235,91 +233,346 @@ export default {
luckysheet.create(options); luckysheet.create(options);
}, },
/** 导入事件*/ /** 导入事件*/
handleFileChange(evt) { async handleFileChange(evt) {
if (this.disableNextButton) { let exx;
this.$message.warning("请先选择模板再进行导入!");
return false; // 如果按钮被禁用,提前返回,避免执行下一步操作 const cons = new Promise((resolve, reject) => {
} LuckyExcel.transformExcelToLucky(evt, exportJson => {
let name = evt.name exx = exportJson;
let suffixArr = name.split('.'), resolve(exx);
suffix = suffixArr[suffixArr.length - 1]
if (suffix !== 'xlsx') {
this.$message({
message: "上传格式不正确,请上传xlsx格式文件",
type: "warning"});
return
}
LuckyExcel.transformExcelToLucky(
evt,
function(exportJson) {
if (exportJson.sheets === null || exportJson.sheets.length === 0) {
this.$message({
message: "导入失败,请检查上传的文件是否正确",
type: "warning"
}); });
return });
try {
const exportJson = await cons;
await this.summary(exportJson);
console.log('summary 执行完毕');
this.submit(exportJson);
} catch (Error) {
this.$message({
message: Error.message,
type: "error"});
console.log(Error.message);
console.log("这里是最外面的地方");
} }
},
/** 物料转换汇总到页面*/
summary(exportJson){
let sysRulez; let sysRulez;
let sysRules; let sysRules;
let sysConver;
let value=[]; let value=[];
let map=new Map(); let data;
//获取物料转换的规则 //获取规则 sysRulez是物料转换 sysRules是数据汇总规则 13
//
for(let i=0;i<rule.length;i++){ for(let i=0;i<rule.length;i++){
if (rule[i].convertStatus===1){ if (rule[i].convertStatus==1){
sysRulez = JSON.parse(rule[i].detailContent); sysRulez = JSON.parse(rule[i].detailContent);
} }
if(rule[i].convertStatus===2){ if(rule[i].convertStatus==2){
if (parseInt(rule[i].detailYS)===1){
sysConver = JSON.parse(rule[i].detailContent)
}else {
sysRules = JSON.parse(rule[i].detailContent); sysRules = JSON.parse(rule[i].detailContent);
} }
} }
}
try {
//获取物料转换的sheet表 //获取物料转换的sheet表
let data=window.luckysheet.transToData(exportJson.sheets[sysRulez[0].se].celldata); data=window.luckysheet.transToData(exportJson.sheets[sysRulez[0].se].celldata);
window.luckysheet.set }
let key_i=sysRulez[0].ce; catch (err){
throw new Error("导入失败,所选文件或规则有误");
}
//获取物料转换中导入表的列,用来获取物料名
let key_i=parseInt(sysRulez[0].ce);
//获取物料转换的数据 //获取物料转换的数据
for (let i=0;i<sysRules.length;i++){ for (let i=0;i<sysRules.length;i++){
//value.push(data[sysRules[i].re][sysRules[i].ce].m); //value.push(data[sysRules[i].re][sysRules[i].ce].m);
value.push(sysRules[i].ce); value.push(sysRules[i].ce);
} }
//console.log("value的值为:"+value);
return new Promise((resolve, reject) => {
const asyncTasks = [];
switch (tempId) {
case 2:
{
let departmentMap = new Map();
let departments = [];
departmentMap.set('原煤', ['综一队', '综二队', '综三队', '开一区', '开二区', '准备一区', '准备二区', '掘进一区', '掘进二区', '掘进三区', '开拓项目部', '巷修区', '井运区', '通风区', '机电运转中心', '皮带运输中心']);
departmentMap.set('风选煤', '洗煤厂');
departmentMap.set('制造费用', ['机电检修中心', '地测科', '设备管理科', '旧品利用中心', '机修加工中心', '网络安全与信息通讯中心', '保卫科', '煤质管理科', '迁建科', '综合服务中心']);
departmentMap.set('管理费用', ['财务部', '综合办公室', '纪委监察科', '工会', '团委', '安全管理部', '经营管理部', '党委组织部(人力资源部)', '党委宣传部', '生产技术部', '机电运输部', '科协', '节能环保法律办公室', '党委组织部', '人力资源部']);
for (let i = parseFloat(sysRulez[0].re) + 1; i < data.length; i++) {
let n = parseInt(sysRules[0].ce) + 2;
if (data[i][key_i] != null && data[i][n] != null) {
let num = data[i][n].m;
//根据得到的num,找到对应的key
let keyy = getKeyByValue(departmentMap, num);
departments.push(keyy);
} else {
departments.push(null);
}
}
for (let key of departmentMap.keys()) {
let map = new Map();
let smallMat = [];
//console.log(departments);
for (let i = parseFloat(sysRulez[0].re) + 1; i < data.length; i++) {
if (data[i][key_i] != null && departments[i - 1] === key) {
let num = data[i][key_i].m;
smallMat.push(num);
} else {
smallMat.push(null);
}
}
//console.log(smallMat);
asyncTasks.push(
new Promise((innerResolve, innerReject) => {
const allNull = smallMat.every(item =>item===null);
if (allNull ) {
throw new Error("导入失败,导入文件错误,所选文件与模板规则不匹");
}
materialConvert(smallMat)
.then(response => {
let array = response.rows;
//console.log(array);
//luckysheet.setCellValue(12, 1, {bg:"#FF0000"})
for (let i = parseFloat(sysRulez[0].re) + 1; i < data.length; i++) {
let values = [];
if (data[i][13] != null && departments[i - 1] === key && data[i][key_i] != null) {
for (let j = 0; j < value.length; j++) {
let a = parseFloat(data[i][value[j]].v);
values.push(a);
}
//插入多个value的值
let index = smallMat.indexOf(data[i][key_i].m);
let key = array[index];
if (map.has(key)) {
let oldValues = map.get(key);
for (let i = 0; i < values.length; i++) {
values[i] = parseFloat(parseFloat(values[i] + oldValues[i]).toFixed(2));
}
map.set(key, values);
} else {
map.set(key, values);
}
}
let smallMat=[]; }
for(let i=parseInt(sysRulez[0].re)+1;i<data.length;i++){ //循环得到汇总结果
if(data[i][key_i]!=null){ //console.log(map);
let num=data[i][key_i].m; let cells;
let rowss = luckysheet.find(key);
if (rowss.length != 0) {
for (let i = 0; i < sysRules.length; i++) {
map.forEach((value, key) => {
let searchResult = luckysheet.find(key);
if (searchResult.length != 0 && key != null) {
cells = searchResult[0].column;
luckysheet.setCellValue(rowss[0].row, cells, value[i]);
luckysheet.setCellValue(rowss[0].row, cells, {
"ct": {
"fa": "General",
"t": "n"
}
});
}
});
}
}
}).catch(Error => {
console.log("这里是单个异步请求出错处");
//必须加,不能删除
innerReject(Error); // 异步请求出错
});
}));
}
}
break;
case 6: {
let deps = [];
let exps = [];
let map = new Map();
let smallMat = [];
for (let i = parseFloat(sysRulez[0].re) + 1; i < data.length; i++) {
if (data[i][key_i] != null) {
let num = data[i][key_i].m;
let dep = data[i][1].m;
let exp = data[i][14].m;
smallMat.push(num); smallMat.push(num);
}else{ deps.push(dep);
exps.push(exp);
} else {
smallMat.push(null); smallMat.push(null);
deps.push(null);
exps.push(null);
} }
} }
materialConvert(smallMat).then(response => { //console.log(smallMat);
debugger asyncTasks.push(
new Promise((innerResolve, innerReject) => {
const allNull = smallMat.every(item =>item===null);
const allNull1 = deps.every(item =>item===null);
const allNull2 = exps.every(item =>item===null);
if (allNull || allNull1 ||allNull2) {
throw new Error("导入失败,导入文件错误,所选文件与模板规则不匹");
}
materialConvert(smallMat)
.then(response => {
let array = response.rows;
//console.log(array);
//luckysheet.setCellValue(12, 1, {bg:"#FF0000"})
for (let i = parseFloat(sysRulez[0].re) + 1, k = 0; i < data.length; i++, k++) {
let values = [];
if (data[i][key_i] != null) {
for (let j = 0; j < value.length; j++) {
try{
let a = parseFloat(data[i][value[j]].v);
values.push(a);
}catch(err){
throw new Error("导入失败,导入文件不匹");
}
}
//插入多个value的值
let key = exps[k] + '/' + deps[k] + '/' + array[k];
if (map.has(key)) {
let oldValues = map.get(key);
for (let i = 0; i < values.length; i++) {
values[i] = parseFloat(parseFloat(values[i] + oldValues[i]).toFixed(2));
}
map.set(key, values);
} else {
map.set(key, values);
}
}
}
//循环得到汇总结果
console.log(map);
if (map.size === 0) {
throw new Error("导入失败,导入文件错误");
}
//循环得到汇总结果
let cells;
let rowws;
let con=0;
let warn;
for (let i = 0; i < sysRules.length; i++) {
map.forEach((value, key) => {
const suffixArr = key.split('/'), mat = suffixArr[2], depp = suffixArr[1],
expp = suffixArr[0];
//console.log(expp);console.log(depp);console.log(mat);
let searchResult = luckysheet.find(expp);
if (searchResult.length === 0 && expp == null) {
warn++;
return
}
rowws = searchResult[0].row;
for (let i = 1; i < 10000000000000000000000000; i++) {
let n = rowws + i;
let gg = luckysheet.getCellValue(n, 0);
if (gg!==null) {
con = rowws + i;
break;
}
}
searchResult= luckysheet.find(depp);
let k=0;
let r;
for(let i=0;i<searchResult.length;i++){
r = searchResult[i].row;
if(r<con&&r>=rowws){
k=1;
break;
}
}
if(k===1){
let matResult = luckysheet.find(mat);
if (matResult.length !== 0 && mat != null) {
cells = matResult[0].column;
luckysheet.setCellValue(r, cells, value[i]);
luckysheet.setCellValue(r, cells, {
"ct": {
"fa": "General",
"t": "n"
}
});
}
}
});
}
}).catch(Error => {
console.log("这里是单个异步请求出错处");
//必须加,不能删除
innerReject(Error); // 异步请求出错
});
}));
}
break;
case 1: {
let map = new Map();
let smallMat = [];
for (let i = parseInt(sysRulez[0].re) + 1; i < data.length; i++) {
if (data[i][key_i] != null) {
let num = data[i][key_i].m;
smallMat.push(num);
} else {
smallMat.push(null);
}
}
for (let j = 0; j < value.length; j++) {
if (data[sysRulez[0].re][value[j]] != null) {
let num = data[sysRulez[0].re][value[j]].m;
smallMat.push(num);
} else {
smallMat.push(null);
}
}
//console.log(smallMat);
asyncTasks.push(
new Promise((innerResolve, innerReject) => {
const allNull = smallMat.every(item =>item===null);
if (allNull ) {
throw new Error("导入失败,导入文件错误,所选文件与模板规则不匹");
}
materialConvert(smallMat)
.then(response => {
let array = response.rows; let array = response.rows;
//console.log(array);
//luckysheet.setCellValue(12, 1, {bg:"#FF0000"}) //luckysheet.setCellValue(12, 1, {bg:"#FF0000"})
for (let i =parseInt(sysRulez[0].re)+1; i < data.length; i++) { for (let i = parseInt(sysRulez[0].re) + 1; i < data.length; i++) {
let values = []; let values = [];
if(data[i][key_i]!=null){ if (data[i][key_i] != null) {
for(let j=0;j<value.length;j++) { for (let j = 0; j < value.length; j++) {
try{
let a = parseFloat(data[i][value[j]].v); let a = parseFloat(data[i][value[j]].v);
if (isNaN(a)){ if (isNaN(a)) {
a=0; a = 0;
} }
values.push(a); values.push(a);
}catch (err){
throw new Error("导入失败,导入文件不匹");
} }
}else{ }
} else {
break; break;
} }
//插入多个value的值 //插入多个value的值
let index = smallMat.indexOf(data[i][key_i].m); let index = smallMat.indexOf(data[i][key_i].m);
let key = array[index]; let key = array[index];
key = key+"-"+data[i][sysRulez[1].ce].m
if (map.has(key)) { if (map.has(key)) {
let oldValues = map.get(key); let oldValues = map.get(key);
for (let i=0;i<values.length;i++){ for (let i = 0; i < values.length; i++) {
values[i] = parseFloat(parseFloat(parseFloat(values[i]) + parseFloat(oldValues[i])).toFixed(2)); values[i] = parseFloat(parseFloat(parseFloat(values[i]) + parseFloat(oldValues[i])).toFixed(2));
} }
map.set(key, values); map.set(key, values);
...@@ -327,54 +580,182 @@ export default { ...@@ -327,54 +580,182 @@ export default {
map.set(key, values); map.set(key, values);
} }
} }
if (map.size === 0) {
throw new Error("导入失败,导入文件错误");
}
//循环得到汇总结果 //循环得到汇总结果
let row; let row;
let con;
let warn=0;
console.log(map);
for (let i = 0; i < sysRules.length; i++) {
map.forEach((value, key) => { map.forEach((value, key) => {
let splitElement = key.split("-"); let matchingCells = [];
row = luckysheet.find(splitElement[0])[0].row let name = data[sysRules[i].re][sysRules[i].ce].m
if (splitElement[1] !== 'undefined') { if (name.includes("洗煤")) {
row = sysRules[i].rt;
let find = luckysheet.find(splitElement[1])[0]; con = parseInt(sysRules[i].rt) + 10;
if (find != null && luckysheet.getCellValue(find.row, 0) === 0) {
// for (let i =0;i<value.length;i++) {
// luckysheet.setCellValue(sysConver[i].rt, sysConver[i].ct, value[i]);
// luckysheet.setCellValue(sysConver[i].rt, sysConver[i].ct, {
// "ct": {
// "fa": "General",
// "t": "n"
// }
// });
// }
} else { } else {
row = sysRules[i].rt;
con = 54;
}
for (; row <= con; row++) {
let cellValue = luckysheet.getCellValue(row, parseInt(sysRulez[0].ct));
if (cellValue === null) {
warn++
} else {
if (cellValue.includes(key)) {
luckysheet.setCellValue(row, sysRules[i].ct, value[i]);
luckysheet.setCellValue(row, sysRules[i].ct, {
"ct": {
"fa": "General",
"t": "n"
}
});
break;
}else{
}
}
}
});
}
let value2 = [];
let map2 = new Map;
for (let i = 0; i < sysConver.length; i++) {
//value.push(data[sysRules[i].re][sysRules[i].ce].m);
value2.push(sysConver[i].ce);
}
for (let i = parseInt(sysRulez[0].re) + 1; i < data.length; i++) {
let values2 = [];
if (data[i][key_i] != null) {
for (let j = 0; j < value2.length; j++) {
try{
let a = parseFloat(data[i][value2[j]].v);
if (isNaN(a)) {
a = 0;
}
values2.push(a);
}catch (err){
throw new Error("导入失败,导入文件不匹");
}
}
} else {
break;
}
//插入多个value的值
let key = data[sysConver[0].re][sysConver[0].ce].v;
if (map2.has(key)) {
let oldValues = map2.get(key);
for (let i = 0; i < values2.length; i++) {
values2[i] = parseFloat(parseFloat(parseFloat(values2[i]) + parseFloat(oldValues[i])).toFixed(2));
}
map2.set(key, values2);
} else {
map2.set(key, values2);
}
}
if (map2.size === 0) {
throw new Error("导入失败,导入文件错误");
}
map2.forEach((value, key) => {
for (let i = 0; i < value.length; i++) {
luckysheet.setCellValue(sysConver[i].rt, sysConver[i].ct, value[i]);
luckysheet.setCellValue(sysConver[i].rt, sysConver[i].ct, {
"ct": {
"fa": "General",
"t": "n"
}
});
}
})
}).catch(Error => {
console.log("这里是单个异步请求出错处");
//必须加,不能删除
innerReject(Error); // 异步请求出错
});
}));
}
break;
case 7: {
let map = new Map();
let smallMat = [];
let deps = [];
for (let i = parseFloat(sysRulez[0].re) + 1; i < data.length; i++) {
if (data[i][sysRulez[1].ce]!= null && data[i][key_i]!= null ) {
let num = data[i][key_i].m;
let dep = data[i][sysRulez[1].ce].m;
if(dep){
smallMat.push(null);
deps.push(null);
}else{
smallMat.push(num);
deps.push(dep);
}
} else {
smallMat.push(null);
deps.push(null);
}
}
debugger
console.log(deps);
asyncTasks.push(
new Promise((innerResolve, innerReject) => {
const allNull = smallMat.every(item =>item===null);
if (allNull ) {
throw new Error("导入失败,导入文件错误,所选文件与模板规则不匹");
}
materialConvert(smallMat)
.then(response => {
let array = response.rows;
for (let i = parseFloat(sysRulez[0].re) + 1, k = 0; i < data.length; i++, k++) {
let values = [];
if (data[i][key_i] != null) {
for (let j = 0; j < value.length; j++) {
try{
let a = parseFloat(data[i][value[j]].v);
values.push(a);
}catch (err){
this.$message({
message: "导入失败,导入文件不匹",
type: "error"
});
innerReject(error); // 异步请求出错
}
let rowindex; }
let colindex; //插入多个value的值
let config; //此方法只适用于一对一唯一值
/*let index = smallMat.indexOf(data[i][key_i].m);
// let bord={ let key = array[index];*/
// "rangeType": "cell", let key = array[k] + '/' + deps[k];
// "value": { if (map.has(key)) {
// "row_index": 0, let oldValues = map.get(key);
// "col_index": 0, for (let i = 0; i < values.length; i++) {
// "l": { values[i] = parseFloat(parseFloat(values[i] + oldValues[i]).toFixed(2));
// "style": 1, }
// "color": "#000000" map.set(key, values);
// }, } else {
// "r": { map.set(key, values);
// "style": 1, }
// "color": "#000000" }
// },
// "t": {
// "style": 1,
// "color": "#000000"
// },
// "b": {
// "style": 1,
// "color": "#000000"
// }
// }
// };
}
//循环得到汇总结果
console.log(map);
if (map.size === 0) {
this.$message({
message: "导入失败,导入文件错误",
type: "error"
});
innerReject(error); // 异步请求出错
}
//返回单元格第二行的数据
//let celn=luckysheet.getcellvalue(1);
//返回当前工作表第1列数据
//let cown=luckysheet.getcellvalue(null,0);
let rowws;
let config;
let bord = { let bord = {
"rangeType": "range", "rangeType": "range",
"borderType": "border-all", "borderType": "border-all",
...@@ -385,102 +766,186 @@ export default { ...@@ -385,102 +766,186 @@ export default {
"column": [0, 0] "column": [0, 0]
}] }]
} }
let warn=0;
map.forEach((value, key) => {
let cellValue = luckysheet.getcellvalue(row); const suffixArr = key.split('/'), mat = suffixArr[0], depp = suffixArr[1];
luckysheet.insertRow(row + 1) //console.log(mat);console.log(depp);
luckysheet.setCellValue(row + 1, sysRulez[0].ct, splitElement[0]); let searchResult = luckysheet.find(mat);
luckysheet.setCellValue(row + 1, sysRulez[0].ct, cellValue[0]); rowws = searchResult[0].row;
if (searchResult.length != 0 && key != null) {
// config = luckysheet.getConfig(0); luckysheet.insertRow(rowws + 1);
// bord.value.row_index = row+1; //输出部门数量金额
// bord.value.col_index = parseInt(sysRulez[0].ct); luckysheet.setCellValue(rowws + 1, sysRulez[1].ct, depp);
// config.borderInfo.push(bord); for (let i = 0; i < sysRules.length; i++) {
// luckysheet.setConfig(config); luckysheet.setCellValue(rowws + 1, sysRules[i].ct, value[i]);
// //修改单元格样式
// config = luckysheet.getConfig(0); /*luckysheet.setCellValue(rowws+g, sysRules[i].ct, {
// bord.value.row_index = row+1;
// bord.value.col_index = parseInt(sysRulez[0].ct)+1;
// config.borderInfo.push(bord);
// luckysheet.setConfig(config);
luckysheet.setCellValue(row + 1, sysRulez[1].ct, splitElement[1]);
luckysheet.setCellValue(row + 1, sysRulez[1].ct, cellValue[2]);
// config = luckysheet.getConfig(0);
// bord.value.row_index = row+1;
// bord.value.col_index = parseInt(sysRulez[1].ct);
// config.borderInfo.push(bord);
// luckysheet.setConfig(config);
if (value[0]===0){
luckysheet.setCellValue(row + 1, parseInt(sysRules[0].ct) + 1, 0);
luckysheet.setCellValue(row + 1, parseInt(sysRules[0].ct) + 1, cellValue[4]);
}else {
luckysheet.setCellValue(row + 1, parseInt(sysRules[0].ct) + 1, value[1] / value[0]);
luckysheet.setCellValue(row + 1, parseInt(sysRules[0].ct) + 1, cellValue[4]);
}
// config = luckysheet.getConfig(0);
// bord.value.row_index = row+1;
// bord.value.col_index = parseInt(sysRules[0].ct)+1;
// config.borderInfo.push(bord);
// luckysheet.setConfig(config);
for (let i = 0; i < value.length; i++) {
luckysheet.setCellValue(row + 1, sysRules[i].ct, value[i]);
luckysheet.setCellValue(row + 1, sysRules[i].ct, {
"ct": { "ct": {
"fa": "General", "fa": "General",
"t": "n" "t": "n"
} }
}); });*/
luckysheet.setCellValue(row + 1, sysRules[i].ct, cellValue[3]); }
// config = luckysheet.getConfig(0); //输出单价
// bord.value.row_index = row+1; luckysheet.setCellValue(rowws + 1, parseInt(sysRules[0].ct) + 1, value[1] / value[0]);
// bord.value.col_index = parseInt(sysRules[i].ct); //修改单价样式
// config.borderInfo.push(bord); /*luckysheet.setCellValue(rowws+g,parseInt(sysRules[0].ct)+1,{
// luckysheet.setConfig(config); "ct": {
"fa": "0.0000",
"t": "n"
}
});*/
} else{
warn++;
} }
config = luckysheet.getConfig(0); config = luckysheet.getConfig(0);
bord.range[0].row = [row + 1, row + 1]; bord.range[0].row = [rowws + 1, rowws + 1];
bord.range[0].column = [sysRulez[0].ct, sysRules[sysRules.length - 1].ct]; bord.range[0].column = [0, sysRules[sysRules.length - 1].ct];
config.borderInfo.push(bord); config.borderInfo.push(bord);
luckysheet.setConfig(config); luckysheet.setConfig(config);
});
console.log(warn);
/*let find1 = luckysheet.find("合计");
let number = parseInt(find1[0].row)-1;
luckysheet.setCellValue(find1[0].row, sysRules[sysRules.length-1].ct, "=SUM(F2:F"+number+")")*/
}).catch(Error => {
console.log("这里是单个异步请求出错处");
//必须加,不能删除
innerReject(Error); // 异步请求出错
});
}));
} }
}else { break;
luckysheet.setCellValue(row, parseInt(sysRulez[1].ct), ""); default :
if (value[0]===0){ {
luckysheet.setCellValue(row, parseInt(sysRules[0].ct) + 1, 0); let map = new Map();
}else { let smallMat = [];
luckysheet.setCellValue(row, parseInt(sysRules[0].ct) + 1, value[1] / value[0]); for (let i = parseFloat(sysRulez[0].re) + 1; i < data.length; i++) {
if (data[i][key_i] != null) {
let num = data[i][key_i].m;
smallMat.push(num);
} else {
smallMat.push(null);
} }
for (let i = 0; i < value.length; i++) {
luckysheet.setCellValue(row, sysRules[i].ct, value[i]);
// config = luckysheet.getConfig(0);
// bord.value.row_index = row+1;
// bord.value.col_index = parseInt(sysRules[i].ct);
// config.borderInfo.push(bord);
// luckysheet.setConfig(config);
} }
asyncTasks.push(
new Promise((innerResolve, innerReject) => {
const allNull = smallMat.every(item =>item===null);
if (allNull ) {
throw new Error("导入失败,导入文件错误,所选文件与模板规则不匹");
}
materialConvert(smallMat)
.then(response => {
let array = response.rows;
for (let i = parseFloat(sysRulez[0].re) + 1; i < data.length; i++) {
let values = [];
let index;
if (data[i][key_i] != null) {
for (let j = 0; j < value.length; j++) {
try{
let a = parseFloat(data[i][value[j]].v);
values.push(a);
}catch (err){
throw new Error("导入失败,导入文件不匹");
} }
});
let find1 = luckysheet.find("合计");
let number = parseInt(find1[0].row)-1;
luckysheet.setCellValue(find1[0].row, sysRules[sysRules.length-1].ct, "=SUM(F2:F"+number+")");
}).catch(() => { }
// 处理错误逻辑,这里是一个空的错误处理函数 //插入多个value的值
console.log("走到这了,物料转换后续处理出问题了!!"); index = smallMat.indexOf(data[i][key_i].m);
let key = array[index];
if (map.has(key)) {
let oldValues = map.get(key);
for (let i = 0; i < values.length; i++) {
values[i] = parseFloat(parseFloat(values[i] + oldValues[i]).toFixed(2));
}
map.set(key, values);
} else {
map.set(key, values);
}
}
}
//循环得到汇总结果
console.log(map);
if (map.size === 0) {
throw new Error("导入失败,导入文件错误");
}
let rowws;
let warn = 0;
for (let i = 0; i < sysRules.length; i++) {
map.forEach((value, key) => {
let searchResult;
searchResult= luckysheet.find(key);
if (searchResult && searchResult.length !== 0 && key != null) {
rowws = searchResult[0].row;
luckysheet.setCellValue(rowws, sysRules[i].ct, value[i]);
luckysheet.setCellValue(rowws, sysRules[i].ct, {
"ct": {
"fa": "General",
"t": "n"
}
});
} else {
warn++;
}
}); });
}
if (warn / sysRules.length === map.size) {
throw new Error("导入文件与所选模板规则不匹配");
} else if (warn > 0) {
this.$message({
message: "还有"+warn/sysRules.length+"条大类未能匹配到",
type: "warning"});
}
resolve(response.rows);
innerResolve(); // 标记当前异步任务完成
}).catch(Error => {
console.log("这里是单个异步请求出错处");
//必须加,不能删除
innerReject(Error); // 异步请求出错
});
}));
}
break;
}
//切换到想要的sheet //切换到想要的sheet
luckysheet.setSheetActive(0); luckysheet.setSheetActive(0);
Promise.all(asyncTasks)
.then(() => {
resolve(); // 所有异步请求执行完成
}) })
.catch(Error => {
console.log("这里是所有的异步请求出错处");
reject(Error); // 异步请求出错
});
});
}, },
/** 保存导入文件和生成文件 */
submit(contents){
debugger
console.log("还是执行了保存方法");
const name = contents.info.name;
let objsheet = luckysheet.getAllSheets() // 得到表的数据
//LuckyExcel = objsheet // 将表的数据保存本地
let strsheet = JSON.stringify(objsheet)// 对象转化为字符串
const data={name :name,jsons:strsheet};
/*addMyluckyexcel(data).then(response => {
if(response.code==200){
this.$message({
message: '保存成功', type: 'success'
});
this.dialogVisible=false;
//this.$router.replace({ path: '/' }); //刷新整个页面会出错
//window.location.reload();//也是全局刷新,不合适
this.$router.go(-1);
}else{
this.$message.error('保存失败');
}
});*/
},
/** 导出设置 */ /** 导出设置 */
handleExport: debounce(function() { handleExport: debounce(function() {
// 处理点击事件 // 处理点击事件
...@@ -501,5 +966,15 @@ function debounce(func, delay) { ...@@ -501,5 +966,15 @@ function debounce(func, delay) {
}, delay); }, delay);
}; };
} }
function getKeyByValue(map, value) {
for (let [key, val] of map) {
if (val === value) {
return key;
}
if (Array.isArray(val) && val.includes(value)) {
return key;
}
}
}
</script> </script>
...@@ -48,7 +48,6 @@ ...@@ -48,7 +48,6 @@
icon="el-icon-upload2" icon="el-icon-upload2"
size="mini" size="mini"
@click="handleExport" @click="handleExport"
v-hasPermi="['ruoyi-myexcel:myexcel:export']"
>导出</el-button> >导出</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment