From 5bacc5e126870e63b9ba1facbabf2878bdccfa7d Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期四, 25 四月 2024 16:21:31 +0800
Subject: [PATCH] 解决销售订单跨页无法多选问题

---
 src/views/plan/customerorder/index.vue |  795 +++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 502 insertions(+), 293 deletions(-)

diff --git a/src/views/plan/customerorder/index.vue b/src/views/plan/customerorder/index.vue
index e69e1ae..6636ad2 100644
--- a/src/views/plan/customerorder/index.vue
+++ b/src/views/plan/customerorder/index.vue
@@ -18,15 +18,16 @@
             @command="documentHandle"
             style="margin-left: 10px"
           >
-            <el-button>
+            <el-button style="padding: 9px 14px;">
               宸ヨ壓鏂囦欢<i class="el-icon-arrow-down el-icon--right"></i>
             </el-button>
             <el-dropdown-menu slot="dropdown">
               <el-dropdown-item
                 :key="index"
                 :command="item.command"
-                v-for="(item,index) in documentTagArr"
-                :disabled="item.disabled">
+                v-for="(item, index) in documentTagArr"
+                :disabled="item.disabled"
+              >
                 {{ item.label }}
               </el-dropdown-item>
             </el-dropdown-menu>
@@ -37,24 +38,38 @@
             @command="handleCommitCommand"
             style="margin-left: 10px"
           >
-            <el-button>
+            <el-button style="padding: 9px 14px;">
               瀹℃牳鐘舵�佹敼鍙�<i class="el-icon-arrow-down el-icon--right"></i>
             </el-button>
             <el-dropdown-menu slot="dropdown">
               <el-dropdown-item
                 :key="index"
                 :command="item.command"
-                v-for="(item,index) in commitStateTagArr"
+                v-for="(item, index) in commitStateTagArr"
                 :disabled="item.disabled"
                 >{{ item.label }}</el-dropdown-item
               >
             </el-dropdown-menu>
           </el-dropdown>
           <el-button
-            style="margin-left:10px;"
+            style="margin-left: 10px;padding: 9px 14px;"
             type="primary"
-            @click="()=>exportDialogVisible=true"
-            >瀵煎嚭鍙拌处</el-button>
+            @click="() => (exportDialogVisible = true)"
+            >瀵煎嚭鍙拌处</el-button
+          >
+          <el-button
+            style="margin-left: 10px;padding: 9px 14px;"
+            type="primary"
+            v-if="permissions.plan_customerorder_check"
+            @click="handleCheck"
+            >瀹℃牳</el-button
+          >
+          <!-- <el-button
+            style="margin-left: 10px"
+            type="primary"
+            @click="() => ($refs.technology.init())"
+            >缂栧啓鎶�鏈氦搴曞崟</el-button
+          > -->
         </template>
       </ttable>
       <!-- 寮圭獥, 鏃ユ湡閫夋嫨 -->
@@ -120,7 +135,7 @@
           <div>
             <div>
               <el-upload
-                style="margin-left:8px;display: inline;"
+                style="margin-left: 8px; display: inline"
                 class="upload-demo"
                 drag
                 :headers="headers"
@@ -141,7 +156,7 @@
                 <div class="el-upload__tip" slot="tip">
                   鍙兘涓婁紶xlsx/xls鏂囦欢锛屼笖涓嶈秴杩�10M<el-button
                     type="text"
-                    style="font-size:12px;"
+                    style="font-size: 12px"
                     @click="downDataTemplate"
                     >涓嬭浇妯℃澘</el-button
                   >
@@ -154,25 +169,36 @@
         <span slot="footer" class="dialog-footer"> </span>
       </el-dialog>
       <!-- 瀵煎嚭 -->
-      <el-dialog title="瀵煎嚭鍙拌处" :visible.sync="exportDialogVisible" width="20%">
-        <div style="display: flex;justify-content: center">
-          <el-form :model="dataForm" :inline="true" :rules="dataRule" ref="exportForm" class="l-mes">
+      <el-dialog
+        title="瀵煎嚭鍙拌处"
+        :visible.sync="exportDialogVisible"
+        width="20%"
+      >
+        <div style="display: flex; justify-content: center">
+          <el-form
+            :model="dataForm"
+            :inline="true"
+            :rules="dataRule"
+            ref="exportForm"
+            class="l-mes"
+          >
             <el-form-item label="鏃ユ湡" prop="exportTime">
               <el-date-picker
                 v-model="dataForm.exportTime"
                 type="datetime"
-                style="width:100%"
+                style="width: 100%"
                 placeholder="閫夋嫨鏃ユ湡鏃堕棿"
-                value-format="yyyy-MM-dd HH:mm:ss">
+                value-format="yyyy-MM-dd HH:mm:ss"
+              >
               </el-date-picker>
             </el-form-item>
           </el-form>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="exportDialogVisible=false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="exportStandBook">纭� 瀹�</el-button>
-      </span>
-    </el-dialog>
+        </div>
+        <span slot="footer" class="dialog-footer">
+          <el-button @click="exportDialogVisible = false">鍙� 娑�</el-button>
+          <el-button type="primary" @click="exportStandBook">纭� 瀹�</el-button>
+        </span>
+      </el-dialog>
       <!-- 绠辩爜淇℃伅瀵煎嚭 -->
       <el-dialog
         title="绠辩爜淇℃伅瀵煎嚭"
@@ -185,7 +211,7 @@
           ref="packageExportForm"
           label-width="70px"
           class="l-mes"
-          style="padding:0 20px"
+          style="padding: 0 20px"
         >
           <el-form-item label="璁㈠崟鍙�">
             <el-input v-model="packageExport.form.customerOrderNo" disabled />
@@ -225,14 +251,21 @@
     </basic-container>
 
     <el-dialog title="閫夋嫨鍚屾鏃ユ湡" :visible.sync="syncDateVisible" width="20%">
