feat:添加生产工单打印功能;二维码相关功能回显问题

This commit is contained in:
yanshikui 2024-11-18 16:42:53 +08:00
parent 124bbc4a3e
commit 13408c8008
10 changed files with 497 additions and 305 deletions

View File

@ -9,3 +9,6 @@ VUE_APP_BASE_API = '/dev-api'
# 路由懒加载 # 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true VUE_CLI_BABEL_TRANSPILE_MODULES = true
# 报表系统/开发环境
VUE_APP_REPORT = 'http://localhost:8080'

View File

@ -6,3 +6,6 @@ ENV = 'production'
# 若依管理系统/生产环境 # 若依管理系统/生产环境
VUE_APP_BASE_API = '/prod-api' VUE_APP_BASE_API = '/prod-api'
# 报表系统/开发环境
VUE_APP_REPORT = 'http://localhost:8080'

View File

@ -8,3 +8,6 @@ ENV = 'staging'
# 若依管理系统/测试环境 # 若依管理系统/测试环境
VUE_APP_BASE_API = '/stage-api' VUE_APP_BASE_API = '/stage-api'
# 报表系统/开发环境
VUE_APP_REPORT = 'http://localhost:8080'

View File

@ -1,85 +1,91 @@
<template> <template>
<div class="flex-container"> <div class="flex-container">
<el-image class="barcodeClass" fit="scale-down" :src="form.barcodeUrl"> <el-image ref="image" class="barcodeClass" fit="scale-down" :src="barcodeUrl">
<div slot="error" class="image-slot"> <div slot="error" class="image-slot">
<i class="el-icon-picture-outline"></i> <i class="el-icon-picture-outline"></i>
</div> </div>
</el-image> </el-image>
</div> </div>
</template> </template>
<script> <script>
import { getBarcodeUrl } from "@/api/mes/wm/barcode"; import { getBarcodeUrl } from "@/api/mes/wm/barcode";
export default { export default {
name: 'BarcodeImg', name: 'BarcodeImg',
props: { props: {
bussinessId: { bussinessId: {
type: Number, type: Number,
default: -1 default: -1
},
bussinessCode: {
type: String,
default: null
},
barcodeFormart: {
type: String,
default: 'QR_CODE'
},
barcodeType: {
type: String,
default : null
},
}, },
data(){ bussinessCode: {
return { type: String,
form: { default: null
barcodeUrl: null
},
}
}, },
methods: { barcodeFormart: {
getBarcode(){ type: String,
debugger; default: 'QR_CODE'
this.form.barcodeUrl = null;
if(this.bussinessCode == null){
return ;
}
//
let barcodeParams = {
bussinessId: this.bussinessId,
bussinessCode: this.bussinessCode,
barcodeFormart: this.barcodeFormart,
barcodeType: this.barcodeType
};
getBarcodeUrl(barcodeParams).then( response =>{
if(response.data != null){
//this.$set(this.form,'barcodeUrl',response.data.barcodeUrl);//DOM
this.form.barcodeUrl = response.data.barcodeUrl;
}
});
},
}, },
watch: { barcodeType: {
'bussinessCode': 'getBarcode' type: String,
default : null
},
},
data(){
return {
form: {
barcodeUrl: null
},
barcodeUrl:''
} }
},
// mounted() {
// this.getBarcode()
// },
methods: {
getBarcode(){
console.log("---------------------",this.barcodeType)
this.form.barcodeUrl = null;
if(this.bussinessCode == null){
return ;
}
//
let barcodeParams = {
bussinessId: this.bussinessId,
bussinessCode: this.bussinessCode,
barcodeFormart: this.barcodeFormart,
barcodeType: this.barcodeType
};
getBarcodeUrl(barcodeParams).then( response =>{
console.log(response,'59')
if(response.data != null){
//this.$set(this.form,'barcodeUrl',response.data.barcodeUrl);//DOM
// this.form.barcodeUrl = response.data.barcodeUrl;
this.barcodeUrl = response.data.barcodeUrl;
console.log(this.barcodeUrl,'63')
}
});
},
},
watch: {
'bussinessCode': 'getBarcode'
}
} }
</script> </script>
<style scoped> <style scoped>
.barcodeClass { .barcodeClass {
width: 200px; width: 200px;
height: 200px; height: 200px;
border: 1px dashed; border: 1px dashed;
position: relative; position: relative;
display: inline-block; display: inline-block;
} }
.flex-container{ .flex-container{
display: flex; display: flex;
justify-content: center; /* 水平居中 */ justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */ align-items: center; /* 垂直居中 */
} }
</style> </style>

