From 4e2bb29096ac63837f8d2c5e25766ee094f45d6c Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期三, 27 十二月 2023 14:35:49 +0800 Subject: [PATCH] modified: src/page/index/top/index.vue modified: src/views/common/part.vue modified: src/views/equipment/equipment/index.vue modified: src/views/equipment/metering/index.vue modified: src/views/plan/manufacturingorder/auto-operationtask.vue modified: src/views/plan/operationtask/operationtask-form.vue modified: src/views/quality/Packaging_ledger/index.vue modified: src/views/quality/packageinspect/index.vue modified: src/views/quality/processconfiguration/index.vue modified: src/views/quality/teststandard/index.vue modified: vue.config.js --- src/views/plan/manufacturingorder/index.vue | 325 ++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 204 insertions(+), 121 deletions(-) diff --git a/src/views/plan/manufacturingorder/index.vue b/src/views/plan/manufacturingorder/index.vue index 0966fcf..af81923 100644 --- a/src/views/plan/manufacturingorder/index.vue +++ b/src/views/plan/manufacturingorder/index.vue @@ -22,8 +22,9 @@ </el-button> <el-dropdown-menu slot="dropdown"> <el-dropdown-item + :key="index" :command="item.command" - v-for="item in taskTypeArr" + v-for="(item,index) in taskTypeArr" :disabled="canCreateTask" >{{ item.label }}</el-dropdown-item > @@ -40,8 +41,9 @@ </el-button> <el-dropdown-menu slot="dropdown"> <el-dropdown-item + :key="i" :command="item.command" - v-for="item in stateTagArr" + v-for="(item,i) in stateTagArr" :disabled="item.disabled" >{{ item.label }}</el-dropdown-item > @@ -99,6 +101,7 @@ </el-button> --> <el-button + v-if="permissions.manufacturingorder_export" @click="exportExcel" type="primary" style="margin-left:10px;" @@ -106,6 +109,7 @@ >瀵煎嚭 </el-button> <el-button + v-if="permissions.manufacturingorder_label_print" @click="labelPrint" type="primary" style="margin-left:10px;" @@ -197,25 +201,64 @@ </el-dialog> </basic-container> <!-- 鏍囩鎵撳嵃 --> - <el-dialog title="鏍囩鍒楄〃" :visible.sync="diaPrintTab" width="500px" top="5vh"> + <el-dialog title="鏍囩鍒楄〃" :visible.sync="diaPrintTab" width="28%" top="5vh"> <div style="width:100%;height: 400px;overflow-y: auto;"> - <div class="dia_body" id="printMOrder"> - <el-card class="box-card" v-for="(item, i) in qrData" :key="i" style="margin-bottom: 15px; font-size: 16px !important;"> - <el-row> - <el-col :span="10" :offset="3">搴忓彿锛�</el-col> - <el-col :span="10" style="font-weight: bold;">{{ i + 1 }}</el-col> - </el-row> - <el-row> - <el-col :span="10" :offset="3">杞﹂棿璁㈠崟鍙凤細</el-col> - <el-col :span="10" style="font-weight: bold;">{{ item.moNo2 }}</el-col> - </el-row> - <el-row> - <el-col :span="10" :offset="3">璁㈠崟浜岀淮鐮侊細</el-col> - <el-col :span="10"> - <vueQr :text="JSON.stringify(item)" :size="80" :margin="2"></vueQr> - </el-col> - </el-row> + <div class="dia_body"> + <el-checkbox + style="margin: 10px 5px;" + :indeterminate="isIndeterminate" + v-model="checkAll" + @change="handleCheckAllChange">鍏ㄩ��</el-checkbox> + <el-checkbox-group @change="changePrintCode()" v-model="checkIndexList"> + <el-card class="box-card" v-for="(item, i) in qrData" :key="i" style="margin-bottom: 15px; font-size: 16px !important;"> + <el-checkbox :label="i" :key="i" style="position: relative;top:-20px;left:5px"><br></el-checkbox> + <!-- <el-row> + <el-col :span="10" :offset="3">鎵规鍙�</el-col> + <el-col :span="10" style="font-weight: bold;">{{ item.code.moNo2 }}</el-col> + </el-row> + <el-row> + <el-col :span="10" :offset="3">璁㈠崟鍙凤細</el-col> + <el-col :span="10" style="font-weight: bold;">{{ item.orderNo }}</el-col> + </el-row> + <el-row> + <el-col :span="10" :offset="3">瀹㈡埛鍚嶇О锛�</el-col> + <el-col :span="10" style="font-weight: bold;">{{ item.cName }}</el-col> + </el-row> + <el-row> + <el-col :span="10" :offset="3">闆朵欢鍚嶇О锛�</el-col> + <el-col :span="10" style="font-weight: bold;">{{ item.pName }}</el-col> + </el-row> + <el-row> + <el-col :span="10" :offset="3">杞﹂棿璁㈠崟浜岀淮鐮侊細</el-col> + <el-col :span="10"> + <vueQr :text="JSON.stringify(item.code)" :size="80" :margin="2"></vueQr> + </el-col> + </el-row> --> + <div> + <el-row style="font-size: 14px;padding-left: 20px;"> + <el-col style="font-weight: bold;">{{ item.pName }}</el-col> + </el-row> + <div style="display: flex;"> + <div> + <el-col :span="8" :offset="4"> + <vueQr :text="JSON.stringify(item.code)" :size="120" :margin="2"></vueQr> + </el-col> + </div> + <div style="margin-left: 50px;width: 100%;"> + <el-row style="margin-top: 10px;"> + <el-col style="font-weight: bold;font-size: 14px;"><span>鎵� 娆� 鍙�: </span>{{ item.code.moNo2 }}</el-col> + </el-row> + <el-row style="margin-top: 9px;font-size: 14px;"> + <el-col style="font-weight: bold;"><span>璁� 鍗� 鍙�: </span>{{ item.orderNo }}</el-col> + </el-row> + <el-row style="margin-top: 9px;font-size: 14px;"> + <el-col style="font-weight: bold;"><span>瀹㈡埛鍚嶇О: </span>{{ item.cName }}</el-col> + </el-row> + </div> + </div> + </div> </el-card> + </el-checkbox-group> </div> </div> <span slot="footer" class="dialog-footer"> @@ -223,6 +266,55 @@ <el-button type="primary" @click="printFun">鎵� 鍗�</el-button> </span> </el-dialog> + <div class="el-dialog__body" style="width:448.8px;overflow-y: auto;position: absolute;top:9999px;margin-top: 0;"> + <div id="printMOrder"> + <el-card class="box-card" v-for="(item, i) in checkDataList" :key="i" style="margin-top-top:0px;margin-bottom:10px;font-size: 16px !important;"> + <!-- <el-row style="font-size:12px;"> + <el-col :span="10" :offset="3">鎵规鍙�</el-col> + <el-col :span="10" style="font-weight: bold;">{{ item.code.moNo2 }}</el-col> + </el-row> + <el-row style="font-size:12px;"> + <el-col :span="10" :offset="3">璁㈠崟鍙凤細</el-col> + <el-col :span="10" style="font-weight: bold;">{{ item.orderNo }}</el-col> + </el-row> + <el-row style="font-size:12px;"> + <el-col :span="10" :offset="3">瀹㈡埛鍚嶇О锛�</el-col> + <el-col :span="10" style="font-weight: bold;">{{ item.cName }}</el-col> + </el-row> + <el-row style="font-size:12px;"> + <el-col :span="10" :offset="3">闆朵欢鍚嶇О锛�</el-col> + <el-col :span="10" style="font-weight: bold;">{{ item.pName }}</el-col> + </el-row> + <el-row style="font-size:12px;"> + <el-col :span="10" :offset="3">璁㈠崟浜岀淮鐮侊細</el-col> + <el-col :span="10"> + <vueQr :text="JSON.stringify(item.code)" :size="80" :margin="2"></vueQr> + </el-col> + </el-row> --> + <el-row style="font-size: 14px;padding-left: 20px;"> + <el-col style="font-weight: bold;">{{ item.pName }}</el-col> + </el-row> + <div style="display: flex;"> + <div> + <el-col :span="8" :offset="4"> + <vueQr :text="JSON.stringify(item.code)" :size="120" :margin="2"></vueQr> + </el-col> + </div> + <div style="margin-left: 50px;width: 100%;"> + <el-row style="margin-top: 10px;"> + <el-col style="font-weight: bold;font-size: 14px;"><span>鎵� 娆� 鍙�: </span>{{ item.code.moNo2 }}</el-col> + </el-row> + <el-row style="margin-top: 9px;font-size: 14px;"> + <el-col style="font-weight: bold;"><span>璁� 鍗� 鍙�: </span>{{ item.orderNo }}</el-col> + </el-row> + <el-row style="margin-top: 9px;font-size: 14px;"> + <el-col style="font-weight: bold;"><span>瀹㈡埛鍚嶇О: </span>{{ item.cName }}</el-col> + </el-row> + </div> + </div> + </el-card> + </div> + </div> </div> </template> @@ -256,9 +348,11 @@ export default { data() { return { - checkList: [], + checkAll: false, + isIndeterminate: true, + checkDataList: [], + checkIndexList: [], qrData: [], - orderDatalist:[], diaPrintTab:false, showCustomerorder: false, paramObj: { customerList: null }, @@ -447,7 +541,7 @@ isSearch: true, searchInfoType: 'text' }, - { + /* { minWidth: '120', prop: 'printRequirement', label: '鍗板瓧瑕佹眰', @@ -464,7 +558,7 @@ isTrue: true, isSearch: true, searchInfoType: 'text' - }, + }, */ { minWidth: '120', prop: 'scrapQty', @@ -539,7 +633,7 @@ searchInfoType: 'text' }, - { + /* { minWidth: '120', prop: 'outerColor', label: '澶栨姢棰滆壊', @@ -557,7 +651,7 @@ isTrue: true, isSearch: true, searchInfoType: 'text' - }, + }, */ { minWidth: '120', @@ -606,7 +700,7 @@ searchInfoType: 'datetimerange', formatter: this.formatDutyDate }, - { + /* { minWidth: '120', prop: 'bomConfirmStatus', label: 'BOM鐘舵��', @@ -668,7 +762,7 @@ } return formatVal } - }, + }, */ { minWidth: '200', prop: 'remark', @@ -678,7 +772,7 @@ isSearch: true, searchInfoType: 'text' }, - { + /* { minWidth: '100', prop: 'oriIfsOrderNo', label: '鍘烮FS璁㈠崟鍙�', @@ -713,8 +807,8 @@ isTrue: true, isSearch: true, searchInfoType: 'text' - }, - { + }, */ + /* { minWidth: '100', prop: 'qtyApply', label: '鐢宠鏁伴噺', @@ -722,7 +816,7 @@ isTrue: true, isSearch: true, searchInfoType: 'text' - }, + }, */ { minWidth: '140', width: '120', @@ -745,7 +839,7 @@ searchInfoType: 'datetimerange', formatter: this.formatDutyDate }, - { + /* { minWidth: '120', prop: 'ifsSync', label: '璁㈠崟鍚屾ERP', @@ -819,7 +913,7 @@ } return formatVal } - }, + }, */ { minWidth: '100', prop: 'factoryName', @@ -948,21 +1042,6 @@ }, created() { this.getManufactureAttrs() - /** - * { - text: '鏂板', - type: 'primary', - fun: this.addOrUpdateHandle - }, - { - text: '鎸夊鎴疯鍗曟煡璇�', - fun: this.getOperationTaskByCustomer - }, - { - text: '璁㈠崟鍚堝苟', - fun: this.openOrderMerge - } - */ if (this.permissions.plan_manufacturingorder_add) { this.table.toolbar.push({ text: '鏂板', @@ -976,28 +1055,6 @@ fun: this.getOperationTaskByCustomer }) } - // if (this.permissions.manufacturingorder_order_merge) { - // this.table.toolbar.push({ - // text: '璁㈠崟鍚堝苟', - // fun: this.openOrderMerge - // }) - // } - - /** - * { - label: '鎵嬪姩鏂板', - command: 'MANUAL', - disabled: false, - permitArr: ['01planned', '02issued'] - }, - { - label: '鑷姩鏂板', - command: 'AUTO', - disabled: false, - permitArr: ['01planned', '02issued'] - } - */ - if (this.permissions.manufacturingorder_create_task_manual) { this.taskTypeArr.push({ label: '鎵嬪姩鏂板', @@ -1014,21 +1071,7 @@ permitArr: ['01planned', '02issued'] }) } - // 鍒濆鍖杚ueryParam - // this.initSearchCondition() - // if (!this.options.cancelRunCreated) { - // this.getDataList() - // } - // const queryParam = [] - // queryParam.push( - // Object.assign({ - // prop: 'state', - // searchInfoType: 'select', - // propVal: '01planned' - // }) - // ) - // this.$refs.manufacturingOrderTable.setQueryParam(queryParam) - // this.getData() + this.getBomTypeDbOptions() // 杞﹂棿璁㈠崟鏄惁鍚屾IFS @@ -1054,8 +1097,45 @@ mounted() { // this.initQueryParams() }, + watch:{ + diaPrintTab(newVal){ + if(!newVal){ + this.qrData = [] + this.checkIndexList = [] + this.checkDataList = [] + this.isIndeterminate = true; + } + } + }, methods: { + //鍏ㄩ�� + handleCheckAllChange(val) { + if(val){ + for(var i=0;i<this.qrData.length;i++){ + this.checkIndexList.push(i) + } + this.checkDataList = this.qrData + }else{ + this.checkIndexList = [] + this.checkDataList = [] + } + this.isIndeterminate = false; + }, + //閫夋嫨瑕佹墦鍗扮殑浜岀淮鐮� + changePrintCode(){ + let indexList = this.checkIndexList + let arr = [] + indexList.forEach(i=>{ + arr.push(this.qrData[i]) + }) + this.checkDataList = arr + }, + //鎵撳嵃鏂规硶 printFun() { + if(this.checkDataList.length < 1){ + this.$message.warning("璇烽�夋嫨瑕佹墦鍗扮殑浜岀淮鐮�") + return + } this.diaPrintTab = false; PrintJS({ printable: 'printMOrder',//椤甸潰 @@ -1078,6 +1158,41 @@ targetStyles: ["*"], // 浣跨敤dom鐨勬墍鏈夋牱寮忥紝寰堥噸瑕� font_size: '', }); + }, + //鍒濆鍖栦簩缁寸爜鏍囩鏁版嵁 + initQrData(data){ + this.qrData = [] + if(data){ + console.log(data); + let index = Number(data.qtyRequired) + Number(data.scrapQty) + if(index>0){ + for(var i=1;i<= index;i++){ + let obj = { + orderNo: data.customerOrderNo, + cName: data.customerName, + pName: data.partName, + code: { + moNo: data.moNo, + moNo2: null, + } + } + let no = (i+"").padStart(3,'0') + obj.code.moNo2 = data.moNo + no + this.qrData.push(obj) + } + } + } + }, + //鏍囩鎵撳嵃鎸夐挳 + labelPrint(){ + if(this.multipleSelection.length==0){ + this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹�') + return + } + let selection = this.multipleSelection + let lastRow = selection[ selection.length - 1 ] + this.initQrData(lastRow) + this.diaPrintTab = true }, getManufactureAttr(row, column, cellValue) { this.manufactureAttrs.forEach((obj) => { @@ -1160,6 +1275,10 @@ }, // 鏂板 / 淇敼 addOrUpdateHandle(row) { + if(!this.permissions.plan_manufacturingorder_edit && row.id!=null){ + this.$message.error("璇ヨ鑹叉病鏈夋搷浣滄潈闄�") + return + } this.$router.push({ name: 'productorderForm', query: { id: row == null ? null : row.id } @@ -1195,7 +1314,6 @@ getByMoIds([this.orderPlan.id]).then((repsonse) => { const resData = repsonse.data.data const resCode = repsonse.data.code - console.log("resData-----",repsonse); if (resCode === 0) { const _that = this for (const key in resData) { @@ -1427,36 +1545,8 @@ } } }, - //鍒濆鍖栦簩缁寸爜鏍囩鏁版嵁 - initQrData(data){ - if(data){ - let index = Number(data.qtyRequired) + Number(data.scrapQty) - if(index>0){ - for(var i=1;i<= index;i++){ - let obj = { - moNo: data.moNo, - moNo2: null, - } - let no = (i+"").padStart(3,'0') - obj.moNo2 = data.moNo + no - this.qrData.push(obj) - } - } - } - }, // table鑷甫浜嬩欢 handleSelectionChange(val) { - console.log(val,"涓�琛�"); - let orderData = [] - orderData =val.map( el =>{ - return{ - moNo:el.moNo, - qtyRequired: el.qtyRequired, - scrapQty: el.scrapQty - } - }) - this.orderDatalist = orderData - this.initQrData(orderData[0]) // 鏍规嵁鐘舵�侊紝绂佺敤琛ㄥご鎸夐挳 // 绛涢�夊嚭閫変腑璁板綍鐨勭姸鎬� var stateArr = val.map(function(value, index) { @@ -1749,13 +1839,6 @@ this.$message.error('涓婁紶澶辫触') } }, - labelPrint(){ - if(this.multipleSelection.length==0){ - this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹�') - return - } - this.diaPrintTab = true - } } } </script> -- Gitblit v1.9.3