-      <div style="display: flex;justify-content: center">
-        <el-form :model="dataForm" :inline="true" :rules="dataRule" ref="dataForm" class="l-mes">
+      <div style="display: flex; justify-content: center">
+        <el-form
+          :model="dataForm"
+          :inline="true"
+          :rules="dataRule"
+          ref="dataForm"
+          class="l-mes"
+        >
           <el-form-item label="鏃ユ湡">
             <el-date-picker
               v-model="dataForm.selectTime"
               type="datetime"
               placeholder="閫夋嫨鏃ユ湡鏃堕棿"
-              value-format="yyyy-MM-dd HH:mm:ss">
+              value-format="yyyy-MM-dd HH:mm:ss"
+            >
             </el-date-picker>
           </el-form-item>
         </el-form>
@@ -243,36 +276,103 @@
       </span>
     </el-dialog>
     <el-dialog
-    title="宸插叧鑱旈攢鍞鍗�"
-    :visible.sync="showInterrelatedOrderDialog"
-    width="60%">
-        <el-table border height="100" :data="interrelatedOrderData">
-            <el-table-column type="index" align="center" label="搴忓彿"></el-table-column>
-            <el-table-column prop="contractNo" show-overflow-tooltip align="center" label="鍚堝悓缂栧彿"></el-table-column>
-            <el-table-column prop="entityName" show-overflow-tooltip align="center" label="宸ョ▼鍚嶇О"></el-table-column>
-            <el-table-column prop="sourceId" show-overflow-tooltip align="center" label="娣诲姞鏉ユ簮">
-                <template scope="scope">
-                    <el-tag v-if="scope.row.sourceId == 0" type="success">鍚屾</el-tag>
-                    <el-tag v-if="scope.row.sourceId == 1" type="info">鎵嬪姩</el-tag>
-                </template>
-            </el-table-column>
-            <el-table-column prop="placeOrderDate" show-overflow-tooltip align="center" label="涓嬪崟鏃ユ湡"></el-table-column>
-            <el-table-column prop="customerName" show-overflow-tooltip align="center" label="瀹㈡埛鍚嶇О"></el-table-column>
-            <el-table-column prop="coState" min-width="100" show-overflow-tooltip align="center" label="閿�鍞鍗曠姸鎬�"></el-table-column>
-            <el-table-column prop="partNo" show-overflow-tooltip align="center" label="浜у搧缂栧彿"></el-table-column>
-            <el-table-column prop="productName" show-overflow-tooltip align="center" label="浜у搧鍚嶇О"></el-table-column>
-            <el-table-column prop="productType" show-overflow-tooltip align="center" label="闅跺睘鍝佺墝"></el-table-column>
-            <el-table-column prop="otcUnit" show-overflow-tooltip align="center" label="鍗曚綅"></el-table-column>
-            <el-table-column prop="buyQtyDue" show-overflow-tooltip align="center" label="鏁伴噺"></el-table-column>
-        </el-table>
+      title="宸插叧鑱旈攢鍞鍗�"
+      :visible.sync="showInterrelatedOrderDialog"
+      width="60%"
+    >
+      <el-table border height="100" :data="interrelatedOrderData">
+        <el-table-column
+          type="index"
+          align="center"
+          label="搴忓彿"
+        ></el-table-column>
+        <el-table-column
+          prop="contractNo"
+          show-overflow-tooltip
+          align="center"
+          label="鍚堝悓缂栧彿"
+        ></el-table-column>
+        <el-table-column
+          prop="entityName"
+          show-overflow-tooltip
+          align="center"
+          label="宸ョ▼鍚嶇О"
+        ></el-table-column>
+        <el-table-column
+          prop="sourceId"
+          show-overflow-tooltip
+          align="center"
+          label="娣诲姞鏉ユ簮"
+        >
+          <template scope="scope">
+            <el-tag v-if="scope.row.sourceId == 0" type="success">鍚屾</el-tag>
+            <el-tag v-if="scope.row.sourceId == 1" type="info">鎵嬪姩</el-tag>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="placeOrderDate"
+          show-overflow-tooltip
+          align="center"
+          label="涓嬪崟鏃ユ湡"
+        ></el-table-column>
+        <el-table-column
+          prop="customerName"
+          show-overflow-tooltip
+          align="center"
+          label="瀹㈡埛鍚嶇О"
+        ></el-table-column>
+        <el-table-column
+          prop="coState"
+          min-width="100"
+          show-overflow-tooltip
+          align="center"
+          label="閿�鍞鍗曠姸鎬�"
+        ></el-table-column>
+        <el-table-column
+          prop="partNo"
+          show-overflow-tooltip
+          align="center"
+          label="浜у搧缂栧彿"
+        ></el-table-column>
+        <el-table-column
+          prop="productName"
+          show-overflow-tooltip
+          align="center"
+          label="浜у搧鍚嶇О"
+        ></el-table-column>
+        <el-table-column
+          prop="productType"
+          show-overflow-tooltip
+          align="center"
+          label="闅跺睘鍝佺墝"
+        ></el-table-column>
+        <el-table-column
+          prop="otcUnit"
+          show-overflow-tooltip
+          align="center"
+          label="鍗曚綅"
+        ></el-table-column>
+        <el-table-column
+          prop="buyQtyDue"
+          show-overflow-tooltip
+          align="center"
+          label="鏁伴噺"
+        ></el-table-column>
+      </el-table>
     </el-dialog>
+    <technology-form ref="technology"></technology-form>
   </div>
 </template>
 
 <script>
