From 41cad2434411b2eac1b9814d47d06e34c291f285 Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期五, 29 三月 2024 16:29:40 +0800
Subject: [PATCH] 完成首页等问题修改

---
 src/views/plan/manufacturingorder/index.vue |  391 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 257 insertions(+), 134 deletions(-)

diff --git a/src/views/plan/manufacturingorder/index.vue b/src/views/plan/manufacturingorder/index.vue
index 0b601e1..a417123 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,10 +109,11 @@
             >瀵煎嚭
           </el-button>
           <el-button
+          v-if="permissions.manufacturingorder_label_print"
             @click="labelPrint"
             type="primary"
             style="margin-left:10px;"
-            >鎵撳嵃鏍囩
+            >鏍囩鎵撳嵃
           </el-button>
           <!-- <el-button
             v-if="permissions.manufacturingorder_update_orderno"
@@ -195,38 +199,122 @@
           </div>
         </span>
       </el-dialog>
-      <!-- 鏍囩鎵撳嵃 -->
-      <el-dialog title="鏍囩鍒楄〃" :visible.sync="diaPrintTab" width="30%">
-        <div class="dia_body" style="height: 400px;overflow-y: auto;padding: 0 10px;">
-          <el-card class="box-card" v-for="(tem, i) in orderDatalist" :key="i" style="margin-bottom: 15px;">
-            <!-- <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;">{{ tem.customerOrderNo }}</el-col>
-            </el-row> -->
-            <el-row style="font-size: 18px;">
-              <!-- <el-col :span="10" :offset="3">闆朵欢鍚嶇О锛�</el-col> -->
-              <el-col :span="10" :offset="6" style="font-weight: bold;" >{{ tem.partNo }}</el-col>
+    </basic-container>
+    <!-- 鏍囩鎵撳嵃 -->
+    <el-dialog title="鏍囩鍒楄〃" :visible.sync="diaPrintTab" width="28%" 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>
+                    <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>鎵�&nbsp; 娆�&nbsp;鍙�:&nbsp; </span>{{ item.code.moNo2 }}</el-col>
+                        </el-row>
+                        <el-row style="margin-top: 9px;font-size: 14px;">
+                          <el-col  style="font-weight: bold;"><span>璁�&nbsp; 鍗�&nbsp;鍙�:&nbsp; </span>{{ item.orderNo }}</el-col>
+                        </el-row>
+                        <el-row style="margin-top: 9px;font-size: 14px;">
+                          <el-col  style="font-weight: bold;"><span>瀹㈡埛鍚嶇О:&nbsp; </span>{{ item.cName }}</el-col>
+                        </el-row>
+                      </div>
+                  </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>
-              <el-col :span="10" style="padding-left: 20px;">
-                <vueQr :text="tem.moNo" :size="150" :margin="1"></vueQr>
+            <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-col :span="10" :offset="3" style="font-weight: bold;" >鎵规鍙�: &nbsp;{{ tem.moNo }}</el-col>
-              <!-- <el-col :span="10" :offset="4" style="font-weight: bold;" ></el-col> -->
-              <!-- <el-col :span="10" :offset="4" style="font-weight: bold;" >{{ tem.partName }}</el-col> -->
-            </el-row>
+            </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>鎵�&nbsp; 娆�&nbsp;鍙�:&nbsp; </span>{{ item.code.moNo2 }}</el-col>
+                        </el-row>
+                        <el-row style="margin-top: 9px;font-size: 14px;">
+                          <el-col  style="font-weight: bold;"><span>璁�&nbsp; 鍗�&nbsp;鍙�:&nbsp; </span>{{ item.orderNo }}</el-col>
+                        </el-row>
+                        <el-row style="margin-top: 9px;font-size: 14px;">
+                          <el-col  style="font-weight: bold;"><span>瀹㈡埛鍚嶇О:&nbsp; </span>{{ item.cName }}</el-col>
+                        </el-row>
+                      </div>
+                    </div>
           </el-card>
         </div>
-        <span slot="footer" class="dialog-footer">
-          <el-button @click="diaPrintTab = false">鍙� 娑�</el-button>
-          <el-button type="primary" @click="diaPrintTab = false">鎵� 鍗�</el-button>
-        </span>
-      </el-dialog>
-    </basic-container>
+      </div>
   </div>
 </template>
 
