Commit e7dc1375 authored by xiangjiaojunxp's avatar xiangjiaojunxp

物料转换bug修改

parent c41f3436
...@@ -131,7 +131,6 @@ export default { ...@@ -131,7 +131,6 @@ export default {
Cookies.remove('rememberMe'); Cookies.remove('rememberMe');
} }
this.$store.dispatch("Login", this.loginForm).then(() => { this.$store.dispatch("Login", this.loginForm).then(() => {
debugger
this.$router.push({ path: this.redirect || "/" }).catch(()=>{}); this.$router.push({ path: this.redirect || "/" }).catch(()=>{});
}).catch(() => { }).catch(() => {
this.loading = false; this.loading = false;
......
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form ref="queryForm" size="small" :inline="true" label-width="68px"> <el-form ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="模板" prop="name" > <el-form-item label="模板" prop="name" >
<el-select v-model="selectedOption" ref="mySelect" size="mini" @change="handleOptionChange" filterable placeholder="请选择您要查看的模板"> <el-select v-model="selectedOption" ref="mySelect" size="mini" @change="handleOptionChange" filterable placeholder="请选择您要查看的模板">
<!-- <el-option label="自设的模板名" value="使用空白模板"></el-option>--> <!-- <el-option label="自设的模板名" value="使用空白模板"></el-option>-->
<el-option <el-option
v-for="item in depss" :key="item.id" :label="item.templateName" :value="item.id"> v-for="item in depss" :key="item.id" :label="item.templateName" :value="item.id">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="规则" prop="roleid"> <el-form-item label="规则" prop="roleid">
<el-select v-model="selectedRule" ref="mySelect" size="mini" @change="handleRuleChange" filterable placeholder="请选择您要查看的规则" > <el-select v-model="selectedRule" ref="mySelect" size="mini" @change="handleRuleChange" filterable placeholder="请选择您要查看的规则" >
<el-option <el-option
v-for="iem in luckyrule" :key="iem.id" :label="iem.roleName" :value="iem.id"> v-for="iem in luckyrule" :key="iem.id" :label="iem.roleName" :value="iem.id">
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="时间" prop="date"> <el-form-item label="时间" prop="date">
<el-date-picker <el-date-picker
@change="handledateChange" @change="handledateChange"
v-model="date" v-model="date"
type="month" type="month"
placeholder="选择月"> placeholder="选择月">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="所属矿区" prop="mining"> <el-form-item label="所属矿区" prop="mining">
<el-select v-model="mining" placeholder="请选择矿区" @change="handleminingChange"> <el-select v-model="mining" placeholder="请选择矿区" @change="handleminingChange">
<el-option label="东欢坨矿" :value="1"></el-option> <el-option label="东欢坨矿" :value="1"></el-option>
<el-option label="范矿" :value="2"></el-option> <el-option label="范矿" :value="2"></el-option>
<el-option label="林西矿" :value="3"></el-option> <el-option label="林西矿" :value="3"></el-option>
<el-option label="吕矿" :value="4"></el-option> <el-option label="吕矿" :value="4"></el-option>
<el-option label="钱家营矿" :value="5"></el-option> <el-option label="钱家营矿" :value="5"></el-option>
<el-option label="唐山矿" :value="6"></el-option> <el-option label="唐山矿" :value="6"></el-option>
</el-select> <el-option label="宏丰公司矿业" :value="7"></el-option>
</el-form-item> <el-option label="云飞公司矿业" :value="8"></el-option>
<el-form-item> <el-option label="单侯煤矿" :value="9"></el-option>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> </el-select>
</el-form-item> </el-form-item>
</el-form> <el-form-item>
<el-row :gutter="10" class="mb8"> <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-col :span="1.5"> </el-form-item>
<el-button </el-form>
type="warning" <el-row :gutter="10" class="mb8">
plain <el-col :span="1.5">
icon="el-icon-upload2" <el-button
size="mini" type="warning"
@click="handleExport" plain
>导出</el-button> icon="el-icon-upload2"
</el-col> size="mini"
<el-col :span="1.5"> @click="handleExport"
<el-upload >导出</el-button>
type="file" </el-col>
name="file" <el-col :span="1.5">
ref="upload" <el-upload
:before-upload="handleFileChange" type="file"
action='' name="file"
accept='.xlsx' ref="upload"
:limit="1" :before-upload="handleFileChange"
:file-list="fileList" action=''
:disabled="disableNextButton" accept='.xlsx'
:show-file-list=false :limit="1"
> :file-list="fileList"
<el-button plain size="mini" icon="el-icon-download" type="primary" :disabled="disableNextButton" @click="rulesdate">导入</el-button> :disabled="disableNextButton"
</el-upload> :show-file-list=false
</el-col> >
</el-row> <el-button plain size="mini" icon="el-icon-download" type="primary" :disabled="disableNextButton" @click="rulesdate">导入</el-button>
</el-upload>
</el-col>
</el-row>
<!-- luckysheet容器 --> <!-- luckysheet容器 -->
<div <div
id="luckysheet" id="luckysheet"
...@@ -373,8 +376,8 @@ export default { ...@@ -373,8 +376,8 @@ export default {
"status": 1, //激活状态 "status": 1, //激活状态
"order": 0, //工作表的下标 "order": 0, //工作表的下标
"hide": 0,//是否隐藏 "hide": 0,//是否隐藏
"row": 8, //行数 "row": 50, //行数
"column": 10, //列数 "column": 20, //列数
"defaultRowHeight": 19, //自定义行高 "defaultRowHeight": 19, //自定义行高
"defaultColWidth": 73, //自定义列宽 "defaultColWidth": 73, //自定义列宽
"celldata": [ "celldata": [
...@@ -525,22 +528,22 @@ export default { ...@@ -525,22 +528,22 @@ export default {
}).then(async ()=>{ }).then(async ()=>{
this.showMask = true; this.showMask = true;
//将导入数据替换保存 //将导入数据替换保存
LuckyExcel.transformExcelToLucky(evt, exportJson => { LuckyExcel.transformExcelToLucky(evt, exportJson => {
this.summary(exportJson) this.summary(exportJson)
.then(async() => { .then(async() => {
this.submit(exportJson); this.submit(exportJson);
}) })
.catch(error => { .catch(error => {
this.$message({ this.$message({
message: error.message, message: error.message,
type: "error" type: "error"
});
})
.finally(() => {
// 导入完成后关闭遮罩层
this.showMask = false;
}); });
})
.finally(() => {
// 导入完成后关闭遮罩层
this.showMask = false;
});
}); });
}).catch(() => { }).catch(() => {
// 处理错误逻辑,这里是一个空的错误处理函数 // 处理错误逻辑,这里是一个空的错误处理函数
...@@ -553,23 +556,23 @@ export default { ...@@ -553,23 +556,23 @@ export default {
}else{ }else{
this.showMask = true; this.showMask = true;
LuckyExcel.transformExcelToLucky(evt, exportJson => { LuckyExcel.transformExcelToLucky(evt, exportJson => {
this.summary(exportJson) this.summary(exportJson)
.then(async() => { .then(async() => {
this.submit(exportJson); this.submit(exportJson);
}) })
.catch(error => { .catch(error => {
this.$message({ this.$message({
message: error.message, message: error.message,
type: "error" type: "error"
});
})
.finally(() => {
// 导入完成后关闭遮罩层
this.showMask = false;
}); });
});
})
.finally(() => {
// 导入完成后关闭遮罩层
this.showMask = false;
});
});
} }
...@@ -664,79 +667,79 @@ export default { ...@@ -664,79 +667,79 @@ export default {
if (allNull ) { if (allNull ) {
throw new Error("导入失败,导入文件错误,所选文件与模板规则不匹"); throw new Error("导入失败,导入文件错误,所选文件与模板规则不匹");
} }
materialConvert(smallMat) materialConvert(smallMat)
.then(response => { .then(response => {
let array = response.rows; let array = response.rows;
//luckysheet.setCellValue(12, 1, {bg:"#FF0000"}) //luckysheet.setCellValue(12, 1, {bg:"#FF0000"})
for (let i = parseFloat(sysRulez[0].re) + 1; i < data.length; i++) { for (let i = parseFloat(sysRulez[0].re) + 1; i < data.length; i++) {
let values = []; let values = [];
if (data[i][13] != null && departments[i - 1] === key && data[i][key_i] != null) { if (data[i][13] != null && departments[i - 1] === key && data[i][key_i] != null) {
for (let j = 0; j < value.length; j++) { for (let j = 0; j < value.length; j++) {
try{ try{
let a = parseFloat(data[i][value[j]].v); let a = parseFloat(data[i][value[j]].v);
values.push(a); values.push(a);
}catch (err){ }catch (err){
throw new Error("导入失败,导入文件不匹"); throw new Error("导入失败,导入文件不匹");
} }
} }
//插入多个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];
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(values[i] + oldValues[i]).toFixed(2)); values[i] = parseFloat(parseFloat(values[i] + oldValues[i]).toFixed(2));
}
map.set(key, values);
} else {
map.set(key, values);
}
} }
map.set(key, values);
} else {
map.set(key, values);
} }
} //循环得到汇总结果
}
//循环得到汇总结果
if (map.size === 0) { if (map.size === 0) {
throw new Error("导入失败,导入文件错误"); throw new Error("导入失败,导入文件错误");
} }
let cells; let cells;
let warn; let warn;
let rowss = luckysheet.find(key); let rowss = luckysheet.find(key);
if (rowss.length != 0) { if (rowss.length != 0) {
for (let i = 0; i < sysRules.length; i++) { for (let i = 0; i < sysRules.length; i++) {
map.forEach((value, key) => { map.forEach((value, key) => {
let searchResult = luckysheet.find(key); let searchResult = luckysheet.find(key);
if (searchResult.length != 0 && key != null) { if (searchResult.length != 0 && key != null) {
cells = searchResult[0].column; cells = searchResult[0].column;
luckysheet.setCellValue(rowss[0].row, cells, value[i]); luckysheet.setCellValue(rowss[0].row, cells, value[i]);
luckysheet.setCellValue(rowss[0].row, cells, { luckysheet.setCellValue(rowss[0].row, cells, {
"ct": { "ct": {
"fa": "General", "fa": "General",
"t": "n" "t": "n"
}
});
}else{
warn++;
} }
}); });
}else{
warn++;
} }
}); }
} if (warn / sysRules.length === map.size) {
} throw new Error("导入文件与所选模板规则不匹配");
if (warn / sysRules.length === map.size) { } else if (warn > 0) {
throw new Error("导入文件与所选模板规则不匹配"); this.$message({
} else if (warn > 0) { message: "还有"+warn/sysRules.length+"条大类未能匹配到",
this.$message({ type: "warning"});
message: "还有"+warn/sysRules.length+"条大类未能匹配到", }
type: "warning"}); resolve(response.rows);
} innerResolve(); // 标记当前异步任务完成
resolve(response.rows);
innerResolve(); // 标记当前异步任务完成
}).catch(Error => { }).catch(Error => {
//必须加,不能删除 //必须加,不能删除
innerReject(Error); // 异步请求出错 innerReject(Error); // 异步请求出错
}); });
})); }));
} }
} }
...@@ -1075,7 +1078,7 @@ export default { ...@@ -1075,7 +1078,7 @@ export default {
})); }));
} }
break; break;
//李志昊 //OK
case 7: { case 7: {
let map = new Map(); let map = new Map();
let smallMat = []; let smallMat = [];
...@@ -1143,36 +1146,36 @@ export default { ...@@ -1143,36 +1146,36 @@ export default {
} }
this.NewSixList=SixList*/ this.NewSixList=SixList*/
let SixMateriel=[]; let SixMateriel=[];
let MaterielCode=[]; let MaterielCode=[];
let NewMarterielCode=[]; let NewMarterielCode=[];
let SixList=[]; let SixList=[];
let newSmasll =smallMat; let newSmasll =smallMat;
SixMateriel=response.rows; SixMateriel=response.rows;NewMarterielCode= sortArray(SixMateriel)
NewMarterielCode= sortArray(SixMateriel)
try {
// //转化编码 // //转化编码
let p=0; let p=0;
for(var i=0;i<newSmasll.length;i++){ for(var i=0;i<newSmasll.length;i++){
for (var j = 0; j < NewMarterielCode.length; j++) { for (var j = 0; j < NewMarterielCode.length; j++) {
if(newSmasll[i] !== null){ if(newSmasll[i] !== null){
if(newSmasll[i].slice(0,NewMarterielCode[j].code.length)==NewMarterielCode[j].code){ if (NewMarterielCode[j] && NewMarterielCode[j].code && newSmasll[i].slice(0, NewMarterielCode[j].code.length) == NewMarterielCode[j].code) {
SixList[i]=NewMarterielCode[j].codes SixList[i] = NewMarterielCode[j].codes;
p++ p++;
break break;
}else{ } else {
SixList[i]='11' if (NewMarterielCode[j] && NewMarterielCode[j].code) { // 判断是否存在并具有code属性
p++ SixList[i] = '11';
p++;
}
}
} }
} }
} }
}catch(err){
//throw new Error("导入失败,转换编码运行错误,请检查对应规则");
} }
var warn1 = 0,warn2 = 0;
let newSixList=SixList
for (let i = parseFloat(sysRulez[0].re) + 1, k = 0; i < data.length; i++, k++) { for (let i = parseFloat(sysRulez[0].re) + 1, k = 0; i < data.length; i++, k++) {
let values = []; let values = [];
if (data[i][key_i] != null) { if (data[i][key_i] != null) {
...@@ -1188,19 +1191,29 @@ export default { ...@@ -1188,19 +1191,29 @@ export default {
innerReject(error); // 异步请求出错 innerReject(error); // 异步请求出错
} }
} }
if(SixList[k]==undefined){
let key = SixList[k] + '/' + deps[k]; warn1++; //如果为空,统计为undefined
if (map.has(key)) { }else{
let oldValues = map.get(key); if(deps[k]==undefined){
for (let i = 0; i < values.length; i++) { warn2++;
values[i] = parseFloat(parseFloat(values[i] + oldValues[i]).toFixed(2)); }else{
let key = SixList[k] + '/' + deps[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);
}
} }
map.set(key, values);
} else {
map.set(key, values);
} }
} }
} }
//循环得到汇总结果 //循环得到汇总结果
...@@ -1226,73 +1239,85 @@ export default { ...@@ -1226,73 +1239,85 @@ export default {
map.forEach((value, key) => { map.forEach((value, key) => {
let rowws; let rowws;
const suffixArr = key.split('/'), mat = suffixArr[0], depp = suffixArr[1]; const suffixArr = key.split('/'), mat = suffixArr[0], depp = suffixArr[1];
//返回当前工作表第1列数据 //返回当前工作表第1列数据
let cown=luckysheet.getcellvalue(null,0); let cown=luckysheet.getcellvalue(null,0);
for(let i=0;i<cown.length;i++){ for(let i=0;i<cown.length;i++){
if(cown[i]==null){ if(cown[i]==null){
continue; continue;
} }
if(cown[i].v==undefined){ if(cown[i].v==undefined){
continue; continue;
} }
if(cown[i].v==mat){ if(cown[i].v==mat){
rowws=i; rowws=i;
break; break;
}
} }
} //let searchResult = luckysheet.find(mat,{isWholeWord:true});
//let searchResult = luckysheet.find(mat,{isWholeWord:true}); if (rowws != undefined) {
if (rowws != undefined) { //rowws = searchResult[0].row;
//rowws = searchResult[0].row; luckysheet.insertRow(rowws + 1);
luckysheet.insertRow(rowws + 1); let vll1 = luckysheet.getCellValue(rowws, sysRulez[0].ct);
let vll1 = luckysheet.getCellValue(rowws, sysRulez[0].ct); luckysheet.setCellValue(rowws + 1, sysRulez[0].ct, {
luckysheet.setCellValue(rowws + 1, sysRulez[0].ct, { "ct": {
"ct": { "fa": "@",
"fa": "@", "t": "n"
"t": "n" }
});
luckysheet.setCellValue(rowws + 1, sysRulez[0].ct, vll1);
let vll2 = luckysheet.getCellValue(rowws, parseInt(sysRulez[0].ct) + 1);
luckysheet.setCellValue(rowws + 1, parseInt(sysRulez[0].ct) + 1, vll2);
//输出部门数量金额
luckysheet.setCellValue(rowws + 1, sysRulez[1].ct, depp);
for (let i = 0; i < sysRules.length; i++) {
luckysheet.setCellValue(rowws + 1, sysRules[i].ct, value[i]);
//修改单元格样式
/*luckysheet.setCellValue(rowws+g, sysRules[i].ct, {
"ct": {
"fa": "General",
"t": "n"
}
});*/
} }
}); //输出单价
luckysheet.setCellValue(rowws + 1, sysRulez[0].ct, vll1); luckysheet.setCellValue(rowws + 1, parseInt(sysRules[0].ct) + 1, value[1] / value[0]);
let vll2 = luckysheet.getCellValue(rowws, parseInt(sysRulez[0].ct) + 1); //修改单价样式
luckysheet.setCellValue(rowws + 1, parseInt(sysRulez[0].ct) + 1, vll2); /*luckysheet.setCellValue(rowws+g,parseInt(sysRules[0].ct)+1,{
//输出部门数量金额
luckysheet.setCellValue(rowws + 1, sysRulez[1].ct, depp);
for (let i = 0; i < sysRules.length; i++) {
luckysheet.setCellValue(rowws + 1, sysRules[i].ct, value[i]);
//修改单元格样式
/*luckysheet.setCellValue(rowws+g, sysRules[i].ct, {
"ct": { "ct": {
"fa": "General", "fa": "0.0000",
"t": "n" "t": "n"
} }
});*/ });*/
config = luckysheet.getConfig(0);
bord.range[0].row = [rowws + 1, rowws + 1];
bord.range[0].column = [0, parseInt(sysRules[sysRules.length - 1].ct)];
config.borderInfo.push(bord);
luckysheet.setConfig(config);
modify = true;
}else{
warn++;
} }
//输出单价
luckysheet.setCellValue(rowws + 1, parseInt(sysRules[0].ct) + 1, value[1] / value[0]);
//修改单价样式
/*luckysheet.setCellValue(rowws+g,parseInt(sysRules[0].ct)+1,{
"ct": {
"fa": "0.0000",
"t": "n"
}
});*/
config = luckysheet.getConfig(0);
bord.range[0].row = [rowws + 1, rowws + 1];
bord.range[0].column = [0, parseInt(sysRules[sysRules.length - 1].ct)];
config.borderInfo.push(bord);
luckysheet.setConfig(config);
modify = true;
} else {
warn++;
}
}); });
if (warn === map.size) { if (warn === map.size) {
throw new Error("导入文件与所选模板规则不匹配"); throw new Error("导入文件与所选模板规则不匹配");
} else if (warn > 0) { }else if (warn > 0) {
this.$message({ this.$message({
message: "还有" + warn + "条大类未能匹配到", message: "还有" + warn + "条大类没匹配到,请仔细检查导入表",
type: "warning" type: "warning"
}); });
} }
if (warn1 > 0) {
this.$message({
message: "" + warn1 + "条数据编码不存在,请仔细检查导入表",
type: "error"
});
}
if (warn2 > 0) {
this.$message({
message: "" + warn2 + "条数据部门不存在,请仔细检查导入表",
type: "error"
});
}
// 记录结束时间 // 记录结束时间
const endTime = new Date().getTime(); const endTime = new Date().getTime();
// 计算执行时间(以毫秒为单位) // 计算执行时间(以毫秒为单位)
...@@ -1605,17 +1630,17 @@ export default { ...@@ -1605,17 +1630,17 @@ export default {
let map = new Map(); let map = new Map();
let smallMat = []; let smallMat = [];
try{ try{
for (let i = parseFloat(sysRulez[0].re) + 1; i < data.length; i++) { for (let i = parseFloat(sysRulez[0].re) + 1; i < data.length; i++) {
if (data[i][key_i] != null) { if (data[i][key_i] != null) {
let num = data[i][key_i].m; let num = data[i][key_i].m;
smallMat.push(num); smallMat.push(num);
} else { } else {
smallMat.push(null); smallMat.push(null);
}
} }
}
} catch(err){ } catch(err){
throw new Error("导入失败,导入文件与模板规则不匹"); throw new Error("导入失败,导入文件与模板规则不匹");
} }
asyncTasks.push( asyncTasks.push(
new Promise((innerResolve, innerReject) => { new Promise((innerResolve, innerReject) => {
const allNull = smallMat.every(item =>item===null); const allNull = smallMat.every(item =>item===null);
...@@ -1663,7 +1688,7 @@ export default { ...@@ -1663,7 +1688,7 @@ export default {
for (let i = 0; i < sysRules.length; i++) { for (let i = 0; i < sysRules.length; i++) {
map.forEach((value, key) => { map.forEach((value, key) => {
let searchResult; let searchResult;
searchResult= luckysheet.find(key); searchResult= luckysheet.find(key);
if (searchResult!==undefined && searchResult.length !== 0 && key != null) { if (searchResult!==undefined && searchResult.length !== 0 && key != null) {
rowws = searchResult[0].row; rowws = searchResult[0].row;
luckysheet.setCellValue(rowws, sysRules[i].ct, value[i]); luckysheet.setCellValue(rowws, sysRules[i].ct, value[i]);
...@@ -1689,7 +1714,7 @@ export default { ...@@ -1689,7 +1714,7 @@ export default {
innerResolve(); // 标记当前异步任务完成 innerResolve(); // 标记当前异步任务完成
}).catch(Error => { }).catch(Error => {
//必须加,不能删除 //必须加,不能删除
innerReject(Error); // 异步请求出错 innerReject(Error); // 异步请求出错
}); });
})); }));
......
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