-import {interrelatedOrder,getInterrelatedOrder,checkHanderOrder} from '@/api/plan/customerOrderInterrelated'
+import {
+  interrelatedOrder,
+  getInterrelatedOrder,
+  checkHanderOrder,
+} from '@/api/plan/customerOrderInterrelated'
 import ConfirmPullCustomerorder from './confirm-pull-customerorder'
 import TableForm from './customerorder-form'
+import TechnologyForm from './technology-form.vue'
 import TableFormDEesc from './customerorder-form-desc'
 import SampleTableForm from './sample-customerorder-form'
 import { mapGetters } from 'vuex'
@@ -299,6 +399,7 @@
   exportCustomerOrderSplit,
   syncOrder,
   dropByContractNo,
+  downloadProduct,
   downloadWordFile
 } from '../../../api/plan/customerorder'
 import DocumentTable from '@/views/common/document.vue'
@@ -314,13 +415,16 @@
       interrelatedOrderId: null,
       interrelatedOrderData: [],
       showInterrelatedOrderDialog: false,
+      technologyDialog:true,
       uniqueStateArr: [],
       dataForm: {
         selectTime: null,
-        exportTime: null
+        exportTime: null,
       },
       dataRule: {
-        exportTime:[{required:true,message:'瀵煎嚭鏃ユ湡涓嶈兘涓虹┖',trigger:'change'}]
+        exportTime: [
+          { required: true, message: '瀵煎嚭鏃ユ湡涓嶈兘涓虹┖', trigger: 'change' },
+        ],
       },
       pickerOptions: {
         onPick: ({ maxDate, minDate }) => {
@@ -338,7 +442,7 @@
             )
           }
           return false
-        }
+        },
       },
       exportDialogVisible: false,
       syncDateVisible: false,
@@ -351,58 +455,58 @@
           label: '鏍囪闆朵欢寰呴��',
           command: '01partUnCheck',
           disabled: false,
-          permitArr: []
+          permitArr: [],
         },
         {
           label: '鏍囪宸ヨ壓鏂囦欢寰呴��',
           command: '02technologyUnCheck',
           disabled: false,
-          permitArr: []
+          permitArr: [],
         },
         {
           label: '鏍囪寰呰鍒�',
           command: '03plan',
           disabled: false,
-          permitArr: []
+          permitArr: [],
         },
         {
           label: '鏍囪宸蹭笅鍙�',
           command: '04planed',
           disabled: false,
-          permitArr: []
+          permitArr: [],
         },
         {
           label: '鏍囪宸蹭綔搴�',
           command: '05cancel',
           disabled: false,
-          permitArr: []
-        }
+          permitArr: [],
+        },
       ],
       documentTagArr: [
         {
           label: '鍏宠仈宸ヨ壓鏂囦欢',
           command: 'RELEVANCE',
-          disabled: false
+          disabled: false,
         },
         {
           label: '绉婚櫎宸ヨ壓鏂囦欢',
           command: 'NORELEVANCE',
-          disabled: false
-        }
+          disabled: false,
+        },
       ],
       commitStateTagArr: [
         {
           label: '鏍囪閫氳繃',
           command: 'PROCESSED',
           disabled: false,
-          permitArr: ['01draft']
+          permitArr: ['01draft'],
         },
         {
           label: '鏍囪鍙栨秷',
           command: 'CANCELED',
           disabled: false,
-          permitArr: ['01draft']
-        }
+          permitArr: ['01draft'],
+        },
       ],
       ajaxFun: fetchListCustomerOrder,
       events: '',
@@ -414,7 +518,7 @@
       uploadInfo: {
         // 鏄惁灞曠ず涓婁紶EXCEL浠ュ強瀵瑰簲鐨剈rl
         isShow: false,
-        url: ''
+        url: '',
       },
       prelang: 'operation',
       options: {
@@ -430,7 +534,8 @@
         isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H
         isSearch: true, // 楂樼骇鏌ヨ鎸夐挳
         defaultOrderBy: { column: 'placeOrderDate', direction: 'desc' },
-        cancelRunCreated: true
+        cancelRunCreated: true,
+        reserveSelection: true,//鏄惁淇濈暀涔嬪墠閫夋嫨鐨勬暟鎹�
       },
       table: {
         total: 0,
@@ -448,7 +553,7 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'text',
-            render: { fun: this.addOrUpdateHandle }
+            render: { fun: this.addOrUpdateHandle },
           },
           {
             minWidth: '120',
@@ -456,7 +561,7 @@
             label: '宸ョ▼鍚嶇О',
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text'
+            searchInfoType: 'text',
           },
           {
             minWidth: '120',
@@ -465,7 +570,7 @@
             sort: true,
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text'
+            searchInfoType: 'text',
           },
           {
             minWidth: '100',
@@ -478,7 +583,7 @@
             formatter: this.getSourceId,
             optList: () => {
               return this.sourceIdList
-            }
+            },
           },
           {
             minWidth: '200',
@@ -489,7 +594,7 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'datetimerange',
-            formatter: this.formatDutyDate
+            formatter: this.formatDutyDate,
           },
           {
             minWidth: '120',
@@ -498,8 +603,8 @@
             sort: true,
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text',
-            formatter: this.formatDutyDate
+            searchInfoType: 'date',
+            formatter: this.formatDutyDate,
           },
           {
             minWidth: '120',
@@ -508,7 +613,7 @@
             sort: true,
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text'
+            searchInfoType: 'text',
           },
           {
             minWidth: '120',
@@ -521,7 +626,7 @@
             formatter: this.getCustomerCoState,
             optList: () => {
               return this.coStateList
-            }
+            },
           },
           {
             minWidth: '120',
@@ -534,7 +639,7 @@
             formatter: this.getIsAudit,
             optList: () => {
               return this.isAuditList
-            }
+            },
           },
           {
             minWidth: '120',
@@ -546,8 +651,21 @@
             searchInfoType: 'select',
             formatter: this.checkIsPass,
             optList: () => {
-                return this.isPassList
-            }
+              return this.isPassList
+            },
+          },
+          {
+            minWidth: '120',
+            prop: 'isOa',
+            label: '鏄惁鎻愪氦oa',
+            sort: true,
+            isTrue: true,
+            isSearch: true,
+            searchInfoType: 'select',
+            formatter: this.checkIsOa,
+            optList: () => {
+              return this.isOaList
+            },
           },
           {
             minWidth: '120',
@@ -557,7 +675,7 @@
             sort: true,
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text'
+            searchInfoType: 'text',
           },
           {
             minWidth: '120',
@@ -567,7 +685,7 @@
             sort: true,
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text'
+            searchInfoType: 'text',
           },
           {
             minWidth: '120',
@@ -576,7 +694,7 @@
             label: '闅跺睘鍝佺墝',
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text'
+            searchInfoType: 'text',
           },
           {
             minWidth: '120',
@@ -585,7 +703,7 @@
             label: '鍗曚綅',
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text'
+            searchInfoType: 'text',
           },
           {
             minWidth: '120',
@@ -595,7 +713,7 @@
             sort: true,
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text'
+            searchInfoType: 'text',
           },
           {
             minWidth: '120',
@@ -604,7 +722,7 @@
             sort: true,
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text'
+            searchInfoType: 'text',
           },
           {
             minWidth: '140',
@@ -617,7 +735,7 @@
             formatter: this.getManufactureAttr,
             optList: () => {
               return this.manufactureAttrList
-            }
+            },
           },
           {
             minWidth: '140',
@@ -626,7 +744,7 @@
             sort: true,
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text'
+            searchInfoType: 'text',
           },
           {
             minWidth: '140',
@@ -635,7 +753,7 @@
             sort: true,
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text'
+            searchInfoType: 'text',
           },
           {
             minWidth: '140',
@@ -644,7 +762,7 @@
             sort: true,
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text'
+            searchInfoType: 'text',
           },
           {
             minWidth: '140',
@@ -653,7 +771,7 @@
             sort: true,
             isTrue: true,
             isSearch: true,
-            searchInfoType: 'text'
+            searchInfoType: 'text',
           },
           {
             minWidth: '140',
@@ -664,7 +782,7 @@
             isTrue: true,
             isSearch: true,
             searchInfoType: 'datetimerange',
-            formatter: this.formatDutyDate
+            formatter: this.formatDutyDate,
           },
         ],
         toolbar: [],
