From 741eea3ed05c978c21ec4048c0bb45a721ff615a Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期六, 11 五月 2024 15:42:20 +0800
Subject: [PATCH] 车间订单的导出去掉

---
 src/views/plan/manufacturingorder/index.vue |  319 ++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 230 insertions(+), 89 deletions(-)

diff --git a/src/views/plan/manufacturingorder/index.vue b/src/views/plan/manufacturingorder/index.vue
index 7d24f78..e3a8654 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
               >
@@ -98,19 +100,27 @@
             >鍒锋柊ifs杞﹂棿璁㈠崟鍙�
           </el-button> -->
 
-          <el-button
+          <!-- <el-button
+          v-if="permissions.manufacturingorder_export"
             @click="exportExcel"
             type="primary"
             style="margin-left:10px;"
             :loading="loadingExcel"
             >瀵煎嚭
+          </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"
             @click="updateOrderNo"
             type="primary"
             style="margin-left:10px;"
-            >鏇存柊璁㈠崟鍙� 
+            >鏇存柊璁㈠崟鍙�
           </el-button>-->
         </template>
       </ttable>
@@ -190,6 +200,77 @@
         </span>
       </el-dialog>
     </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>
+                   <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: 10px !important;page-break-before:always;page-break-after: always;">
+            <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>
+      </div>
   </div>
 </template>
 
@@ -218,9 +299,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,
@@ -318,6 +407,16 @@
         // 鏍囬
         column: [
           {
+            minWidth: '120',
+            prop: 'moNo',
+            label: '杞﹂棿璁㈠崟鍙�',
+            sort: true,
+            isTrue: true,
+            isSearch: true,
+            searchInfoType: 'text',
+            render: { fun: this.addOrUpdateHandle }
+          },
+          {
             minWidth: '140',
             prop: 'state',
             label: '鐘舵��',
@@ -408,7 +507,7 @@
             isSearch: true,
             searchInfoType: 'text'
           },
-          {
+          /* {
             minWidth: '120',
             prop: 'printRequirement',
             label: '鍗板瓧瑕佹眰',
@@ -421,6 +520,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,
@@ -449,16 +557,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',
@@ -491,7 +590,7 @@
             searchInfoType: 'text'
           },
 
-          {
+          /* {
             minWidth: '120',
             prop: 'outerColor',
             label: '澶栨姢棰滆壊',
@@ -509,7 +608,7 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'text'
-          },
+          }, */
 
           {
             minWidth: '120',
@@ -558,7 +657,7 @@
             searchInfoType: 'datetimerange',
             formatter: this.formatDutyDate
           },
-          {
+          /* {
             minWidth: '120',
             prop: 'bomConfirmStatus',
             label: 'BOM鐘舵��',
@@ -620,7 +719,7 @@
               }
               return formatVal
             }
-          },
+          }, */
           {
             minWidth: '200',
             prop: 'remark',
@@ -630,7 +729,7 @@
             isSearch: true,
             searchInfoType: 'text'
           },
-          {
+          /* {
             minWidth: '100',
             prop: 'oriIfsOrderNo',
             label: '鍘烮FS璁㈠崟鍙�',
@@ -665,8 +764,8 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'text'
-          },
-          {
+          }, */
+         /*  {
             minWidth: '100',
             prop: 'qtyApply',
             label: '鐢宠鏁伴噺',
@@ -674,7 +773,7 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'text'
-          },
+          }, */
           {
             minWidth: '140',
             width: '120',
@@ -697,7 +796,7 @@
             searchInfoType: 'datetimerange',
             formatter: this.formatDutyDate
           },
-          {
+          /* {
             minWidth: '120',
             prop: 'ifsSync',
             label: '璁㈠崟鍚屾ERP',
@@ -771,7 +870,7 @@
               }
               return formatVal
             }
-          },
+          }, */
           {
             minWidth: '100',
             prop: 'factoryName',
@@ -823,14 +922,7 @@
           }
         ],
         toolbar: [],
-        operator: [
-          {
-            text: '鏌ョ湅搴撳瓨',
-            type: 'text',
-            size: 'small',
-            fun: this.searchStock
-          }
-        ],
+        operator: null,
         operatorConfig: {
           fixed: 'right',
           label: '鎿嶄綔',
@@ -902,25 +994,11 @@
     AutoOperationtask,
     IssueMaterialForm,
     OrderMergeForm,
-    DelMatUnIssueVue
+    DelMatUnIssueVue,
+    vueQr
   },
   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: '鏂板',
@@ -934,28 +1012,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: '鎵嬪姩鏂板',
@@ -972,21 +1028,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
@@ -1003,7 +1045,6 @@
       }
     })
   },
-
   computed: {
     ...mapGetters(['permissions'])
   },
@@ -1013,7 +1054,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) {
@@ -1095,6 +1232,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 }
@@ -1654,7 +1795,7 @@
       } else {
         this.$message.error('涓婁紶澶辫触')
       }
-    }
+    },
   }
 }
 </script>
@@ -1662,4 +1803,4 @@
 .gantt-info {
   display: none !important;
 }
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.9.3