|
|
|
|
@ -15,11 +15,191 @@ |
|
|
|
|
|
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #jhzsReality-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #jhzsReality="{row}"> |
|
|
|
|
<el-input v-model="row.jhzsReality" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).jhzsReality === null || maintenanceArr.find(item => item.id == row.id).jhzsReality === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #zdljReality-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #zdljReality="{row}"> |
|
|
|
|
<el-input v-model="row.zdljReality" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).zdljReality === null || maintenanceArr.find(item => item.id == row.id).zdljReality === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #qqxReality-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #qqxReality="{row}"> |
|
|
|
|
<el-input-number controls-position="right" style="width:90%;" v-model="row.qqxReality" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).qqxReality === null || maintenanceArr.find(item => item.id == row.id).qqxReality === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input-number> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #produceTsReality-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #produceTsReality="{row}"> |
|
|
|
|
<el-input-number controls-position="right" style="width:90%;" v-model="row.produceTsReality" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).produceTsReality === null || maintenanceArr.find(item => item.id == row.id).produceTsReality === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input-number> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #hgxTarget-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #hgxTarget="{row}"> |
|
|
|
|
<el-input v-model="row.hgxTarget" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).hgxTarget === null || maintenanceArr.find(item => item.id == row.id).hgxTarget === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #hgxReality-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #hgxReality="{row}"> |
|
|
|
|
<el-input v-model="row.hgxReality" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).hgxReality === null || maintenanceArr.find(item => item.id == row.id).hgxReality === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #dppmTarget-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #dppmTarget="{row}"> |
|
|
|
|
<el-input v-model="row.dppmTarget" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).dppmTarget === null || maintenanceArr.find(item => item.id == row.id).dppmTarget === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #dppmReality-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #dppmReality="{row}"> |
|
|
|
|
<el-input v-model="row.dppmReality" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).dppmReality === null || maintenanceArr.find(item => item.id == row.id).dppmReality === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #djcwReality-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #djcwReality="{row}"> |
|
|
|
|
<el-input v-model="row.djcwReality" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).djcwReality === null || maintenanceArr.find(item => item.id == row.id).djcwReality === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #qualityTsReality-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #qualityTsReality="{row}"> |
|
|
|
|
<el-input-number controls-position="right" style="width:90%;" v-model="row.qualityTsReality" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).qualityTsReality === null || maintenanceArr.find(item => item.id == row.id).qualityTsReality === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input-number> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #pcxReality-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #pcxReality="{row}"> |
|
|
|
|
<el-input-number controls-position="right" style="width:90%;" v-model="row.pcxReality" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).pcxReality === null || maintenanceArr.find(item => item.id == row.id).pcxReality === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input-number> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #dywReality-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #dywReality="{row}"> |
|
|
|
|
<el-input-number controls-position="right" style="width:90%;" v-model="row.dywReality" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).dywReality === null || maintenanceArr.find(item => item.id == row.id).dywReality === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input-number> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #qlwtReality-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #qlwtReality="{row}"> |
|
|
|
|
<el-input-number controls-position="right" style="width:90%;" v-model="row.qlwtReality" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).qlwtReality === null || maintenanceArr.find(item => item.id == row.id).qlwtReality === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input-number> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #growAbility-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #growAbility="{row}"> |
|
|
|
|
<el-input v-model="row.growAbility" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).growAbility === null || maintenanceArr.find(item => item.id == row.id).growAbility === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
<template #ajorIssues-header="{ column }"> |
|
|
|
|
<span style="color: red;margin-right:5px;">*</span>{{column.label}} |
|
|
|
|
</template> |
|
|
|
|
<template #ajorIssues="{row}"> |
|
|
|
|
<el-input v-model="row.ajorIssues" |
|
|
|
|
:class="maintenanceArr.length > 0 |
|
|
|
|
&& maintenanceArr.find(item => item.id == row.id) |
|
|
|
|
&& (maintenanceArr.find(item => item.id == row.id).ajorIssues === null || maintenanceArr.find(item => item.id == row.id).ajorIssues === '') |
|
|
|
|
&& 'error'" |
|
|
|
|
></el-input> |
|
|
|
|
</template> |
|
|
|
|
|
|
|
|
|
</avue-crud> |
|
|
|
|
</basic-container> |
|
|
|
|
</template> |
|
|
|
|
<script> |
|
|
|
|
import {getList} from "@/api/outsourcingManagement/performanceCheck" |
|
|
|
|
import {getList,reCalculate,saveData} from "@/api/outsourcingManagement/performanceCheck" |
|
|
|
|
export default { |
|
|
|
|
components: { |
|
|
|
|
|
|
|
|
|
@ -29,6 +209,9 @@ export default { |
|
|
|
|
selectionList: [], |
|
|
|
|
loading:false, |
|
|
|
|
query:{}, |
|
|
|
|
maintenanceArr:[], |
|
|
|
|
otherData:[], |
|
|
|
|
data:[], |
|
|
|
|
option: { |
|
|
|
|
height: 'auto', |
|
|
|
|
calcHeight: 32, |
|
|
|
|
@ -605,25 +788,69 @@ export default { |
|
|
|
|
} |
|
|
|
|
}, |
|
|
|
|
methods: { |
|
|
|
|
calcData(a,b){ |
|
|
|
|
// 需要比较的字段 |
|
|
|
|
const fieldsToCheck = [ |
|
|
|
|
'jhzsReality','zdljReality','qqxReality', 'produceTsReality', 'growAbility', |
|
|
|
|
'djcwReality','qualityTsReality','pcxReality', 'dywReality', 'qlwtReality','dppmTarget', |
|
|
|
|
'dppmReality','hgxTarget','hgxReality',"ajorIssues" |
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
const c = b.filter((itemB, index) => { |
|
|
|
|
// 策略 A: 如果两个数组顺序严格一致,直接使用索引匹配 (最快) |
|
|
|
|
const itemA = a[index]; |
|
|
|
|
|
|
|
|
|
// 策略 B: 如果顺序可能不一致,需要通过 id 查找 (更稳健,但如果有重复 ID 会匹配到第一个) |
|
|
|
|
// const itemA = a.find(item => item.id === itemB.id); |
|
|
|
|
|
|
|
|
|
if (!itemA) return false; // a 中找不到对应的项,视情况决定是否保留,这里暂不保留 |
|
|
|
|
|
|
|
|
|
// 检查指定字段是否有任何一个不相等 |
|
|
|
|
const isDifferent = fieldsToCheck.some(key => { |
|
|
|
|
return itemA[key] !== itemB[key]; |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
return isDifferent; |
|
|
|
|
}); |
|
|
|
|
return c |
|
|
|
|
}, |
|
|
|
|
updateData() { |
|
|
|
|
// this.$refs.myTable.fullValidate((errMap) => { |
|
|
|
|
// if (errMap) { |
|
|
|
|
// return; |
|
|
|
|
// } |
|
|
|
|
// const dataList = this.$refs.myTable.getRecordset().updateRecords; |
|
|
|
|
// this.$ajax |
|
|
|
|
// .post('oemMerits/updateData', { |
|
|
|
|
// dataList |
|
|
|
|
// }) |
|
|
|
|
// .then((res) => { |
|
|
|
|
// if (res.code === 0) { |
|
|
|
|
// this.$message.success('重新计算成功'); |
|
|
|
|
// this.queryTable(); |
|
|
|
|
// } |
|
|
|
|
// }); |
|
|
|
|
// }); |
|
|
|
|
this.maintenanceArr = this.calcData(this.otherData,this.data) |
|
|
|
|
|
|
|
|
|
let jhzhError = this.maintenanceArr.find(item => item.jhzsReality === null) |
|
|
|
|
let zdljError = this.maintenanceArr.find(item => item.zdljReality === null) |
|
|
|
|
let qqxError = this.maintenanceArr.find(item => item.qqxReality === null) |
|
|
|
|
let produceError = this.maintenanceArr.find(item => item.produceTsReality === null) |
|
|
|
|
let growError = this.maintenanceArr.find(item => item.growAbility === null) |
|
|
|
|
let djcwError = this.maintenanceArr.find(item => item.djcwReality === null) |
|
|
|
|
let qualityError = this.maintenanceArr.find(item => item.qualityTsReality === null) |
|
|
|
|
let pcxError = this.maintenanceArr.find(item => item.pcxReality === null) |
|
|
|
|
let dywError = this.maintenanceArr.find(item => item.dywReality === null) |
|
|
|
|
let qlwtError = this.maintenanceArr.find(item => item.qlwtReality === null) |
|
|
|
|
let dppmTargetError = this.maintenanceArr.find(item => item.dppmTarget === null) |
|
|
|
|
let dppmRealityError = this.maintenanceArr.find(item => item.dppmReality === null) |
|
|
|
|
let hgxTargetError = this.maintenanceArr.find(item => item.hgxTarget === null) |
|
|
|
|
let hgxRealityError = this.maintenanceArr.find(item => item.hgxReality === null) |
|
|
|
|
let ajorError = this.maintenanceArr.find(item => item.ajorIssues === null) |
|
|
|
|
|
|
|
|
|
if(jhzhError || ajorError || zdljError || qqxError || produceError || growError || djcwError || qualityError || pcxError || dywError || qlwtError || dppmTargetError || dppmRealityError || hgxTargetError || hgxRealityError){ |
|
|
|
|
this.$message.error('请填写表格中红框数据') |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
reCalculate(this.maintenanceArr).then(res =>{ |
|
|
|
|
if(res.data.code === 200){ |
|
|
|
|
this.$message.success('重新计算成功') |
|
|
|
|
this.onLoad() |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
}, |
|
|
|
|
submitData() { |
|
|
|
|
saveData(this.data).then(res =>{ |
|
|
|
|
if(res.data.code === 200){ |
|
|
|
|
this.$message.success('保存成功') |
|
|
|
|
this.onLoad() |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
// this.$refs.myTable.fullValidate((errMap) => { |
|
|
|
|
// if (errMap) { |
|
|
|
|
// return; |
|
|
|
|
@ -702,6 +929,7 @@ export default { |
|
|
|
|
...this.query, |
|
|
|
|
}).then((res) => { |
|
|
|
|
this.data = res.data.data.records; |
|
|
|
|
this.otherData = JSON.parse(JSON.stringify(res.data.data.records)); |
|
|
|
|
this.page.total = res.data.data.total; |
|
|
|
|
this.loading = false; |
|
|
|
|
}) |
|
|
|
|
|