批处理前端

This commit is contained in:
446052889@qq.com 2022-09-03 21:27:46 +08:00
parent d7f7c5445e
commit d0700a293f
2 changed files with 201 additions and 202 deletions

View File

@ -1,60 +1,72 @@
<template> <template>
<div v-loading="loading"> <div v-loading="loading">
<!-- 校验结果 --> <!--上传的清单内容预览-->
<div v-if="checkResult.checkTemplateResult == 'ok'"> <div v-if="checkResult.checkTemplateResult == 'ok'">
<awsui-tabs v-model="activeName"> <div :style="{height: msgHeight}" v-html="checkResult.resultMsg"></div>
<awsui-tab-pane v-for="(tabItem, index) in tabData" :key="tabItem.id" :name="tabItem.id">
<span slot="label"><span :style="{color: tabItem.isOk ? '' : 'red'}">{{tabItem.sheetName}}</span></span>
<div :style="{height: msgHeight}" v-html="checkResult.resultMsg[index]"></div>
<div> <div>
<el-table <el-table
id='table' id='table'
:height="tableHeight" :height="tableHeight"
:data="tabItem.data" :data="tableData"
border border
size="medium" size="medium"
style="width: 100%"> style="width: 100%">
<!-- ExcelNo -->
<el-table-column <el-table-column
prop='index' prop='excelNo'
label=' ' label=' '
align='center' align='center'
width=50px width=100px
> >
<template slot-scope="scope">
{{scope.row.excelNo}}
</template>
</el-table-column>
<!-- 策略 -->
<el-table-column
prop='result'
label='策略'
align='center'
width=100px
fiexd="left"
>
<template slot-scope="scope">
<p :style="{color: scope.row.isRowOk ? '#009688' : '#ff0000'}">
<span v-if="scope.row.result == 'add'">新增</span>
<span v-else-if="scope.row.result == 'update'">更新</span>
<span v-else-if="(scope.row.result == 'repeat' || scope.row.result == 'blank' || scope.row.result == 'noMatch')">忽略</span>
<span v-else></span>
</p>
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
v-for="(item) in tabItem.titleRow" v-for="(item, index) in tableTitle"
:key=item :key=item
:prop=item :prop=item
:label="item"> :label="item"
min-width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<template v-if="scope.row[item] != undefined"> <template v-if="scope.row.row[index] != undefined">
{{scope.row[item].value}} {{ scope.row.row[index].value }}
<!--警告类提示上传可忽略--> <span v-if="!scope.row.row[index].isOk" style="color: #ff0000">
<span v-if="!scope.row[item].isRowOk && item == '名称'" style="color: #E6A23C"> <br/>{{ scope.row.row[index].msg }}
<br/><b>{{scope.row[item].rowMsg}}</b>
</span>
<!--错误类提示不能上传-->
<span v-if="!scope.row[item].isOk" style="color: #ff0000">
<br/><b>{{scope.row[item].msg}}</b>
</span> </span>
</template> </template>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
</awsui-tab-pane>
</awsui-tabs>
</div> </div>
<!-- excel错误提示 --> <!--上传的清单校验失败时显示内容-->
<div v-if="checkResult.checkTemplateResult != 'ok'"> <div v-if="checkResult.checkTemplateResult != 'ok'">
<div style="background-color:#F56C6C;padding: 10px;" v-html="checkResult.checkTemplateResultMsg"></div> <div style="background-color:#F56C6C;padding: 10px;" v-html="checkResult.checkTemplateResultMsg"></div>
</div> </div>
</div> </div>
</template> </template>
<script> <script>
import awsuiAxios from "../../awsuiAxios"; import awsuiAxios from "../../awsuiAxios";
export default { export default {
name: "check-shape", name: "check-shape",
props: { props: {
@ -73,17 +85,29 @@
wsId: wsId, wsId: wsId,
teamId: teamId, teamId: teamId,
shapeFileValue: shapeFileValue, shapeFileValue: shapeFileValue,
methodCategory: methodCategory,
msgHeight: '20px', msgHeight: '20px',
tableHeight: parseInt(this.totalHeight) - 20 - 45 + 'px', tableHeight: parseInt(this.totalHeight) - 20 + 'px',
activeName: 'first', tableTitle: [],
tabData: [], tableData: [],
checkResult: { checkResult: {
isOk: true,
okData: [], okData: [],
resultMsg: [], errData: [],
existData: [],
excelExistData: [],
resultMsg: '正在校验...',
chheckDone: false, chheckDone: false,
checkTemplateResult: 'ok', checkTemplateResult: 'ok',
checkTemplateResultMsg: [], checkTemplateResultMsg: '',
totalCount: 0,
okCount: 0,
repeatCount: 0,
blankCount: 0,
errCount: 0,
noMatchCount: 0,
noPermCount: 0,
moreMatchCount: 0,
readonlyCount: 0
} }
} }
}, },
@ -102,58 +126,68 @@
teamId: that.teamId, teamId: that.teamId,
type: 'shapeList', type: 'shapeList',
fileValue: that.shapeFileValue, fileValue: that.shapeFileValue,
fileName: that.fileName fileName: that.fileName,
methodCategory: methodCategory
} }
}; };
awsuiAxios.post(params).then(function (ro) { awsuiAxios.post(params).then(function (ro) {
that.loading = false; that.loading = false;
if (ro.result == 'ok') { if (ro.result == 'ok') {
const data = ro.data; //
that.checkResult.okData = JSON.parse(JSON.stringify(data)); that.tableTitle = ro.data.data.titleRow;
for (let i = 0; i < data.length; i++) { //
if (i == 0) { const data = ro.data.data.data;
that.activeName = data[i].id; let totalCount = data.totalCount;//
} that.checkResult.totalCount = totalCount;
const tableDataTemp = []; let okCount = data.okCount;//
const tableData = data[i].data; that.checkResult.okCount = okCount;
let msg = '清单共<span style="font-weight:bold;">' + tableData.length + '</span>条记录'; let repeatCount = data.repeatCount;// Excel
let okCount = 0; that.checkResult.repeatCount = repeatCount;
let errCount = 0; let blankCount = data.blankCount;//
for (let j = 0; j < tableData.length; j++) { that.checkResult.blankCount = blankCount;
const row = {}; let errCount = data.errCount;//
const rowArr = tableData[j]; that.checkResult.errCount = errCount;
let isRowOk = true;// let noMatchCount = data.noMatchCount;//
for (let m = 0; m < rowArr.length; m++) { that.checkResult.noMatchCount = noMatchCount;
if (!rowArr[m].isOk) { let noPermCount = data.noPermCount;//
isRowOk = false; that.checkResult.noPermCount = noPermCount;
break; let moreMatchCount = data.moreMatchCount;//
} that.checkResult.moreMatchCount = moreMatchCount;
} let readonlyCount = data.readonlyCount;//
for (let m = 0; m < rowArr.length; m++) { that.checkResult.readonlyCount = readonlyCount;
row[rowArr[m].name2] = rowArr[m]; let result = '共<span style="font-weight:bold;">' + totalCount + '</span>条';
} if (okCount > 0) {
row.index = j + 1;// 便 if (totalCount == okCount) {
tableDataTemp.push(row); result += ',全部校验通过';
if (isRowOk) {
okCount++;
} else { } else {
errCount++; result += ',通过<span style="font-weight:bold;">' + okCount + '</span>条';
that.checkResult.isOk = false;
} }
} }
if (okCount == tableData.length) { if (errCount > 0) {
msg += ',全部校验通过'; result += ',失败<span style="color:red;font-weight:bold;">' + errCount + '</span>条';
} else if (errCount == tableData.length) { }
msg += ',全部校验失败'; if (blankCount > 0) {
} else { result += ',模型名称、模型类型、形状名称、形状类型缺失<span style="color:red;font-weight:bold;">' + blankCount + '</span>条';
msg += ',校验通过<span style="font-weight:bold;">' + okCount + '</span>条'; }
msg += ',校验失败<span style="color:red;font-weight:bold;">' + errCount + '</span>条'; if (repeatCount > 0) {
result += ',重复<span style="color:red;font-weight:bold;">' + repeatCount + '</span>条';
}
if (noMatchCount > 0) {
result += ',不匹配<span style="color:red;font-weight:bold;">' + noMatchCount + '</span>条';
}
if (noPermCount > 0) {
result += ',没权限<span style="color:red;font-weight:bold;">' + noPermCount + '</span>条';
}
if (moreMatchCount > 0) {
result += ',匹配出多个<span style="color:red;font-weight:bold;">' + moreMatchCount + '</span>条';
}
if (readonlyCount > 0) {
result += ',只读<span style="color:red;font-weight:bold;">' + readonlyCount + '</span>条';
} }
that.checkResult.resultMsg.push(msg);
data[i].data = tableDataTemp;
} that.checkResult.resultMsg = result;
that.tabData = ro.data; that.tableData = data.result;
that.checkResult.okData = that.tableData;
that.checkResult.chheckDone = true; that.checkResult.chheckDone = true;
} else if (ro.result == 'warning') { } else if (ro.result == 'warning') {
that.$message({message: ro.msg, type: 'warning'}); that.$message({message: ro.msg, type: 'warning'});
@ -165,12 +199,8 @@
}).catch(error => { }).catch(error => {
console.log(error); console.log(error);
}) })
},
handleClick() {
alert(this.activeName)
} }
} }
} }
</script> </script>

