From 67da82f0b0c24df5f19bbfcfec63801d9ae902d8 Mon Sep 17 00:00:00 2001
From: 王震 <10952869+daywangzhen@user.noreply.gitee.com>
Date: 星期三, 13 十二月 2023 16:22:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/views/plan/manufacturingorder/index.vue |  253 ++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 182 insertions(+), 71 deletions(-)

diff --git a/src/views/plan/manufacturingorder/index.vue b/src/views/plan/manufacturingorder/index.vue
index 09b4935..ec2c361 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
               >
@@ -197,30 +199,76 @@
       </el-dialog>
     </basic-container>
     <!-- 鏍囩鎵撳嵃 -->
-    <el-dialog title="鏍囩鍒楄〃" :visible.sync="diaPrintTab" width="500px">
-      <div class="dia_body" style="height: 400px;overflow-y: auto;padding: 0 10px;">
-        <el-card class="box-card" v-for="(item, i) in qrData" :key="i" style="margin-bottom: 15px;width:100%">
-              <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>
-          </el-card>
+    <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>
+            </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="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;padding: 0;">
+        <div id="printMOrder">
+          <el-card class="box-card" v-for="(item, i) in checkDataList" :key="i" style="padding-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>
 
@@ -250,12 +298,15 @@
 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 {
-      checkList: [],
+      checkAll: false,
+      isIndeterminate: true,
+      checkDataList: [],
+      checkIndexList: [],
       qrData: [],
-      orderDatalist:[],
       diaPrintTab:false,
       showCustomerorder: false,
       paramObj: { customerList: null },
@@ -444,7 +495,7 @@
             isSearch: true,
             searchInfoType: 'text'
           },
-          {
+          /* {
             minWidth: '120',
             prop: 'printRequirement',
             label: '鍗板瓧瑕佹眰',
@@ -461,7 +512,7 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'text'
-          },
+          }, */
            {
             minWidth: '120',
             prop: 'scrapQty',
@@ -536,7 +587,7 @@
             searchInfoType: 'text'
           },
 
-          {
+          /* {
             minWidth: '120',
             prop: 'outerColor',
             label: '澶栨姢棰滆壊',
@@ -554,7 +605,7 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'text'
-          },
+          }, */
 
           {
             minWidth: '120',
@@ -603,7 +654,7 @@
             searchInfoType: 'datetimerange',
             formatter: this.formatDutyDate
           },
-          {
+          /* {
             minWidth: '120',
             prop: 'bomConfirmStatus',
             label: 'BOM鐘舵��',
@@ -665,7 +716,7 @@
               }
               return formatVal
             }
-          },
+          }, */
           {
             minWidth: '200',
             prop: 'remark',
@@ -675,7 +726,7 @@
             isSearch: true,
             searchInfoType: 'text'
           },
-          {
+          /* {
             minWidth: '100',
             prop: 'oriIfsOrderNo',
             label: '鍘烮FS璁㈠崟鍙�',
@@ -710,8 +761,8 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'text'
-          },
-          {
+          }, */
+         /*  {
             minWidth: '100',
             prop: 'qtyApply',
             label: '鐢宠鏁伴噺',
@@ -719,7 +770,7 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'text'
-          },
+          }, */
           {
             minWidth: '140',
             width: '120',
@@ -742,7 +793,7 @@
             searchInfoType: 'datetimerange',
             formatter: this.formatDutyDate
           },
-          {
+          /* {
             minWidth: '120',
             prop: 'ifsSync',
             label: '璁㈠崟鍚屾ERP',
@@ -816,7 +867,7 @@
               }
               return formatVal
             }
-          },
+          }, */
           {
             minWidth: '100',
             prop: 'factoryName',
@@ -1051,7 +1102,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) {
@@ -1168,7 +1315,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) {
@@ -1400,36 +1546,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) {
@@ -1722,13 +1840,6 @@
         this.$message.error('涓婁紶澶辫触')
       }
     },
-    labelPrint(){
-      if(this.multipleSelection.length==0){
-          this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹�')
-          return
-        }
-      this.diaPrintTab = true
-    }
   }
 }
 </script>

--
Gitblit v1.9.3