@@ -687,19 +805,19 @@
           //   size: 'small',
           //   fun: this.packageExportHandle
           // },
-          {
-            text: '瀹℃牳',
-            type: 'text',
-            size: 'small',
-            fun: this.checkHandOrder,
-            showFun: (row)=>{return row.sourceId==='1'},
-            show: {
-              val: [
-                false,
-              ],
-              key: 'isPass'
-            }
-          },
+        //   {
+        //     text: '瀹℃牳',
+        //     type: 'text',
+        //     size: 'small',
+        //     fun: this.checkHandOrder,
+        //     showFun: (row) => {
+        //       return row.sourceId === '1'
+        //     },
+        //     show: {
+        //       val: [false],
+        //       key: 'isPass',
+        //     },
+        //   },
           {
             text: '宸插叧鑱旇鍗�',
             type: 'text',
@@ -715,82 +833,89 @@
               val: [
                 '01partUnCheck',
                 '02technologyUnCheck',
-                '03plan'
+                '03plan',
                 // '04planed'
               ],
-              key: 'coState'
-            }
-          }
+              key: 'coState',
+            },
+          },
         ],
         operatorConfig: {
           fixed: 'right',
           label: '鎿嶄綔',
           width: 200,
-          minWidth: 200
-        }
+          minWidth: 200,
+        },
       },
       addOrUpdateVisible: false,
       coStateList: [
         {
           value: '01partUnCheck',
-          label: '闆朵欢寰呴��'
+          label: '闆朵欢寰呴��',
         },
         {
           value: '02technologyUnCheck',
-          label: '宸ヨ壓鏂囦欢寰呴��'
+          label: '宸ヨ壓鏂囦欢寰呴��',
         },
         {
           value: '03plan',
-          label: '寰呰鍒�'
+          label: '寰呰鍒�',
         },
         {
           value: '04planed',
-          label: '宸蹭笅鍙�'
+          label: '宸蹭笅鍙�',
         },
         {
           value: '05cancel',
-          label: '宸蹭綔搴�'
+          label: '宸蹭綔搴�',
         },
         {
           value: '06unedit',
-          label: '璁㈠崟缂栬緫'
-        }
+          label: '璁㈠崟缂栬緫',
+        },
       ],
-      manufactureAttrList: [{
-        label: '鏅��',
-        value: 'N'
-      },{
-        label: '鏍峰搧',
-        value: 'S'
-      },{
-        label: '鐮斿彂',
-        value: 'D'
-      }],
+      manufactureAttrList: [
+        {
+          label: '鏅��',
+          value: 'N',
+        },
+        {
+          label: '鏍峰搧',
+          value: 'S',
+        },
+        {
+          label: '鐮斿彂',
+          value: 'D',
+        },
+      ],
       isAuditList: [
         {
           value: '01draft',
-          label: '鑽夌'
+          label: '鑽夌',
         },
         {
           value: '02pending',
-          label: '瀹℃牳涓�'
+          label: '瀹℃牳涓�',
         },
         {
           value: '03accepted',
-          label: '閫氳繃'
+          label: '閫氳繃',
         },
         {
           value: '04reject',
-          label: '閫�鍥�'
-        }
+          label: '閫�鍥�',
+        },
       ],
