factory_web/src/views/wpm_bx/wprList.vue

338 lines
10 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>
<el-table ref="wprTable" id="wprTable" :data="wprList" :height="wprTableHeight" border highlight-current-row>
<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>
</el-table>
</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,
printer_name:localStorage.getItem("printer_name"),
apiObjPrint:this.$API.cm.labelmat.fromWm,
};
},
mounted() {
let that = this;
let paths = that.$route.path;
let arr = paths.split("/");
that.route_code = arr[2];
},
methods: {
open(mode) {
let that = this;
that.wprList = [];
this.mode = mode;
this.params.wm = this.wm;
this.visible = true;
this.getRowWpr();
that.$nextTick(() => {
let heights = document.getElementsByClassName("el-drawer__body")[0].clientHeight;
that.wprTableHeight = heights-20;
})
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){
that.$refs.wprTable.setCurrentRow(item);
let rows = document.querySelectorAll("#wprTable .el-table__row");
let row = rows[index];
let rowTop = row.offsetTop;
that.$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=='paiyicibang'||that.route_code=='kunbang'){
console.log('that.route_code',that.route_code);
console.log('that.ofromName',that.ofromName);
that.$API.mtm.route.list.req({material_out:row.material,page:0}).then((res) => {
let data = res[0].params_json;
data.number = row.number;
data.name=name;
data.ofrom_name=that.ofromName;
params.data = data;
if(that.route_code=='paiyicibang'){
params.label_template_name = '排一次棒单件打印模板';
}else{
params.label_template_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{
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:'',hengya:'',istest:'否',number:row.number,name:name,ofrom_name:that.ofromName,ofrom_batch:that.ofromBatch};
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.hengya = 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>