@@ -256,10 +344,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 {
-      orderDatalist:[],
+      checkAll: false,
+      isIndeterminate: true,
+      checkDataList: [],
+      checkIndexList: [],
+      qrData: [],
       diaPrintTab:false,
       showCustomerorder: false,
       paramObj: { customerList: null },
@@ -358,6 +451,16 @@
         // 鏍囬
         column: [
           {
+            minWidth: '120',
+            prop: 'moNo',
+            label: '杞﹂棿璁㈠崟鍙�',
+            sort: true,
+            isTrue: true,
+            isSearch: true,
+            searchInfoType: 'text',
+            render: { fun: this.addOrUpdateHandle }
+          },
+          {
             minWidth: '140',
             prop: 'state',
             label: '鐘舵��',
@@ -448,7 +551,7 @@
             isSearch: true,
             searchInfoType: 'text'
           },
-          {
+          /* {
             minWidth: '120',
             prop: 'printRequirement',
             label: '鍗板瓧瑕佹眰',
@@ -461,6 +564,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,
@@ -489,16 +601,7 @@
               return this.bomTypeDbOptions
             }
           },
-          {
-            minWidth: '120',
-            prop: 'moNo',
-            label: '杞﹂棿璁㈠崟鍙�',
-            sort: true,
-            isTrue: true,
-            isSearch: true,
-            searchInfoType: 'text',
-            render: { fun: this.addOrUpdateHandle }
-          },
+
           {
             minWidth: '120',
             prop: 'manufactureAttr',
@@ -531,7 +634,7 @@
             searchInfoType: 'text'
           },
 
-          {
+          /* {
             minWidth: '120',
             prop: 'outerColor',
             label: '澶栨姢棰滆壊',
@@ -549,7 +652,7 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'text'
-          },
+          }, */
 
           {
             minWidth: '120',
@@ -598,7 +701,7 @@
             searchInfoType: 'datetimerange',
             formatter: this.formatDutyDate
           },
-          {
+          /* {
             minWidth: '120',
             prop: 'bomConfirmStatus',
             label: 'BOM鐘舵��',
@@ -660,7 +763,7 @@
               }
               return formatVal
             }
-          },
+          }, */
           {
             minWidth: '200',
             prop: 'remark',
@@ -670,7 +773,7 @@
             isSearch: true,
             searchInfoType: 'text'
           },
-          {
+          /* {
             minWidth: '100',
             prop: 'oriIfsOrderNo',
             label: '鍘烮FS璁㈠崟鍙�',
@@ -705,8 +808,8 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'text'
-          },
-          {
+          }, */
+         /*  {
             minWidth: '100',
             prop: 'qtyApply',
             label: '鐢宠鏁伴噺',
@@ -714,7 +817,7 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'text'
-          },
+          }, */
           {
             minWidth: '140',
             width: '120',
@@ -737,7 +840,7 @@
             searchInfoType: 'datetimerange',
             formatter: this.formatDutyDate
           },
-          {
+          /* {
             minWidth: '120',
             prop: 'ifsSync',
             label: '璁㈠崟鍚屾ERP',
@@ -811,7 +914,7 @@
               }
               return formatVal
             }
-          },
+          }, */
           {
             minWidth: '100',
             prop: 'factoryName',
@@ -940,21 +1043,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: '鏂板',
@@ -968,28 +1056,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: '鎵嬪姩鏂板',
@@ -1006,21 +1072,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
@@ -1037,7 +1089,6 @@
       }
     })
   },
-
   computed: {
     ...mapGetters(['permissions'])
   },
@@ -1047,7 +1098,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 landscape;
+              }
+              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=index;i>= 1;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) {
@@ -1129,6 +1276,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 }
@@ -1164,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) {
@@ -1398,26 +1548,6 @@
     },
     // table鑷甫浜嬩欢
     handleSelectionChange(val) {
-      console.log(val,"涓�琛�");
-      let orderData = []
-      orderData =val.map( el =>{
-         return{
-            moNo:el.moNo,
-            workShop:el.workShop,
-            operationNames:el.operationNames,
-            customerOrderNo:el.customerOrderNo,
-            customerName:el.customerName,
-            mpsNo:el.mpsNo,
-            remark:el.remark,
-            partNo:el.partNo,
-            partName:el.partName,
-            unit:el.unit,
-            requiredDate:el.requiredDate,
-            id:el.id,
-         }
-      })
-     this.orderDatalist = orderData
-      console.log(orderData,"浜岀淮鐮侀渶瑕佺殑");
       // 鏍规嵁鐘舵�侊紝绂佺敤琛ㄥご鎸夐挳
       // 绛涢�夊嚭閫変腑璁板綍鐨勭姸鎬�
       var stateArr = val.map(function(value, index) {
@@ -1710,13 +1840,6 @@
         this.$message.error('涓婁紶澶辫触')
       }
     },
-    labelPrint(){
-      if(this.multipleSelection.length==0){
-          this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹�')
-          return
-        }
-      this.diaPrintTab = true
-    }
   }
 }
 </script>

--
Gitblit v1.9.3