-      sourceIdList: [{
-        label: '鍚屾',
-        value: "0"
-      },{
-        label: '鎵嬪姩',
-        value: "1"
-      }],
+      sourceIdList: [
+        {
+          label: '鍚屾',
+          value: '0',
+        },
+        {
+          label: '鎵嬪姩',
+          value: '1',
+        },
+      ],
       stockVisible: false,
       partName: null,
       showPullCustomerOrderVisible: false,
@@ -802,20 +927,20 @@
           id: '',
           customerOrderNo: '',
           splitQuantity: '',
-          title: ''
+          title: '',
         },
         rules: {
           splitQuantity: [
             { required: true, message: '鏁伴噺涓嶈兘涓虹┖', trigger: 'blur' },
-            { validator: validateSixDecimal, trigger: 'blur' }
+            { validator: validateSixDecimal, trigger: 'blur' },
           ],
-          title: [{ required: true, message: '鎶ご涓嶈兘涓虹┖', trigger: 'blur' }]
+          title: [{ required: true, message: '鎶ご涓嶈兘涓虹┖', trigger: 'blur' }],
         },
         titleList: [],
-        buttonDisable: false
+        buttonDisable: false,
       },
       headers: {
-        Authorization: 'Bearer ' + getStore({ name: 'access_token' })
+        Authorization: 'Bearer ' + getStore({ name: 'access_token' }),
       },
       fileList: [],
       outBatchUploadUrl: '/mes/operationTaskProduce/upload',
@@ -824,16 +949,23 @@
       otcPartSyncOptionList: [
         {
           value: true,
-          label: '宸插悓姝�'
+          label: '宸插悓姝�',
         },
         {
           value: false,
-          label: '鏈悓姝�'
-        }
+          label: '鏈悓姝�',
+        },
       ],
       showSalesPartBatch: false,
       addOrUpdateEescVisible: false,
-      isPassList: [{label:'鏈�氳繃',value: false},{label: '閫氳繃',value: true}]
+      isPassList: [
+        { label: '鏈�氳繃', value: false },
+        { label: '閫氳繃', value: true },
+      ],
+      isOaList: [
+        { label: '鏈彁浜�', value: false },
+        { label: '宸叉彁浜�', value: true },
+      ],
     }
   },
   components: {
@@ -847,10 +979,11 @@
     SampleTableForm,
     SalesPartBatchDialog,
     TableFormDEesc,
-    CustomerorderReturnDialog
+    CustomerorderReturnDialog,
+    TechnologyForm,
   },
   computed: {
-    ...mapGetters(['permissions'])
+    ...mapGetters(['permissions']),
   },
   watch: {
     exportDialogVisible(newVal) {
@@ -864,19 +997,21 @@
           this.getData()
         }
       },
-      immediate: true
+      immediate: true,
     },
-    interrelatedOrderId(newVal){
-        if(newVal){
-            getInterrelatedOrder(newVal).then(res=>{
-                if(res.status===200){
-                    this.interrelatedOrderData = res.data.data
-                }
-            }).catch(error=>{
-                console.error(error)
-            })
-        }
-    }
+    interrelatedOrderId(newVal) {
+      if (newVal) {
+        getInterrelatedOrder(newVal)
+          .then((res) => {
+            if (res.status === 200) {
+              this.interrelatedOrderData = res.data.data
+            }
+          })
+          .catch((error) => {
+            console.error(error)
+          })
+      }
+    },
   },
   mounted() {
     this.initQueryParams()
@@ -884,30 +1019,32 @@
   created() {
     // this.getManufactureAttrs()
     this.getTitles()
+    if (this.permissions.plan_customerorder_add) {
     this.table.toolbar.push({
       text: '鏂板閿�鍞鍗�',
       type: 'primary',
       fun: this.addSampleCustomerOrder,
       disabled: false,
-      permitArr: []
+      permitArr: [],
     })
+    }
     if (this.permissions.customerorder_from_otc) {
       this.table.toolbar.push({
         text: '鑾峰彇閿�鍞鍗�',
         type: 'primary',
         fun: this.syncERP,
         disabled: false,
-        permitArr: []
+        permitArr: [],
       })
     }
     if (this.permissions.customerorder_submit_oa) {
       this.table.toolbar.push({
-        text: '鎻愪氦瀹℃牳',
+        text: '鎻愪氦OA',
         type: 'primary',
         fun: this.auditCustomerOrder,
         disabled: false,
         permitArr: [],
-        loading: false
+        loading: false,
       })
     }
     if (this.permissions.customerorder_set_salesparts) {
@@ -916,85 +1053,118 @@
         type: 'primary',
         fun: this.setSalesPart,
         disabled: false,
-        permitArr: []
+        permitArr: [],
       })
     }
