From 34b44ef04091bdf3c7d97cf94d0f3d2fc8bfa031 Mon Sep 17 00:00:00 2001
From: 王震 <10952869+daywangzhen@user.noreply.gitee.com>
Date: 星期二, 19 十二月 2023 09:26:04 +0800
Subject: [PATCH] 	modified:   src/views/plan/manufacturingorder/index.vue 	modified:   vue.config.js

---
 src/views/plan/manufacturingorder/index.vue |  267 +++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 239 insertions(+), 28 deletions(-)

diff --git a/src/views/plan/manufacturingorder/index.vue b/src/views/plan/manufacturingorder/index.vue
index 568bf63..d760c3e 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,15 +41,16 @@
             </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
               >
             </el-dropdown-menu>
           </el-dropdown>
 
-          <el-dropdown
+          <!-- <el-dropdown
             v-if="permissions.manufacturingorder_issue_material"
             @command="issueMaterialHandleCommand"
             style="margin-left:10px;"
@@ -64,7 +66,7 @@
                 >{{ item.label }}</el-dropdown-item
               >
             </el-dropdown-menu>
-          </el-dropdown>
+          </el-dropdown> -->
           <!-- <el-button
             v-if="permissions.manufacturingorder_orderto_ifs"
             @click="commitOrderIfs()"
@@ -105,13 +107,19 @@
             :loading="loadingExcel"
             >瀵煎嚭
           </el-button>
+          <el-button
+            @click="labelPrint"
+            type="primary"
+            style="margin-left:10px;"
+            >鏍囩鎵撳嵃
+          </el-button>
           <!-- <el-button
             v-if="permissions.manufacturingorder_update_orderno"
             @click="updateOrderNo"
             type="primary"
             style="margin-left:10px;"
-            >鏇存柊璁㈠崟鍙� -->
-          </el-button>
+            >鏇存柊璁㈠崟鍙�
+          </el-button>-->
         </template>
       </ttable>
       <customerorder
@@ -190,6 +198,98 @@
         </span>
       </el-dialog>
     </basic-container>
+    <!-- 鏍囩鎵撳嵃 -->
+    <el-dialog title="鏍囩鍒楄〃" :visible.sync="diaPrintTab" width="500px" top="5vh">
+      <div style="width:100%;height: 400px;overflow-y: auto;">
+        <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 style="display: flex;">
+                      <div>
+                        <el-col :span="8" :offset="2">
+                          <vueQr :text="JSON.stringify(item.code)" :size="120" :margin="2"></vueQr>
+                        </el-col>
+                      </div>
+                      <div style="margin-left: 20px;width: 100%;">
+                        <el-row >
+                          <el-col  style="font-weight: bold;"><span>鎵规鍙�:&nbsp; </span>{{ item.code.moNo2 }}</el-col>
+                        </el-row>
+                        <el-row style="margin-top: 5px;">
+                          <el-col  style="font-weight: bold;"><span>璁㈠崟鍙�:&nbsp; </span>{{ item.orderNo }}</el-col>
+                        </el-row>
+                        <el-row style="margin-top: 5px;">
+                          <el-col  style="font-weight: bold;"><span>瀹㈡埛鍚嶇О:&nbsp; </span>{{ item.cName }}</el-col>
+                        </el-row>
+                        <el-row style="margin-top: 5px;">
+                          <el-col  style="font-weight: bold;">{{ item.pName }}</el-col>
+                        </el-row>
+                      </div>
+                  </div>
+            </el-card>
+          </el-checkbox-group>
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <el-button @click="diaPrintTab = false">鍙� 娑�</el-button>
+        <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-card>
+        </div>
+      </div>
   </div>
 </template>
 
@@ -218,9 +318,17 @@
 import DelMatUnIssueVue from './DelMatUnIssue.vue'
 import { getStore } from '@/util/store.js'
 import { getObj as getSysParam } from '@/api/admin/sys-public-param'