View File

@ -173,61 +173,80 @@
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row> <el-row>
<el-col :span="8"> <el-col :span="14">
<el-form-item label="设备编码" prop="itemCode"> <el-row>
<el-input v-model="form.machineryCode" readonly="readonly" maxlength="64" v-if="optType == 'view'"/> <el-col :span="16">
<el-input v-model="form.machineryCode" placeholder="请输入设备编码" maxlength="64" v-else/> <el-form-item label="设备编码" prop="itemCode">
</el-form-item> <el-input v-model="form.machineryCode" readonly="readonly" maxlength="64" v-if="['view','edit'].indexOf(optType)> -1"/>
<el-input v-model="form.machineryCode" placeholder="请输入设备编码" maxlength="64" v-else/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label-width="80">
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="['view','edit'].indexOf(optType)< 0">
</el-switch>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="设备名称" prop="itemName">
<el-input v-model="form.machineryName" maxlength="255" readonly="readonly" v-if="optType=='view'" />
<el-input v-model="form.machineryName" placeholder="请输入设备名称" maxlength="255" v-else/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="品牌" prop="machineryBrand">
<el-input v-model="form.machineryBrand" maxlength="255" readonly="readonly" v-if="optType=='view'" />
<el-input v-model="form.machineryBrand" placeholder="请输入品牌" maxlength="255" v-else/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="设备分类" prop="machineryTypeId">
<treeselect v-model="form.machineryTypeId" :options="machineryTypeOptions" :normalizer="normalizer" disabled v-if="optType=='view'" />
<treeselect v-model="form.machineryTypeId" :options="machineryTypeOptions" :normalizer="normalizer" placeholder="请选择所属分类" v-else :disable-branch-nodes='true' />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="所属车间" prop="workshopId">
<el-select v-model="form.workshopId" placeholder="请选择车间">
<el-option
v-for="item in workshopOptions"
:key="item.workshopId"
:label="item.workshopName"
:value="item.workshopId"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-col> </el-col>
<el-col :span="4"> <el-col :span="10">
<el-form-item label-width="80"> <div class="flex-container">
<el-switch v-model="autoGenFlag" <el-image class="barcodeClass" fit="scale-down" :src="form.barcodeUrl?form.barcodeUrl.toString():''">
active-color="#13ce66" <div slot="error" class="image-slot">
active-text="自动生成" <i class="el-icon-picture-outline"></i>
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'"> </div>
</el-switch> </el-image>
</el-form-item> </div>
</el-col>
<el-col :span="12">
<el-form-item label="设备名称" prop="itemName">
<el-input v-model="form.machineryName" maxlength="255" readonly="readonly" v-if="optType=='view'" />
<el-input v-model="form.machineryName" placeholder="请输入设备名称" maxlength="255" v-else/>
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="24">
<el-form-item label="品牌" prop="machineryBrand">
<el-input v-model="form.machineryBrand" maxlength="255" readonly="readonly" v-if="optType=='view'" />
<el-input v-model="form.machineryBrand" placeholder="请输入品牌" maxlength="255" v-else/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="设备分类" prop="machineryTypeId">
<treeselect v-model="form.machineryTypeId" :options="machineryTypeOptions" :normalizer="normalizer" disabled v-if="optType=='view'" />
<treeselect v-model="form.machineryTypeId" :options="machineryTypeOptions" :normalizer="normalizer" placeholder="请选择所属分类" v-else :disable-branch-nodes='true' />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="规格型号" prop="machinerySpec"> <el-form-item label="规格型号" prop="machinerySpec">
<el-input v-model="form.machinerySpec" type="textarea" maxlength="255" readonly="readonly" v-if="optType=='view'" /> <el-input v-model="form.machinerySpec" type="textarea" maxlength="255" readonly="readonly" v-if="optType=='view'" />
<el-input v-model="form.machinerySpec" type="textarea" placeholder="请输入规格型号" maxlength="255" v-else/> <el-input v-model="form.machinerySpec" type="textarea" placeholder="请输入规格型号" maxlength="255" v-else/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="所属车间" prop="workshopId">
<el-select v-model="form.workshopId" placeholder="请选择车间">
<el-option
v-for="item in workshopOptions"
:key="item.workshopId"
:label="item.workshopName"
:value="item.workshopId"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
@ -285,6 +304,7 @@ import {genCode} from "@/api/system/autocode/rule"
import { getToken } from "@/utils/auth"; import { getToken } from "@/utils/auth";
import Treeselect from "@riophae/vue-treeselect"; import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import {getBarcodeUrl} from "@/api/mes/wm/barcode";
export default { export default {
name: "Machinery", name: "Machinery",
@ -342,6 +362,13 @@ export default {
// //
url: process.env.VUE_APP_BASE_API + "/mes/dv/machinery/importData" url: process.env.VUE_APP_BASE_API + "/mes/dv/machinery/importData"
}, },
//
barcodeParams: {
bussinessId: null,
bussinessCode: null,
barcodeFormart: 'QR_CODE', //
barcodeType: 'MACHINERY' //
},
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -489,6 +516,7 @@ export default {
this.open = true; this.open = true;
this.title = "查看设备信息"; this.title = "查看设备信息";
this.optType = "view"; this.optType = "view";
this.getBarcodeUrl();
}); });
}, },
/** 新增按钮操作 */ /** 新增按钮操作 */
@ -515,6 +543,17 @@ export default {
this.open = true; this.open = true;
this.title = "修改设备"; this.title = "修改设备";
this.optType = "edit"; this.optType = "edit";
this.getBarcodeUrl();
});
},
//
getBarcodeUrl(){
this.barcodeParams.bussinessId = this.form.machineryId;
this.barcodeParams.bussinessCode = this.form.machineryCode;
getBarcodeUrl(this.barcodeParams).then( response =>{
if(response.data != null){
this.$set(this.form,'barcodeUrl',response.data.barcodeUrl);//DOM
}
}); });
}, },
/** 提交按钮 */ /** 提交按钮 */
@ -593,3 +632,17 @@ export default {
} }
}; };
</script> </script>
<style scoped>
.flex-container{
display: flex;
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
}
.barcodeClass {
width: 200px;
height: 200px;
border: 1px dashed;
position: relative;
display: inline-block;
}
</style>

