From abee1c35582c172236ec35adeb93b0876008b06a Mon Sep 17 00:00:00 2001 From: xiangjiaojunxp <1731013157@qq.com> Date: Tue, 25 Jul 2023 18:41:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=AD=E7=9F=BF=E6=B1=87=E6=80=BBexcel?= =?UTF-8?q?=E8=BD=AC=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-ui/src/views/system/supplies/index.vue | 396 ++++++++++++++++--- 1 file changed, 343 insertions(+), 53 deletions(-) diff --git a/ruoyi-ui/src/views/system/supplies/index.vue b/ruoyi-ui/src/views/system/supplies/index.vue index f6e9472..c9e2e3c 100644 --- a/ruoyi-ui/src/views/system/supplies/index.vue +++ b/ruoyi-ui/src/views/system/supplies/index.vue @@ -38,7 +38,7 @@ name="file" ref="upload" :before-upload="handleFileChange" - action='' + action='https://jsonplaceholder.typicode.com/posts' :limit="1" :file-list="fileList" :disabled="disableNextButton" @@ -70,6 +70,7 @@ import { exportExcel } from '../../../../public/exportExcel'; var fileName="新建XLSX工作表"; //定义表å var rule=[]; +var tempId; export default { name: "Mymodule", data() { @@ -117,6 +118,7 @@ export default { this.disableNextButton = this.selectedRule === ''; //æ ¹æ®é€‰ä¸çš„下拉选项值获å–ç›¸åº”çš„ä¿¡æ¯ getSuppliesTemplate(this.selectedOption).then(response => { + tempId= this.selectedOption; const sysSupplies = response.rows; this.luckysheetData = sysSupplies[0].templateContent; //将接收到的jsonå˜åˆ°json_dataä¸ @@ -140,6 +142,7 @@ export default { this.$message.error('查询失败,å‘生未知错误!'); }); }, + /** 规则下拉选 调佣åŽç«¯çš„æ–¹æ³•*/ handleRuleChange(){ if (this.selectedOption==='') { this.selectedRule=''; @@ -246,8 +249,6 @@ export default { type: "warning"}); return } - - LuckyExcel.transformExcelToLucky( evt, function(exportJson) { @@ -259,12 +260,11 @@ export default { return } console.log("导入数æ®çš„规则是:"+rule); + console.log("导入数æ®çš„规则是:"+tempId); let sysRulez; let sysRules; let value=[]; - let map=new Map(); - //获å–物料转æ¢çš„规则 - // + //获å–规则 sysRulezæ˜¯ç‰©æ–™è½¬æ¢ sysRulesæ˜¯æ•°æ®æ±‡æ€»è§„则 13 for(let i=0;i<rule.length;i++){ if (rule[i].convertStatus==1){ sysRulez = JSON.parse(rule[i].detailContent); @@ -275,6 +275,7 @@ export default { } //获å–物料转æ¢çš„sheet表 let data=window.luckysheet.transToData(exportJson.sheets[sysRulez[0].se].celldata); + //获å–物料转æ¢ä¸å¯¼å…¥è¡¨çš„列,用æ¥èŽ·å–物料å let key_i=sysRulez[0].ce; //获å–物料转æ¢çš„æ•°æ® for (let i=0;i<sysRules.length;i++){ @@ -282,61 +283,350 @@ export default { value.push(sysRules[i].ce); } console.log("value的值为:"+value); - let smallMat=[]; - for(let i=2;i<data.length;i++){ - if(data[i][key_i]!=null){ - let num=data[i][key_i].m; - smallMat.push(num); - }else{ - smallMat.push(null); + switch (tempId){ + + case 2: + { + let department=['原煤','洗煤厂']; + for(let j=0;j<department.length;j++){ + let map=new Map(); + let smallMat=[]; + for(let i=parseFloat(sysRulez[0].re)+1;i<data.length;i++){ + + if(data[i][key_i]!=null && data[i][13].m==department[j]){ + let num=data[i][key_i].m; + smallMat.push(num); + }else{ + smallMat.push(null); + } + } + console.log(smallMat); + 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 && data[i][13].m==department[j] && 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); + } + } + + } + //循环得到汇总结果 + console.log(map); + let cells; + 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(parseFloat(sysRules[i].rt)+j, cells,value[i]); + luckysheet.setCellValue(parseFloat(sysRules[i].rt)+j, cells,{"ct": { + "fa": "General", + "t": "n" + }}); + } + }); + } + }).catch(() => { + // 处ç†é”™è¯¯é€»è¾‘,这里是一个空的错误处ç†å‡½æ•° + console.log("走到这了,物料转æ¢åŽç»å¤„ç†å‡ºé—®é¢˜äº†!!"); + }); + } } - } - console.log(smallMat); - materialConvert(smallMat).then(response => { - let array = response.rows; - console.log(array); - //luckysheet.setCellValue(12, 1, {bg:"#FF0000"}) - for (let i =2; i < data.length; i++) { - let values = []; - if(data[i][key_i]!=null){ - for(let j=0;j<value.length;j++) { - let a = parseFloat(data[i][value[j]].v); - values.push(a); + break; + case 6: + { + let department=['二掘区','åŽå‹¤æœåŠ¡äºŒç§‘','åŽå‹¤æœåŠ¡ä¸€ç§‘','机电科','井è¿åŒº','救护队','开拓区','å¼€è¿åŒº','通风区','通讯管ç†ç§‘','物资管ç†ç§‘','巷修区','一掘区','准备区','综二区','综一区','钻探区']; + //åŠ ä¸ªè´¹ç”¨å¾ªçŽ¯ + for(let j=0;j<department.length;j++){ + let map=new Map(); + let smallMat=[]; + for(let i=parseFloat(sysRulez[0].re)+1;i<data.length;i++){ + + if(data[i][key_i]!=null && data[i][1].m==department[j]){ + let num=data[i][key_i].m; + smallMat.push(num); + }else{ + smallMat.push(null); + } } - }else{ - break; + + console.log(smallMat); + 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][1]!=null && data[i][1].m==department[j] && 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); + } + } + + } + //循环得到汇总结果 + console.log(map); + + let cells; + for(let i=0;i<sysRules.length;i++){ + map.forEach((value, key) => { + let searchResult = luckysheet.find(key); + if(searchResult.length!=0 && key!=null){ + cells=luckysheet.find(key)[0].column; + luckysheet.setCellValue(parseFloat(sysRules[i].rt)+j, cells,value[i]); + luckysheet.setCellValue(parseFloat(sysRules[i].rt)+j, cells,{"ct": { + "fa": "General", + "t": "n" + }}); + } + }); + } + }); + } - //æ’入多个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)); + } + 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); } - map.set(key, values); - } else { - map.set(key, values); } + //console.log(smallMat); + materialConvert(smallMat).then(response => { + let array = response.rows; + //console.log(array); + //luckysheet.setCellValue(12, 1, {bg:"#FF0000"}) + for (let i =parseInt(sysRulez[0].re)+1; i < data.length; i++) { + let values = []; + if(data[i][key_i]!=null){ + for(let j=0;j<value.length;j++) { + let a = parseFloat(data[i][value[j]].v); + if (isNaN(a)){ + a=0; + } + values.push(a); + } + }else{ + break; + } + //æ’入多个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(parseFloat(values[i]) + parseFloat(oldValues[i])).toFixed(2)); + } + map.set(key, values); + } else { + map.set(key, values); + } + } + //循环得到汇总结果 + console.log(map); + let rowws; + let row; + let con; + + for(let i=0;i<sysRules.length;i++){ + + map.forEach((value, key) => { + + let matchingCells = []; + let name = data[sysRules[i].re][sysRules[i].ce].m + if (name.includes("æ´—ç…¤")){ + + row = sysRules[i].rt; + con = parseInt(sysRules[i].rt)+10; + + }else { + row = sysRules[i].rt; + con = 54; + } + + for ( ; row <=con ; row++) { + let cellValue = luckysheet.getCellValue(row, parseInt(sysRulez[0].ct)); + if (cellValue===null){ + + }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; + } + } + } + + // if (luckysheet.find(key).length>0) { + // + // rowws = luckysheet.find(key)[0].row; // rowws=luckysheet.find(key)[0].row; + // luckysheet.setCellValue(rowws, sysRules[i].ct, value[i]); + // luckysheet.setCellValue(rowws, sysRules[i].ct, { + // "ct": { + // "fa": "General", + // "t": "n" + // } + // }); + // } + }); + } + + // debugger + // let value2 =[]; + // + // 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++) { + // let a = parseFloat(data[i][value2[j]].v); + // if (isNaN(a)){ + // a=0; + // } + // values2.push(a); + // } + // }else{ + // break; + // } + // //æ’入多个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<values2.length;i++){ + // values2[i] = parseFloat(parseFloat(parseFloat(values2[i]) + parseFloat(oldValues[i])).toFixed(2)); + // } + // map.set(key, values2); + // } else { + // map.set(key, values2); + // } + // } + + }).catch(() => { + // 处ç†é”™è¯¯é€»è¾‘,这里是一个空的错误处ç†å‡½æ•° + console.log("走到这了,物料转æ¢åŽç»å¤„ç†å‡ºé—®é¢˜äº†!!"); + + }); } - //循环得到汇总结果 - console.log(map); - let rowws; - for(let i=0;i<sysRules.length;i++){ - map.forEach((value, key) => { - rowws=luckysheet.find(key)[0].row; - luckysheet.setCellValue(rowws, sysRules[i].ct,value[i]); - luckysheet.setCellValue(rowws, sysRules[i].ct,{"ct": { - "fa": "General", - "t": "n" - }}); + break; + default : + { + 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; + smallMat.push(num); + }else{ + smallMat.push(null); + } + } + materialConvert(smallMat).then(response => { + let array = response.rows; + for (let i =parseFloat(sysRulez[0].re)+1; i < data.length; i++) { + let values = []; + if(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); + } + } + + } + //循环得到汇总结果 + debugger + console.log(map); + let rowws; + for(let i=0;i<sysRules.length;i++){ + map.forEach((value, key) => { + let searchResult = luckysheet.find(key); + if(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" + } + }); + } + }); + } }); } - }).catch(() => { - // 处ç†é”™è¯¯é€»è¾‘,这里是一个空的错误处ç†å‡½æ•° - console.log("走到这了,物料转æ¢åŽç»å¤„ç†å‡ºé—®é¢˜äº†!!"); - this.$message.error('文件导入失败!å‘生未知错误,请é‡è¯•!!'); - }); + } + //切æ¢åˆ°æƒ³è¦çš„sheet luckysheet.setSheetActive(0); }) -- 2.26.2