fix: 抽取wprList

This commit is contained in:
shijing 2025-08-28 16:27:44 +08:00
parent a2a0b75c09
commit 1d19527864
4 changed files with 372 additions and 23 deletions

View File

@ -85,7 +85,6 @@
</el-container>
</template>
<script>
import inm from "./inm.vue";
import inmIn from "./inmIn.vue";
import inmOut from "./inmOut.vue";
import mlogs from "./mlogs.vue";
@ -93,7 +92,7 @@ import mtask from "./mtask.vue";
import handover from "./handover.vue";
export default {
name: "bx",
components: { inm,inmIn, mlogs, mtask, handover,inmOut },
components: { inmIn, mlogs, mtask, handover,inmOut },
data() {
return {
mgroups:[],

View File

@ -11,7 +11,7 @@
v-model="query.state"
placeholder="物料状态"
clearable
@change="searchStateChange"
@change="handleQuery"
style="width: 250px"
>
<el-option
@ -199,6 +199,18 @@
@closed="dialog.handover = false"
>
</handover-dialog>
<wpr-dialog
v-if="dialog.wprList"
ref="inmWprDialog"
:wm = "wmId"
:process = "process"
:mgroupId = "mgroupId"
:mgroupName="mgroupName"
:ofromName = "ofrom_name"
:ofromBatch = "ofrom_batch"
@success="handleWprSuccess"
@closed="dialog.wprList = false"
></wpr-dialog>
<el-drawer v-model="wprVisibleDrawer" :size="'70%'">
<template #header>
<h4>关联产品</h4>
@ -216,7 +228,9 @@
</template>
<template #default>
<el-table ref="wprTable" id="wprTable" :height="wprTableHeight" hidePagination highlight-current-row border :data="wprList">
<el-table-column label="产品编号" prop="number" min-width="100px"></el-table-column>
<el-table-column label="产品编号" prop="number" min-width="100px"
v-if="mgroupName=='成品内外初检'||mgroupName=='成品内质复检'||mgroupName=='成品性能检测'||mgroupName=='成品尺寸检测'||mgroupName=='成品外观复检一'||mgroupName=='成品外观复检二'"
></el-table-column>
<el-table-column label="对外编号" prop="number_out" min-width="100px"></el-table-column>
<el-table-column label="记录数据" prop="oinfo">
<template #default="scope">
@ -248,11 +262,6 @@
</el-table-column>
</el-table>
</template>
<!-- <template #footer>
<div style="flex: auto">
<el-button @click="wprVisibleDrawer=false">关闭</el-button>
</div>
</template> -->
</el-drawer>
<el-drawer v-model="limitedWatch" title="工艺路线流程图" size="80%" @closeDialog="limitedWatch = false">
<scDegra
@ -281,6 +290,7 @@ import showDrawer from "./check_drawer.vue";
import scrapDialog from "./handover_form.vue";
import saveDialog from "./inm_record.vue";
import handoverDialog from "./handover_form2.vue";
import wprDialog from "./wprList.vue";
export default {
props: {
deptId: {
@ -305,6 +315,7 @@ export default {
},
},
components: {
wprDialog,
saveDialog,
materials,
checkDialog,
@ -354,6 +365,7 @@ export default {
wm: ""
},
wprTableHeight: 500,
wmId:"",
wprsearch:"",
route_code:"",
showBatch: "",
@ -497,17 +509,27 @@ export default {
},
showWpr(row){
let that = this;
that.ofrom_name = row.material_ofrom_name;
that.wmId = row.id;
that.ofrom_batch = row.batch;
that.wprParams.wm = row.id;
that.wprVisibleDrawer = true;
that.ofrom_name = row.material_ofrom_name;
that.dialog.wprList = true;
that.$nextTick(() => {
let heights = document.getElementsByClassName("el-drawer__body")[0].clientHeight;
that.wprTableHeight = heights-20;
})
this.$API.wpm.wpr.list.req(that.wprParams).then((res) => {
that.wprList = res;
})
that.$refs.inmWprDialog.open("ins");
});
// that.ofrom_name = row.material_ofrom_name;
// that.ofrom_batch = row.batch;
// that.wprParams.wm = row.id;
// that.wprVisibleDrawer = true;
// that.$nextTick(() => {
// let heights = document.getElementsByClassName("el-drawer__body")[0].clientHeight;
// that.wprTableHeight = heights-20;
// })
// this.$API.wpm.wpr.list.req(that.wprParams).then((res) => {
// that.wprList = res;
// })
},
//
handleSaveSuccess(data, mode) {
@ -647,6 +669,9 @@ export default {
})
},
handleWprSuccess(row){
}
},
};
</script>

View File

@ -204,6 +204,17 @@
@success="handleinmSuccess"
>
</save-dialog>
<wpr-dialog
v-if="dialog.wprList"
ref="inmWprDialog"
:wm = "wmId"
:process = "process"
:mgroupId = "mgroupId"
:mgroupName="mgroupName"
:ofromName = "ofrom_name"
:ofromBatch = "ofrom_batch"
@success="handleWprSuccess"
></wpr-dialog>
<handover-dialog
v-if="dialog.handover"
ref="handoverDialog"
@ -214,6 +225,7 @@
@closed="dialog.handover = false"
>
</handover-dialog>
<el-drawer v-model="wprVisibleDrawer" :size="'70%'">
<template #header>
<h4>关联产品</h4>
@ -240,7 +252,9 @@
</span>
</template>
</el-table-column>
<el-table-column label="对外编号" prop="number_out" min-width="100px"></el-table-column>
<el-table-column label="对外编号"
v-if="mgroupName=='成品内外初检'||mgroupName=='成品内质复检'||mgroupName=='成品性能检测'||mgroupName=='成品尺寸检测'||mgroupName=='成品外观复检一'||mgroupName=='成品外观复检二'"
prop="number_out" min-width="100px"></el-table-column>
<el-table-column
label="操作"
fixed="right"
@ -300,6 +314,7 @@ import checkDialog from "./check_form.vue";
import showDrawer from "./check_drawer.vue";
import scrapDialog from "./handover_form.vue";
import saveDialog from "./inm_record.vue";
import wprDialog from "./wprList.vue";
import handoverDialog from "./handover_form2.vue";
export default {
props: {
@ -325,6 +340,7 @@ export default {
},
},
components: {
wprDialog,
saveDialog,
materials,
checkDialog,
@ -352,6 +368,7 @@ export default {
save: false,
check: false,
scrap: false,
wprList: false,
permission: false,
inmRecord:false,
},
@ -512,6 +529,9 @@ export default {
//
handleinmSuccess(){
this.$refs.table.refresh();
},
handleWprSuccess(){
},
//
handleQuery() {
@ -519,11 +539,18 @@ export default {
},
showWpr(row){
let that = this;
that.ofrom_name = row.material_ofrom_name;
that.wmId = row.id;
that.ofrom_batch = row.batch;
that.wprParams.wm = row.id;
that.wprVisibleDrawer = true;
that.getRowWpr();
that.ofrom_name = row.material_ofrom_name;
that.dialog.wprList = true;
that.$nextTick(() => {
that.$refs.inmWprDialog.open("out");
});
// that.ofrom_name = row.material_ofrom_name;
// that.ofrom_batch = row.batch;
// that.wprParams.wm = row.id;
// that.wprVisibleDrawer = true;
// that.getRowWpr();
},
getRowWpr(){
let that = this;

View File

@ -0,0 +1,298 @@
<template>
<el-drawer
title="关联产品"
v-model="visible"
:size="'70%'"
destroy-on-close
>
<template #header>
<h4>关联产品</h4>
<el-button v-if="mode=='out'" type="primary" @click="wprNumberChange">发货编号</el-button>
<el-button v-if="mode=='out'" type="warning" @click="wprNumberClear">清空编号</el-button>
<el-input
v-if="mode=='ins'"
style="margin-right: 5px;width: 200px;"
v-model="search"
placeholder="编号"
clearable
></el-input>
<el-button
v-if="mode=='ins'"
type="primary"
icon="el-icon-search"
@click="handleWprQuery"
></el-button>
</template>
<template #default>
<scTable ref="wprTable" id="wprTable" :data="wprList" hidePagination hideDo>
<el-table-column label="产品编号" prop="number" min-width="100px" ></el-table-column>
<el-table-column label="对外编号" prop="number_out" min-width="100px"
v-if="mgroupName=='成品内外初检'||mgroupName=='成品内质复检'||mgroupName=='成品性能检测'||mgroupName=='成品尺寸检测'||mgroupName=='成品外观复检一'||mgroupName=='成品外观复检二'"
></el-table-column>
<el-table-column label="记录数据" prop="oinfo">
<template #default="scope">
<div v-for="(item,index) in scope.row.oinfo" :key="item.id">
{{ item.name }}:{{ item.val}}
<span v-if="index<(scope.row.oinfo.length-1)">,</span>
</div>
</template>
</el-table-column>
<el-table-column label="缺陷项" min-width="200px">
<template #default="scope">
<span v-for="item in scope.row.wprdefect" :key="item.id">
<el-tag
type="warning"
>{{ item.defect_name }}</el-tag>
</span>
</template>
</el-table-column>
<el-table-column
label="操作"
fixed="right"
align="center"
width="200"
>
<template #default="scope">
<el-button v-if="mode=='ins'&&mgroupName=='毛坯检测后打码'" @click="QRCode(scope.row)" type="success">二维码</el-button>
<el-button @click="printMaterial(scope.row)" type="primary">打印标签</el-button>
</template>
</el-table-column>
</scTable>
</template>
</el-drawer>
<el-dialog title="二维码" v-model="showQrCode" width="500px">
<el-container>
<el-main style="text-align: center;padding: 50px 0;">
<scQrCode :text="scQr_code"></scQrCode>
</el-main>
</el-container>
</el-dialog>
<el-dialog title="设置发货编号" v-model="showBatch">
<el-form :model="wprParams" label-width="80px">
<el-form-item label="编号前缀">
<el-input v-model="prefix"></el-input>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="getWprNum">确定</el-button>
<el-button @click="showBatch=false">取消</el-button>
</template>
</el-dialog>
<el-dialog title="设置发货流水位数" v-model="showDigit">
<h4>没有找到该前缀的发货编号请完善发货流水号位数填整数</h4>
<el-form :model="wprParams" label-width="80px">
<el-form-item label="流水位数">
<el-input-number controls-position="right" precision="0" v-model="digitNum"></el-input-number>
</el-form-item>
</el-form>
<template #footer>
<el-button @click="digitSure">确定</el-button>
</template>
</el-dialog>
</template>
<script>
import { wmState } from "@/utils/enum.js";
export default {
name: "inm_record",
props: {
wm: { type: String, default: "" },
mgroupId: { type: String, default: "" },
process: { type: String, default: "" },
ofromName: { type: String, default: "" },
ofromBatch: { type: String, default: "" },
mgroupName: {type: String,default: "",},
},
emits: ["success", "closed"],
data() {
return {
wmState,
visible: false,
showBatch:false,
showDigit:false,
showQrCode:false,
params:{
page:0,
wm:'',
},
mode:'',
prefix:'',
search:"",
wmId:'',
wmtype:'',
scQr_code:'',
wprList:[],
digitNum:3,
wprTableHeight: 500,
apiObjPrint:this.$API.cm.labelmat.fromWm,
};
},
mounted() {},
methods: {
open(mode) {
this.mode = mode;
this.params.wm = this.wm;
this.visible = true;
this.getRowWpr();
return this;
},
getRowWpr(){
let that = this;
that.$API.wpm.wpr.list.req(that.params).then((res) => {
that.wprList = res;
})
},
QRCode(row){
this.showQrCode = true;
this.$nextTick(() => {
this.scQr_code=row.number;
});
},
wprNumberChange(){
let that = this;
that.showBatch = true;
},
wprNumberClear(){
let that = this;
let items = [];
for(let i=0;i< that.wprList.length;i++){
let obj = {};
obj.id = that.wprList[i].id;
obj.number_out = null;
items.push(obj)
}
let params = {};
params.items = items;
that.$API.wpm.wpr.assginNumberOut.req(params).then((res) => {
that.getRowWpr();
})
},
getWprNum(){
let that = this;
let params0 = {};
params0.prefix = that.prefix;
that.$API.wpm.wpr.numberOutLast.req(params0).then((res) => {
let number_out_last = '';
if(res.number_out_last==null){//
number_out_last = null;
that.showBatch=false;
that.showDigit = true;
}else{//
let items = [];
number_out_last = res.number_out_last;
let str = number_out_last.replace(/[^a-zA-Z]/g, ''); //
let num = number_out_last.replace(/[^0-9]/g, ''); //
let length = num.length;//
for(let i=0;i< that.wprList.length;i++){
let numb = Number(num)+i+1;
let numbs = numb+'';
let len = numbs.length;
let zoreStr = '';
for(let j=0;j<length-len;j++){
zoreStr+='0';
}
let obj = {};
obj.id = that.wprList[i].id;
obj.number_out = str + zoreStr + numb;
items.push(obj)
}
let params = {};
params.items = items;
that.$API.wpm.wpr.assginNumberOut.req(params).then((res) => {
that.showBatch=false;
that.getRowWpr();
})
}
})
},
//1
digitSure(){
let that = this;
//
let items = [];
for(let i=0;i< that.wprList.length;i++){
let numb = i+1,zoreStr = '';
numb+= '';
let len = numb.length;
for(let j=0;j<that.digitNum-len;j++){
zoreStr+='0';
}
let obj = {};
obj.id = that.wprList[i].id;
obj.number_out = that.prefix + zoreStr + numb;
items.push(obj)
}
let params = {};
params.items = items;
that.$API.wpm.wpr.assginNumberOut.req(params).then((res) => {
that.showDigit = false;
that.getRowWpr();
})
},
handleWprQuery(){
let that = this;
that.wprList.forEach((item,index)=>{
if(item.number.indexOf(that.search) > -1){
let rows = document.querySelectorAll("#wprTable .el-table__row");
console.log('rows',rows)
let row = rows[index];
let rowTop = row.offsetTop;
this.$refs.wprTable.scrollTo({ top: rowTop });
}
})
},
//
printMaterial(row){
let that = this;
if(that.printer_name!==''&&that.printer_name!==null&&that.printer_name!==undefined){
let params = {};
let name = row.material_name.split('|')[0];
if(that.route_code=='paiban'||that.route_code=='zhuangmo'||that.route_code=='zlybcl'||that.route_code=='tuomoceliang'||
that.route_code=='reyatuihuo'||that.route_code=='banduangunyuan'||that.route_code=='banduangunyuanhoudama'||that.route_code=='banduangunyuantuihuo'
){
let oinfo = [];
for(let key in row.oinfo){
oinfo.push(row.oinfo[key])
}
let data = {sigao:'',duibian:'',moban:'',istest:'否',number:row.number,name:name,ofrom_name:that.ofrom_name,ofrom_batch:that.ofrom_batch};
if(that.route_code=='zhuangmo'||that.route_code=='zlybcl'||that.route_code=='tuomoceliang'||that.route_code=='reyatuihuo'||that.route_code=='banduangunyuan'){
params.label_template_name = '脱膜测量单件标签模板';
}else{
params.label_template_name = '排扳单件打印模板';
}
if(oinfo.length>0){
oinfo.forEach((item)=>{
if(item.name=="丝高"){
data.sigao = item.val;
}else if(item.name=="对边"){
data.duibian = item.val;
}else if(item.name=="模具号"){
data.moban = item.val;
}else if(item.name=="实验板段"){
data.istest = item.val?'是':'否';
}
})
}
params.data = data;
}else{
params.label_template_name = '单件打印模板';
params.data = {number:row.number,name:name};
}
that.$API.cm.labeltemplate.commands.req(params).then((res) => {
let obj = {};
obj.printer_commands = res.commands;
obj.printer_name = that.printer_name;
that.$API.wpm.prints.req(obj).then((response) => {
that.$message.success("打印成功");
});
});
}else{
that.$message.warning("请先设置打印机");
}
},
//
handleSaveSuccess() {
this.$refs.tables.refresh();
},
},
};
</script>