+    if(this.permissions.plan_download_process_file){
+        this.table.toolbar.push({
+            text: '涓嬭浇宸ヨ壓鏂囦欢',
+            disabled: false,
+            type: 'primary',
+            fun: this.downloadWord,
+            permitArr: ['03plan','04planed'],
+        })
+    }
+    if(this.permissions.plan_download_product_file){
+        this.table.toolbar.push({
+            text: '涓嬭浇鎺掍骇鍗�',
+            disabled: false,
+            type: 'primary',
+            permitArr: [],
+            fun: this.downloadProductionScheduling,
+        })
+    }
+    if(this.permissions.plan_relevance_order){
     this.table.toolbar.push({
-        text: '涓嬭浇Word',
-        disabled: false,
-        type: 'primary',
-        fun: this.downloadWord,
-        permitArr: ['03plan','04planed'],
+      text: '鍏宠仈璁㈠崟',
+      disabled: false,
+      type: 'primary',
+      fun: this.interrelatedOrderFun,
+      permitArr: [],
     })
-    this.table.toolbar.push({
-        text: '鍏宠仈璁㈠崟',
-        disabled: false,
-        type: 'primary',
-        fun: this.interrelatedOrderFun,
-        permitArr: [],
-    })
+    }
     if (this.permissions.customerorder_create_masterplan) {
       this.table.toolbar.push({
         text: '涓荤敓浜ц鍒�',
         disabled: false,
         fun: this.masterPlanHandle,
-        permitArr: []
+        permitArr: [],
       })
     }
   },
   methods: {
-    checkHandOrder(val){
-        this.$confirm('纭瀹℃牳閫氳繃璇ラ攢鍞鍗曞悧?', '鎻愮ず', {
-          confirmButtonText: '閫氳繃',
-          cancelButtonText: '鍙栨秷',
-          type: 'warning'
-        }).then(() => {
-            checkHanderOrder(val.id).then(res=>{
-            if(res.status===200){
-                this.$message.success("瀹℃牳閫氳繃")
+    checkHandOrder(val) {
+      this.$confirm('纭瀹℃牳閫氳繃璇ラ攢鍞鍗曞悧?', '鎻愮ず', {
+        confirmButtonText: '閫氳繃',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning',
+      })
+        .then(() => {
+          checkHanderOrder(val)
+            .then((res) => {
+              if (res.status === 200) {
+                this.$message.success('瀹℃牳閫氳繃')
                 this.getData()
-            }
-          }).catch(error=>{
-            console.error(error)
-          })
-        }).catch(() => {});
-    },
-    interrelatedOrderFun(){
-        if(this.multipleSelection.length!=2){
-            this.$message.error("璇烽�夋嫨涓ゆ潯閿�鍞鍗�")
-            return
-        }
-        let autoId = null
-        let handId = null
-        this.multipleSelection.forEach(ele=>{
-            if(ele.sourceId==0){
-                autoId = ele.id
-            }else if(ele.sourceId==1){
-                handId = ele.id
-            }
+              }
+            })
+            .catch((error) => {
+              console.error(error)
+            })
         })
-        if(autoId==null || handId==null){
-            this.$message.error("娣诲姞鏉ユ簮椤讳负鎵嬪姩鍜屽悓姝�")
+        .catch(() => {})
+    },
+    interrelatedOrderFun() {
+      if (this.multipleSelection.length != 2) {
+        this.$message.error('璇烽�夋嫨涓ゆ潯閿�鍞鍗�')
+        return
+      }
+      let autoId = null
+      let handId = null
+      this.multipleSelection.forEach((ele) => {
+        if (ele.sourceId == 0) {
+          autoId = ele.id
+        } else if (ele.sourceId == 1) {
+          handId = ele.id
+        }
+      })
+      if (autoId == null || handId == null) {
+        this.$message.error('娣诲姞鏉ユ簮椤讳负鎵嬪姩鍜屽悓姝�')
+        return
+      }
+      interrelatedOrder({
+        customerOrderAutoId: autoId,
+        customerOrderHandId: handId,
+      })
+        .then((res) => {
+          if (res.status === 200) {
+            this.$message.success('鍏宠仈鎴愬姛')
+          }
+        })
+        .catch((error) => {
+          console.error(error)
+        })
+    },
+    //灞曠ず宸插叧鑱旇鍗�
+    showInterrelatedOrder(currentOrder) {
+      this.interrelatedOrderId = currentOrder.id
+      this.showInterrelatedOrderDialog = true
+    },
+    //涓嬭浇鎺掍骇閫氱煡鍗�
+    downloadProductionScheduling(){
+        let ids = this.multipleSelection.map(obj => obj.id)
+        if(ids.length<1){
+            this.$message.error("璇烽�夋嫨涓�鏉℃暟鎹�")
             return
         }
-        interrelatedOrder({
-            customerOrderAutoId: autoId,
-            customerOrderHandId: handId
-        }).then(res=>{
+        downloadProduct(ids).then(res=>{
             if(res.status===200){
-                this.$message.success("鍏宠仈鎴愬姛")
+                transform(res)
             }
         }).catch(error=>{
             console.error(error)
         })
     },
-    //灞曠ず宸插叧鑱旇鍗�
-    showInterrelatedOrder(currentOrder){
-        this.interrelatedOrderId = currentOrder.id
-        this.showInterrelatedOrderDialog = true
-    },
-
-    //涓嬭浇word
+    //涓嬭浇宸ヨ壓鏂囦欢
     downloadWord(){
         let ids = this.multipleSelection.map(ele=>ele.id)
         if(ids.length<1){
@@ -1006,17 +1176,18 @@
           const blob = response.data
           const link = document.createElement('a')
           link.href = URL.createObjectURL(blob)
-          const disposition = response.headers["content-disposition"]
+          const disposition = response.headers['content-disposition']
           let temp = disposition.substring(disposition.lastIndexOf('=') + 1)
           link.download = decodeURI(temp)
           document.body.appendChild(link)
           link.click()
-          window.setTimeout(function() {
+          window.setTimeout(function () {
             URL.revokeObjectURL(blob)
             document.body.removeChild(link)
           }, 0)
-        }).catch(error=>{
-            console.error(error);
+        })
+        .catch((error) => {
+          console.error(error)
         })
     },
     getOtcPartSyncOptionList() {
@@ -1027,7 +1198,7 @@
       queryParam.push(
         Object.assign({
           prop: 'coState',
-          searchInfoType: 'select'
+          searchInfoType: 'select',
           // propVal: '01partUnCheck'
           // propVal: '02technologyUnCheck'
         })
@@ -1036,8 +1207,9 @@
       this.getData()
     },
 
-    getData() {
-      this.$refs.customerOrderTable.getDataList()
+    async getData() {
+      await this.$refs.customerOrderTable.getDataList()
+      this.$refs.customerOrderTable.toggleRowExpansion()
     },
     // 鑾峰彇鏁版嵁鍒楄〃鍘婚櫎宸插畬鎴愮姸鎬佺殑
     handleDataList(command) {
@@ -1083,17 +1255,17 @@
         this.$message.error('璇烽�夋嫨閿�鍞鍗�')
       }
     },
-    checkIsPass(row, column, cellValue){
-        this.isPassList.forEach((obj) => {
-            if (obj.value === cellValue) {
-                if(obj.value){
-                    cellValue = "<span style='color:#34BD66;'>"+obj.label+"</span>"
-                }else{
-                    cellValue = "<span style='color:#E84738;'>"+obj.label+"</span>"
-                }
-            }
-        })
-        return cellValue
+    checkIsPass(row, column, cellValue) {
+      this.isPassList.forEach((obj) => {
+        if (obj.value === cellValue) {
+          if (obj.value) {
+            cellValue = "<span style='color:#34BD66;'>" + obj.label + '</span>'
+          } else {
+            cellValue = "<span style='color:#E84738;'>" + obj.label + '</span>'
+          }
+        }
+      })
+      return cellValue
     },
     formatDutyDate(row, column, cellValue) {
       if (cellValue) {
@@ -1106,16 +1278,23 @@
     },
     // 鏂板 / 淇敼
     addOrUpdateHandle(row) {
-      this.addOrUpdateVisible = true
-      this.$nextTick(() => {
-        this.$refs.addOrUpdate.init(row ? row.id : row)
-      })
+      if (row.isPass) {
+        this.addOrUpdateVisible = true
+        this.$nextTick(() => {
+          this.$refs.addOrUpdate.init(row ? row.id : row)
+        })
+      } else {
+        this.addSampleVisible = true
+        this.$nextTick(() => {
+          this.$refs.addSampleForm.init(row ? row.contractNo : null)
+        })
+      }
     },
     // 鏂板鏍峰搧璁㈠崟
     addSampleCustomerOrder() {
       this.addSampleVisible = true
       this.$nextTick(() => {
-        this.$refs.addSampleForm.init(0)
+        this.$refs.addSampleForm.init(null)
       })
     },
     // 鎵撳紑鏃ユ湡閫夋嫨妗�
@@ -1172,46 +1351,34 @@
     // 瀹℃牳閿�鍞鍗�
     auditCustomerOrder() {
       if (this.multipleSelection.length > 0) {
-        if (this.judgeCoState(this.multipleSelection)) {
-          let flag = true
-          const ids = []
-          this.multipleSelection.forEach((item) => {
-            if (item.partNo != null && item.partNo !== '') {
-              ids.push(item.id)
-            } else {
-              flag = false
-            }
-          })
-          if (flag) {
-
-            checkOA(this.multipleSelection.map((e) => e.id),{}).then((res) => {
-              if (!res.data.data.success) {
-                this.$confirm(`${res.data.data.message}`, '鎻愮ず', {
-                  confirmButtonText: '纭畾',
-                  cancelButtonText: '鍙栨秷',
-                  closeOnClickModal: false,
-                  type: 'warning'
-                }).then(() => {
-                  this.auditCustomerOrderSure(ids)
-                })
-              } else {
-                this.auditCustomerOrderSure(ids)
-              }
-            })
+        let flag = true
+        const ids = []
+        this.multipleSelection.forEach((item) => {
+          if (item.partNo != null && item.partNo !== '') {
+            ids.push(item.id)
           } else {
-            this.$message.error('瀛樺湪閿�鍞鍗曟湭缁戝畾閿�鍞欢锛�')
+            flag = false
           }
+        })
+        if (flag) {
+          checkOA(
+            this.multipleSelection.map((e) => e.id)
+          ).then((res) => {
+            if (res.data.data.success) {
+              this.auditCustomerOrderSure(ids)
+            }
+          }).catch(error=>{
+            this.$message.error(error.message)
+          })
         } else {
-          this.$message.error('閿�鍞鍗曞鏍哥姸鎬佷负浣滃簾锛屼笉鍙繘琛屾搷浣滐紒')
+          this.$message.error('瀛樺湪閿�鍞鍗曟湭缁戝畾闆朵欢鍙凤紒')
         }
       } else {
         this.$message.error('璇峰厛鍕鹃�夐攢鍞鍗曪紒')
       }
     },
     auditCustomerOrderSure(ids) {
-      const toolbar = this.table.toolbar.find(
-        (item) => item.text === '鎻愪氦瀹℃牳'
-      )
+      const toolbar = this.table.toolbar.find((item) => item.text === '鎻愪氦OA')
       if (toolbar) {
         toolbar.loading = true
         auditCustomerOrder(ids)
@@ -1221,7 +1388,7 @@
               this.$message.success(resData.msg)
               this.getData()
             } else {
-              this.$message.error('鎻愪氦瀹℃牳澶辫触锛�')
+              this.$message.error('鎻愪氦OA澶辫触锛�')
             }
             toolbar.loading = false
           })
@@ -1239,7 +1406,7 @@
           id: row.id,
           customerOrderNo: row.customerOrderNo,
           splitQuantity: '',
-          title: ''
+          title: '',
         }
         this.$nextTick(() => {
           this.$refs.packageExportForm.resetFields()
@@ -1255,7 +1422,7 @@
           exportCustomerOrderSplit({
             id: this.packageExport.form.id,
             splitQuantity: this.packageExport.form.splitQuantity,
-            title: this.packageExport.form.title
+            title: this.packageExport.form.title,
           })
             .then((response) => {
               transform(response)
@@ -1269,13 +1436,13 @@
     },
     // 浣滃簾
     cancelHandle(row) {
-      this.$confirm('纭浣滃簾id涓恒��' + row.id + '銆戠殑鏁版嵁?','鎻愮ず' , {
+      this.$confirm('纭浣滃簾id涓恒��' + row.id + '銆戠殑鏁版嵁?', '鎻愮ず', {
         confirmButtonText: '纭畾',
         cancelButtonText: '鍙栨秷',
         closeOnClickModal: false,
-        type: 'warning'
+        type: 'warning',
       }).then(() => {
-        dropByContractNo({id:row.id}).then((res) => {
+        dropByContractNo({ id: row.id }).then((res) => {
           if (res.data.code === 0) {
             this.$message.success('浣滃簾鎴愬姛')
             this.getData()
@@ -1310,7 +1477,7 @@
         confirmButtonText: '纭畾',
         cancelButtonText: '鍙栨秷',
         closeOnClickModal: false,
-        type: 'warning'
+        type: 'warning',
       })
         .then(() => {
           return delCustomerOrder(row.id)
@@ -1324,7 +1491,7 @@
     handleSelectionChange(val) {
       // 鏍规嵁鐘舵�侊紝绂佺敤琛ㄥご鎸夐挳
       // 绛涢�夊嚭閫変腑璁板綍鐨勭姸鎬�
-      var stateArr = val.map(function(value, index) {
+      var stateArr = val.map(function (value, index) {
         return value.coState
       })
       // 閫変腑鐘舵�佹暟缁勫厓绱犲幓閲�
@@ -1409,6 +1576,14 @@
     },
     getIsAudit(row, column, cellValue) {
       this.isAuditList.forEach((obj) => {
+        if (obj.value === cellValue) {
+          cellValue = obj.label
+        }
+      })
+      return cellValue
+    },
+    checkIsOa(row, column, cellValue) {
+      this.isOaList.forEach((obj) => {
         if (obj.value === cellValue) {
           cellValue = obj.label
         }
@@ -1538,9 +1713,9 @@
       } else {
         if (this.judgeCoState(this.multipleSelection)) {
           if (event == 'RELEVANCE') {
-            if(!this.multipleSelection[0].isPass){
-                this.$message.error("璇峰厛瀹℃牳閫氳繃锛屽啀鍏宠仈宸ヨ壓鏂囦欢")
-                return
+            if (!this.multipleSelection[0].isPass) {
+              this.$message.error('璇峰厛瀹℃牳閫氳繃锛屽啀鍏宠仈宸ヨ壓鏂囦欢')
+              return
             }
             const firstPartNo = this.multipleSelection[0].partNo
             this.multipleSelection.forEach((item) => {
@@ -1634,7 +1809,7 @@
       if (!isLt10M) {
         this.$message({
           message: '鏂囦欢澶у皬',
-          type: 'warning'
+          type: 'warning',
         })
       }
       return isLt10M
@@ -1646,7 +1821,7 @@
       } else {
         this.$message({
           message: '涓婁紶鎴愬姛',
-          type: 'success'
+          type: 'success',
         })
         this.getData()
       }
@@ -1664,7 +1839,7 @@
     downDataTemplate() {
       uploadBatchTemplate().then((response) => {
         const blob = new Blob([response.data], {
-          type: 'application/force-download'
+          type: 'application/force-download',
         })
         const filename = decodeURI('妯℃澘鏂囦欢.xlsx')
         // 鍒涘缓涓�涓秴閾炬帴锛屽皢鏂囦欢娴佽祴杩涘幓锛岀劧鍚庡疄鐜拌繖涓秴閾炬帴鐨勫崟鍑讳簨浠�
@@ -1704,10 +1879,10 @@
       // } else {
       //   this.$message.error('璇烽�夋嫨鑷冲皯涓�鏉¢攢鍞鍗�')
       // }
-      this.$refs['exportForm'].validate(valid => {
-        if(valid){
+      this.$refs['exportForm'].validate((valid) => {
+        if (valid) {
           const exportTime = this.dataForm.exportTime
-          let queryParam=this.$refs.customerOrderTable.getQueryParam();
+          let queryParam = this.$refs.customerOrderTable.getQueryParam()
           queryParam.selectTime = exportTime
           exportCustomerOrder(queryParam)
             .then((response) => {
@@ -1749,7 +1924,7 @@
       if (this.dataForm.selectTime != null && this.dataForm.selectTime != '') {
         otcCustomerOrderSync({
           selectTime: this.dataForm.selectTime,
-          pathCode: '1'
+          pathCode: '1',
         })
           .then((response) => {
             this.table.toolbar.find(
@@ -1777,7 +1952,41 @@
         ).loading = false
         this.$message.error('璇峰厛閫夋嫨鏃ユ湡')
       }
+    },
+    handleCheck(){
+        if (this.multipleSelection.length > 0) {
+            for(let i=0 ;i<this.multipleSelection.length;i++){
+                if(this.multipleSelection[i].sourceId==0){
+                    this.$message.error('璇烽�夋嫨鎵嬪姩杈撳叆鐨勯攢鍞鍗�')
+                    return;
+                }
+                if(this.multipleSelection[i].isPass){
+                    this.$message.error('璇烽�夋嫨鏈鏍搁�氳繃鐨勯攢鍞鍗�')
+                    return;
+                }
+            }
+            this.$confirm('纭瀹℃牳閫氳繃閫変腑鐨勯攢鍞鍗曞悧?', '鎻愮ず', {
+                confirmButtonText: '閫氳繃',
+                cancelButtonText: '鍙栨秷',
+                type: 'warning',
+            })
+                .then(() => {
+                checkHanderOrder(this.multipleSelection)
+                    .then((res) => {
+                    if (res.status === 200) {
+                        this.$message.success('瀹℃牳閫氳繃')
+                        this.getData()
+                    }
+                    })
+                    .catch((error) => {
+                    console.error(error)
+                    })
+                })
+                .catch(() => {})
+        } else {
+            this.$message.error('璇烽�夋嫨鑷冲皯涓�鏉¢攢鍞鍗�')
+        }
     }
-  }
+  },
 }
 </script>

--
Gitblit v1.9.3