View File

@ -73,7 +73,7 @@
</awsui-button> </awsui-button>
<div style="padding-top: 30px;"> <div style="padding-top: 30px;">
<span class="text-linker-color" style="cursor: pointer;" <span class="text-linker-color" style="cursor: pointer;"
@click="openRepositoryTreeDlg">下载Excel模板</span> @click="downloadTemplate('shapeList')">下载Excel模板</span>
</div> </div>
</div> </div>
<!-- 已上传文件删除 --> <!-- 已上传文件删除 -->
@ -116,18 +116,6 @@
</pal-upload> </pal-upload>
</div> </div>
</div> </div>
<create-tree
ref="createTree"
:visible.sync="uploadStep.shapeUpload.createTree.visible"
:wsId="wsId"
:teamId="teamId"
:categorys="methodCategory"
:multiple=true
v-on:cancel="uploadStep.shapeUpload.createTree.visible = false"
v-on:getResult="saveCreateTreeResult"
:title="uploadStep.shapeUpload.createTree.title"
></create-tree>
</awsui-tab-pane> </awsui-tab-pane>
</awsui-tabs> </awsui-tabs>
</div> </div>
@ -163,15 +151,13 @@
<script> <script>
import palUpload from '../components/upload/index'; import palUpload from '../components/upload/index';
import awsuiAxios from "../../awsuiAxios"; import awsuiAxios from "../../awsuiAxios";
import createTree from './components/createTree/index';
import checkProcess from './check-process'; import checkProcess from './check-process';
import checkShape from './check-shape'; import checkShape from './check-shape';
import save from './save'; import save from './save';
import Save from './save.vue';
export default { export default {
name: "create", name: "create",
components: {palUpload, createTree, checkProcess, checkShape, save}, components: {palUpload, checkProcess, checkShape, save},
data() { data() {
return { return {
active: 1, active: 1,
@ -196,10 +182,6 @@ export default {
status: 0, status: 0,
fileList: [], fileList: [],
data: {}, data: {},
createTree: {
visible: false,
title: '请选择流程'
}
} }
}, },
checkStep: { checkStep: {
@ -261,7 +243,7 @@ export default {
this.$message({message: '正在校验或校验未通过,不支持此操作', type: 'warning'}); this.$message({message: '正在校验或校验未通过,不支持此操作', type: 'warning'});
return; return;
} }
if (!result.isOk) { if (result.okCount != result.totalCount) {
this.$message({message: '校验未通过', type: 'warning'}); this.$message({message: '校验未通过', type: 'warning'});
return; return;
} }
@ -300,7 +282,7 @@ export default {
document.getElementById("selectShapeFileButton").click(); document.getElementById("selectShapeFileButton").click();
} }
}, },
downloadTemplate(type, versionIds) { // downloadTemplate(type) { //
const that = this; const that = this;
that.uploadStep.loading = true; that.uploadStep.loading = true;
const data = { const data = {
@ -309,7 +291,6 @@ export default {
cmd: "com.actionsoft.apps.coe.pal.batch_create_download_template", cmd: "com.actionsoft.apps.coe.pal.batch_create_download_template",
wsId: that.wsId, wsId: that.wsId,
type: type, type: type,
versionIds: versionIds,
methodCategory: methodCategory methodCategory: methodCategory
} }
}; };
@ -383,18 +364,6 @@ export default {
console.log(error); console.log(error);
}) })
}, },
/******模型结构模板下载start*******/
openRepositoryTreeDlg() {//
this.uploadStep.shapeUpload.createTree.visible = true;
},
saveCreateTreeResult(data) {//
if (data.length == 0) {
this.$message({message: '未选择任何模型,下载模板被取消', type: 'warning'});
} else {
this.downloadTemplate('shapeList', data.join(','));
}
},
/******模型结构模板下载end*******/
/******模型清单模板上传start*********/ /******模型清单模板上传start*********/
handleProcessRemove(file, fileList) { handleProcessRemove(file, fileList) {
this.uploadStep.processUpload.status = 0; this.uploadStep.processUpload.status = 0;