+import vueQr from 'vue-qr'
+import PrintJS from 'print-js'
 export default {
   data() {
     return {
+      checkAll: false,
+      isIndeterminate: true,
+      checkDataList: [],
+      checkIndexList: [],
+      qrData: [],
+      diaPrintTab:false,
       showCustomerorder: false,
       paramObj: { customerList: null },
       customerOrder: null,
@@ -408,7 +516,7 @@
             isSearch: true,
             searchInfoType: 'text'
           },
-          {
+          /* {
             minWidth: '120',
             prop: 'printRequirement',
             label: '鍗板瓧瑕佹眰',
@@ -421,6 +529,15 @@
             minWidth: '120',
             prop: 'lengthRequirement',
             label: '鐩橀暱瑕佹眰',
+            sort: true,
+            isTrue: true,
+            isSearch: true,
+            searchInfoType: 'text'
+          }, */
+           {
+            minWidth: '120',
+            prop: 'scrapQty',
+            label: '鎶ュ簾鏁伴噺',
             sort: true,
             isTrue: true,
             isSearch: true,
@@ -491,7 +608,7 @@
             searchInfoType: 'text'
           },
 
-          {
+          /* {
             minWidth: '120',
             prop: 'outerColor',
             label: '澶栨姢棰滆壊',
@@ -509,7 +626,7 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'text'
-          },
+          }, */
 
           {
             minWidth: '120',
@@ -558,7 +675,7 @@
             searchInfoType: 'datetimerange',
             formatter: this.formatDutyDate
           },
-          {
+          /* {
             minWidth: '120',
             prop: 'bomConfirmStatus',
             label: 'BOM鐘舵��',
@@ -620,7 +737,7 @@
               }
               return formatVal
             }
-          },
+          }, */
           {
             minWidth: '200',
             prop: 'remark',
@@ -630,7 +747,7 @@
             isSearch: true,
             searchInfoType: 'text'
           },
-          {
+          /* {
             minWidth: '100',
             prop: 'oriIfsOrderNo',
             label: '鍘烮FS璁㈠崟鍙�',
@@ -665,8 +782,8 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'text'
-          },
-          {
+          }, */
+         /*  {
             minWidth: '100',
             prop: 'qtyApply',
             label: '鐢宠鏁伴噺',
@@ -674,7 +791,7 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'text'
-          },
+          }, */
           {
             minWidth: '140',
             width: '120',
@@ -697,7 +814,7 @@
             searchInfoType: 'datetimerange',
             formatter: this.formatDutyDate
           },
-          {
+          /* {
             minWidth: '120',
             prop: 'ifsSync',
             label: '璁㈠崟鍚屾ERP',
@@ -771,7 +888,7 @@
               }
               return formatVal
             }
-          },
+          }, */
           {
             minWidth: '100',
             prop: 'factoryName',
@@ -823,14 +940,7 @@
           }
         ],
         toolbar: [],
-        operator: [
-          {
-            text: '鏌ョ湅搴撳瓨',
-            type: 'text',
-            size: 'small',
-            fun: this.searchStock
-          }
-        ],
+        operator: null,
         operatorConfig: {
           fixed: 'right',
           label: '鎿嶄綔',
@@ -902,7 +1012,8 @@
     AutoOperationtask,
     IssueMaterialForm,
     OrderMergeForm,
-    DelMatUnIssueVue
+    DelMatUnIssueVue,
+    vueQr
   },
   created() {
     this.getManufactureAttrs()
@@ -1003,7 +1114,6 @@
       }
     })
   },
-
   computed: {
     ...mapGetters(['permissions'])
   },
@@ -1013,7 +1123,103 @@
   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',//椤甸潰
+            type: "html",//鏂囨。绫诲瀷
+              maxWidth:450,
+              targetStyles:['*'],                 
+              style: `@page {
+                margin:0;
+                size: 360px 175px;
+              }
+              html{
+                zoom:100%;
+              }
+              @media print{
+                width: 360px;
+                height: 175px;
+                margin:0;
+              }`,
+              onPrintDialogClose: this.erexcel=false,
+              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) => {
         if (obj.value === cellValue) {
@@ -1654,7 +1860,12 @@
       } else {
         this.$message.error('涓婁紶澶辫触')
       }
-    }
+    },
   }
 }
 </script>
+<style lang="scss">
+.gantt-info {
+  display: none !important;
+}
+</style>

--
Gitblit v1.9.3