View File

@ -111,14 +111,14 @@
<el-table v-loading="loading" :data="itemList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="itemList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="50" align="center" /> <el-table-column type="selection" width="50" align="center" />
<el-table-column label="物料编码" width = "120" align="center" key="itemCode" prop="itemCode" v-if="columns[0].visible" > <el-table-column label="物料编码" width = "120" align="center" key="itemCode" prop="itemCode" v-if="columns[0].visible" >
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@click="handleView(scope.row)" @click="handleView(scope.row)"
v-hasPermi="['mes:md:mditem:query']" v-hasPermi="['mes:md:mditem:query']"
>{{scope.row.itemCode}}</el-button> >{{scope.row.itemCode}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="物料名称" min-width="120" align="left" key="itemName" prop="itemName" v-if="columns[1].visible" :show-overflow-tooltip="true" /> <el-table-column label="物料名称" min-width="120" align="left" key="itemName" prop="itemName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
<el-table-column label="规格型号" align="left" key="specification" prop="specification" v-if="columns[2].visible" :show-overflow-tooltip="true" /> <el-table-column label="规格型号" align="left" key="specification" prop="specification" v-if="columns[2].visible" :show-overflow-tooltip="true" />
@ -133,7 +133,7 @@
<el-table-column label="所属分类" align="center" key="itemTypeName" prop="itemTypeName" v-if="columns[5].visible" width="120" /> <el-table-column label="所属分类" align="center" key="itemTypeName" prop="itemTypeName" v-if="columns[5].visible" width="120" />
<el-table-column label="是否启用" align="center" key="enableFlag" v-if="columns[6].visible"> <el-table-column label="是否启用" align="center" key="enableFlag" v-if="columns[6].visible">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.enableFlag"/> <dict-tag :options="dict.type.sys_yes_no" :value="scope.row.enableFlag"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="设置安全库存" align="center" key="safeStockFlag" v-if="columns[7].visible"> <el-table-column label="设置安全库存" align="center" key="safeStockFlag" v-if="columns[7].visible">
@ -196,9 +196,9 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label-width="80"> <el-form-item label-width="80">
<el-switch v-model="autoGenFlag" <el-switch v-model="autoGenFlag"
active-color="#13ce66" active-color="#13ce66"
active-text="自动生成" active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'"> @change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
</el-switch> </el-switch>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -224,22 +224,22 @@
<el-form-item label="单位" prop="unitOfMeasure"> <el-form-item label="单位" prop="unitOfMeasure">
<el-select v-model="form.unitOfMeasure" disabled v-if="optType=='view'"> <el-select v-model="form.unitOfMeasure" disabled v-if="optType=='view'">
<el-option <el-option
v-for="item in measureOptions" v-for="item in measureOptions"
:key="item.measureCode" :key="item.measureCode"
:label="item.measureName" :label="item.measureName"
:value="item.measureCode" :value="item.measureCode"
:disabled="item.enableFlag == 'N'" :disabled="item.enableFlag == 'N'"
></el-option> ></el-option>
</el-select> </el-select>
<el-select v-model="form.unitOfMeasure" placeholder="请选择单位" v-else> <el-select v-model="form.unitOfMeasure" placeholder="请选择单位" v-else>
<el-option <el-option
v-for="item in measureOptions" v-for="item in measureOptions"
:key="item.measureCode" :key="item.measureCode"
:label="item.measureName" :label="item.measureName"
:value="item.measureCode" :value="item.measureCode"
:disabled="item.enableFlag == 'N'" :disabled="item.enableFlag == 'N'"
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -271,7 +271,7 @@
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="是否启用"> <el-form-item label="是否启用">
<el-radio-group v-model="form.enableFlag" disabled v-if="optType=='view'"> <el-radio-group v-model="form.enableFlag" disabled v-if="optType=='view'">
<el-radio <el-radio
v-for="dict in dict.type.sys_yes_no" v-for="dict in dict.type.sys_yes_no"
:key="dict.value" :key="dict.value"
@ -698,7 +698,7 @@ export default {
submitFileForm() { submitFileForm() {
this.$refs.upload.submit(); this.$refs.upload.submit();
}, },
// //
getBarcodeUrl(){ getBarcodeUrl(){
this.barcodeParams.bussinessId = this.form.itemId; this.barcodeParams.bussinessId = this.form.itemId;
this.barcodeParams.bussinessCode = this.form.itemCode; this.barcodeParams.bussinessCode = this.form.itemCode;
@ -723,17 +723,17 @@ export default {
}; };
</script> </script>
<style scoped> <style scoped>
.barcodeClass { .barcodeClass {
width: 200px; width: 200px;
height: 200px; height: 200px;
border: 1px dashed; border: 1px dashed;
position: relative; position: relative;
display: inline-block; display: inline-block;
} }
.flex-container{ .flex-container{
display: flex; display: flex;
justify-content: center; /* 水平居中 */ justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */ align-items: center; /* 垂直居中 */
} }
</style> </style>

View File

@ -111,56 +111,74 @@
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="14">
<el-form-item label="车间编码" prop="workshopCode"> <el-row>
<el-input v-model="form.workshopCode" placeholder="请输入车间编码" /> <el-col :span="16">
</el-form-item> <el-form-item label="车间编码" prop="workshopCode">
<el-input v-model="form.workshopCode" readonly="readonly" maxlength="64" v-if="['view','edit'].indexOf(optType)> -1"/>
<el-input v-model="form.workshopCode" placeholder="请输入车间编码" maxlength="64" v-else/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label-width="80">
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="['view','edit'].indexOf(optType)< 0">
</el-switch>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="车间名称" prop="workshopName">
<el-input v-model="form.workshopName" placeholder="请输入车间名称" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="面积" prop="area">
<el-input-number :min="0" :percision="2" :step="1" v-model="form.area" placeholder="请输入面积" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="负责人" prop="charge">
<el-input v-model="form.charge" placeholder="请输入负责人" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="是否启用" prop="enableFlag">
<el-radio-group v-model="form.enableFlag" disabled v-if="optType=='view'">
<el-radio
v-for="dict in dict.type.sys_yes_no"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
<el-radio-group v-model="form.enableFlag" v-else>
<el-radio
v-for="dict in dict.type.sys_yes_no"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="10">
<el-form-item label-width="80"> <div class="flex-container">
<el-switch v-model="autoGenFlag" <el-image class="barcodeClass" fit="scale-down" :src="form.barcodeUrl?form.barcodeUrl.toString():''">
active-color="#13ce66" <div slot="error" class="image-slot">
active-text="自动生成" <i class="el-icon-picture-outline"></i>
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'"> </div>
</el-switch> </el-image>
</el-form-item> </div>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="车间名称" prop="workshopName">
<el-input v-model="form.workshopName" placeholder="请输入车间名称" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="面积" prop="area">
<el-input-number :min="0" :percision="2" :step="1" v-model="form.area" placeholder="请输入面积" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item label="负责人" prop="charge">
<el-input v-model="form.charge" placeholder="请输入负责人" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否启用" prop="enableFlag">
<el-radio-group v-model="form.enableFlag" disabled v-if="optType=='view'">
<el-radio
v-for="dict in dict.type.sys_yes_no"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
<el-radio-group v-model="form.enableFlag" v-else>
<el-radio
v-for="dict in dict.type.sys_yes_no"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
@ -183,6 +201,7 @@
<script> <script>
import { listWorkshop, getWorkshop, delWorkshop, addWorkshop, updateWorkshop } from "@/api/mes/md/workshop"; import { listWorkshop, getWorkshop, delWorkshop, addWorkshop, updateWorkshop } from "@/api/mes/md/workshop";
import {genCode} from "@/api/system/autocode/rule" import {genCode} from "@/api/system/autocode/rule"
import {getBarcodeUrl} from "@/api/mes/wm/barcode";
export default { export default {
name: "Workshop", name: "Workshop",
dicts: ['sys_yes_no'], dicts: ['sys_yes_no'],
@ -208,6 +227,13 @@ export default {
title: "", title: "",
// //
open: false, open: false,
//
barcodeParams: {
bussinessId: null,
bussinessCode: null,
barcodeFormart: 'QR_CODE', //
barcodeType: 'WORKSHOP' //
},
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -306,6 +332,7 @@ export default {
this.open = true; this.open = true;
this.title = "查看车间"; this.title = "查看车间";
this.optType = "view"; this.optType = "view";
this.getBarcodeUrl();
}); });
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
@ -317,6 +344,7 @@ export default {
this.open = true; this.open = true;
this.title = "修改车间"; this.title = "修改车间";
this.optType = "edit"; this.optType = "edit";
this.getBarcodeUrl();
}); });
}, },
/** 提交按钮 */ /** 提交按钮 */
@ -355,6 +383,16 @@ export default {
...this.queryParams ...this.queryParams
}, `workshop_${new Date().getTime()}.xlsx`) }, `workshop_${new Date().getTime()}.xlsx`)
}, },
//
getBarcodeUrl(){
this.barcodeParams.bussinessId = this.form.workshopId;
this.barcodeParams.bussinessCode = this.form.workshopCode;
getBarcodeUrl(this.barcodeParams).then( response =>{
if(response.data != null){
this.$set(this.form,'barcodeUrl',response.data.barcodeUrl);//DOM
}
});
},
// //
handleAutoGenChange(autoGenFlag){ handleAutoGenChange(autoGenFlag){
debugger; debugger;
@ -370,3 +408,17 @@ export default {
} }
}; };
</script> </script>
<style scoped>
.flex-container{
display: flex;
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
}
.barcodeClass {
width: 200px;
height: 200px;
border: 1px dashed;
position: relative;
display: inline-block;
}
</style>

