Browse Source

feat:[模板管理][烦人的提交记录]

lkf
luojie 2 months ago
parent
commit
5f7379a492
1 changed files with 198 additions and 46 deletions
  1. +198
    -46
      src/views/business/comps/template/dialog/SubPackageDialog.vue

+ 198
- 46
src/views/business/comps/template/dialog/SubPackageDialog.vue View File

@ -1,17 +1,17 @@
<template> <template>
<el-dialog :close-on-click-modal="false" :close-on-press-escape="false" title="分装(分装后的编号可用于下一步关联选择)" append-to-body :visible.sync="visible" @close="close" width="1100px">
<el-dialog :close-on-click-modal="false" :close-on-press-escape="false" title="分装(分装后的编号可用于下一步关联选择)" append-to-body
:visible.sync="visible" @close="close" width="1100px">
<div class="dialog-content"> <div class="dialog-content">
<div class="header-container"> <div class="header-container">
<div class="header-item"> <div class="header-item">
<div class="header-title">母液编号</div> <div class="header-title">母液编号</div>
<HandleFormItem :isFieldsRecord="false" :item="inputItem" :error="formErrors.mybh"
<HandleFormItem :fieldKey="formData.mybh + '_mybh'" :isFieldsRecord="false" :item="inputItem" :error="formErrors.mybh"
v-model="formData.mybh" /> v-model="formData.mybh" />
</div> </div>
<div class="header-item"> <div class="header-item">
<div class="header-title">分装数量</div> <div class="header-title">分装数量</div>
<HandleFormItem :fieldKey = "formData.mybh+'_fzsl'" @blur="onBlurFzsl" :item="integerInputNumberItem"
type = "inputNumber"
:error="formErrors.fzsl" v-model="formData.fzsl" />
<HandleFormItem :isFieldsRecord="false" :fieldKey="formData.mybh + '_fzsl'" @blur="onBlurFzsl" :item="integerInputNumberItem"
type="inputNumber" :error="formErrors.fzsl" v-model="formData.fzsl" />
</div> </div>
</div> </div>
<div class="content-container"> <div class="content-container">
@ -19,12 +19,13 @@
<span>分装编号</span> <span>分装编号</span>
<span class="ml-20">单位</span> <span class="ml-20">单位</span>
<div class="unit-select"> <div class="unit-select">
<HandleFormItem :isFieldsRecord="false" :item="unitItem" type="select" :error="formErrors.dw"
<HandleFormItem :fieldKey="formData.mybh + '_dw'" :isFieldsRecord="false" :item="unitItem" type="select" :error="formErrors.dw"
@blur="(e) => onCommonBlur(e, 'dw')" v-model="formData.dw" /> @blur="(e) => onCommonBlur(e, 'dw')" v-model="formData.dw" />
</div> </div>
<span class="ml-20">每份包装量</span> <span class="ml-20">每份包装量</span>
<div class="unit-select"> <div class="unit-select">
<HandleFormItem type="inputNumber" :error = "formErrors.mfbzl" :isFieldsRecord="false" :item="inputNumberItem" v-model="formData.mfbzl" />
<HandleFormItem :fieldKey="formData.mybh + '_mfbzl'" type="inputNumber" :error="formErrors.mfbzl" :isFieldsRecord="false"
:item="inputNumberItem" v-model="formData.mfbzl" />
</div> </div>
<el-button type="primary" plain @click="onAverage">平均分配</el-button> <el-button type="primary" plain @click="onAverage">平均分配</el-button>
<el-button type="primary" plain @click="onReset">重置</el-button> <el-button type="primary" plain @click="onReset">重置</el-button>
@ -32,9 +33,9 @@
<div class="header-container header2"> <div class="header-container header2">
<div v-for="(item, index) in fzList" class="list-item" :key="index"> <div v-for="(item, index) in fzList" class="list-item" :key="index">
<div class="list-label">{{ formData.mybh }}-set{{ item.subCode }}</div> <div class="list-label">{{ formData.mybh }}-set{{ item.subCode }}</div>
<HandleFormItem :isFieldsRecord="false" :item="inputNumberItem" :error="fzListErrors[index]"
type="inputNumber" @blur="onBlurFzNum(index)" v-model="item.num" />
<el-button type="primary" plain @click="onPrint(item)">打印</el-button>
<HandleFormItem :fieldKey="formData.mybh + '_num_' + item.subCode" :isFieldsRecord="false" :item="inputNumberItem" :error="fzListErrors[index]"
type="inputNumber" @blur="onBlurFzNum(index)" v-model="item.num" />
<el-button type="primary" class="ml-5" plain @click="onPrint(item)">打印</el-button>
</div> </div>
</div> </div>
</div> </div>
@ -51,8 +52,11 @@ import HandleFormItem from '@/components/Template/HandleFormItem.vue';
import { compareVolume } from '@/utils/volumeTools.js'; import { compareVolume } from '@/utils/volumeTools.js';
import { EventBus } from '@/utils/eventBus'; import { EventBus } from '@/utils/eventBus';
import { getLatestSn } from '@/api/template'; import { getLatestSn } from '@/api/template';
import {isValueEmpty} from "@/utils/index";
import { isValueEmpty } from "@/utils/index";
import moment from 'moment';
import { getuuid } from "@/utils/index.js";
export default { export default {
inject: ['updateZdxgjl',"getZdxgjl"],
dicts: [ dicts: [
'business_tjdw', 'business_tjdw',
], ],
@ -71,7 +75,7 @@ export default {
type: "inputNumber", type: "inputNumber",
fillType: "actFill", fillType: "actFill",
precision: 0, precision: 0,
label:"分装数量",
label: "分装数量",
maxlength: 3 maxlength: 3
}, },
inputNumberItem: { inputNumberItem: {
@ -92,8 +96,9 @@ export default {
dw: false, dw: false,
}, },
fzListErrors: [], // fzListErrors: [], //
uuid:"",//id
uuid: "",//id
originalData: {},// originalData: {},//
uuid:getuuid(),//id
} }
}, },
computed: { computed: {
@ -105,7 +110,23 @@ export default {
} }
} }
}, },
mounted() {
EventBus.$on('onEditSignCallback', this.handleEditSignCallback);
EventBus.$on('onFormEditSignCancel', this.handleEditSignCancel);
},
unmounted() {
EventBus.$off('onEditSignCallback', this.handleEditSignCallback);
EventBus.$off('onFormEditSignCancel', this.handleEditSignCancel);
},
methods: { methods: {
handleEditSignCancel(data) {
},
handleEditSignCallback(data) {
if (data.uuid === this.uuid) {
this.updateRecords();
}
},
close() { close() {
this.visible = false; this.visible = false;
this.fzList = []; this.fzList = [];
@ -114,23 +135,25 @@ export default {
}, },
show(data) { show(data) {
const cloneData = JSON.parse(JSON.stringify(data)); const cloneData = JSON.parse(JSON.stringify(data));
console.log(cloneData,"cloneData")
if(data && data.uuid) {//eventBusid
console.log(cloneData, "cloneData")
if (data && data.uuid) {//eventBusid
this.uuid = data.uuid this.uuid = data.uuid
} }
if (data.fzList) {
this.fzList = JSON.parse(JSON.stringify(cloneData.fzList));
//
this.fzListErrors = new Array(this.fzList.length).fill(false);
delete cloneData.fzList;
}
this.originalData = { this.originalData = {
fzList: cloneData.fzList,
fzList: [],
mybh: cloneData.mybh, mybh: cloneData.mybh,
fzsl: cloneData.fzsl, fzsl: cloneData.fzsl,
dw: cloneData.dw, dw: cloneData.dw,
mfbzl: cloneData.mfbzl, mfbzl: cloneData.mfbzl,
} }
if (data.fzList) {
this.fzList = JSON.parse(JSON.stringify(cloneData.fzList));
this.originalData.fzList = JSON.parse(JSON.stringify(cloneData.fzList));
//
this.fzListErrors = new Array(this.fzList.length).fill(false);
delete cloneData.fzList;
}
this.formData = cloneData; this.formData = cloneData;
// //
this.resetErrors(); this.resetErrors();
@ -143,12 +166,12 @@ export default {
return; return;
} else { } else {
const errMsg = "分装后小份容量之和大于母液容量,是否确认分装?" const errMsg = "分装后小份容量之和大于母液容量,是否确认分装?"
const {maxVolume,maxVolumeUnit,dw} = this.formData;
const { maxVolume, maxVolumeUnit, dw } = this.formData;
const totalVolume = this.fzList.reduce((acc, cur) => acc + Number(cur.num), 0); const totalVolume = this.fzList.reduce((acc, cur) => acc + Number(cur.num), 0);
const compareResult = compareVolume(totalVolume,dw,maxVolume, maxVolumeUnit);
console.log(compareResult,totalVolume,dw,maxVolume, maxVolumeUnit,"比较结果");
if(compareResult > 0||!maxVolume){//
const compareResult = compareVolume(totalVolume, dw, maxVolume, maxVolumeUnit);
console.log(compareResult, totalVolume, dw, maxVolume, maxVolumeUnit, "比较结果");
if (compareResult > 0 || !maxVolume) {//
this.$modal.confirm(errMsg, '提示', { this.$modal.confirm(errMsg, '提示', {
confirmButtonText: this.$t('form.saveConfirm'), confirmButtonText: this.$t('form.saveConfirm'),
cancelButtonText: this.$t('form.cancel'), cancelButtonText: this.$t('form.cancel'),
@ -161,30 +184,154 @@ export default {
return; return;
} }
this.submitEmit(); this.submitEmit();
} }
}, },
submitEmit(){
const {originalData} = this;
const nowData = {...this.formData, fzList: this.fzList};
if(!originalData.fzList){
this.updateRecords(nowData);
}else if(JSON.stringify(nowData) !== JSON.stringify(originalData)){
console.log("有修改")
submitEmit() {
const { originalData } = this;
const { mybh, fzsl, dw, mfbzl } = this.formData;
const nowData = { fzList: this.fzList, mybh, fzsl, dw, mfbzl };
if (!originalData.fzList.length) {
this.updateRecords();
} else if (JSON.stringify(nowData) !== JSON.stringify(originalData)) {
EventBus.$emit('showEditSignDialog', { uuid: this.uuid });
return;
} else {
this.updateRecords();
} }
EventBus.$emit('dialogSubPackageSubmit', {...this.formData, fzList: this.fzList,uuid:this.uuid});
},
handleSubmit() {
EventBus.$emit('dialogSubPackageSubmit', { ...this.formData, fzList: this.fzList, uuid: this.uuid });
setTimeout(() => { setTimeout(() => {
this.close(); this.close();
}, 500); }, 500);
}, },
updateRecords(){
console.log("更新记录")
getCommonInfo(type){
const { nickName, name } = this.$store.getters;
const o ={
mybh:"母液编号",
fzsl:"分装数量",
dw:"单位",
mfbzl:"每份包装量",
num:"分装编号"
}
return{
userNameCn: nickName,
userNameEn: name,
time: moment().format("YYYY-MM-DD HH:mm:ss"),
fieldCn: o[type],
fieldEn: o[type],
}
},
updateRecords() {
const { originalData } = this;
const records = [];
const { mybh, fzsl, dw, mfbzl } = this.formData;
const nowData = { fzList: this.fzList, mybh, fzsl, dw, mfbzl };
//
const fieldsToCompare = ['mybh', 'fzsl', 'dw', 'mfbzl'];
//
fieldsToCompare.forEach(field => {
if (originalData[field] !== nowData[field]) {
const record = {
key: mybh + '_' + field,
oldValue: originalData[field],
value: nowData[field],
title: originalData[field] ? "修改" : "提交",
...this.getCommonInfo(field),
}
records.push(record);
this.updateZdxgjl(record);
}
});
//
this.compareFzList(originalData.fzList, nowData.fzList, records);
console.log(records, "records")
this.handleSubmit();
if (records.length == 0) {
return;
}
const params = {
type: "fieldChanged",
newRecord: records,
resourceList: this.getZdxgjl(),
source: "customTable",
}
EventBus.$emit('onModifyRecord', params);
},
//
compareFzList(originalFzList, nowFzList, records) {
console.log(originalFzList, nowFzList, records, "compareFzList")
const { mybh } = this.formData;
if(!originalFzList.length){
nowFzList.forEach(item => {
const record = {
key: mybh + '_num_' + item.subCode,
oldValue: '',
value: item.num,
title: item.num ? "修改" : "提交",
...this.getCommonInfo('num'),
};
records.push(record);
this.updateZdxgjl(record);
})
return;
}
if (originalFzList.length === nowFzList.length) {
for (let i = 0; i < originalFzList.length; i++) {
if (originalFzList[i].num !== nowFzList[i].num) {
const record = {
key: mybh + '_num_' + originalFzList[i].subCode,
oldValue: originalFzList[i].num,
value: nowFzList[i].num,
title: originalFzList[i].num ? "修改" : "提交",
...this.getCommonInfo('num'),
};
records.push(record);
this.updateZdxgjl(record);
}
}
}else if(originalFzList.length>nowFzList.length){
for (let i = 0; i < nowFzList.length; i++) {
if (originalFzList[i].num !== nowFzList[i].num) {
const record = {
key: mybh + '_num_' + nowFzList[i].subCode,
oldValue: originalFzList[i].num,
value: nowFzList[i].num,
title: originalFzList[i].num ? "修改" : "提交",
...this.getCommonInfo('num'),
};
records.push(record);
this.updateZdxgjl(record);
}
}
}else{
for (let i = 0; i < originalFzList.length; i++) {
if (originalFzList[i].num !== nowFzList[i].num) {
const record = {
key: mybh + '_num_' + nowFzList[i].subCode,
oldValue: originalFzList[i].num,
value: nowFzList[i].num,
title: originalFzList[i].num ? "修改" : "提交",
...this.getCommonInfo('num'),
};
records.push(record);
this.updateZdxgjl(record);
}
}
}
}, },
validateFormData() { validateFormData() {
let isValid = true; let isValid = true;
const {mybh,fzsl,dw,mfbzl} = this.formData;
const { mybh, fzsl, dw, mfbzl } = this.formData;
// //
if (isValueEmpty(mybh)) { if (isValueEmpty(mybh)) {
this.formErrors.mybh = true; this.formErrors.mybh = true;
@ -235,7 +382,7 @@ export default {
}, },
// //
async onBlurFzsl(e) { async onBlurFzsl(e) {
console.log(e,"失去焦点时的数量")
console.log(e, "失去焦点时的数量")
// //
if (e) { if (e) {
this.formErrors.fzsl = false; this.formErrors.fzsl = false;
@ -248,20 +395,20 @@ export default {
count: e, count: e,
type: 2, type: 2,
}) })
if(result.code === 200){
if (result.code === 200) {
const codes = result.data; const codes = result.data;
// //
for (let i = 0; i < e; i++) { for (let i = 0; i < e; i++) {
this.fzList.push({ this.fzList.push({
num: "", num: "",
subCode: codes[i], subCode: codes[i],
preCode:`-set${codes[i]}`
preCode: `-set${codes[i]}`
}); });
// //
this.fzListErrors.push(false); this.fzListErrors.push(false);
} }
} }
}, },
onAverage() { onAverage() {
const { mfbzl } = this.formData; const { mfbzl } = this.formData;
@ -287,8 +434,8 @@ export default {
this.formErrors.mfbzl = false; this.formErrors.mfbzl = false;
}, },
onPrint(item) { onPrint(item) {
EventBus.$emit('subPackageDialogPrintTag', {...this.formData, printCode: `${this.formData.mybh}-set${item.subCode}`,uuid:this.uuid});
},
EventBus.$emit('subPackageDialogPrintTag', { ...this.formData, printCode: `${this.formData.mybh}-set${item.subCode}`, uuid: this.uuid });
},
onCommonBlur(e, field) { onCommonBlur(e, field) {
if (this.formData[field]) { if (this.formData[field]) {
this.formErrors[field] = false; this.formErrors[field] = false;
@ -325,9 +472,11 @@ export default {
grid-gap: 20px; grid-gap: 20px;
margin-top: 20px; margin-top: 20px;
} }
.header2{
.header2 {
grid-template-columns: 1fr 1fr; grid-template-columns: 1fr 1fr;
} }
.header-item { .header-item {
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
background: #fff; background: #fff;
@ -361,4 +510,7 @@ export default {
margin-right: 5px; margin-right: 5px;
// width: 200px; // width: 200px;
} }
.ml-5{
margin-left: 5px;
}
</style> </style>

Loading…
Cancel
Save