Commit e7dc1375 authored by xiangjiaojunxp's avatar xiangjiaojunxp

物料转换bug修改

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