View File

@ -145,7 +145,7 @@ export default {
optType: undefined, optType: undefined,
workorder: undefined, workorder: undefined,
}, },
created() { mounted() {
this.getList(); this.getList();
}, },
methods: { methods: {
@ -157,6 +157,7 @@ export default {
this.workorderbomList = response.rows; this.workorderbomList = response.rows;
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;
console.log(this.form,'160')
}); });
}, },
// //

View File

@ -69,10 +69,10 @@
</el-form-item> </el-form-item>
<el-form-item label="需求日期" prop="requestDate"> <el-form-item label="需求日期" prop="requestDate">
<el-date-picker clearable <el-date-picker clearable
v-model="queryParams.requestDate" v-model="queryParams.requestDate"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="请选择需求日期"> placeholder="请选择需求日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -81,7 +81,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="primary" type="primary"
@ -176,7 +176,7 @@
<dict-tag :options="dict.type.mes_order_status" :value="scope.row.status"/> <dict-tag :options="dict.type.mes_order_status" :value="scope.row.status"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" width="150px" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" width="250px" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="mini" size="mini"
@ -210,6 +210,13 @@
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
v-hasPermi="['mes:pro:workorder:remove']" v-hasPermi="['mes:pro:workorder:remove']"
>删除</el-button> >删除</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-printer"
v-if="scope.row.parentId =='0'"
@click="handlePreview(scope.row)"
>预览</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -235,9 +242,9 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label-width="80"> <el-form-item label-width="80">
<el-switch v-model="autoGenFlag" <el-switch v-model="autoGenFlag"
active-color="#13ce66" active-color="#13ce66"
active-text="自动生成" active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view' && form.status =='PREPARE'"> @change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view' && form.status =='PREPARE'">
</el-switch> </el-switch>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -290,7 +297,7 @@
</el-row> </el-row>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<BarcodeImg :bussinessId="form.workorderId" :bussinessCode="form.workorderCode" barcodeType="WORKORDER"></BarcodeImg> <BarcodeImg ref="barcodeImg" :bussinessId="form.workorderId" :bussinessCode="form.workorderCode" barcodeType="WORKORDER"></BarcodeImg>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
@ -329,10 +336,10 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label="需求日期" prop="requestDate"> <el-form-item label="需求日期" prop="requestDate">
<el-date-picker clearable <el-date-picker clearable
v-model="form.requestDate" v-model="form.requestDate"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="请选择需求日期"> placeholder="请选择需求日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -535,7 +542,7 @@ export default {
children: node.children children: node.children
}; };
}, },
/** 查询生产工单下拉树结构 */ /** 查询生产工单下拉树结构 */
getTreeselect() { getTreeselect() {
listWorkorder().then(response => { listWorkorder().then(response => {
this.workorderOptions = []; this.workorderOptions = [];
@ -635,8 +642,13 @@ export default {
this.getTreeselect(); this.getTreeselect();
const workorderId = row.workorderId || this.ids; const workorderId = row.workorderId || this.ids;
getWorkorder(workorderId).then(response => { getWorkorder(workorderId).then(response => {
this.form = response.data; this.form = response.data
this.open = true; this.open = true;
this.$nextTick(() => {
console.log("2232",this.$refs.barcodeImg)
this.$refs.barcodeImg.getBarcode();
})
this.title = "查看工单信息"; this.title = "查看工单信息";
this.optType = "view"; this.optType = "view";
}); });
@ -650,6 +662,10 @@ export default {
} }
getWorkorder(row.workorderId).then(response => { getWorkorder(row.workorderId).then(response => {
this.form = response.data; this.form = response.data;
console.log("3232",this.form)
this.form.workorderCode = response.data.workorderCode
this.form.workorderId = response.data.workorderId
this.open = true; this.open = true;
this.title = "修改生产工单"; this.title = "修改生产工单";
this.optType="edit"; this.optType="edit";
@ -677,6 +693,10 @@ export default {
} }
}); });
}, },
handlePreview(row){
//todo:
window.open(process.env.VUE_APP_REPORT+"/ureport/preview?_u=mysql:生产工单打印模版.ureport.xml&id="+row.workorderId+"&code="+row.workorderCode)
},
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
this.$modal.confirm('是否确认删除生产工单编号为"' + row.workorderId + '"的数据项?').then(function() { this.$modal.confirm('是否确认删除生产工单编号为"' + row.workorderId + '"的数据项?').then(function() {
@ -716,21 +736,21 @@ export default {
}, },
// //
onItemSelected(obj){ onItemSelected(obj){
if(obj != undefined && obj != null){ if(obj != undefined && obj != null){
this.form.productId = obj.itemId; this.form.productId = obj.itemId;
this.form.productCode = obj.itemCode; this.form.productCode = obj.itemCode;
this.form.productName = obj.itemName; this.form.productName = obj.itemName;
this.form.productSpc = obj.specification; this.form.productSpc = obj.specification;
this.form.unitOfMeasure = obj.unitName; this.form.unitOfMeasure = obj.unitName;
} }
}, },
// //
onClientSelected(obj){ onClientSelected(obj){
if(obj != undefined && obj != null){ if(obj != undefined && obj != null){
this.form.clientId = obj.clientId; this.form.clientId = obj.clientId;
this.form.clientCode = obj.clientCode; this.form.clientCode = obj.clientCode;
this.form.clientName = obj.clientName; this.form.clientName = obj.clientName;
} }
}, },
// //
handleSelectVendor(){ handleSelectVendor(){
@ -738,12 +758,12 @@ export default {
}, },
// //
onVendorSelected(obj){ onVendorSelected(obj){
debugger; debugger;
if(obj != undefined && obj != null){ if(obj != undefined && obj != null){
this.form.vendorId = obj.vendorId; this.form.vendorId = obj.vendorId;
this.form.vendorCode = obj.vendorCode; this.form.vendorCode = obj.vendorCode;
this.form.vendorName = obj.vendorName; this.form.vendorName = obj.vendorName;
} }
}, },
// //
handleAutoGenChange(autoGenFlag){ handleAutoGenChange(autoGenFlag){

View File

@ -157,7 +157,7 @@
<dict-tag :options="dict.type.mes_tool_status" :value="scope.row.status"/> <dict-tag :options="dict.type.mes_tool_status" :value="scope.row.status"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column width="120px" label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
size="mini" size="mini"
@ -189,52 +189,70 @@
<el-dialog :title="title" :visible.sync="open" width="960px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="960px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="14">
<el-form-item label="工装夹具类型" prop="toolTypeId"> <el-row>
<el-select v-model="form.toolTypeId" @change="onToolTypeChanged" placeholder="请选择类型"> <el-col :span="16">
<el-option <el-form-item label="工装夹具编号" prop="toolCode">
v-for="dict in toolTypeOptions" <el-input v-model="form.toolCode" readonly="readonly" maxlength="64" v-if="['view','edit'].indexOf(optType)> -1"/>
:key="dict.toolTypeId" <el-input v-model="form.toolCode" placeholder="请输入工装夹具编号" maxlength="64" v-else/>
:label="dict.toolTypeName" </el-form-item>
:value="dict.toolTypeId" </el-col>
></el-option> <el-col :span="8">
</el-select> <el-form-item label-width="80">
</el-form-item> <el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="['view','edit'].indexOf(optType)< 0">
</el-switch>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="工装夹具名称" prop="toolName">
<el-input v-model="form.toolName" placeholder="请输入工装夹具名称" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="工装夹具类型" prop="toolTypeId">
<el-select style="width: 100%" v-model="form.toolTypeId" @change="onToolTypeChanged" placeholder="请选择类型">
<el-option
v-for="dict in toolTypeOptions"
:key="dict.toolTypeId"
:label="dict.toolTypeName"
:value="dict.toolTypeId"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="型号" prop="spec">
<el-input v-model="form.spec" placeholder="请输入型号" />
</el-form-item>
</el-col>
</el-row>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="10">
<el-form-item label="工装夹具名称" prop="toolName"> <div class="flex-container">
<el-input v-model="form.toolName" placeholder="请输入工装夹具名称" /> <el-image class="barcodeClass" fit="scale-down" :src="form.barcodeUrl?form.barcodeUrl.toString():''">
</el-form-item> <div slot="error" class="image-slot">
<i class="el-icon-picture-outline"></i>
</div>
</el-image>
</div>
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="14">
<el-form-item label="品牌" prop="brand"> <el-form-item label="品牌" prop="brand">
<el-input v-model="form.brand" placeholder="请输入品牌" /> <el-input v-model="form.brand" placeholder="请输入品牌" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="10">
<el-form-item label="型号" prop="spec">
<el-input v-model="form.spec" placeholder="请输入型号" />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="工装夹具编号" prop="toolCode">
<el-input v-model="form.toolCode" placeholder="请输入工装夹具编号" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="80">
<el-switch v-model="autoGenFlag"
active-color="#13ce66"
active-text="自动生成"
@change="handleAutoGenChange(autoGenFlag)" v-if="optType != 'view'">
</el-switch>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="数量" prop="quantity"> <el-form-item label="数量" prop="quantity">
<el-input v-if="form.codeFlag=='Y'" readonly v-model="form.quantity" /> <el-input v-if="form.codeFlag=='Y'" readonly v-model="form.quantity" />
<el-input-number :min="0" @blur="onQuantityChanged" v-else v-model="form.quantity" placeholder="请输入数量" /> <el-input-number :min="0" @blur="onQuantityChanged" v-else v-model="form.quantity" placeholder="请输入数量" />
@ -242,12 +260,12 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12"> <el-col :span="14">
<el-form-item label="可用数量" prop="quantityAvail"> <el-form-item label="可用数量" prop="quantityAvail">
<el-input v-model="form.quantityAvail" readonly placeholder="请输入可用数量" /> <el-input v-model="form.quantityAvail" readonly placeholder="请输入可用数量" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="10">
<el-form-item label="保养维护类型" prop="maintenType"> <el-form-item label="保养维护类型" prop="maintenType">
<el-select v-model="form.maintenType" placeholder="请选择保养维护类型"> <el-select v-model="form.maintenType" placeholder="请选择保养维护类型">
<el-option <el-option
@ -307,6 +325,7 @@
import { listTool, getTool, delTool, addTool, updateTool } from "@/api/mes/tm/tool"; import { listTool, getTool, delTool, addTool, updateTool } from "@/api/mes/tm/tool";
import { listAllTooltype } from "@/api/mes/tm/tooltype" import { listAllTooltype } from "@/api/mes/tm/tooltype"
import {genCode} from "@/api/system/autocode/rule" import {genCode} from "@/api/system/autocode/rule"
import {getBarcodeUrl} from "@/api/mes/wm/barcode";
export default { export default {
name: "Tool", name: "Tool",
dicts: ['mes_tool_status', 'mes_mainten_type'], dicts: ['mes_tool_status', 'mes_mainten_type'],
@ -335,6 +354,12 @@ export default {
title: "", title: "",
// //
open: false, open: false,
barcodeParams: {
bussinessId: null,
bussinessCode: null,
barcodeFormart: 'QR_CODE', //
barcodeType: 'TOOL' //
},
// //
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
@ -470,6 +495,7 @@ export default {
this.open = true; this.open = true;
this.title = "查看工装夹具信息"; this.title = "查看工装夹具信息";
this.optType = "view"; this.optType = "view";
this.getBarcodeUrl();
}); });
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
@ -481,6 +507,17 @@ export default {
this.open = true; this.open = true;
this.title = "修改工装夹具清单"; this.title = "修改工装夹具清单";
this.optType = "edit"; this.optType = "edit";
this.getBarcodeUrl();
});
},
//
getBarcodeUrl(){
this.barcodeParams.bussinessId = this.form.toolId;
this.barcodeParams.bussinessCode = this.form.toolCode;
getBarcodeUrl(this.barcodeParams).then( response =>{
if(response.data != null){
this.$set(this.form,'barcodeUrl',response.data.barcodeUrl);//DOM
}
}); });
}, },
/** 提交按钮 */ /** 提交按钮 */
@ -533,3 +570,17 @@ export default {
} }
}; };
</script> </script>
<style scoped>
.flex-container{
display: flex;
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
}
.barcodeClass {
width: 200px;
height: 200px;
border: 1px dashed;
position: relative;
display: inline-block;
}
</style>