From ef9633e0d1689fd8869170f3aa0af6c90c2e5e7f Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期三, 07 九月 2022 16:18:24 +0800
Subject: [PATCH] 1.优化项目2.搜索栏多行的变为一行可展开

---
 src/views/jcsz/zzjg.vue    |   29 
 src/views/kb/bzcj.vue      |   25 
 src/views/kb/zpcj.vue      |   25 
 src/views/zzmx/chda.vue    |   15 
 src/views/scgl/scdd.vue    |   32 
 src/views/jcsz/wldw.vue    |   16 
 src/views/scgl/gd.vue      |  255 ++-
 src/views/zlgl/gxjyjl.vue  |   43 
 src/styles/global.css      |   19 
 src/views/sbgl/djbz.vue    |   22 
 src/api/scgl.js            |   25 
 src/views/zlgl/gxjyxm.vue  |   15 
 src/views/sbgl/bybw.vue    |   29 
 src/views/sbgl/bybz.vue    |   40 
 src/views/scgl/gdplgb.vue  |  523 ++++---
 src/views/zzmx/jpgj.vue    |   69 
 src/views/zlgl/qxdy.vue    |   15 
 src/views/wlgl/kwdy.vue    |   15 
 src/views/sbgl/djbw.vue    |   17 
 src/views/scgl/gd_back.vue | 2579 +++++++++++++++++++++++++++++++++++++
 src/views/zzmx/gylx.vue    |   15 
 src/views/sbgl/sbqd.vue    |   41 
 src/views/template.vue     |   26 
 src/views/kb/zhkb.vue      |   26 
 src/utils/global.js        |   15 
 src/views/xtsz/cjgg.vue    |   19 
 src/views/jcsz/yhqd.vue    |   19 
 src/api/dzkb.js            |    8 
 src/views/jcsz/jsqd.vue    |   18 
 src/views/wlgl/ckdy.vue    |   15 
 src/views/zzmx/gxdy.vue    |   15 
 src/views/kb/dccj.vue      |   25 
 src/views/zlgl/gxjybz.vue  |   22 
 33 files changed, 3,358 insertions(+), 714 deletions(-)

diff --git a/src/api/dzkb.js b/src/api/dzkb.js
index 2e64f59..f55828e 100644
--- a/src/api/dzkb.js
+++ b/src/api/dzkb.js
@@ -114,3 +114,11 @@
     method: 'get'
   })
 }
+// 杞﹂棿鐪嬫澘鍏憡
+export function WkspReportNotice(data) {
+  return request({
+    url: 'KanBanManagerent/WkspReportNotice',
+    method: 'post',
+    params: data
+  })
+}
diff --git a/src/api/scgl.js b/src/api/scgl.js
index 69639cf..102dee4 100644
--- a/src/api/scgl.js
+++ b/src/api/scgl.js
@@ -227,3 +227,28 @@
     data
   })
 }
+
+// MES宸ュ崟鏌ヨ
+export function MesOrderBitchClosedSearch(data) {
+  return request({
+    url: 'ProductionManagement/MesOrderBitchClosedSearch',
+    method: 'get',
+    params: data
+  })
+}
+// MES宸ュ崟鎵归噺鍏抽棴鎻愪氦
+export function MesOrderBitchClosedSeave(data) {
+  return request({
+    url: 'ProductionManagement/MesOrderBitchClosedSeave',
+    method: 'post',
+    data
+  })
+}
+// MES宸ュ崟鎵归噺鍙嶅叧闂�
+export function MesOrderBitchAntiClosedSeave(data) {
+  return request({
+    url: 'ProductionManagement/MesOrderBitchAntiClosedSeave',
+    method: 'post',
+    data
+  })
+}
diff --git a/src/styles/global.css b/src/styles/global.css
index e54b711..76b28fc 100644
--- a/src/styles/global.css
+++ b/src/styles/global.css
@@ -24,7 +24,7 @@
 }
 
 /*澶撮儴鎸夐挳缁勬牱寮�*/
-.bodyTopButtonGroup{
+.bodyTopButtonGroup {
   /*padding-left: 10px;*/
   display: flex;
   background-color: #f8f8fa;
@@ -34,9 +34,17 @@
 }
 
 /*澶撮儴琛ㄥ崟缁勬牱寮�*/
-.bodyTopFormGroup{
+.bodyTopFormGroup {
   background-color: #f8f8fa;
   padding: 10px;
+}
+
+.bodyTopFormExpand {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  background-color: #eee;
+  cursor: pointer;
 }
 
 .elForm {
@@ -69,10 +77,11 @@
   justify-content: end;
 }
 
-.ellipsis{
-  text-overflow	:ellipsis;overflow:hidden;white-space:nowrap;
+.ellipsis {
+  text-overflow: ellipsis;
+  overflow: hidden;
+  white-space: nowrap;
 }
-
 
 
 /*
diff --git a/src/utils/global.js b/src/utils/global.js
index 81c59db..dedc120 100644
--- a/src/utils/global.js
+++ b/src/utils/global.js
@@ -76,5 +76,18 @@
   }
   return items
 }
-
 export default clearAllChildren
+
+// 姝e垯琛ㄨ揪寮�  缂栫爜涓嶈兘鍚湁涓枃鎴栫壒娈婂瓧绗�
+const SER_HZ = /^[a-zA-Z0-9_\-;,.<>() ]{0,}$/
+export const validateCode = (rule, value, callback) => {
+  if (!value) {
+    return callback(new Error('璇疯緭鍏ョ紪鐮�'))
+  } else {
+    if (!SER_HZ.test(value)) {
+      return callback(new Error('缂栫爜涓嶈兘鍚湁涓枃鎴栫壒娈婂瓧绗�'))
+    } else {
+      callback()
+    }
+  }
+}
diff --git a/src/views/jcsz/jsqd.vue b/src/views/jcsz/jsqd.vue
index a7c6972..9151a0f 100644
--- a/src/views/jcsz/jsqd.vue
+++ b/src/views/jcsz/jsqd.vue
@@ -277,7 +277,7 @@
           sortable="custom"
         >
           <template slot-scope="{row}">
-            <el-input v-if="row.isVisible===1" v-model="row.roletype_code" placeholder="璇疯緭鍏�" />
+            <el-input v-if="row.isVisible===1" v-model="row.roletype_code" oninput="value=value.replace(/[^0-9a-zA-Z]/g,'')" placeholder="璇疯緭鍏�" />
             <div v-else> {{ row.roletype_code }}</div>
           </template>
         </el-table-column>
@@ -581,26 +581,14 @@
 } from '@/api/jcsz'
 import { getCookie } from '@/utils/auth'
 import $ from 'jquery'
-import clearAllChildren from '@/utils/global'
+import clearAllChildren, { validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'JSQD',
   components: {
     Pagination, ImportPicker
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
     return {
       isIpad: false,
       mainHeight: 0,
@@ -637,7 +625,7 @@
       operation: '',
       dialogFormRules: {
         RoleCode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         RoleName: [
           { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/jcsz/wldw.vue b/src/views/jcsz/wldw.vue
index 8d977d4..295d125 100644
--- a/src/views/jcsz/wldw.vue
+++ b/src/views/jcsz/wldw.vue
@@ -259,25 +259,13 @@
 } from '@/api/jcsz'
 import { SeaveSearchPartner } from '@/api/ErpSyncMes'
 import ImportPicker from '@/components/ImportPicker'
-
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
+import { validateCode } from '@/utils/global'
 export default {
   name: 'WLDW',
   components: {
     Pagination, ImportPicker
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
     const validateMobile = (rule, value, callback) => {
       if (!value) {
         callback()
@@ -332,7 +320,7 @@
       operation: '',
       dialogFormRules: {
         unitcode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         unitname: [
           { required: true, message: '璇疯緭鍏ヤ緵鏂瑰悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/jcsz/yhqd.vue b/src/views/jcsz/yhqd.vue
index c0707bc..4022e6e 100644
--- a/src/views/jcsz/yhqd.vue
+++ b/src/views/jcsz/yhqd.vue
@@ -458,7 +458,7 @@
           sortable="custom"
         >
           <template slot-scope="{row}">
-            <el-input v-if="row.isVisible===1" v-model="row.group_code" placeholder="璇疯緭鍏�" />
+            <el-input v-if="row.isVisible===1" v-model="row.group_code" oninput="value=value.replace(/[^0-9a-zA-Z]/g,'')" placeholder="璇疯緭鍏�" />
             <div v-else> {{ row.group_code }}</div>
           </template>
         </el-table-column>
@@ -534,27 +534,15 @@
 } from '@/api/jcsz'
 import { getCookie } from '@/utils/auth'
 import $ from 'jquery'
-import clearAllChildren from '@/utils/global'
+import clearAllChildren, { validateCode } from '@/utils/global'
 import { MesOrderStepReportSelectUserGroup } from '@/api/scgl'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'YYQD',
   components: {
     Pagination, ImportPicker
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
     const validateMobile = (rule, value, callback) => {
       if (!value) {
         callback()
@@ -584,7 +572,6 @@
         }
       }
     }
-
     return {
       isIpad: false,
       mainHeight: 0,
@@ -637,7 +624,7 @@
       operation: '',
       dialogFormRules: {
         UserCode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         UserName: [
           { required: true, message: '璇疯緭鍏ョ敤鎴峰悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/jcsz/zzjg.vue b/src/views/jcsz/zzjg.vue
index cc2d721..1abccfb 100644
--- a/src/views/jcsz/zzjg.vue
+++ b/src/views/jcsz/zzjg.vue
@@ -204,25 +204,27 @@
 import Pagination from '@/components/Pagination'
 import { AddUpdateOrganization, DeleteOrganization, OrganizationSearch, PrentOrganization } from '@/api/jcsz'
 import { getCookie } from '@/utils/auth'
+import { validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
+// const SER_HZ = /^[\u4e00-\u9fa5]+$/
+// const SER_HZ = /^[a-zA-Z0-9_;,.<>() ]{0,}$/
 export default {
   name: 'ZZJG',
   components: {
     Pagination
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
+    // const validateName = (rule, value, callback) => {
+    //   if (!value) {
+    //     return callback(new Error('璇疯緭鍏ョ紪鐮�'))
+    //   } else {
+    //     if (!this.$SER_HZ.test(value)) {
+    //       return callback(new Error('缂栫爜涓嶈兘鍚湁涓枃鎴栫壒娈婂瓧绗�'))
+    //     } else {
+    //       callback()
+    //     }
+    //   }
+    // }
     const validateTypeCode = (rule, value, callback) => {
       if (!value) {
         return callback(new Error('璇烽�夋嫨涓婄骇'))
@@ -270,7 +272,8 @@
           { required: true, message: '璇疯緭鍏ラ�夋嫨绫诲瀷', trigger: ['blur', 'change'] }
         ],
         OrgCode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          // { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         OrgName: [
           { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/kb/bzcj.vue b/src/views/kb/bzcj.vue
index 699228a..a912fdb 100644
--- a/src/views/kb/bzcj.vue
+++ b/src/views/kb/bzcj.vue
@@ -287,7 +287,7 @@
   LineSearchBottomRightData,
   LineSearchTopLeftData,
   LineSearchTopRightData, ShopSearch,
-  ShopSearchLine
+  ShopSearchLine, WkspReportNotice
 } from '@/api/dzkb'
 import MarqueeTips from 'vue-marquee-tips'
 
@@ -334,10 +334,25 @@
     },
     // 鑾峰彇鍏憡
     getMarqueeTipsContent() {
-      this.MarqueeTipsContent = '鍚勪綅鍛樺伐浠細鏍规嵁涓婄骇鐨勯�氱煡锛岀粨鍚堟垜浼佸疄闄呮儏鍐碉紝鐜板皢20xx骞寸殑鍏冩棪鏀惧亣閫氱煡濡備笅锛氫竴銆�1鏈�1鏃ヨ嚦1鏈�3鏃ユ斁鍋囪皟浼戯紝鍏�3澶┿��1鏈�4鏃ユ寮忎笂鐝�備簩銆佽妭鍋囨棩鏈熼棿锛屽悇鐝粍瑕佷弗鏍艰惤瀹炰笂绾х殑閲嶈鎸囩ず绮剧锛屾寜鐓т笂绾х殑鍏蜂綋瑕佹眰锛岃鐪熸姄濂借惤瀹炶妭鏃ユ湡闂村�肩彮澶囧嫟宸ヤ綔锛岀‘淇濊妭鏃ユ湡闂翠紒涓氬悇椤瑰伐浣滄甯歌繍杞�倄x浼佷笟20xx骞�12鏈�28鏃�'
-      const spance = ' '.padStart(this.MarqueeTipsContent.length * 2, ' ')
-      this.MarqueeTipsContent = this.MarqueeTipsContent + spance
-      this.speed = this.MarqueeTipsContent.length / 10
+      WkspReportNotice({ shopcode: this.ShopArr.join(',') }).then(res => {
+        let contentAll = ''
+        res.data.forEach(item => {
+          contentAll += item.contents + ' '.padStart(item.contents.toString().length * 2, ' ')
+        })
+        this.MarqueeTipsContent = contentAll
+        this.speed = this.MarqueeTipsContent.length / 10
+
+        setInterval(() => {
+          WkspReportNotice({ shopcode: this.ShopArr.join(',') }).then(res1 => {
+            let contentAll = ''
+            res1.data.forEach(item => {
+              contentAll += item.contents + ' '.padStart(item.contents.toString().length * 2, ' ')
+            })
+            this.MarqueeTipsContent = contentAll
+            this.speed = this.MarqueeTipsContent.length / 10
+          })
+        }, this.speed * 1000)
+      })
     },
     // 鑾峰彇杞﹂棿缂栫爜
     async  getShopSearch() {
diff --git a/src/views/kb/dccj.vue b/src/views/kb/dccj.vue
index 154227a..3392021 100644
--- a/src/views/kb/dccj.vue
+++ b/src/views/kb/dccj.vue
@@ -287,7 +287,7 @@
   LineSearchBottomRightData,
   LineSearchTopLeftData,
   LineSearchTopRightData, ShopSearch,
-  ShopSearchLine
+  ShopSearchLine, WkspReportNotice
 } from '@/api/dzkb'
 import MarqueeTips from 'vue-marquee-tips'
 
@@ -334,10 +334,25 @@
     },
     // 鑾峰彇鍏憡
     getMarqueeTipsContent() {
-      this.MarqueeTipsContent = '鍚勪綅鍛樺伐浠細鏍规嵁涓婄骇鐨勯�氱煡锛岀粨鍚堟垜浼佸疄闄呮儏鍐碉紝鐜板皢20xx骞寸殑鍏冩棪鏀惧亣閫氱煡濡備笅锛氫竴銆�1鏈�1鏃ヨ嚦1鏈�3鏃ユ斁鍋囪皟浼戯紝鍏�3澶┿��1鏈�4鏃ユ寮忎笂鐝�備簩銆佽妭鍋囨棩鏈熼棿锛屽悇鐝粍瑕佷弗鏍艰惤瀹炰笂绾х殑閲嶈鎸囩ず绮剧锛屾寜鐓т笂绾х殑鍏蜂綋瑕佹眰锛岃鐪熸姄濂借惤瀹炶妭鏃ユ湡闂村�肩彮澶囧嫟宸ヤ綔锛岀‘淇濊妭鏃ユ湡闂翠紒涓氬悇椤瑰伐浣滄甯歌繍杞�倄x浼佷笟20xx骞�12鏈�28鏃�'
-      const spance = ' '.padStart(this.MarqueeTipsContent.length * 2, ' ')
-      this.MarqueeTipsContent = this.MarqueeTipsContent + spance
-      this.speed = this.MarqueeTipsContent.length / 10
+      WkspReportNotice({ shopcode: this.ShopArr.join(',') }).then(res => {
+        let contentAll = ''
+        res.data.forEach(item => {
+          contentAll += item.contents + ' '.padStart(item.contents.toString().length * 2, ' ')
+        })
+        this.MarqueeTipsContent = contentAll
+        this.speed = this.MarqueeTipsContent.length / 10
+
+        setInterval(() => {
+          WkspReportNotice({ shopcode: this.ShopArr.join(',') }).then(res1 => {
+            let contentAll = ''
+            res1.data.forEach(item => {
+              contentAll += item.contents + ' '.padStart(item.contents.toString().length * 2, ' ')
+            })
+            this.MarqueeTipsContent = contentAll
+            this.speed = this.MarqueeTipsContent.length / 10
+          })
+        }, this.speed * 1000)
+      })
     },
     // 鑾峰彇杞﹂棿缂栫爜
     async  getShopSearch() {
diff --git a/src/views/kb/zhkb.vue b/src/views/kb/zhkb.vue
index 4d3255d..c754437 100644
--- a/src/views/kb/zhkb.vue
+++ b/src/views/kb/zhkb.vue
@@ -287,7 +287,7 @@
   LineSearchBottomRightData,
   LineSearchTopLeftData,
   LineSearchTopRightData, ShopSearch,
-  ShopSearchLine
+  ShopSearchLine, WkspReportNotice
 } from '@/api/dzkb'
 import MarqueeTips from 'vue-marquee-tips'
 
@@ -331,13 +331,29 @@
       await this.getTableDataRoll()
       await this.getTableDataRankRoll()
       await this.getMarqueeTipsContent()
+      await this.getMarqueeTipsContent()
     },
     // 鑾峰彇鍏憡
     getMarqueeTipsContent() {
-      this.MarqueeTipsContent = '鍚勪綅鍛樺伐浠細鏍规嵁涓婄骇鐨勯�氱煡锛岀粨鍚堟垜浼佸疄闄呮儏鍐碉紝鐜板皢20xx骞寸殑鍏冩棪鏀惧亣閫氱煡濡備笅锛氫竴銆�1鏈�1鏃ヨ嚦1鏈�3鏃ユ斁鍋囪皟浼戯紝鍏�3澶┿��1鏈�4鏃ユ寮忎笂鐝�備簩銆佽妭鍋囨棩鏈熼棿锛屽悇鐝粍瑕佷弗鏍艰惤瀹炰笂绾х殑閲嶈鎸囩ず绮剧锛屾寜鐓т笂绾х殑鍏蜂綋瑕佹眰锛岃鐪熸姄濂借惤瀹炶妭鏃ユ湡闂村�肩彮澶囧嫟宸ヤ綔锛岀‘淇濊妭鏃ユ湡闂翠紒涓氬悇椤瑰伐浣滄甯歌繍杞�倄x浼佷笟20xx骞�12鏈�28鏃�'
-      const spance = ' '.padStart(this.MarqueeTipsContent.length * 2, ' ')
-      this.MarqueeTipsContent = this.MarqueeTipsContent + spance
-      this.speed = this.MarqueeTipsContent.length / 10
+      WkspReportNotice({ shopcode: this.ShopArr.join(',') }).then(res => {
+        let contentAll = ''
+        res.data.forEach(item => {
+          contentAll += item.contents + ' '.padStart(item.contents.toString().length * 2, ' ')
+        })
+        this.MarqueeTipsContent = contentAll
+        this.speed = this.MarqueeTipsContent.length / 10
+
+        setInterval(() => {
+          WkspReportNotice({ shopcode: this.ShopArr.join(',') }).then(res1 => {
+            let contentAll = ''
+            res1.data.forEach(item => {
+              contentAll += item.contents + ' '.padStart(item.contents.toString().length * 2, ' ')
+            })
+            this.MarqueeTipsContent = contentAll
+            this.speed = this.MarqueeTipsContent.length / 10
+          })
+        }, this.speed * 1000)
+      })
     },
     // 鑾峰彇杞﹂棿缂栫爜
     async  getShopSearch() {
diff --git a/src/views/kb/zpcj.vue b/src/views/kb/zpcj.vue
index 175bee3..63f9d7a 100644
--- a/src/views/kb/zpcj.vue
+++ b/src/views/kb/zpcj.vue
@@ -287,7 +287,7 @@
   LineSearchBottomRightData,
   LineSearchTopLeftData,
   LineSearchTopRightData, ShopSearch,
-  ShopSearchLine
+  ShopSearchLine, WkspReportNotice
 } from '@/api/dzkb'
 import MarqueeTips from 'vue-marquee-tips'
 
@@ -334,10 +334,25 @@
     },
     // 鑾峰彇鍏憡
     getMarqueeTipsContent() {
-      this.MarqueeTipsContent = '鍚勪綅鍛樺伐浠細鏍规嵁涓婄骇鐨勯�氱煡锛岀粨鍚堟垜浼佸疄闄呮儏鍐碉紝鐜板皢20xx骞寸殑鍏冩棪鏀惧亣閫氱煡濡備笅锛氫竴銆�1鏈�1鏃ヨ嚦1鏈�3鏃ユ斁鍋囪皟浼戯紝鍏�3澶┿��1鏈�4鏃ユ寮忎笂鐝�備簩銆佽妭鍋囨棩鏈熼棿锛屽悇鐝粍瑕佷弗鏍艰惤瀹炰笂绾х殑閲嶈鎸囩ず绮剧锛屾寜鐓т笂绾х殑鍏蜂綋瑕佹眰锛岃鐪熸姄濂借惤瀹炶妭鏃ユ湡闂村�肩彮澶囧嫟宸ヤ綔锛岀‘淇濊妭鏃ユ湡闂翠紒涓氬悇椤瑰伐浣滄甯歌繍杞�倄x浼佷笟20xx骞�12鏈�28鏃�'
-      const spance = ' '.padStart(this.MarqueeTipsContent.length * 2, ' ')
-      this.MarqueeTipsContent = this.MarqueeTipsContent + spance
-      this.speed = this.MarqueeTipsContent.length / 10
+      WkspReportNotice({ shopcode: this.ShopArr.join(',') }).then(res => {
+        let contentAll = ''
+        res.data.forEach(item => {
+          contentAll += item.contents + ' '.padStart(item.contents.toString().length * 2, ' ')
+        })
+        this.MarqueeTipsContent = contentAll
+        this.speed = this.MarqueeTipsContent.length / 10
+
+        setInterval(() => {
+          WkspReportNotice({ shopcode: this.ShopArr.join(',') }).then(res1 => {
+            let contentAll = ''
+            res1.data.forEach(item => {
+              contentAll += item.contents + ' '.padStart(item.contents.toString().length * 2, ' ')
+            })
+            this.MarqueeTipsContent = contentAll
+            this.speed = this.MarqueeTipsContent.length / 10
+          })
+        }, this.speed * 1000)
+      })
     },
     // 鑾峰彇杞﹂棿缂栫爜
     async  getShopSearch() {
diff --git a/src/views/sbgl/bybw.vue b/src/views/sbgl/bybw.vue
index 9b3616a..853645c 100644
--- a/src/views/sbgl/bybw.vue
+++ b/src/views/sbgl/bybw.vue
@@ -195,36 +195,17 @@
 
 <script>
 import Pagination from '@/components/Pagination'
-import { AddUpdateOrganization, DeleteOrganization, OrganizationSearch, PrentOrganization } from '@/api/jcsz'
-import { getCookie } from '@/utils/auth'
-import { AddUpdateDeviceMaiItem, DeleteDeviceMaiItem, DeviceCheckItemSearch, DeviceMaiItemSearch } from '@/api/sbgl'
-import ImportPicker from '@/components/ImportPicker'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
+import { AddUpdateDeviceMaiItem, DeleteDeviceMaiItem, DeviceMaiItemSearch } from '@/api/sbgl'
+import ImportPicker from '@/components/ImportPicker'
+import { validateCode } from '@/utils/global'
+
 export default {
   name: 'Zzjg',
   components: {
     Pagination, ImportPicker
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
-    const validateTypeCode = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇烽�夋嫨涓婄骇'))
-      } else {
-        callback()
-      }
-    }
     return {
       mainHeight: 0,
       tableHeight: 0,
@@ -257,7 +238,7 @@
       operation: '',
       dialogFormRules: {
         maiitemcode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         maiitemname: [
           { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/sbgl/bybz.vue b/src/views/sbgl/bybz.vue
index fca7c1e..66e8cf2 100644
--- a/src/views/sbgl/bybz.vue
+++ b/src/views/sbgl/bybz.vue
@@ -387,46 +387,26 @@
 
 <script>
 import Pagination from '@/components/Pagination'
-import { AddUpdateOrganization, DeleteOrganization, OrganizationSearch, PrentOrganization } from '@/api/jcsz'
-import { getCookie } from '@/utils/auth'
+
 import ImportPicker from '@/components/ImportPicker'
 import {
-  AddUpdateDeviceCheckStandArd, AddUpdateDeviceRepairStandArd,
-  DeleteDeviceCheckStaned, DeleteDeviceRepairStaned,
-  DeviceCheckItemSelect,
-  DeviceCheckStandArdSearch,
-  DeviceCheckStanedAssociationEqp, DeviceRepairItemSelect,
-  DeviceRepairStandArdSearch, DeviceRepairStanedAssociationEqp,
-  SaveDeviceCheckStanedAssociationEqp, SaveDeviceRepairStanedAssociationEqp,
-  ViewDeviceCheckStanedSearch, ViewDeviceRepairStanedSearch
+  AddUpdateDeviceRepairStandArd,
+  DeleteDeviceRepairStaned,
+  DeviceRepairItemSelect,
+  DeviceRepairStandArdSearch,
+  DeviceRepairStanedAssociationEqp,
+  SaveDeviceRepairStanedAssociationEqp,
+  ViewDeviceRepairStanedSearch
 } from '@/api/sbgl'
 import $ from 'jquery'
+import { validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'Zzjg',
   components: {
     Pagination, ImportPicker
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
-    const validateTypeCode = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇烽�夋嫨涓婄骇'))
-      } else {
-        callback()
-      }
-    }
     return {
       mainHeight: 0,
       tableHeight: 0,
@@ -462,7 +442,7 @@
       dialogFormRules: {
 
         code: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         name: [
           { required: true, message: '璇疯緭鍏ユ爣鍑嗗悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/sbgl/djbw.vue b/src/views/sbgl/djbw.vue
index bd3dfec..6fcfd53 100644
--- a/src/views/sbgl/djbw.vue
+++ b/src/views/sbgl/djbw.vue
@@ -234,29 +234,16 @@
 
 <script>
 import Pagination from '@/components/Pagination'
-import { AddUpdateOrganization, DeleteOrganization, OrganizationSearch, PrentOrganization } from '@/api/jcsz'
-import { getCookie } from '@/utils/auth'
 import { AddUpdateDeviceCheckItem, DeleteDeviceCheckItem, DeviceCheckItemSearch } from '@/api/sbgl'
 import ImportPicker from '@/components/ImportPicker'
+import { validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'Zzjg',
   components: {
     Pagination, ImportPicker
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
     return {
       mainHeight: 0,
       tableHeight: 0,
@@ -294,7 +281,7 @@
       operation: '',
       dialogFormRules: {
         checkitemcode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         checkitemname: [
           { required: true, message: '璇疯緭鍏ラ儴浣嶅悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/sbgl/djbz.vue b/src/views/sbgl/djbz.vue
index 2e08caa..72bfbd0 100644
--- a/src/views/sbgl/djbz.vue
+++ b/src/views/sbgl/djbz.vue
@@ -429,32 +429,14 @@
   ViewDeviceCheckStanedSearch
 } from '@/api/sbgl'
 import $ from 'jquery'
+import { validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'Zzjg',
   components: {
     Pagination, ImportPicker
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
-    const validateTypeCode = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇烽�夋嫨涓婄骇'))
-      } else {
-        callback()
-      }
-    }
     return {
       mainHeight: 0,
       tableHeight: 0,
@@ -487,7 +469,7 @@
       dialogFormRules: {
 
         code: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         name: [
           { required: true, message: '璇疯緭鍏ユ爣鍑嗗悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/sbgl/sbqd.vue b/src/views/sbgl/sbqd.vue
index 5788568..9d96565 100644
--- a/src/views/sbgl/sbqd.vue
+++ b/src/views/sbgl/sbqd.vue
@@ -67,7 +67,6 @@
                 style="width: 200px"
                 filterable
                 placeholder="璇烽�夋嫨"
-
                 @change="deviceTypeChange"
               >
                 <!--                @focus="getDeviceTypeSelect"-->
@@ -79,7 +78,7 @@
                 />
               </el-select>
             </el-form-item>
-            <el-form-item label="璁惧缁�" style=" display: flex;">
+            <el-form-item v-show="isExpandForm" label="璁惧缁�" style=" display: flex;">
               <el-select
                 v-model="form.DeviceGroup"
                 filterable
@@ -103,15 +102,22 @@
           </div>
         </el-form>
       </div>
-
-      <div class="elTableDiv">
+      <div
+        class="bodyTopFormExpand"
+        @click="isExpandForm=!isExpandForm"
+      >
+        <i
+          :class="!isExpandForm?'el-icon-arrow-down':'el-icon-arrow-up'"
+          :style="{color:'#42B983'}"
+        /></div>
+      <div class="elTableDiv" style="margin-top: 0;">
         <el-table
           :data="tableData"
           border
-          :height="tableHeight+'px'"
+          :height="isExpandForm?tableHeight:(tableHeight+40)+'px'"
           highlight-current-row
           :row-class-name="tableRowClassName"
-          :style="{width: 100+'%',height:(tableHeight-50)+'px'}"
+          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+40)+'px',}"
           :header-cell-style="this.$headerCellStyle"
           :cell-style="this.$cellStyle"
           @sort-change="sortChange"
@@ -397,7 +403,7 @@
           sortable="custom"
         >
           <template slot-scope="{row}">
-            <el-input v-if="row.isVisible===1" v-model="row.code" placeholder="璇疯緭鍏�" />
+            <el-input v-if="row.isVisible===1" v-model="row.code" oninput="value=value.replace(/[^0-9a-zA-Z]/g,'')" placeholder="璇疯緭鍏�" />
             <div v-else> {{ row.code }}</div>
           </template>
         </el-table-column>
@@ -487,7 +493,7 @@
           sortable="custom"
         >
           <template slot-scope="{row}">
-            <el-input v-if="row.isVisible===1" v-model="row.code" placeholder="璇疯緭鍏�" />
+            <el-input v-if="row.isVisible===1"v-model="row.code" oninput="value=value.replace(/[^0-9a-zA-Z]/g,'')" placeholder="璇疯緭鍏�" />
             <div v-else> {{ row.code }}</div>
           </template>
         </el-table-column>
@@ -580,27 +586,16 @@
   DeviceTypeSelectGroup,
   WorkShopSelect, WorkShopSelectLine
 } from '@/api/sbgl'
-import { handleDatetime } from '@/utils/global'
+import { handleDatetime, validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'SBQD',
   components: {
     Pagination
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
     return {
+      isExpandForm: false,
       mainHeight: 0,
       tableHeight: 0,
       form: {
@@ -642,7 +637,7 @@
       operation: '',
       dialogFormRules: {
         devicecode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         devicename: [
           { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
@@ -870,7 +865,7 @@
     getHeight() {
       this.$nextTick(() => {
         this.mainHeight = window.innerHeight - 85
-        this.tableHeight = this.mainHeight - 240
+        this.tableHeight = this.mainHeight - 250
         // if (window.innerHeight < 769) {
         //   this.tableHeight = this.tableHeight - 50
         // }
diff --git a/src/views/scgl/gd.vue b/src/views/scgl/gd.vue
index 6ba0ea3..aabe2ac 100644
--- a/src/views/scgl/gd.vue
+++ b/src/views/scgl/gd.vue
@@ -57,28 +57,21 @@
                   :label="item.name"
                   :value="item.code"
                 />
-              </el-select>            </el-form-item>
+              </el-select>
+            </el-form-item>
             <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
-              <!--              <el-select v-model="form.partcode" :popper-append-to-body="false" style="width: 200px" placeholder="璇烽�夋嫨">-->
-              <!--                <el-option-->
-              <!--                  v-for="item in OrgTypeArr"-->
-              <!--                  :key="item.code"-->
-              <!--                  :label="item.name"-->
-              <!--                  :value="item.code"-->
-              <!--                />-->
-              <!--              </el-select>-->
               <el-input v-model="form.partcode" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
-            <el-form-item label="浜у搧鍚嶇О" style=" display: flex;">
+            <el-form-item v-show="isExpandForm" label="浜у搧鍚嶇О" style=" display: flex;">
               <el-input v-model="form.partname" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
-            <el-form-item label="浜у搧瑙勬牸" style=" display: flex;">
+            <el-form-item v-show="isExpandForm" label="浜у搧瑙勬牸" style=" display: flex;">
               <el-input v-model="form.partspec" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
-            <el-form-item label="鍒涘缓浜哄憳" style=" display: flex;">
+            <el-form-item v-show="isExpandForm" label="鍒涘缓浜哄憳" style=" display: flex;">
               <el-input v-model="form.creatuser" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
-            <el-form-item label="鍒涘缓鏃堕棿" style=" display: flex;">
+            <el-form-item v-show="isExpandForm" label="鍒涘缓鏃堕棿" style=" display: flex;">
               <!--              <el-date-picker-->
               <!--                v-model="form.createdate"-->
               <!--                type="daterange"-->
@@ -99,7 +92,7 @@
               />
             </el-form-item>
           </div>
-          <div style="min-height: 100px">
+          <div>
             <div style="display: flex;align-items: start;justify-content:end;margin-top: 5px;z-index: 2">
               <el-button type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
               <el-button type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
@@ -121,17 +114,27 @@
         </el-form>
       </div>
 
-      <div class="elTableDiv">
+      <div
+        class="bodyTopFormExpand"
+        @click="isExpandForm=!isExpandForm"
+      >
+        <i
+          :class="!isExpandForm?'el-icon-arrow-down':'el-icon-arrow-up'"
+          :style="{color:'#42B983'}"
+        /></div>
+
+      <div class="elTableDiv" style="margin-top: 0">
         <el-table
           :data="tableData"
-          :height="tableHeight+'px'"
+          :height="isExpandForm?tableHeight:(tableHeight+40)+'px'"
           border
           :row-class-name="tableRowClassName"
-          :style="{width: 100+'%',height:tableHeight+'px',}"
+          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+40)+'px'}"
           highlight-current-row
           :header-cell-style="this.$headerCellStyle"
           :cell-style="this.$cellStyle"
           @sort-change="sortChange"
+          @row-click="rowClick"
         >
           <!--          <el-table-column-->
           <!--            type="selection"-->
@@ -240,7 +243,7 @@
             label="宸ヨ壓璺嚎"
             show-tooltip-when-overflow
             sortable="custom"
-            min-width="140"
+            width="180"
           >
             <template slot-scope="{row}">
               <div v-if="row.route_name">{{ row.route_name }}</div>
@@ -311,11 +314,16 @@
           >
             <template slot-scope="{row}">
               <div class="operationClass">
-                <el-tooltip class="item" effect="dark" content="宸ュ簭浠诲姟" placement="top">
+                <el-tooltip class="item" effect="dark" content="鎵撳嵃宸ュ崟" placement="top">
+                  <!--                  <i-->
+                  <!--                    class="el-icon-tickets"-->
+                  <!--                    style="cursor: pointer;color: #42b983;margin-right: 15px"-->
+                  <!--                    @click="check(row)"-->
+                  <!--                  />-->
                   <i
                     class="el-icon-tickets"
                     style="cursor: pointer;color: #42b983;margin-right: 15px"
-                    @click="check(row)"
+                    @click="handlePrint(row.wo_code)"
                   />
                 </el-tooltip>
                 <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
@@ -336,6 +344,81 @@
         popper-class="select_bottom"
         @pagination="getMesOrderSearch"
       />
+
+      <div class="elTableDiv">
+        <el-table
+          :data="tableDataDetail"
+          border
+          height="161px"
+          :row-class-name="tableRowClassName"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+        >
+          <!--          <el-table-column-->
+          <!--            width="50"-->
+          <!--            type="index"-->
+          <!--            prop="搴忓彿"-->
+          <!--            fixed-->
+          <!--          />   -->
+          <el-table-column
+            width="50"
+            prop="seq"
+            label="搴忓彿"
+            fixed
+          />
+          <el-table-column
+            prop="wo_code"
+            label="宸ュ崟缂栧彿"
+          />
+
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+          />
+          <el-table-column
+            prop="partname"
+            label="浜у搧鍚嶇О"
+          />
+
+          <el-table-column
+            label="宸ュ簭缂栫爜"
+            prop="partcode"
+          />
+          <el-table-column
+            label="宸ュ簭鍚嶇О"
+            prop="partname"
+          />
+          <el-table-column
+            label="浠诲姟鏁伴噺"
+            prop="plan_qty"
+          />
+          <el-table-column
+            label="鍚堟牸鏁伴噺"
+            prop="good_qty"
+          />
+          <el-table-column
+            label="涓嶈壇鏁伴噺"
+            prop="ng_qty"
+          />
+          <el-table-column
+            label="鎿嶄綔"
+            width="120"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-tooltip class="item" effect="dark" content="鎵撳嵃宸ュ簭" placement="top">
+                  <i
+                    class="el-icon-tickets"
+                    style="cursor: pointer;color: #42b983;margin-right: 15px"
+                    @click="supplementSmallClick(row)"
+                  />
+                </el-tooltip>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
     </div>
     <!--鏂板娲惧彂瀵硅瘽妗�-->
     <el-dialog
@@ -759,20 +842,20 @@
                 />
               </el-select>
             </el-form-item>
-            <el-form-item v-show="isExpand" label="璁㈠崟缂栧彿" style=" display: flex;">
+            <el-form-item v-show="isExpandDialog" label="璁㈠崟缂栧彿" style=" display: flex;">
               <el-input v-model="sourceForm.erpordercode" placeholder="璇疯緭鍏�" style="width: 200px" />
             </el-form-item>
-            <el-form-item v-show="isExpand" label="浜у搧缂栫爜" style=" display: flex;">
+            <el-form-item v-show="isExpandDialog" label="浜у搧缂栫爜" style=" display: flex;">
               <el-input v-model="sourceForm.partcode" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
 
-            <el-form-item v-show="isExpand" label="浜у搧鍚嶇О" style=" display: flex;">
+            <el-form-item v-show="isExpandDialog" label="浜у搧鍚嶇О" style=" display: flex;">
               <el-input v-model="sourceForm.partname" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
-            <el-form-item v-show="isExpand" label="浜у搧瑙勬牸" style=" display: flex;">
+            <el-form-item v-show="isExpandDialog" label="浜у搧瑙勬牸" style=" display: flex;">
               <el-input v-model="sourceForm.partspec" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
-            <el-form-item v-show="isExpand" label="鍒涘缓浜哄憳" style=" display: flex;">
+            <el-form-item v-show="isExpandDialog" label="鍒涘缓浜哄憳" style=" display: flex;">
               <el-input v-model="sourceForm.creatuser" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
 
@@ -785,14 +868,14 @@
           </div>
         </el-form>
       </div>
-      <!--      <el-tooltip  :content="!isExpand?'鐐瑰嚮灞曠ず鏇村':'鏀惰捣'" placement="bottom">-->
+      <!--      <el-tooltip  :content="!isExpandDialog?'鐐瑰嚮灞曠ず鏇村':'鏀惰捣'" placement="bottom">-->
       <div
         style="display:flex;justify-content: center;
           align-items:center;background-color:#eee;cursor: pointer"
-        @click="isExpand=!isExpand"
+        @click="isExpandDialog=!isExpandDialog"
       >
         <i
-          :class="!isExpand?'el-icon-arrow-down':'el-icon-arrow-up'"
+          :class="!isExpandDialog?'el-icon-arrow-down':'el-icon-arrow-up'"
           :style="{color:'#42B983'}"
         /></div>
       <!--      </el-tooltip>-->
@@ -997,36 +1080,36 @@
             <el-form
               ref="formApprove"
               :model="formApprove"
-              label-width="100px"
+              label-width="80px"
               inline
               style="display: flex;justify-content: space-between"
             >
               <div class="elForm">
-                <el-form-item label="宸ュ崟缂栧彿锛�" class="formContent">
+                <el-form-item label="宸ュ崟缂栧彿:" class="formContent">
                   {{ formApprove.mesordercode }}
                 </el-form-item>
-                <el-form-item label="婧愬崟鍗曞彿锛�" class="formContent">
+                <el-form-item label="婧愬崟鍗曞彿:" class="formContent">
                   {{ formApprove.m_po }}
                 </el-form-item>
-                <el-form-item label="浜у搧缂栫爜锛�" class="formContent">
+                <el-form-item label="浜у搧缂栫爜:" class="formContent">
                   {{ formApprove.partcode }}
                 </el-form-item>
-                <el-form-item label="浜у搧鍚嶇О锛�" class="formContent">
+                <el-form-item label="浜у搧鍚嶇О:" class="formContent">
                   {{ formApprove.partname }}
                 </el-form-item>
-                <el-form-item label="浜у搧瑙勬牸锛�" class="formContent">
+                <el-form-item label="浜у搧瑙勬牸:" class="formContent">
                   {{ formApprove.partspec }}
                 </el-form-item>
-                <el-form-item label="宸ュ崟鏁伴噺锛�" class="formContent">
+                <el-form-item label="宸ュ崟鏁伴噺:" class="formContent">
                   {{ formApprove.plan_qty }}
                 </el-form-item>
-                <el-form-item label="宸ヨ壓璺嚎锛�" class="formContent">
+                <el-form-item label="宸ヨ壓璺嚎:" class="formContent">
                   {{ formApprove.routename }}
                 </el-form-item>
-                <el-form-item label="鎵撳嵃浜哄憳锛�" class="formContent">
+                <el-form-item label="鎵撳嵃浜哄憳:" class="formContent">
                   {{ username }}
                 </el-form-item>
-                <el-form-item label="鎵撳嵃鏃堕棿锛�" class="formContent">
+                <el-form-item label="鎵撳嵃鏃堕棿:" class="formContent">
                   {{ formApprove.lm_date }}
                 </el-form-item>
               </div>
@@ -1295,8 +1378,14 @@
             fixed="right"
           >
             <template slot-scope="{row}">
-              <div v-if="row.enable==='Y'"><svg-icon icon-class="circleYes" style="margin-right: 2px" />鏄�</div>
-              <div v-if="row.enable==='N'"><svg-icon icon-class="circleNo" style="margin-right: 2px" />鍚�</div>
+              <div v-if="row.enable==='Y'">
+                <svg-icon icon-class="circleYes" style="margin-right: 2px" />
+                鏄�
+              </div>
+              <div v-if="row.enable==='N'">
+                <svg-icon icon-class="circleNo" style="margin-right: 2px" />
+                鍚�
+              </div>
             </template>
           </el-table-column>
         </el-table>
@@ -1322,31 +1411,19 @@
   SelectRouteStep
 } from '@/api/scgl'
 import { InventoryFileAssociationRoute, PartSelect, SaveInventoryFile } from '@/api/zzmx'
-import { handleDatetime, handleDatetime2 } from '@/utils/global'
+import { handleDatetime, handleDatetime2, validateCode } from '@/utils/global'
 import { getCookie } from '@/utils/auth'
 import { MesOrderPrintSearch1, PrintOrder } from '@/api/utils'
 import { urlAddRandomNo, webapp_ws_ajax_run, webapp_ws_autoupdate } from '@/utils/grwebapp'
 import QRCode from 'qrcodejs2'
 import $ from 'jquery'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'GD',
   components: {
     Pagination
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
     return {
       isIpad: false,
       mainHeight: 0,
@@ -1422,7 +1499,7 @@
           { required: true, message: '璇烽�夋嫨浜у搧淇℃伅', trigger: ['blur', 'change'] }
         ],
         mesordercode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         mesqty: [
           { required: true, message: '璇疯緭鍏ュ伐鍗曟暟閲�', trigger: ['blur', 'change'] }
@@ -1535,7 +1612,7 @@
       },
       sourceFormTotal: 10,
       radioSelectedId: '',
-      isExpand: false, // 鏄惁寮犲紑锛岄粯璁や笉灞曞紑
+      isExpandDialog: false, // 瀵硅瘽妗嗚〃鍗曟槸鍚﹀睍寮�锛岄粯璁や笉灞曞紑
       dialogVisibleRoute: false,
       dialogFormRoute: {
         projectName: '', // 浜у搧鍚嶇О
@@ -1544,7 +1621,9 @@
       },
       defaultroute_code: '', // 榛樿宸ヨ壓璺嚎閫変腑鍊�
       defaultroute_codeArr: '', // 榛樿宸ヨ壓璺嚎鏁扮粍
-      projectTableData: []// 璁惧鍒楄〃
+      projectTableData: [], // 璁惧鍒楄〃
+      isExpandForm: false, // 琛ㄥ崟鏄惁灞曞紑锛岄粯璁や笉灞曞紑
+      tableDataDetail: []// 鐐瑰嚮宸ュ崟琛ㄧ殑琛� 鏄剧ず璇︾粏淇℃伅
     }
   },
   created() {
@@ -1910,7 +1989,8 @@
     getHeight() {
       this.$nextTick(() => {
         this.mainHeight = window.innerHeight - 85
-        this.tableHeight = this.mainHeight - 260
+        // this.tableHeight = this.mainHeight - 250
+        this.tableHeight = this.mainHeight - 420
         if (window.innerHeight < 769) {
           this.tableHeight = this.tableHeight - 20
         }
@@ -1930,14 +2010,14 @@
       this.dialogVisibleSearch = false
     },
     // 澶勭悊鎵撳嵃
-    handlePrint() {
+    handlePrint(wo_code) {
       // const number = Math.random() * Math.random()
       // this.number = number === 0 ? (10 + Math.random()) : number
       // console.log(number)
 
       const data2 = {
         username: getCookie('admin'),
-        mesordercode: this.dialogForm.mesordercode
+        mesordercode: wo_code || this.dialogForm.mesordercode
       }
       MesOrderPrintSearch1(data2).then(res2 => {
         if (res2.code === '200') {
@@ -2043,17 +2123,21 @@
     // 琛ユ墦灏忔爣绛�
     supplementSmallClick(row) {
       // let obj = {}
-
-      this.taskTableData.forEach((item, index) => {
+      console.log(row, 21)
+      // this.taskTableData.forEach((item, index) => {
+      this.tableDataDetail.forEach((item, index) => {
         if (item.seq === row.seq) {
           console.log(item)
           this.qrForm = {
-            qrvalue: item.seq === this.taskTableData.length ? item.wo_code + ';' + item.stepcode : item.wo_code + ';' + this.taskTableData[item.seq].stepcode,
-            startqty: item.seq === this.taskTableData.length ? item.plan_qty : this.taskTableData[item.seq].plan_qty,
+            // qrvalue: item.seq === this.taskTableData.length ? item.wo_code + ';' + item.stepcode : item.wo_code + ';' + this.taskTableData[item.seq].stepcode,
+            qrvalue: item.seq === this.tableDataDetail.length ? item.wo_code + ';' + item.stepcode : item.wo_code + ';' + this.tableDataDetail[item.seq].stepcode,
+            // startqty: item.seq === this.taskTableData.length ? item.plan_qty : this.taskTableData[item.seq].plan_qty,
+            startqty: item.seq === this.tableDataDetail.length ? item.plan_qty : this.tableDataDetail[item.seq].plan_qty,
             wo_code: item.wo_code,
             partcode: item.partcode,
             partname: item.partname,
-            nextstepname: item.seq === this.taskTableData.length ? item.stepname : this.taskTableData[item.seq].stepname,
+            // nextstepname: item.seq === this.taskTableData.length ? item.stepname : this.taskTableData[item.seq].stepname,
+            nextstepname: item.seq === this.tableDataDetail.length ? item.stepname : this.tableDataDetail[item.seq].stepname,
             operator: getCookie('username'),
             operatorTime: handleDatetime2(new Date())
           }
@@ -2100,7 +2184,7 @@
 
       this.dialogVisibleSource = true
     },
-    async   getErpOrderSearch() {
+    async getErpOrderSearch() {
       let tempDate2 = this.sourceForm.paystartdate
       if (tempDate2.length > 0) {
         tempDate2 = handleDatetime(tempDate2[0]) + '~' + handleDatetime(tempDate2[1])
@@ -2164,7 +2248,7 @@
       this.sourceForm.creatuser = ''
       this.sourceForm.createdate = ''
 
-      this.isExpand = false
+      this.isExpandDialog = false
       this.sourceTableData = []
     },
     dialogVisibleSourceBack() {
@@ -2273,6 +2357,17 @@
         this.defaultroute_code = ''
       }
       this.defaultroute_codeArr = this.dialogFormRoute.routeOperationArr.filter(item => item.isSelected2)
+    },
+    //  琛岀偣鍑讳簨浠�
+    async   rowClick(row, event, column) {
+      console.log(row, event, column)
+      console.log(row.wo_code, event, column)
+      const { data: res } = await SearchWorkStep({ wo_code: row.wo_code })
+      this.tableDataDetail = res
+    },
+    // 鎵撳嵃宸ュ崟
+    printOrder() {
+
     }
   }
 }
@@ -2339,17 +2434,20 @@
     }
   }
 }
+
 .dialogVisibleRoute {
   ::v-deep .el-dialog__body {
     padding: 20px 20px !important;
   }
 }
-.defaultroute_code ::v-deep .el-input__suffix-inner{
+
+.defaultroute_code ::v-deep .el-input__suffix-inner {
   display: flex;
   align-items: center;
   justify-content: center;
   margin-top: -3px;
 }
+
 .el-date-editor {
   font-size: 14px;
 }
@@ -2396,9 +2494,10 @@
 }
 
 //.elTableDiv {
-  ::v-deep .el-radio__label {
-    display: none;
-  }
+::v-deep .el-radio__label {
+  display: none;
+}
+
 //}
 
 .el-table::before {
@@ -2439,19 +2538,23 @@
 <style lang="scss" scoped>
 $main_color: #42b983;
 
-::v-deep  .el-range-input{
+::v-deep .el-range-input {
   font-size: 14px !important;
 }
-::v-deep .el-range__icon{
+
+::v-deep .el-range__icon {
   line-height: 28px !important;
 }
-::v-deep .el-range-separator{
+
+::v-deep .el-range-separator {
   line-height: 28px !important;
 }
-::v-deep .el-range-input{
-  font-size: 14px ;
+
+::v-deep .el-range-input {
+  font-size: 14px;
 }
-::v-deep .el-range-separator{
+
+::v-deep .el-range-separator {
   display: flex;
   justify-content: center;
   align-items: center;
diff --git a/src/views/scgl/gd_back.vue b/src/views/scgl/gd_back.vue
new file mode 100644
index 0000000..985f5fc
--- /dev/null
+++ b/src/views/scgl/gd_back.vue
@@ -0,0 +1,2579 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <div style="display: flex">
+          <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+          <el-button type="primary" icon="el-icon-connection" @click="send('send')">娲惧彂</el-button>
+        </div>
+
+        <el-button icon="el-icon-switch-button" @click="orderClose">鍏抽棴宸ュ崟</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="80px"
+          inline
+          style="display: flex;justify-content: space-between"
+        >
+          <div class="elForm">
+            <el-form-item label="璁㈠崟鐘舵��" style=" display: flex;">
+              <el-select
+                v-model="form.mesorderstus"
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+                filterable
+                @change="erporderstusChange"
+              >
+                <el-option
+                  v-for="item in erporderstusArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="璁㈠崟缂栧彿" style=" display: flex;">
+              <el-input v-model="form.mesordercode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="婧愬崟鍗曞彿" style="display: flex;">
+              <el-input v-model="form.sourceorder" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item label="鍗曟嵁绫诲瀷" style=" display: flex;">
+              <el-select
+                v-model="form.ordertype"
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <!--            @change="mesordertypeChange"-->
+                <el-option
+                  v-for="item in ordertypeArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.partcode" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="浜у搧鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.partname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="浜у搧瑙勬牸" style=" display: flex;">
+              <el-input v-model="form.partspec" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鍒涘缓浜哄憳" style=" display: flex;">
+              <el-input v-model="form.creatuser" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鍒涘缓鏃堕棿" style=" display: flex;">
+              <!--              <el-date-picker-->
+              <!--                v-model="form.createdate"-->
+              <!--                type="daterange"-->
+              <!--                :clearable="false"-->
+              <!--                range-separator="~"-->
+              <!--                start-placeholder="寮�濮嬫棩鏈�"-->
+              <!--                end-placeholder="缁撴潫鏃ユ湡"-->
+              <!--                size="mini"-->
+              <!--              />-->
+              <el-date-picker
+                v-model="form.createdate"
+                type="date"
+                size="mini"
+                :clearable="false"
+                class="dateMini"
+                format="yyyy-MM-dd"
+                placeholder="閫夋嫨鏃ユ湡"
+              />
+            </el-form-item>
+          </div>
+          <div>
+            <div style="display: flex;align-items: start;justify-content:end;margin-top: 5px;z-index: 2">
+              <el-button type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+              <el-button type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+            </div>
+            <!--            <div v-if="!isIpad" style="display: flex;align-items: start; margin-top: 15px;z-index: 2">-->
+            <!--              <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>-->
+            <!--              <el-button type="primary" icon="el-icon-connection" @click="send('send')">娲惧彂</el-button>-->
+            <!--              <el-button type="primary" icon="el-icon-switch-button">璁㈠崟鍏抽棴</el-button>-->
+            <!--            </div>-->
+            <!--            <div v-if="isIpad" style="display: flex;flex-direction: column;align-items: end">-->
+            <!--              <div style="display: flex;margin: 10px 0">-->
+            <!--                <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>-->
+            <!--                <el-button type="primary" icon="el-icon-connection" @click="send('send')">娲惧彂</el-button>-->
+            <!--              </div>-->
+            <!--              <el-button type="primary" icon="el-icon-switch-button">璁㈠崟鍏抽棴</el-button>-->
+            <!--            </div>-->
+
+          </div>
+        </el-form>
+      </div>
+
+      <div
+        class="bodyTopFormExpand"
+        @click="isExpandForm=!isExpandForm"
+      >
+        <i
+          :class="!isExpandForm?'el-icon-arrow-down':'el-icon-arrow-up'"
+          :style="{color:'#42B983'}"
+        /></div>
+
+      <div class="elTableDiv" style="margin-top: 0">
+        <el-table
+          :data="tableData"
+          :height="isExpandForm?tableHeight:(tableHeight+40)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+40)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <!--          <el-table-column-->
+          <!--            type="selection"-->
+          <!--            width="50"-->
+          <!--          />-->
+          <el-table-column
+            width="50"
+            fixed
+          >
+            <template slot-scope="{row}">
+              <el-radio
+                v-model="radioSelected"
+                :label="row.wo_code"
+                style="color: transparent;padding-left: 10px;"
+                @change.native="getCurrentRow(row.wo_code)"
+              />
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="RowNum"
+            width="50"
+            label="搴忓彿"
+            fixed
+          />
+          <el-table-column
+            prop="status"
+            label="璁㈠崟鐘舵��"
+            sortable="custom"
+            width="110"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.status==='NEW'">鏂板伐鍗�</div>
+              <!--              <div v-if="row.status==='CREATING'">鎵ц涓�</div>-->
+              <!--              <div v-if="row.status==='CREATED'">宸插叧闂�</div>-->
+              <div v-if="row.status==='ALLO'">宸叉淳鍙�</div>
+              <div v-if="row.status==='START'">寮�宸�</div>
+              <div v-if="row.status==='CLOSED'">瀹屽伐</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wo_code"
+            label="宸ュ崟缂栧彿"
+            sortable="custom"
+            min-width="160"
+          />
+          <el-table-column
+            prop="m_po"
+            label="婧愬崟鍗曞彿"
+            sortable="custom"
+            min-width="160"
+          />
+          <el-table-column
+            prop="wotype"
+            label="鍗曟嵁绫诲瀷"
+            sortable="custom"
+            min-width="120"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.wotype==='PO'">鏍囧噯宸ュ崟</div>
+              <div v-else-if="row.wotype==='FO'">鎶ュ簾琛ュ崟</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+            sortable="custom"
+            min-width="120"
+          />
+          <el-table-column
+            prop="partname"
+            min-width="150"
+            label="浜у搧鍚嶇О"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partspec"
+            label="浜у搧瑙勬牸"
+            sortable="custom"
+            width="110"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.partspec">{{ row.partspec }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="plan_qty"
+            label="宸ュ崟鏁�"
+            sortable="custom"
+            width="100"
+          />
+          <el-table-column
+            prop="wkshp_name"
+            label="鐢熶骇杞﹂棿"
+            sortable="custom"
+            width="120"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.wkshp_name">{{ row.wkshp_name }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="route_name"
+            label="宸ヨ壓璺嚎"
+            show-tooltip-when-overflow
+            sortable="custom"
+            width="180"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.route_name">{{ row.route_name }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            prop="route_name"-->
+          <!--            label="鍏宠仈宸ヨ壓璺嚎"-->
+          <!--            min-width="110"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <i v-if="row.route_name" class="el-icon-share" @click="routeClick(row)" />-->
+          <!--              <i v-else style="color:rgb(180 ,181, 185)" class="el-icon-share" @click="routeClick(row)" />-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <el-table-column
+            prop="plan_startdate"
+            label="璁″垝寮�濮嬫椂闂�"
+            sortable="custom"
+            width="160"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.plan_startdate">{{ row.plan_startdate }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="plan_enddate"
+            label="璁″垝缁撴潫鏃堕棿"
+            sortable="custom"
+            width="160"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.plan_enddate">{{ row.plan_enddate }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="piroque"
+            label="宸ュ崟绛夌骇"
+            sortable="custom"
+            width="120"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.piroque==='1'">鐗圭骇</div>
+              <div v-if="row.piroque==='2'">绱ф��</div>
+              <div v-if="row.piroque==='3'">姝e父</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="lm_user"
+            label="鍒涘缓浜哄憳"
+            sortable="custom"
+            width="120"
+          />
+          <el-table-column
+            prop="lm_date"
+            label="鍒涘缓鏃堕棿"
+            width="160"
+            sortable="custom"
+          />
+          <el-table-column
+            label="鎿嶄綔"
+            width="120"
+            fixed="right"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-tooltip class="item" effect="dark" content="宸ュ簭浠诲姟" placement="top">
+                  <i
+                    class="el-icon-tickets"
+                    style="cursor: pointer;color: #42b983;margin-right: 15px"
+                    @click="check(row)"
+                  />
+                </el-tooltip>
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                  <i class="el-icon-delete" @click="del(row)" />
+                </el-tooltip>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <!--鍒嗛〉-->
+      <pagination
+        :total="total"
+        :page.sync="form.page"
+        :limit.sync="form.rows"
+        align="right"
+        layout="total,prev, pager, next,sizes"
+        popper-class="select_bottom"
+        @pagination="getMesOrderSearch"
+      />
+
+    </div>
+    <!--鏂板娲惧彂瀵硅瘽妗�-->
+    <el-dialog
+      :title="operation==='add'?'鏂板':'娲惧彂'"
+      :visible.sync="dialogVisible"
+      width="840px"
+      top="15vh"
+      :close-on-click-modal="false"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <el-form
+        ref="dialogForm"
+        inline
+        :rules="dialogFormRules"
+        :model="dialogForm"
+        label-width="110px"
+      >
+        <el-form-item
+          label="璁㈠崟鐘舵��"
+          prop="mesorderstus"
+        >
+          <el-select
+            v-model="dialogForm.mesorderstus"
+            disabled
+            filterable
+            :popper-append-to-body="false"
+            style="width: 200px"
+            placeholder="璇烽�夋嫨"
+          >
+            <el-option
+              v-for="item in erporderstusArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="宸ュ崟缂栧彿" prop="mesordercode">
+          <el-input v-model="dialogForm.mesordercode" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <div style="display: flex">
+          <el-form-item label="宸ュ崟绫诲瀷" prop="mesorderstus">
+            <el-select
+              v-model="dialogForm.ordertype"
+              :popper-append-to-body="false"
+              style="width: 200px"
+              :disabled="operation!=='add'"
+              placeholder="璇烽�夋嫨"
+              @change="mesordertypeChange"
+            >
+
+              <el-option
+                v-for="item in ordertypeArr"
+                :key="item.code"
+                :label="item.name"
+                :value="item.code"
+              />
+            </el-select>
+          </el-form-item>
+          <div style="display: flex;flex-wrap: nowrap">
+            <el-form-item label="婧愬崟鍗曞彿">
+              <el-input
+                v-model="dialogForm.sourceorder"
+                :disabled="dialogForm.ordertype==='PO'"
+                style="width: 172px"
+              />
+            </el-form-item>
+            <el-button
+              type="primary"
+              style="padding: 0 10px;margin-left: -8px;margin-top: 3px"
+              class="el-icon-search"
+              :disabled="operation!=='add'||dialogForm.ordertype==='PO'"
+              @click="mesordertsourcesearchclick"
+            />
+          </div>
+        </div>
+        <el-form-item label="宸ュ崟鏁伴噺" prop="mesqty">
+          <el-input
+            v-model="dialogForm.mesqty"
+            oninput="value=value.replace(/[^0-9.]/g,'')"
+            :disabled="operation!=='add'"
+            style="width: 200px"
+          />
+        </el-form-item>
+        <el-form-item
+          v-if="operation==='add'"
+          label="浜у搧鍚嶇О"
+          prop="partcode"
+        >
+          <el-select
+            v-model="dialogForm.partcode"
+            filterable
+            :disabled="operation!=='add'"
+            :popper-append-to-body="false"
+            style="width: 200px"
+            placeholder="璇烽�夋嫨"
+            @change="partcodeChangeDialog"
+          >
+            <el-option
+              v-for="item in partArr"
+              :key="item.partcode"
+              :label="item.partname"
+              :value="item.partcode"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item v-if="operation!=='add'" label="浜у搧鍚嶇О" prop="partname">
+          <el-input v-model="dialogForm.partname" disabled style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="浜у搧缂栫爜">
+          <el-input v-model="dialogForm.partcode" disabled style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="浜у搧瑙勬牸" prop="partspec">
+          <el-input v-model="dialogForm.partspec" disabled style="width: 200px" />
+        </el-form-item>
+        <div style="display: flex">
+          <div style="display: flex;flex-wrap: nowrap">
+            <el-form-item label="宸ヨ壓璺嚎" prop="routecode">
+              <el-select
+                v-model="dialogForm.routecode"
+                filterable
+                :disabled="dialogForm.partcode===''"
+                :popper-append-to-body="false"
+                style="width: 172px"
+                placeholder="璇烽�夋嫨"
+                @change="routecodeChange"
+              >
+                <el-option
+                  v-for="item in routeArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-button
+              type="primary"
+              style="padding: 0 10px;margin-left: -8px;margin-top:3px"
+              class="el-icon-search"
+              @click="searchClick"
+            />
+            <!--            :disabled="dialogForm.routecode===''"-->
+
+          </div>
+          <el-form-item label="鐢熶骇杞﹂棿" prop="wkshopcode">
+            <el-select
+              v-model="dialogForm.wkshopcode"
+              filterable
+              :popper-append-to-body="false"
+              style="width: 200px;"
+              placeholder="璇烽�夋嫨"
+              :disabled="dialogForm.routecode===''"
+            >
+              <el-option
+                v-for="item in wkshopArr"
+                :key="item.org_code"
+                :label="item.org_name"
+                :value="item.org_code"
+              />
+            </el-select>
+          </el-form-item>
+        </div>
+        <el-form-item label="璁″垝寮�濮嬫椂闂�" prop="planstartdate">
+          <el-date-picker
+            v-model="dialogForm.planstartdate"
+            type="date"
+            :clearable="false"
+            value-format="yyyy-MM-dd"
+            style="width: 200px"
+            placeholder="閫夋嫨鏃ユ湡"
+          />
+        </el-form-item>
+        <el-form-item label="璁″垝瀹屾垚鏃堕棿" prop="planenddate">
+          <el-date-picker
+            v-model="dialogForm.planenddate"
+            type="date"
+            :clearable="false"
+            value-format="yyyy-MM-dd"
+            style="width: 200px"
+            placeholder="閫夋嫨鏃ユ湡"
+          />
+        </el-form-item>
+        <el-form-item label="宸ュ崟绛夌骇" prop="orderlev">
+          <el-select
+            v-model="dialogForm.orderlev"
+            filterable
+            :popper-append-to-body="false"
+            style="width: 200px"
+            placeholder="璇烽�夋嫨"
+          >
+            <el-option
+              v-for="item in orderlevArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+      </el-form>
+
+      <!--        宸ヨ壓璺嚎鏀惧ぇ闀滃璇濇-->
+      <el-dialog
+        title="宸ヨ壓璺嚎"
+        :visible.sync="dialogVisibleSearch"
+        width="840px"
+        top="20vh"
+        class="dialogVisibleSearch"
+        append-to-body
+        :close-on-click-modal="false"
+      >
+        <el-table
+          :data="searchTableData"
+          border
+          :row-class-name="tableRowClassName"
+          height="300"
+          style="width: 100%;"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+        >
+          <el-table-column
+            prop="seq"
+            label="搴忓彿"
+            width="50"
+            fixed
+          />
+          <el-table-column
+            prop="stepcode"
+            label="宸ュ簭缂栫爜"
+          />
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+          />
+          <el-table-column
+            prop="flwtype"
+            label="宸ュ簭绫诲瀷"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.flwtype==='W'">澶栧崗</div>
+              <div v-if="row.flwtype==='Z'">鑷埗</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="descr"
+            label="宸ュ簭鎻忚堪"
+            fixed="right"
+          />
+        </el-table>
+      </el-dialog>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <!--          <el-button v-if="operation==='add'" type="primary" @click="dialogVisibleConfirmPreview('add')">棰勮</el-button>-->
+          <el-button type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!-- 宸ュ簭浠诲姟瀵硅瘽妗�-->
+    <el-dialog
+      title="宸ュ簭浠诲姟"
+      :visible.sync="dialogVisibleTask"
+      width="840px"
+      top="15vh"
+      class="dialogVisibleSearch"
+      :close-on-click-modal="false"
+      @close="dialogVisibleTaskClose"
+    >
+      <el-button
+        style="margin-bottom: 15px"
+        type="primary"
+        @click="supplementClick"
+      >琛ユ墦
+      </el-button>
+      <el-table
+        :data="taskTableData"
+        border
+        :row-class-name="tableRowClassName"
+        height="300"
+        style="width: 100%;"
+        highlight-current-row
+        :header-cell-style="this.$headerCellStyle"
+        :cell-style="this.$cellStyle"
+      >
+        <el-table-column
+          prop="seq"
+          width="50"
+          label="搴忓彿"
+          fixed
+        />
+        <el-table-column
+          prop="wo_code"
+          label="宸ュ崟缂栧彿"
+          width="200"
+        />
+        <el-table-column
+          prop="stepcode"
+          label="宸ュ簭缂栫爜"
+        />
+        <el-table-column
+          prop="stepname"
+          label="宸ュ簭鍚嶇О"
+        />
+        <!--        <el-table-column-->
+        <!--          prop="flwtype"-->
+        <!--          label="宸ュ簭绫诲瀷"-->
+        <!--        >-->
+        <!--          <template slot-scope="{row}">-->
+        <!--            <div v-if="row.flwtype==='W'">澶栧崗</div>-->
+        <!--            <div v-if="row.flwtype==='Z'">鑷埗</div>-->
+        <!--          </template>-->
+        <!--        </el-table-column>-->
+        <!--        <el-table-column-->
+        <!--          prop="descr"-->
+        <!--          label="宸ュ簭鎻忚堪"-->
+        <!--        />-->
+        <el-table-column
+          prop="plan_qty"
+          label="浠诲姟鏁伴噺"
+        />
+        <el-table-column
+          prop="good_qty"
+          label="鍚堟牸鏁伴噺"
+        />
+        <el-table-column
+          prop="ng_qty"
+          label="涓嶈壇鏁伴噺"
+        />
+        <el-table-column
+          label="鎿嶄綔"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button type="text" style="padding: 0;" @click="supplementSmallClick(row)">琛ユ墦</el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button @click="dialogVisibleBack">杩� 鍥�</el-button>
+          <!--          <el-button type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
+    <!-- 婧愬崟鍗曞彿瀵硅瘽妗�-->
+    <el-dialog
+      title="婧愬崟鍗曞彿"
+      :visible.sync="dialogVisibleSource"
+      width="1200px"
+      top="5vh"
+      class="dialogVisibleSearch"
+      :close-on-click-modal="false"
+      @close="dialogVisibleSourceClose"
+    >
+      <div class="bodyTopFormGroup" style="animation: move 1s linear">
+        <el-form
+          ref="sourceForm"
+          :model="sourceForm"
+          label-width="100px"
+          inline
+          style="display: flex;justify-content: space-between"
+        >
+          <div class="elForm">
+
+            <el-form-item
+
+              label="棰勮寮�宸ユ椂闂�"
+              label-width="100px"
+              style=" display: flex;font-size: 14px;margin-top: 3px"
+            >
+              <el-date-picker
+                v-model="sourceForm.paystartdate"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;display: flex;line-height: 34px;height: 34px;font-size: 14px!important;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+              <!--              :picker-options="expireTimeOption"-->
+
+            </el-form-item>
+            <el-form-item
+              label="棰勮瀹屽伐鏃堕棿"
+              label-width="100px"
+              style=" display: flex;font-size: 14px;margin-top: 3px"
+            >
+              <el-date-picker
+                v-model="sourceForm.payenddate"
+                type="daterange"
+                :clearable="false"
+                class="timeMini"
+                range-separator="~"
+                start-placeholder="寮�濮嬫棩鏈�"
+                style="width: 200px;display: flex;line-height: 34px ;height: 34px ;font-size: 14px !important;"
+                end-placeholder="缁撴潫鏃ユ湡"
+                size="mini"
+              />
+            </el-form-item>
+            <el-form-item label="璁㈠崟鐘舵��" style=" display: flex;">
+              <el-select
+                v-model="sourceForm.erporderstus"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in erporderstusArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item v-show="isExpandDialog" label="璁㈠崟缂栧彿" style=" display: flex;">
+              <el-input v-model="sourceForm.erpordercode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandDialog" label="浜у搧缂栫爜" style=" display: flex;">
+              <el-input v-model="sourceForm.partcode" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+
+            <el-form-item v-show="isExpandDialog" label="浜у搧鍚嶇О" style=" display: flex;">
+              <el-input v-model="sourceForm.partname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandDialog" label="浜у搧瑙勬牸" style=" display: flex;">
+              <el-input v-model="sourceForm.partspec" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandDialog" label="鍒涘缓浜哄憳" style=" display: flex;">
+              <el-input v-model="sourceForm.creatuser" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+
+          </div>
+          <div>
+            <div style="display: flex;align-items: start;margin-top: 5px;z-index: 2;justify-content: end">
+              <el-button type="primary" icon="el-icon-search" @click="sourceSearch">鏌ヨ</el-button>
+              <el-button type="info" icon="el-icon-refresh" @click="sourceReset">閲嶇疆</el-button>
+            </div>
+          </div>
+        </el-form>
+      </div>
+      <!--      <el-tooltip  :content="!isExpandDialog?'鐐瑰嚮灞曠ず鏇村':'鏀惰捣'" placement="bottom">-->
+      <div
+        style="display:flex;justify-content: center;
+          align-items:center;background-color:#eee;cursor: pointer"
+        @click="isExpandDialog=!isExpandDialog"
+      >
+        <i
+          :class="!isExpandDialog?'el-icon-arrow-down':'el-icon-arrow-up'"
+          :style="{color:'#42B983'}"
+        /></div>
+      <!--      </el-tooltip>-->
+      <div class="elTableDiv">
+        <el-table
+          :data="sourceTableData"
+          :height="(tableHeight-100)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:(tableHeight-100)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sourceSortChange"
+        >
+          <!--          <el-table-column-->
+          <!--            type="selection"-->
+          <!--            width="50"-->
+          <!--          />-->
+          <el-table-column
+            width="50"
+            fixed
+          >
+            <template slot-scope="{row}">
+              <el-radio
+                v-model="radioSelectedId"
+                :label="row.id"
+                style="color: transparent;padding-left: 10px;"
+                @change.native="getCurrentRowSource(row.id)"
+              />
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="RowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="status"
+            label="璁㈠崟鐘舵��"
+            sortable="custom"
+            width="110"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.status==='NEW'">鏂拌鍗�</div>
+              <div v-if="row.status==='CREATING'">閮ㄥ垎涓嬭揪</div>
+              <div v-if="row.status==='CREATED'">鍏ㄩ儴涓嬭揪</div>
+              <div v-if="row.status==='CLOSED'">宸插叧闂�</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wo"
+            label="璁㈠崟缂栧彿"
+            sortable="custom"
+            min-width="150"
+          />
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+            sortable="custom"
+            min-width="150"
+          />
+          <el-table-column
+            prop="partname"
+            label="浜у搧鍚嶇О"
+            sortable="custom"
+            min-width="150"
+          />
+          <el-table-column
+            prop="partspec"
+            label="浜у搧瑙勬牸"
+            sortable="custom"
+            min-width="110"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.partspec">{{ row.partspec }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="qty"
+            label="璁㈠崟鏁伴噺"
+            width="150"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="relse_qty"
+            label="宸蹭笅鍗曟暟閲�"
+            width="150"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="wkshp_name"
+            label="鐢熶骇杞﹂棿"
+            sortable="custom"
+            width="150"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.wkshp_name">{{ row.wkshp_name }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="planstartdate"
+            label="棰勮寮�宸ユ椂闂�"
+            sortable="custom"
+            width="130"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.planstartdate">{{ row.planstartdate.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="planenddate"
+            label="棰勮瀹屽伐鏃堕棿"
+            sortable="custom"
+            width="130"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.planenddate">{{ row.planenddate.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="createuser"
+            label="鍒涘缓浜哄憳"
+            sortable="custom"
+            width="150"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.createuser">{{ row.createuser }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="createdate"
+            label="鍒涘缓鏃堕棿"
+            width="130"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.createdate">{{ row.createdate.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            label="鎿嶄綔"-->
+          <!--            fixed="right"-->
+          <!--            width="80"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div class="operationClass">-->
+          <!--                <el-tooltip class="item" effect="dark" content="涓嬭揪" placement="top">-->
+          <!--                  &lt;!&ndash;                <el-button type="text" @click="edit('edit',row)">涓嬭揪</el-button>&ndash;&gt;-->
+          <!--                  <i-->
+          <!--                    class="el-icon-bottom"-->
+          <!--                    style="color:#42b983;cursor: pointer;margin-left: 5px"-->
+          <!--                    @click="edit('edit',row)"-->
+          <!--                  />-->
+          <!--                </el-tooltip>-->
+          <!--              </div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+        </el-table>
+      </div>
+      <!--鍒嗛〉-->
+      <pagination
+        :total="sourceFormTotal"
+        :page.sync="sourceForm.page"
+        :limit.sync="sourceForm.rows"
+        align="right"
+        layout="total,prev, pager, next,sizes"
+        popper-class="select_bottom"
+        @pagination="getErpOrderSearch"
+      />
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button @click="dialogVisibleSourceBack">杩� 鍥�</el-button>
+          <el-button type="primary" @click="dialogVisibleSourceConfirm">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--鎵撳嵃棰勮瀵硅瘽妗�  澶ф爣绛�-->
+    <el-dialog
+      title=""
+      :visible.sync="dialogVisibleApprove"
+      width="812px"
+      class="dialogVisibleConfirmClass"
+      append-to-body
+      :close-on-click-modal="false"
+      @close="dialogVisibleConfirmClose"
+    >
+      <!-- 瑕佹墦鍗扮殑鍖哄煙 -->
+      <div id="printMe" style="padding: 30px">
+        <div style="font-size: 26px; text-align: center">娴佺▼鍗�</div>
+
+        <div style="display: flex;justify-content: space-around;margin-top: 20px; position: relative;">
+          <div style="width: 78%">
+            <el-form
+              ref="formApprove"
+              :model="formApprove"
+              label-width="100px"
+              inline
+              style="display: flex;justify-content: space-between"
+            >
+              <div class="elForm">
+                <el-form-item label="宸ュ崟缂栧彿锛�" class="formContent">
+                  {{ formApprove.mesordercode }}
+                </el-form-item>
+                <el-form-item label="婧愬崟鍗曞彿锛�" class="formContent">
+                  {{ formApprove.m_po }}
+                </el-form-item>
+                <el-form-item label="浜у搧缂栫爜锛�" class="formContent">
+                  {{ formApprove.partcode }}
+                </el-form-item>
+                <el-form-item label="浜у搧鍚嶇О锛�" class="formContent">
+                  {{ formApprove.partname }}
+                </el-form-item>
+                <el-form-item label="浜у搧瑙勬牸锛�" class="formContent">
+                  {{ formApprove.partspec }}
+                </el-form-item>
+                <el-form-item label="宸ュ崟鏁伴噺锛�" class="formContent">
+                  {{ formApprove.plan_qty }}
+                </el-form-item>
+                <el-form-item label="宸ヨ壓璺嚎锛�" class="formContent">
+                  {{ formApprove.routename }}
+                </el-form-item>
+                <el-form-item label="鎵撳嵃浜哄憳锛�" class="formContent">
+                  {{ username }}
+                </el-form-item>
+                <el-form-item label="鎵撳嵃鏃堕棿锛�" class="formContent">
+                  {{ formApprove.lm_date }}
+                </el-form-item>
+              </div>
+            </el-form>
+          </div>
+          <div
+            id="qrCode"
+            style="width: 22%;height:97px;
+            margin-top: 20px;
+            overflow-y: scroll;display: flex;
+            justify-content: center;
+            position: relative;"
+          >
+            <!--            <div id="qrCode0" ref="qrCodeDiv0" />-->
+          </div>
+          <div style="background-color: #fff;width: 20px;height:120px; position: absolute;right: 0" />
+          <div
+            style="z-index: 10;background-color:transparent;width: 120px;height:120px; position: absolute;right: 21px"
+          />
+        </div>
+
+        <!--          <div style="width:100%;height: 30px;border-bottom: 1px solid #eee;margin-bottom: 20px" />-->
+        <el-table
+          id="table"
+          :data="tableDataPrint"
+          border
+          class="tableDataPrint"
+          :header-cell-style="{ background: '#c0c0c0',textAlign:'center',color:'#000',borderColor:'#000'}"
+          :cell-style="{textAlign: 'center',color:'#000',borderColor:'#000'}"
+          style="width: 100%;margin-top: 20px;text-align: center;border-color: #000"
+        >
+          <el-table-column
+            id="column0"
+            prop="seq"
+            label="宸ュ簭鍙�"
+            width="70"
+            align="center"
+          />
+          <el-table-column
+            id="column1"
+            prop="stepqrcode"
+            label="宸ュ簭浜岀淮鐮�"
+            width="100"
+            align="center"
+          >
+            <template slot-scope="{row}">
+              <div :id="'qrCode'+row.seq" :ref="'qrCodeDiv'+row.seq" class="tableColumn" />
+            </template>
+          </el-table-column>
+          <el-table-column
+            id="column2"
+            prop="stepname"
+            label="宸ュ簭"
+            width="120"
+            align="center"
+          />
+          <el-table-column
+            id="column3"
+            prop="plan_qty"
+            label="鍔犲伐鏁伴噺"
+            width="100"
+            align="center"
+          />
+          <el-table-column
+            id="column4"
+            prop="good_qty"
+            width="100"
+            align="center"
+            label="鍚堟牸鏁伴噺"
+          />
+          <el-table-column
+            id="column5"
+            width="100"
+            prop="ng_qty"
+            align="center"
+            label="涓嶈壇鏁伴噺"
+          />
+          <el-table-column
+            id="column6"
+            prop="desc"
+            align="center"
+            width="120"
+            label="澶囨敞"
+          />
+        </el-table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button @click="dialogVisibleBackPreview">杩� 鍥�</el-button>
+          <!--            <el-button v-if="operation==='add'" type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+          <!--            <el-button type="primary" @click="dialogVisibleConfirm">纭� 瀹�/鎵� 鍗�</el-button>-->
+          <el-button v-print="printObj" type="primary">鎵� 鍗�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--鎵撳嵃棰勮椤甸潰  灏忔爣绛�-->
+    <el-dialog
+      title="棰勮"
+      :visible.sync="dialogVisible2"
+      width="1140"
+      top="10vh"
+      :close-on-click-modal="false"
+      @close="dialogVisible2Close"
+    >
+      <!-- 瑕佹墦鍗扮殑鍖哄煙 -->
+      <div id="printMe2" style="padding: 30px;">
+        <div
+          style="display: flex;width: 280px;height: 150px;border: 1px solid #000;text-align: center;font-size: 10px;"
+        >
+
+          <div style="width: 90px;display: flex;flex-direction: column;border-right: 1px solid #000">
+            <div
+              style="display: flex;height: 90px;border-bottom:1px solid #000;
+              justify-content: center;align-items: center;position: relative"
+            >
+              <div id="qrCode2" ref="qrCodeDiv2" style="overflow-y: hidden;height:60px;position: absolute;left: 14px;" />
+            </div>
+            <div
+              style="display: flex;height: 30px;justify-content: flex-start;border-bottom:1px solid #000;align-items: center"
+            >
+              <div style="margin-left: 5px;width: 28px">鏁伴噺:</div>
+              {{ qrForm.startqty }}
+            </div>
+            <div style="display: flex;height: 30px;justify-content: flex-start;align-items: center">
+              <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div>
+              {{ qrForm.operator }}
+            </div>
+          </div>
+
+          <div style="width:190px;display: flex;flex-direction: column">
+            <div
+              style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center;text-align: left"
+            >
+              <div style="width: 60px;margin-left: 5px;">宸ュ崟缂栧彿:</div>
+              <div>{{ qrForm.wo_code }}</div>
+            </div>
+            <div
+              style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: flex-start;align-items: center ;text-align: left"
+            >
+              <div style="width: 60px;margin-left: 5px;">浜у搧缂栫爜:</div>
+              <div>{{ qrForm.partcode }}</div>
+            </div>
+            <div
+              style="display: flex;height: 20%;border-bottom:1px solid #000 ;justify-content: flex-start;align-items: center;text-align: left"
+            >
+              <div style="width:60px;margin-left: 5px;">浜у搧鍚嶇О:</div>
+              <div>{{ qrForm.partname }}</div>
+            </div>
+            <div
+              style="display: flex;height: 20%;border-bottom:1px solid #000 ;justify-content: flex-start;align-items: center;text-align: left"
+            >
+              <div style="width:60px;margin-left: 5px;">涓嬮亾宸ュ簭:</div>
+              <div>{{ qrForm.nextstepname }}</div>
+            </div>
+            <div style="display: flex;height: 20%;justify-content: flex-start;align-items: center;text-align: left">
+              <div style="width: 60px;margin-left: 5px;">澶勭悊鏃堕棿:</div>
+              <div>{{ qrForm.operatorTime }}</div>
+            </div>
+
+          </div>
+
+        </div>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button @click="dialogVisible2 = false">鍙� 娑�</el-button>
+          <el-button v-print="printObj2" type="primary">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--    宸ヨ壓璺嚎瀵硅瘽妗�-->
+    <el-dialog
+      :close-on-click-modal="false"
+      title="鍏宠仈宸ヨ壓璺嚎"
+      :visible.sync="dialogVisibleRoute"
+      width="800px"
+      top="10vh"
+      :fullscreen="isIpad"
+      class="dialogVisibleRoute"
+      @closed="handleCloseRoute"
+      @close="handleCloseRoute"
+    >
+      <div>
+        <i class="el-icon-s-comment" style="color:#42b983;" /> 浜у搧鍚嶇О锛歿{ dialogFormRoute.projectName }}
+      </div>
+      <el-divider />
+      <div style="margin-bottom: 10px">
+        <i class="el-icon-s-operation" style="color:#42b983;" /> 宸ヨ壓璺嚎闆嗗悎
+      </div>
+
+      <div class="myCheckboxGroup">
+        <div
+          v-for="item in dialogFormRoute.routeOperationArr"
+          :key="item.code"
+          :style="{border:item.isSelected1?'1px solid #42b983':'1px solid #eee'}"
+          class="myCheckbox"
+          @click="myCheckboxClick(item)"
+        >
+          <input
+            class="myCheckboxInput"
+            type="checkbox"
+            :value="item.code"
+            :name="item.name"
+            :style="{color:item.isSelected2?'#42b983':'#fff'}"
+            @click="myCheckboxInputClick(item)"
+          >{{ item.name }}
+          <!--            鐖跺瓙鐐瑰嚮浜嬩欢涓嶅奖鍝�-->
+          <!--            onClick="event.cancelBubble = true"-->
+        </div>
+      </div>
+
+      <el-divider />
+      <div>
+        <i class="el-icon-s-operation" style="color:#42b983;" /> 榛樿宸ヨ壓璺嚎
+      </div>
+      <div style="margin-top: 20px">
+        <el-select
+          v-model="defaultroute_code"
+          filterable
+          style="width: 200px;"
+          placeholder="璇烽�夋嫨"
+          class="defaultroute_code"
+        >
+          <el-option
+            v-for="item in defaultroute_codeArr"
+            :key="item.code"
+            :label="item.name"
+            :value="item.code"
+          />
+        </el-select>
+      </div>
+      <el-divider />
+      <div style="margin-bottom: 10px">
+        <i class="el-icon-s-operation" style="color:#42b983;" /> 宸ュ簭鍒楄〃
+      </div>
+      <div style="overflow-y: scroll">
+        <el-table
+          ref="projectTableData"
+          :data="projectTableData"
+          border
+          height="280"
+          :row-class-name="tableRowClassName"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+        >
+          <el-table-column
+            prop="seq"
+            width="100"
+            label="宸ュ簭搴忓彿"
+            fixed
+          />
+          <el-table-column
+            prop="stepcode"
+            label="宸ュ簭缂栫爜"
+          />
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+          />
+          <el-table-column
+            prop="enable"
+            label="鍚敤鐘舵��"
+            fixed="right"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.enable==='Y'">
+                <svg-icon icon-class="circleYes" style="margin-right: 2px" />
+                鏄�
+              </div>
+              <div v-if="row.enable==='N'">
+                <svg-icon icon-class="circleNo" style="margin-right: 2px" />
+                鍚�
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button @click="routeDialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button type="primary" @click="routeDialogVisibleConfirm">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import {
+  AddUpdateMesOrder,
+  ClosedMesOrder,
+  DeleteMesOrder, ErpOrderSearch,
+  MesOrderSearch, PartSelectRoute, RouteSelectWkshop, SearchWorkStep,
+  SelectRouteStep
+} from '@/api/scgl'
+import { InventoryFileAssociationRoute, PartSelect, SaveInventoryFile } from '@/api/zzmx'
+import { handleDatetime, handleDatetime2, validateCode } from '@/utils/global'
+import { getCookie } from '@/utils/auth'
+import { MesOrderPrintSearch1, PrintOrder } from '@/api/utils'
+import { urlAddRandomNo, webapp_ws_ajax_run, webapp_ws_autoupdate } from '@/utils/grwebapp'
+import QRCode from 'qrcodejs2'
+import $ from 'jquery'
+
+export default {
+  name: 'GD',
+  components: {
+    Pagination
+  },
+  data() {
+    return {
+      isIpad: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      username: '',
+      form: {
+        mesorderstus: '', // 宸ュ崟鐘舵�佺爜
+        mesordercode: '', // 宸ュ崟缂栧彿
+        partcode: '', // 浜у搧缂栫爜
+        ordertype: '', // ordertype
+        sourceorder: '', // 婧愬崟鍗曞彿
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+        creatuser: '', // 鍒涘缓浜哄憳
+        createdate: '', // 鍒涘缓鏃堕棿
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      erporderstusArr: [
+        { code: 'NEW', name: '鏂板伐鍗�' },
+        // { code: 'CREATING', name: '鎵ц涓�' },
+        // { code: 'CREATED', name: '宸插叧闂�' }
+        { code: 'ALLO', name: '宸叉淳鍙�' },
+        { code: 'START', name: '寮�宸�' },
+        { code: 'CLOSED', name: '瀹屽伐' }
+      ],
+      total: 10,
+      radioSelected: '',
+      tableData: [],
+      dialogVisible: false,
+      dialogForm: {
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+        wkshopname: '', // 鐢熶骇杞﹂棿鍚嶇О
+        routename: '', // 宸ヨ壓璺嚎鍚嶇О
+
+        mesorderstus: 'NEW', // 宸ュ崟鐘舵�佺爜
+        mesordercode: '', // 宸ュ崟缂栧彿
+        partcode: '', // 浜у搧缂栫爜
+
+        ordertype: 'PO', // 宸ュ崟绫诲瀷
+        sourceorder: '', // 婧愬崟鍗曞彿
+        mesqty: '', // 宸ュ崟鏁伴噺
+
+        routecode: '', // 宸ヨ壓璺嚎缂栫爜
+        wkshopcode: '', // 鐢熶骇杞﹂棿缂栫爜
+        planstartdate: '', // 璁″垝寮�濮嬫椂闂�
+        planenddate: '', // 璁″垝瀹屾垚鏃堕棿
+        orderlev: '', // 宸ュ崟绛夌骇
+
+        OperType: '' // 鎿嶄綔绫诲瀷
+      },
+      ordertypeArr: [// 宸ュ崟绫诲瀷
+        { code: 'PO', name: '鏍囧噯宸ュ崟' },
+        { code: 'FO', name: '鎶ュ簾琛ュ崟' }
+      ],
+      partArr: [], // 浜у搧淇℃伅
+      wkshopArr: [], // 鐢熶骇杞﹂棿鏁扮粍
+      routeArr: [], // 宸ヨ壓璺嚎鏁扮粍
+      orderlevArr: [
+        { code: 1, name: '鐗圭骇' },
+        { code: 2, name: '绱ф��' },
+        { code: 3, name: '姝e父' }
+      ], // 宸ュ崟绛夌骇鏁扮粍
+      operation: '',
+      dialogFormRules: {
+        mesorderstus: [
+          { required: true, message: '璇烽�夋嫨璁㈠崟鐘舵��', trigger: ['blur', 'change'] }
+        ],
+        partcode: [
+          { required: true, message: '璇烽�夋嫨浜у搧淇℃伅', trigger: ['blur', 'change'] }
+        ],
+        mesordercode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        mesqty: [
+          { required: true, message: '璇疯緭鍏ュ伐鍗曟暟閲�', trigger: ['blur', 'change'] }
+        ],
+        wkshopcode: [
+          { required: true, message: '璇烽�夋嫨鐢熶骇杞﹂棿', trigger: ['blur', 'change'] }
+        ],
+        routecode: [
+          { required: true, message: '璇烽�夋嫨宸ヨ壓璺嚎', trigger: ['blur', 'change'] }
+        ],
+        planstartdate: [
+          { required: true, message: '璇烽�夋嫨寮�濮嬫椂闂�', trigger: ['blur', 'change'] }
+        ],
+        planenddate: [
+          { required: true, message: '璇烽�夋嫨缁撴潫鏃堕棿', trigger: ['blur', 'change'] }
+        ],
+        orderlev: [
+          { required: true, message: '璇烽�夋嫨宸ュ崟绛夌骇', trigger: ['blur', 'change'] }
+        ]
+
+      },
+      dialogVisibleTask: false,
+      taskTableData: [],
+
+      dialogVisibleSearch: false,
+      searchTableData: [],
+      dialogVisibleApprove: false,
+      tableDataPrint: [], // 鎵撳嵃椤甸潰鍐呭
+      printObj: {
+        id: 'printMe',
+        popTitle: '鎵撳嵃妯℃澘',
+        preview: false,
+        extraHead: '<meta http-equiv="Content-Language" content="zh-cn"/>',
+        closeCallback(vue) { // 鍏抽棴鎵撳嵃鐨勫洖璋冧簨浠讹紙鏃犳硶纭畾鐐瑰嚮鐨勬槸纭杩樻槸鍙栨秷锛�
+          console.log('11212', vue)
+          // vue.dialogVisible = false
+          vue.dialogVisibleApprove = false
+        },
+        beforeOpenCallback(vue) {
+          vue.printLoading = true
+          console.log('鎵撳紑涔嬪墠')
+          console.log()
+        },
+        openCallback(vue) {
+          vue.printLoading = false
+          console.log('鎵ц浜嗘墦鍗�')
+        }
+      },
+
+      formApprove: {
+        m_po: '', // 婧愬崟鍗曞彿
+        mesordercode: '',
+        partcode: '',
+        partname: '',
+        partspec: '',
+        plan_qty: '',
+        routename: '',
+        lm_date: ''
+      },
+      number: '',
+      dialogVisible2: false,
+      printObj2: {
+        id: 'printMe2',
+        popTitle: '鎵撳嵃妯℃澘',
+        preview: false,
+        extraHead: '<meta http-equiv="Content-Language" content="zh-cn"/>',
+        closeCallback(vue) { // 鍏抽棴鎵撳嵃鐨勫洖璋冧簨浠讹紙鏃犳硶纭畾鐐瑰嚮鐨勬槸纭杩樻槸鍙栨秷锛�
+          console.log('11212', vue)
+          // vue.dialogVisible = false
+          vue.dialogVisible2 = false
+          // vue.dialogVisible = false
+        },
+        beforeOpenCallback(vue) {
+          vue.printLoading = true
+          console.log('鎵撳紑涔嬪墠')
+          console.log()
+        },
+        openCallback(vue) {
+          vue.printLoading = false
+          console.log('鎵ц浜嗘墦鍗�')
+        }
+      },
+      qrForm: {
+        qrvalue: '',
+        startqty: '',
+        wo_code: '',
+        partcode: '',
+        partname: '',
+        nextstepname: '',
+        operator: '', // 鎿嶄綔浜�
+        operatorTime: ''// 鎿嶄綔鏃堕棿
+      },
+      dialogVisibleSource: false,
+      sourceTableData: [],
+      sourceForm: {
+        erporderstus: '', // 璁㈠崟鐘舵�佺爜
+        erpordercode: '', // 璁㈠崟缂栧彿
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+        creatuser: '', // 鍒涘缓浜哄憳
+        // paystartdate: '', // 浜や粯鏃堕棿
+        paystartdate: '', // 棰勮寮�宸ユ椂闂�
+        payenddate: '', // 棰勮瀹屽伐鏃堕棿
+        createdate: '', // 鍒涘缓鏃堕棿
+        prop: 'createdate', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      sourceFormTotal: 10,
+      radioSelectedId: '',
+      isExpandDialog: false, // 瀵硅瘽妗嗚〃鍗曟槸鍚﹀睍寮�锛岄粯璁や笉灞曞紑
+      dialogVisibleRoute: false,
+      dialogFormRoute: {
+        projectName: '', // 浜у搧鍚嶇О
+        projectCode: '', // 浜у搧浠g爜
+        routeOperationArr: [] // 宸ヨ壓璺嚎闆嗗悎
+      },
+      defaultroute_code: '', // 榛樿宸ヨ壓璺嚎閫変腑鍊�
+      defaultroute_codeArr: '', // 榛樿宸ヨ壓璺嚎鏁扮粍
+      projectTableData: [], // 璁惧鍒楄〃
+      isExpandForm: false// 琛ㄥ崟鏄惁灞曞紑锛岄粯璁や笉灞曞紑
+    }
+  },
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+    // webapp_urlprotocol_startup()
+    // webapp_ws_autoupdate(true)
+    this.username = getCookie('username')
+  },
+  methods: {
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    },
+    handleRequest() {
+      this.getMesOrderSearch().then(res => {
+        if (res.code === '200') {
+          this.getSelect()
+        }
+      })
+    },
+    async getMesOrderSearch() {
+      // let tempDate = this.form.createdate
+      // if (tempDate.length > 0) {
+      //   tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      // }
+
+      const data = {
+        mesorderstus: this.form.mesorderstus, // 宸ュ崟鐘舵�佺爜
+        mesordercode: this.form.mesordercode, // 宸ュ崟缂栧彿
+        partcode: this.form.partcode, // 浜у搧缂栫爜
+        partname: this.form.partname, // 浜у搧鍚嶇О
+        partspec: this.form.partspec, // 浜у搧瑙勬牸
+        creatuser: this.form.creatuser, // 鍒涘缓浜哄憳
+        sourceorder: this.form.sourceorder, // 婧愬崟鍗曞彿
+        ordertype: this.form.ordertype, // 鍗曟嵁绫诲瀷
+        createdate: this.form.createdate.toString().length > 0 ? handleDatetime(this.form.createdate) : '', // 鍒涘缓鏃堕棿
+        prop: this.form.prop, // 鎺掑簭瀛楁
+        order: this.form.order, // 鎺掑簭瀛楁
+        page: this.form.page, // 绗嚑椤�
+        rows: this.form.rows // 姣忛〉澶氬皯鏉�
+      }
+      const res = await MesOrderSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+
+      // this.form.createdate = tempDate
+      return { code: res.code }
+    },
+    async getSelect() {
+      // 鑾峰彇浜у搧淇℃伅
+      const { data: res1 } = await PartSelect()
+      this.partArr = res1
+    },
+    // 璁㈠崟鐘舵�佹敼鍙樻椂
+    erporderstusChange(val) {
+      this.form.mesorderstus = val
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    sortChange({ column, prop, order }) {
+      if (order === 'descending') {
+        order = 'desc'
+      } else if (order === 'ascending') {
+        order = 'asc'
+      } else {
+        order = 'desc'
+      }
+      this.form.order = order
+      this.form.prop = prop
+      this.getMesOrderSearch()
+    },
+    sourceSortChange({ column, prop, order }) {
+      if (order === 'descending') {
+        order = 'desc'
+      } else if (order === 'ascending') {
+        order = 'asc'
+      } else {
+        order = 'desc'
+      }
+      this.sourceForm.order = order
+      this.sourceForm.prop = prop
+      this.getErpOrderSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getMesOrderSearch()
+    },
+
+    // 閲嶇疆
+    reset(val) {
+      this.form.mesorderstus = ''
+      this.form.mesordercode = ''
+      this.form.partcode = ''
+      this.form.partname = ''
+      this.form.partspec = ''
+      this.form.paydate = ''
+      this.form.creatuser = ''
+      this.form.sourceorder = ''
+      this.form.creatuser = ''
+      this.form.ordertype = ''
+      this.getMesOrderSearch()
+    },
+    // 鍗曢�夋閫変腑鑾峰彇褰撳墠琛屼俊鎭�
+    getCurrentRow(wo_code) {
+      this.radioSelected = wo_code
+    },
+    // 鏂板鎸夐挳
+    async add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+      this.dialogForm.planstartdate = handleDatetime(new Date())
+      this.dialogForm.planenddate = handleDatetime(new Date())
+      this.dialogForm.orderlev = 3
+    },
+
+    // 浜у搧淇℃伅鍊兼敼鍙�
+    async partcodeChange(val) {
+      console.log(val, 22)
+      const { data: res } = await PartSelectRoute({ partcode: val })
+      this.routeArr = res
+
+      let flag = false
+      this.routeArr.forEach(item => {
+        if (item.code === item.default_route) {
+          this.dialogForm.routecode = item.code
+          this.routecodeChange(this.dialogForm.routecode)
+          flag = true
+        }
+      })
+      if (!flag) {
+        this.dialogForm.routecode = ''
+      }
+
+      this.dialogForm.wkshopcode = ''
+    },
+    // 宸ヨ壓璺嚎鍊兼敼鍙�
+    async routecodeChange(val) {
+      const data = {
+        partcode: this.dialogForm.partcode,
+        routecode: this.dialogForm.routecode
+      }
+      // 鑾峰彇鐢熶骇杞﹂棿鏁扮粍
+      const { data: res2 } = await RouteSelectWkshop(data)
+      this.wkshopArr = res2
+      this.dialogForm.wkshopcode = ''
+    },
+    // 宸ュ簭浠诲姟
+    async check(row) {
+      const { data: res } = await SearchWorkStep({ wo_code: row.wo_code })
+      this.taskTableData = res
+
+      if (this.taskTableData.length === 0) {
+        return this.$message.info('鏃犵敓浜т换鍔℃暟鎹紒')
+      }
+      this.dialogForm.mesordercode = res[0].wo_code
+      this.dialogVisibleTask = true
+    },
+    dialogVisibleBack() {
+      this.dialogVisibleTask = false
+    },
+    // 娲惧彂
+    send(operation) {
+      if (this.radioSelected.length < 1) {
+        return this.$message.info('璇峰厛閫夋嫨宸ュ崟锛�')
+      }
+
+      const row = this.tableData.find(item => item.wo_code === this.radioSelected)
+
+      if (row.status !== 'NEW') {
+        return this.$message.info('姝ゅ伐鍗曚负闈炴柊宸ュ崟鐘舵�侊紝涓嶅彲娲惧彂锛�')
+      }
+      this.operation = operation
+      this.dialogVisible = true
+      this.$nextTick(() => {
+        this.dialogForm.mesorderstus = row.status
+        this.dialogForm.mesordercode = row.wo_code
+        this.dialogForm.partcode = row.partcode
+        this.partcodeChange(row.partcode)
+        this.dialogForm.partname = row.partname
+        this.dialogForm.mesqty = row.plan_qty
+        this.dialogForm.partspec = row.partspec
+        this.dialogForm.sourceorder = row.m_po
+        this.dialogForm.ordertype = row.wotype
+
+        // this.routecodeChange(this.dialogForm.routecode)
+
+        this.dialogForm.planstartdate = row.plan_startdate !== null ? row.plan_startdate : handleDatetime(new Date())
+        this.dialogForm.planenddate = row.plan_enddate !== null ? row.plan_enddate : handleDatetime(new Date())
+        this.dialogForm.orderlev = row.piroque !== null ? row.piroque : 3 // 绛夌骇
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      if (row.status === 'START' || row.status === 'CLOSED') {
+        return this.$message.info('姝ゅ伐鍗曚笉鍙垹闄わ紒')
+      }
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        console.log(row, 1)
+        const data = {
+          souceid: row.sourceid,
+          wocode: row.wo_code,
+          m_po: row.m_po,
+          orderqty: row.plan_qty
+        }
+        DeleteMesOrder(data).then(res => {
+          if (res.code === '200') {
+            this.$message.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getMesOrderSearch()
+          }
+        })
+      }).catch(() => {
+        this.$message.info('宸插彇娑堝垹闄�')
+      })
+    },
+    // 宸ュ崟鍏抽棴浜嬩欢
+    orderClose() {
+      if (this.radioSelected.length < 1) {
+        return this.$message.info('璇峰厛閫夋嫨宸ュ崟锛�')
+      }
+      console.log('宸ュ崟鍏抽棴浜嬩欢')
+      this.tableData.forEach(item => {
+        if (item.wo_code === this.radioSelected) {
+          if (item.status === 'START') {
+            return this.$message.info('褰撳墠宸ュ崟鏈畬宸ワ紝鏃犳硶鍏抽棴锛�')
+          } else if (item.status === 'CLOSED') {
+            return this.$message.info('宸ュ崟宸插叧闂紝鏃犻渶鍐嶅叧闂紒')
+          } else {
+            this.$confirm('鏄惁纭鍏抽棴宸ュ崟?', '鎻愮ず', {
+              confirmButtonText: '纭畾',
+              cancelButtonText: '鍙栨秷',
+              type: 'warning'
+            }).then(() => {
+              const data = {
+                wocode: item.wo_code,
+                m_po: item.m_po
+              }
+              ClosedMesOrder(data).then(res => {
+                if (res.code === '200') {
+                  this.$message.success('宸ュ崟鍏抽棴鎴愬姛!')
+                  this.getMesOrderSearch()
+                  // this.radioSelected = ''
+                }
+              })
+            }).catch(() => {
+              this.$message.info('宸插彇娑堝叧闂紒')
+            })
+          }
+        }
+      })
+    },
+    // 瀵硅瘽妗嗕骇鍝佷俊鎭�兼敼鍙�
+    partcodeChangeDialog(val) {
+      console.log(val)
+      this.dialogForm.partname = this.partArr.find(item => item.partcode === val).partname
+      this.dialogForm.partcode = this.partArr.find(item => item.partcode === val).partcode
+      this.dialogForm.partspec = this.partArr.find(item => item.partcode === val).partspec
+      // const { data: res } = await PartSelectRpute({ partcode: val })
+      // this.routeArr = res
+      // this.dialogForm.routecode = ''
+      this.partcodeChange(val)
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.partname = '' // 浜у搧鍚嶇О
+      this.dialogForm.partspec = '' // 浜у搧瑙勬牸
+      this.dialogForm.wkshopname = '' // 鐢熶骇杞﹂棿鍚嶇О
+      this.dialogForm.routename = '' // 宸ヨ壓璺嚎鍚嶇О
+
+      this.dialogForm.mesorderstus = 'NEW' // 宸ュ崟鐘舵�佺爜
+      this.dialogForm.mesordercode = '' // 宸ュ崟缂栧彿
+      this.dialogForm.partcode = '' // 浜у搧缂栫爜
+      this.dialogForm.mesqty = '' // 宸ュ崟鏁伴噺
+
+      this.dialogForm.ordertype = 'PO' // 宸ュ崟绫诲瀷
+      this.dialogForm.sourceorder = '' // 婧愬崟鍗曞彿
+
+      this.dialogForm.routecode = '' // 宸ヨ壓璺嚎缂栫爜
+      this.dialogForm.wkshopcode = '' // 鐢熶骇杞﹂棿缂栫爜
+      this.dialogForm.planstartdate = '' // 璁″垝寮�濮嬫椂闂�
+      this.dialogForm.planenddate = '' // 璁″垝瀹屾垚鏃堕棿
+      this.dialogForm.orderlev = '' // 宸ュ崟绛夌骇
+
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          if (this.dialogForm.ordertype === 'FO' && this.dialogForm.sourceorder.toString().trim().length <= 0) {
+            return this.$message.info('婧愬崟鍗曞彿涓嶈兘涓虹┖锛�')
+          }
+          const data = {
+            // partname: this.dialogForm.partname, // 浜у搧鍚嶇О
+            // partspec: this.dialogForm.partspec, // 浜у搧瑙勬牸
+            // wkshopname: this.dialogForm.wkshopname, // 鐢熶骇杞﹂棿鍚嶇О
+            // routename: this.dialogForm.routename, // 宸ヨ壓璺嚎鍚嶇О
+
+            mesorderstus: this.dialogForm.mesorderstus, // 宸ュ崟鐘舵�佺爜
+            mesordercode: this.dialogForm.mesordercode, // 宸ュ崟缂栧彿
+            partcode: this.dialogForm.partcode, // 浜у搧缂栫爜
+            mesqty: this.dialogForm.mesqty, // 宸ュ崟鏁伴噺
+            ordertype: this.dialogForm.ordertype, // 鍗曟嵁绫诲瀷
+            sourceorder: this.dialogForm.sourceorder, // 婧愬崟鍗曞彿
+            routecode: this.dialogForm.routecode, // 宸ヨ壓璺嚎缂栫爜
+            wkshopcode: this.dialogForm.wkshopcode, // 鐢熶骇杞﹂棿缂栫爜
+            planstartdate: this.dialogForm.planstartdate, // 璁″垝寮�濮嬫椂闂�
+            planenddate: this.dialogForm.planenddate, // 璁″垝瀹屾垚鏃堕棿
+            orderlev: this.dialogForm.orderlev, // 宸ュ崟绛夌骇
+            OperType: this.operation === 'add' ? 'Add' : 'Update'
+          }
+
+          AddUpdateMesOrder(data).then(res => {
+            if (res.code === '200') {
+              this.dialogVisible = false
+
+              this.handlePrint()
+
+              this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '娲惧彂鎴愬姛锛�')
+              // this.dialogVisible = false
+              this.getMesOrderSearch()
+            } else {
+              this.$message.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '娲惧彂澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    // 娲惧彂鎵撳嵃
+    async sendPrint() {
+      const data = {
+        username: getCookie('admin'),
+        // username: getCookie('username'),
+        mesordercode: this.dialogForm.mesordercode
+      }
+      const res = await MesOrderPrintSearch1(data)
+      // const res = await PrintOrder(data)
+      if (res.code === '200') {
+        // 鍙傛暟鍏蜂綋璇存槑璇峰弬鑰冨府鍔╂枃妗d腑鐨勨�淲EB鎶ヨ〃(B/S鎶ヨ〃)->WEB鎶ヨ〃瀹㈡埛绔�->鍚姩鍙傛暟璇存槑鈥濋儴鍒�
+        var args = {
+          type: 'print', // preview  print
+          showOptionDlg: false, // 濡傛灉涓嶆樉绀烘墦鍗板璇濇鑰岀洿鎺ユ墦鍗帮紝灏嗘琛屾敞閲婂幓鎺夊嵆鍙�
+          report: urlAddRandomNo('./static/grf/浜у搧娴佷紶鍗旳4.grf'),
+          data: res.data
+        }
+        webapp_ws_ajax_run(args)
+      }
+    },
+
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 250
+        if (window.innerHeight < 769) {
+          this.tableHeight = this.tableHeight - 20
+        }
+        this.isIpad = window.innerHeight < 769 && window.innerWidth < 1367
+      })
+    },
+    // 宸ヨ壓璺嚎鏀惧ぇ闀滅偣鍑�
+    async searchClick() {
+      if (this.dialogForm.routecode === '') {
+        return this.$message.info('璇峰厛閫夋嫨宸ヨ壓璺嚎锛�')
+      }
+      this.dialogVisibleSearch = true
+      const { data: res } = await SelectRouteStep({ routecode: this.dialogForm.routecode })
+      this.searchTableData = res
+    },
+    dialogVisibleSearchBack() {
+      this.dialogVisibleSearch = false
+    },
+    // 澶勭悊鎵撳嵃
+    handlePrint() {
+      // const number = Math.random() * Math.random()
+      // this.number = number === 0 ? (10 + Math.random()) : number
+      // console.log(number)
+
+      const data2 = {
+        username: getCookie('admin'),
+        mesordercode: this.dialogForm.mesordercode
+      }
+      MesOrderPrintSearch1(data2).then(res2 => {
+        if (res2.code === '200') {
+          const res3 = res2.data.recordset
+
+          this.tableDataPrint = res3
+          this.formApprove.mesordercode = res3[0].wo_code
+          this.formApprove.m_po = res3[0].m_po
+          this.formApprove.partcode = res3[0].partcode
+          this.formApprove.partname = res3[0].partname
+          this.formApprove.partspec = res3[0].partspec
+          this.formApprove.plan_qty = res3[0].plan_qty
+          this.formApprove.routename = res3[0].routename
+          this.formApprove.lm_date = res3[0].lm_date
+
+          this.$nextTick(() => {
+            res3.forEach(i => {
+              this.bindQRCode(i.seq, i.stepqrcode, 'small')
+            })
+            // this.bindQRCode('0', this.formApprove.mesordercode, 'big')
+
+            const div = document.getElementById('qrCode')
+            // 杩欎箞澶氫唬鐮佸彧闇�瑕佽繖涓�鍙ュ疄鐜版垜浠墍闇�瑕佺殑鍔熻兘锛屽畾浣峝iv婊氬姩鏉′綅缃湪搴曢儴锛宻crollHeight璁$畻鍑篸iv鐨勯珮搴︼紝鍐峴crollTop 璁剧疆婊氬姩鏉$殑楂樺害涓哄灏�
+            // div.scrollTop = div.scrollHeight // 婊氬姩鏉′綅浜庢渶搴曢儴
+            div.scrollTop = 0 // 婊氬姩鏉′綅浜庢渶椤堕儴
+          })
+        }
+      })
+      this.dialogVisibleApprove = true
+    },
+    dialogVisibleTaskClose() {
+      this.dialogForm.mesordercode = ''
+    },
+    /*
+  * 鎵嬪姩鐐瑰嚮鎵撳嵃
+  * */
+    // 杩斿洖鎸夐挳
+    dialogVisibleBackPreview() {
+      this.dialogVisibleApprove = false
+    },
+    // dialogVisibleConfirmPreview(param) {
+    //   this.$refs.dialogForm.validate(valid => {
+    //     if (valid) {
+    //       const data = {
+    //         username: getCookie('admin'),
+    //         mesordercode: this.dialogForm.mesordercode
+    //       }
+    //       MesOrderPrintSearch1(data).then(res => {
+    //         if (res.code === '200') {
+    //           this.dialogVisibleApprove = true
+    //           console.log(res, 11)
+    //         }
+    //       })
+    //     }
+    //   })
+    // },
+    // 鐢熸垚浜岀淮鐮�
+    bindQRCode(seq, text, size) {
+      if (size === 'big') {
+        console.log(text, 1)
+        new QRCode(this.$refs.qrCodeDiv0, {
+          text: text,
+          width: size === 'big' ? 90 : 60,
+          height: size === 'big' ? 90 : 60,
+          // colorDark: '#333333', // 浜岀淮鐮侀鑹�
+          colorDark: '#000', // 浜岀淮鐮侀鑹�
+          colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊
+          correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H
+        })
+      } else {
+        new QRCode(this.$refs['qrCodeDiv' + seq], {
+          text: text,
+          width: size === 'big' ? 90 : 60,
+          height: size === 'big' ? 90 : 60,
+          // colorDark: '#333333', // 浜岀淮鐮侀鑹�
+          colorDark: '#000', // 浜岀淮鐮侀鑹�
+          colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊
+          correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H
+        })
+      }
+    },
+
+    dialogVisibleConfirmClose() {
+      // this.dialogForm.mesordercode = ''
+      this.formApprove.mesordercode = ''
+      this.formApprove.m_po = ''
+      this.formApprove.partcode = ''
+      this.formApprove.partname = ''
+      this.formApprove.partspec = ''
+      this.formApprove.plan_qty = ''
+      this.formApprove.routename = ''
+      this.formApprove.lm_date = ''
+
+      // this.$refs.qrCodeDiv0.title = ''
+
+      this.tableDataPrint = []
+    },
+    // 琛ユ墦鎸夐挳
+    supplementClick() {
+      this.dialogVisibleTask = false
+      this.handlePrint()
+    },
+    // 琛ユ墦灏忔爣绛�
+    supplementSmallClick(row) {
+      // let obj = {}
+
+      this.taskTableData.forEach((item, index) => {
+        if (item.seq === row.seq) {
+          console.log(item)
+          this.qrForm = {
+            qrvalue: item.seq === this.taskTableData.length ? item.wo_code + ';' + item.stepcode : item.wo_code + ';' + this.taskTableData[item.seq].stepcode,
+            startqty: item.seq === this.taskTableData.length ? item.plan_qty : this.taskTableData[item.seq].plan_qty,
+            wo_code: item.wo_code,
+            partcode: item.partcode,
+            partname: item.partname,
+            nextstepname: item.seq === this.taskTableData.length ? item.stepname : this.taskTableData[item.seq].stepname,
+            operator: getCookie('username'),
+            operatorTime: handleDatetime2(new Date())
+          }
+          this.$nextTick(() => {
+            console.log(this.qrForm.qrvalue, 3333)
+            this.bindQRCode2(this.qrForm.qrvalue)
+          })
+        }
+      })
+
+      // this.dialogVisibleTask = false
+      this.dialogVisible2 = true
+      console.log(this.qrForm, 1111)
+    },
+    dialogVisible2Close() {
+      this.qrForm.qrvalue = ''
+      this.qrForm.startqty = ''
+      this.qrForm.wo_code = ''
+      this.qrForm.partcode = ''
+      this.qrForm.partname = ''
+      this.qrForm.nextstepname = ''
+      this.qrForm.operator = ''
+      this.qrForm.operatorTime = ''
+      // this.$refs.qrCodeDiv2 = ''
+    },
+    // 鐢熸垚浜岀淮鐮�
+    bindQRCode2(text) {
+      new QRCode(this.$refs.qrCodeDiv2, {
+        text: text,
+        width: 60,
+        height: 60,
+        colorDark: '#000', // 浜岀淮鐮侀鑹�
+        colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊
+        correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H
+      })
+    },
+    // 鎶ュ簾琛ュ崟鎯呭喌涓嬪彲鐐瑰嚮閫夋嫨
+    mesordertsourcesearchclick() {
+      if (this.dialogForm.ordertype === 'PO') {
+        return this.$message.info('宸ュ崟绫诲瀷涓烘姤搴熻ˉ鍗曟儏鍐典笅鍙�夋嫨锛�')
+      }
+
+      this.getErpOrderSearch()
+
+      this.dialogVisibleSource = true
+    },
+    async getErpOrderSearch() {
+      let tempDate2 = this.sourceForm.paystartdate
+      if (tempDate2.length > 0) {
+        tempDate2 = handleDatetime(tempDate2[0]) + '~' + handleDatetime(tempDate2[1])
+      }
+
+      let tempDate = this.sourceForm.payenddate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        erporderstus: this.sourceForm.erporderstus, // 璁㈠崟鐘舵�佺爜
+        erpordercode: this.sourceForm.erpordercode, // 璁㈠崟缂栧彿
+        partcode: this.sourceForm.partcode, // 浜у搧缂栫爜
+        partname: this.sourceForm.partname, // 浜у搧鍚嶇О
+        partspec: this.sourceForm.partspec, // 浜у搧瑙勬牸
+        paystartdate: tempDate2, // 浜や粯鏃堕棿
+        payenddate: tempDate, // 浜や粯鏃堕棿
+        creatuser: this.sourceForm.creatuser, // 鍒涘缓浜哄憳
+
+        prop: this.sourceForm.prop, // 鎺掑簭瀛楁
+        order: this.sourceForm.order, // 鎺掑簭瀛楁
+        page: this.sourceForm.page, // 绗嚑椤�
+        rows: this.sourceForm.rows // 姣忛〉澶氬皯鏉�
+
+      }
+
+      const res = await ErpOrderSearch(data)
+      this.sourceTableData = res.data.filter(item => item.status !== 'NEW')
+      this.sourceFormTotal = res.count
+    },
+    // 鍗曢�夋閫変腑鑾峰彇褰撳墠琛屼俊鎭�
+    getCurrentRowSource(id) {
+      this.radioSelectedId = id
+    },
+    sourceSearch() {
+      this.getErpOrderSearch()
+    },
+    sourceReset() {
+      this.sourceForm.erporderstus = ''
+      this.sourceForm.erpordercode = ''
+      this.sourceForm.partcode = ''
+      this.sourceForm.partname = ''
+      this.sourceForm.partspec = ''
+      this.sourceForm.paystartdate = ''
+      this.sourceForm.payenddate = ''
+      this.sourceForm.creatuser = ''
+      this.sourceForm.createdate = ''
+      this.getErpOrderSearch()
+    },
+    dialogVisibleSourceClose() {
+      this.radioSelectedId = ''
+
+      this.sourceForm.erporderstus = ''
+      this.sourceForm.erpordercode = ''
+      this.sourceForm.partcode = ''
+      this.sourceForm.partname = ''
+      this.sourceForm.partspec = ''
+      this.sourceForm.paystartdate = ''
+      this.sourceForm.payenddate = ''
+      this.sourceForm.creatuser = ''
+      this.sourceForm.createdate = ''
+
+      this.isExpandDialog = false
+      this.sourceTableData = []
+    },
+    dialogVisibleSourceBack() {
+      this.dialogVisibleSource = false
+    },
+    dialogVisibleSourceConfirm() {
+      console.log(this.radioSelectedId)
+      this.sourceTableData.forEach(item => {
+        if (item.id === this.radioSelectedId) {
+          this.dialogForm.sourceorder = item.wo
+          this.dialogForm.partcode = item.partcode
+          this.dialogForm.partspec = item.partspec
+        }
+      })
+      this.dialogVisibleSource = false
+      this.partcodeChange(this.dialogForm.partcode)
+    },
+    mesordertypeChange(val) {
+      if (val === 'PO') {
+        this.dialogForm.sourceorder = ''
+        this.dialogForm.partcode = ''
+        this.dialogForm.partspec = ''
+      }
+    },
+    /* 鍏宠仈宸ヨ壓璺嚎妯″潡*/
+    // 鍏宠仈宸ヨ壓璺嚎
+    async routeClick(row) {
+      console.log(row)
+      // this.defaultroute_code = row.default_route
+      this.dialogFormRoute.projectCode = row.partcode
+      this.dialogFormRoute.projectName = row.partname
+      this.dialogVisibleRoute = true
+      const { data: res } = await InventoryFileAssociationRoute({ partcode: this.dialogFormRoute.projectCode })
+      this.dialogFormRoute.routeOperationArr = res
+
+      this.dialogFormRoute.routeOperationArr.forEach((item, index) => {
+        item.isSelected1 = false
+        item.isSelected2 = false
+        if (index === 0) {
+          item.isSelected1 = true
+          this.projectTableData = item.Data
+        }
+        if (item.flag === 'Y') {
+          item.isSelected2 = true
+          this.$nextTick(() => {
+            $('input:checkbox').eq(index).prop('checked', true)
+          })
+        }
+      })
+
+      this.defaultroute_codeArr = this.dialogFormRoute.routeOperationArr.filter(item => item.flag === 'Y')
+    },
+    // 瀵硅瘽妗嗗叧闂�
+    handleCloseRoute() {
+      this.dialogFormRoute.routeOperationArr = []
+      this.defaultroute_codeArr = []
+      this.defaultroute_code = ''
+      this.projectTableData = []
+    },
+    // 鍙栨秷
+    routeDialogVisibleCancel() {
+      this.dialogVisibleRoute = false
+    },
+    // 纭畾
+    async routeDialogVisibleConfirm() {
+      const temp = this.dialogFormRoute.routeOperationArr.filter(item => item.isSelected2)
+      if (this.defaultroute_code === '' && temp.length > 0) {
+        return this.$message.info('榛樿宸ヨ壓璺嚎涓嶈兘涓虹┖锛�')
+      }
+
+      // 鎻愪氦鏍煎紡
+      const data = []
+      this.dialogFormRoute.routeOperationArr.forEach(item => {
+        if (item.isSelected2) {
+          data.push({ code: item.code, name: item.name })
+        }
+      })
+
+      const res = await SaveInventoryFile(this.dialogFormRoute.projectCode, this.defaultroute_code, data)
+      if (res.code === '200') {
+        this.$message.success('淇濆瓨鎴愬姛锛�')
+        await this.getMesOrderSearch()
+        this.dialogVisibleRoute = false
+      }
+    },
+    // 澶х洅瀛愮偣鍑讳簨浠�
+    myCheckboxClick(val) {
+      console.log(val, 1)
+      this.dialogFormRoute.routeOperationArr.forEach(item => {
+        item.isSelected1 = val.code === item.code
+      })
+
+      this.projectTableData = val.Data
+    },
+    // 灏忕洅瀛愮偣鍑讳簨浠�
+    myCheckboxInputClick(val) {
+      console.log(val, 2)
+      val.isSelected2 = !val.isSelected2
+
+      this.dialogFormRoute.routeOperationArr.forEach((item, index) => {
+        if (val.code === item.code) {
+          item.flag = !item.flag
+        }
+      })
+      if (val.code === this.defaultroute_code) {
+        this.defaultroute_code = ''
+      }
+      this.defaultroute_codeArr = this.dialogFormRoute.routeOperationArr.filter(item => item.isSelected2)
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+$main_color: #42b983;
+.dialogVisibleRoute {
+  .myCheckboxGroup {
+    display: flex;
+    flex-wrap: wrap;
+
+    .myCheckbox {
+      //border: 1px solid $main_color;
+      border: 1px solid #eee;
+      display: flex;
+      min-width: 100px;
+      padding: 10px;
+      margin: 10px 30px 0 0;
+      border-radius: 5px;
+      cursor: default;
+
+      .myCheckboxInput {
+        margin: 1px 5px 0 0;
+        cursor: pointer;
+      }
+
+    }
+
+    //.myCheckbox{
+    //  border: 1px solid $main_color;
+    //}
+
+    input[type=checkbox] {
+      cursor: pointer;
+      position: relative;
+      width: 14px;
+      height: 14px;
+      font-size: 14px;
+    }
+
+    input[type=checkbox]::after {
+      position: absolute;
+      top: 0;
+      //color: rgb(130, 35, 35);
+      color: $main_color;
+      width: 14px;
+      height: 14px;
+      display: inline-block;
+      visibility: visible;
+      padding-left: 0px;
+      text-align: center;
+      content: ' ';
+      border-radius: 3px
+    }
+
+    input[type=checkbox]:checked::after {
+      //content: "鉁�";
+      content: "鈭�";
+      color: #fff;
+      font-size: 12px;
+      font-weight: bold;
+      background-color: $main_color;
+    }
+  }
+}
+
+.dialogVisibleRoute {
+  ::v-deep .el-dialog__body {
+    padding: 20px 20px !important;
+  }
+}
+
+.defaultroute_code ::v-deep .el-input__suffix-inner {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-top: -3px;
+}
+
+.el-date-editor {
+  font-size: 14px;
+}
+
+::v-deep .el-dialog__body {
+  padding: 20px 100px !important;
+}
+
+.dialogVisibleSearch ::v-deep .el-dialog__body {
+  padding: 20px 20px !important;
+}
+
+.dialogVisibleConfirmClass ::v-deep .el-dialog__body {
+  padding: 20px 20px !important;
+}
+
+::v-deep .el-table .caret-wrapper {
+  transform: scale(0.8);
+}
+
+::v-deep .el-button--text {
+  color: $main_color;
+  font-size: 14px;
+  cursor: pointer;
+}
+
+.operationClass {
+  height: 23px;
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+}
+
+::v-deep .el-radio.is-bordered + .el-radio.is-bordered {
+  margin: 10px 30px 0px 0;
+}
+
+.body ::v-deep .el-form-item {
+  margin-bottom: 0;
+}
+
+.elForm ::v-deep .el-form-item {
+  margin-bottom: 0;
+}
+
+//.elTableDiv {
+::v-deep .el-radio__label {
+  display: none;
+}
+
+//}
+
+.el-table::before {
+  height: 0;
+}
+
+//.dialogVisibleConfirmClass >>>.el-table--border, .el-table--fit {
+//  border-bottom: 2px solid #000 ;
+//  //outline: #000 solid 2px !important;
+//}
+
+.tableDataPrint ::v-deep div.cell {
+  display: flex !important;
+  align-items: center !important;
+  justify-content: center !important;
+}
+
+.formContent {
+  width: 240px;
+}
+
+</style>
+
+<style media="print">
+/*@media print {*/
+@page {
+  size: auto;
+  margin: 3mm;
+}
+
+</style>
+<style>
+.formContent .el-form-item__label {
+  color: #000 !important;
+}
+</style>
+<!--鍏叡椤甸潰鏍峰紡-->
+<style lang="scss" scoped>
+$main_color: #42b983;
+
+::v-deep .el-range-input {
+  font-size: 14px !important;
+}
+
+::v-deep .el-range__icon {
+  line-height: 28px !important;
+}
+
+::v-deep .el-range-separator {
+  line-height: 28px !important;
+}
+
+::v-deep .el-range-input {
+  font-size: 14px;
+}
+
+::v-deep .el-range-separator {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+}
+
+.el-icon-share, .el-icon-delete, .el-icon-edit-outline {
+  color: $main_color;
+  cursor: pointer;
+}
+
+.el-icon-edit-outline {
+  margin-right: 15px;
+}
+
+::v-deep .el-button--primary, .el-button--default, .el-button--info {
+  height: 34px;
+  display: flex;
+  align-items: center;
+  padding: 0 15px;
+}
+
+::v-deep .el-button--primary {
+  //background-color: $main_color !important;
+}
+
+::v-deep .el-button--default {
+  background-color: #f8f8fa;
+  border: none;
+}
+
+::v-deep .el-input__inner {
+  height: 34px;
+  line-height: 34px;
+  //color: #a7a7a7;
+}
+
+::v-deep .el-dialog__body {
+  padding: 20px 100px !important;
+}
+
+::v-deep .dialogVisibleRoles .el-dialog__body {
+  padding: 20px 20px !important;
+}
+
+::v-deep .importPickerClass .el-dialog__body {
+  padding: 20px 20px !important;
+}
+
+::v-deep .el-dialog__footer {
+  display: flex;
+  justify-content: flex-end;
+}
+
+::v-deep .el-table .caret-wrapper {
+  transform: scale(0.8);
+}
+
+::v-deep .cell {
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+}
+
+::v-deep .el-table::before {
+  height: 0;
+}
+
+::v-deep .el-table__body-wrapper {
+  background-color: #f8f8fa;
+}
+
+::v-deep .el-table__body .el-table__row.hover-row td {
+  background-color: #eaecef;
+}
+
+::v-deep .el-form--inline .el-form-item__label {
+  color: #a7a7a7;
+}
+
+.body ::v-deep .el-divider {
+  border: 1px solid #eee;
+  width: 99%;
+  margin: 10px auto;
+}
+
+.body ::v-deep .el-form-item {
+  margin-bottom: 0;
+}
+
+.userDialogVisible ::v-deep .el-form-item {
+  margin-bottom: 0;
+}
+
+.dateMini {
+  ::v-deep .el-input__inner {
+    line-height: 34px;
+    height: 34px;
+    width: 200px;
+    display: flex;
+    font-size: 14px !important;
+    align-items: center !important;
+  }
+
+  ::v-deep .el-input__prefix {
+    margin-top: -3px;
+  }
+
+  //::v-deep .el-range__icon{
+  //  line-height: 28px;
+  //}
+}
+
+</style>
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/scgl/gdplgb.vue b/src/views/scgl/gdplgb.vue
index 004b88f..4b6b910 100644
--- a/src/views/scgl/gdplgb.vue
+++ b/src/views/scgl/gdplgb.vue
@@ -1,9 +1,12 @@
 <template>
   <div>
     <div class="body" :style="{height:mainHeight+'px'}">
-      <div class="bodyTopButtonGroup">
-        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
-        <el-button icon="el-icon-download" @click="upload">瀵煎叆</el-button>
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <!--        <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>-->
+        <!--        <el-button icon="el-icon-download" @click="upload">瀵煎叆</el-button>-->
+        <el-button icon="el-icon-switch-button" @click="handleClose('close')">鎵归噺鍏冲崟</el-button>
+        <el-button icon="el-icon-switch-button" @click="handleClose('noClose')">鎵归噺鍙嶅叧鍗�</el-button>
+
       </div>
 
       <div class="bodyTopFormGroup">
@@ -15,24 +18,39 @@
           style="display: flex;justify-content: space-between"
         >
           <div class="elForm">
-            <el-form-item label="缁勭粐缂栫爜" style=" display: flex;">
-              <el-input v-model="form.OrgCode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            <el-form-item label="宸ュ崟鐘舵��" style=" display: flex;">
+              <el-input v-model="form.mesorderstus" placeholder="璇疯緭鍏�" style="width: 200px" />
             </el-form-item>
-            <el-form-item label="缁勭粐鍚嶇О" style=" display: flex;">
-              <el-input v-model="form.OrgName" placeholder="璇疯緭鍏�" style="width: 200px" />
+            <el-form-item label="宸ュ崟缂栧彿" style=" display: flex;">
+              <el-input v-model="form.mesordercode" placeholder="璇疯緭鍏�" style="width: 200px" />
             </el-form-item>
-            <el-form-item label="缁勭粐绫诲瀷" style=" display: flex;">
-              <el-select v-model="form.OrgType" style="width: 200px" placeholder="璇烽�夋嫨">
+            <el-form-item label="婧愬崟鍗曞彿" style=" display: flex;">
+              <el-input v-model="form.sourceorder" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鍗曟嵁绫诲瀷" style=" display: flex;">
+              <el-select v-model="form.ordertype" style="width: 200px" placeholder="璇烽�夋嫨">
                 <el-option
-                  v-for="item in OrgTypeArr"
+                  v-for="item in ordertypeArr"
                   :key="item.code"
                   :label="item.name"
                   :value="item.code"
                 />
               </el-select>
             </el-form-item>
+            <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.partcode" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item label="浜у搧鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.partname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item label="浜у搧瑙勬牸" style=" display: flex;">
+              <el-input v-model="form.partspec" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
             <el-form-item label="鍒涘缓浜哄憳" style=" display: flex;">
-              <el-input v-model="form.UserName" style="width: 200px" placeholder="璇疯緭鍏�" />
+              <el-input v-model="form.creatuser" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item label="鍒涘缓鏃堕棿" style=" display: flex;">
+              <el-input v-model="form.createdate" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
           </div>
           <div style="display: flex;align-items: start;margin-top: 5px;z-index: 2">
@@ -44,6 +62,7 @@
 
       <div class="elTableDiv">
         <el-table
+          ref="multipleTable"
           :data="tableData"
           :height="tableHeight+'px'"
           border
@@ -52,38 +71,192 @@
           highlight-current-row
           :header-cell-style="this.$headerCellStyle"
           :cell-style="this.$cellStyle"
+          @selection-change="handleSelectionChange"
           @sort-change="sortChange"
         >
           <el-table-column
+            type="selection"
+            fixed
+            width="50"
+          />
+          <!--          <el-table-column-->
+          <!--            width="50"-->
+          <!--            fixed-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <el-radio-->
+          <!--                v-model="radioSelected"-->
+          <!--                :label="row.wo_code"-->
+          <!--                style="color: transparent;padding-left: 10px;"-->
+          <!--                @change.native="getCurrentRow(row.wo_code)"-->
+          <!--              />-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <el-table-column
             prop="RowNum"
             width="50"
-            fixed
             label="搴忓彿"
+            fixed
           />
           <el-table-column
-            prop="org_code"
-            label="缁勭粐缂栫爜"
+            prop="status"
+            label="璁㈠崟鐘舵��"
+            sortable="custom"
+            width="110"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.status==='NEW'">鏂板伐鍗�</div>
+              <!--              <div v-if="row.status==='CREATING'">鎵ц涓�</div>-->
+              <!--              <div v-if="row.status==='CREATED'">宸插叧闂�</div>-->
+              <div v-if="row.status==='ALLO'">宸叉淳鍙�</div>
+              <div v-if="row.status==='START'">寮�宸�</div>
+              <div v-if="row.status==='CLOSED'">瀹屽伐</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wo_code"
+            label="宸ュ崟缂栧彿"
+            sortable="custom"
+            min-width="160"
+          />
+          <el-table-column
+            prop="m_po"
+            label="婧愬崟鍗曞彿"
+            sortable="custom"
+            min-width="160"
+          />
+          <el-table-column
+            prop="wotype"
+            label="鍗曟嵁绫诲瀷"
+            sortable="custom"
+            min-width="120"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.wotype==='PO'">鏍囧噯宸ュ崟</div>
+              <div v-else-if="row.wotype==='FO'">鎶ュ簾琛ュ崟</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+            sortable="custom"
+            min-width="120"
+          />
+          <el-table-column
+            prop="partname"
+            min-width="150"
+            label="浜у搧鍚嶇О"
             sortable="custom"
           />
           <el-table-column
-            prop="org_name"
-            label="缁勭粐鍚嶇О"
+            prop="partspec"
+            label="浜у搧瑙勬牸"
             sortable="custom"
+            width="110"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.partspec">{{ row.partspec }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="plan_qty"
+            label="浠诲姟鏁伴噺"
+            sortable="custom"
+            width="110"
           />
           <el-table-column
-            prop="description"
-            label="缁勭粐绫诲瀷"
+            prop="good_qty"
+            label="鍚堟牸鏁伴噺"
             sortable="custom"
+            width="110"
           />
           <el-table-column
-            prop="parentorg_name"
-            label="涓婄骇鍗曚綅"
+            prop="ng_qty"
+            label="涓嶈壇鏁伴噺"
             sortable="custom"
+            width="110"
           />
+          <el-table-column
+            prop="bad_qty"
+            label="鎶ュ簾鏁伴噺"
+            sortable="custom"
+            width="110"
+          />
+          <el-table-column
+            prop="wkshp_name"
+            label="鐢熶骇杞﹂棿"
+            sortable="custom"
+            width="120"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.wkshp_name">{{ row.wkshp_name }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="route_name"
+            label="宸ヨ壓璺嚎"
+            show-tooltip-when-overflow
+            sortable="custom"
+            width="180"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.route_name">{{ row.route_name }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            prop="route_name"-->
+          <!--            label="鍏宠仈宸ヨ壓璺嚎"-->
+          <!--            min-width="110"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <i v-if="row.route_name" class="el-icon-share" @click="routeClick(row)" />-->
+          <!--              <i v-else style="color:rgb(180 ,181, 185)" class="el-icon-share" @click="routeClick(row)" />-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <el-table-column
+            prop="plan_startdate"
+            label="璁″垝寮�濮嬫椂闂�"
+            sortable="custom"
+            width="160"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.plan_startdate">{{ row.plan_startdate }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="plan_enddate"
+            label="璁″垝缁撴潫鏃堕棿"
+            sortable="custom"
+            width="160"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.plan_enddate">{{ row.plan_enddate }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="piroque"
+            label="宸ュ崟绛夌骇"
+            sortable="custom"
+            width="120"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.piroque==='1'">鐗圭骇</div>
+              <div v-if="row.piroque==='2'">绱ф��</div>
+              <div v-if="row.piroque==='3'">姝e父</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
           <el-table-column
             prop="lm_user"
             label="鍒涘缓浜哄憳"
             sortable="custom"
+            width="120"
           />
           <el-table-column
             prop="lm_date"
@@ -91,22 +264,26 @@
             width="160"
             sortable="custom"
           />
-          <el-table-column
-            label="鎿嶄綔"
-            width="120"
-            fixed="right"
-          >
-            <template slot-scope="{row}">
-              <div class="operationClass">
-                <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top">
-                  <i class="el-icon-edit-outline" @click="edit('edit',row)" />
-                </el-tooltip>
-                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
-                  <i class="el-icon-delete" @click="del(row)" />
-                </el-tooltip>
-              </div>
-            </template>
-          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            label="鎿嶄綔"-->
+          <!--            width="120"-->
+          <!--            fixed="right"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div class="operationClass">-->
+          <!--                <el-tooltip class="item" effect="dark" content="宸ュ簭浠诲姟" placement="top">-->
+          <!--                  <i-->
+          <!--                    class="el-icon-tickets"-->
+          <!--                    style="cursor: pointer;color: #42b983;margin-right: 15px"-->
+          <!--                    @click="check(row)"-->
+          <!--                  />-->
+          <!--                </el-tooltip>-->
+          <!--                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">-->
+          <!--                  <i class="el-icon-delete" @click="del(row)" />-->
+          <!--                </el-tooltip>-->
+          <!--              </div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
         </el-table>
       </div>
       <!--鍒嗛〉-->
@@ -115,54 +292,21 @@
         :page.sync="form.page"
         :limit.sync="form.rows"
         align="right"
-        layout="prev, pager, next,sizes"
+        layout="total,prev, pager, next,sizes"
         popper-class="select_bottom"
-        @pagination="getOrganizationSearch"
+        @pagination="getMesOrderBitchClosedSearch"
       />
     </div>
 
-    <el-dialog
-      :title="operation==='add'?'鏂板':'缂栬緫'"
-      :visible.sync="dialogVisible"
-      width="800px"
-      :close-on-click-modal="false"
-      top="15vh"
-      @closed="handleClose"
-      @close="handleClose"
-    >
-      <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="80px">
-        <el-form-item label="缁勭粐缂栫爜" prop="OrgCode">
-          <el-input v-model="dialogForm.OrgCode" :disabled="operation!=='add'" style="width: 200px" />
-        </el-form-item>
-        <el-form-item label="缁勭粐鍚嶇О" prop="OrgName">
-          <el-input v-model="dialogForm.OrgName" style="width: 200px" />
-        </el-form-item>
-        <el-form-item prop="SupUnit" label="涓婄骇鍗曚綅">
-          <el-select
-            v-model="dialogForm.SupUnit"
-            style="width: 200px"
-            placeholder="璇烽�夋嫨"
-            :popper-append-to-body="false"
-          >
-            <el-option
-              v-for="item in SupUnitArr"
-              :key="item.code"
-              :label="item.name"
-              :value="item.code"
-            />
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
-        <div class="footerButton">
-          <el-button @click="dialogVisibleCancel">鍙� 娑�</el-button>
-          <el-button type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>
-        </div>
-      </span>
-    </el-dialog>
-
     <!--瀵煎叆缁勪欢-->
-    <import-picker ref="importPickerFunc" class="importPickerClass" :shows.sync="shows" :title="title_value" :colos="colos" :code="code" />
+    <import-picker
+      ref="importPickerFunc"
+      class="importPickerClass"
+      :shows.sync="shows"
+      :title="title_value"
+      :colos="colos"
+      :code="code"
+    />
 
   </div>
 </template>
@@ -172,77 +316,41 @@
 import { AddUpdateOrganization, DeleteOrganization, OrganizationSearch, PrentOrganization } from '@/api/jcsz'
 import { getCookie } from '@/utils/auth'
 import ImportPicker from '@/components/ImportPicker'
+import { validateCode } from '@/utils/global'
+import { MesOrderBitchAntiClosedSeave, MesOrderBitchClosedSearch, MesOrderBitchClosedSeave } from '@/api/scgl'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'Zzjg',
   components: {
     Pagination, ImportPicker
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
-    const validateTypeCode = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇烽�夋嫨涓婄骇'))
-      } else {
-        callback()
-      }
-    }
     return {
       mainHeight: 0,
       tableHeight: 0,
       form: {
-        OrgCode: '', // 缁勭粐鏋舵瀯浠g爜
-        OrgName: '', // 缁勭粐鏋舵瀯鍚嶇О
-        OrgType: '', // 缁勭粐绫诲瀷
-        UserName: '', // 鍒涘缓浜哄憳
+        mesorderstus: '', // 宸ュ崟鐘舵��
+        mesordercode: '', // 宸ュ崟缂栧彿
+        sourceorder: '', // 婧愬崟鍗曞彿
+        ordertype: '', // 鍗曟嵁绫诲瀷
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+        creatuser: '', // 鍒涘缓浜哄憳
+        createdate: '', // 鍒涘缓鏃堕棿
         prop: 'lm_date', // 鎺掑簭瀛楁
         order: 'desc', // 鎺掑簭瀛楁
         page: 1, // 绗嚑椤�
         rows: 20 // 姣忛〉澶氬皯鏉�
       },
-      OrgTypeArr: [
-        { label: '宸ュ巶', value: 'F' },
-        { label: '閮ㄩ棬', value: 'D' },
-        { label: '杞﹂棿', value: 'W' },
-        { label: '绉戝', value: 'K' },
-        { label: '鐢熶骇绾�', value: 'L' }
+      ordertypeArr: [// 宸ュ崟绫诲瀷
+        { code: 'PO', name: '鏍囧噯宸ュ崟' },
+        { code: 'FO', name: '鎶ュ簾琛ュ崟' }
       ],
-
       total: 10,
       tableData: [],
-      dialogVisible: false,
-      dialogForm: {
-        OrgType: '',
-        OrgCode: '',
-        OrgName: '',
-        SupUnit: ''// 涓婄骇鍗曚綅
-      },
-      operation: '',
-      dialogFormRules: {
-        OrgType: [
-          { required: true, message: '璇疯緭鍏ラ�夋嫨绫诲瀷', trigger: ['blur', 'change'] }
-        ],
-        OrgCode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
-        ],
-        OrgName: [
-          { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
-        ],
-        SupUnit: [
-          { required: true, validator: validateTypeCode, trigger: ['blur', 'change'] }
-        ]
-      },
+
+      multipleSelection: [],
 
       title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
       code: '4',
@@ -253,20 +361,20 @@
   watch: {
     shows() {
       if (!this.shows) {
-        this.getOrganizationSearch()
+        this.getMesOrderBitchClosedSearch()
       }
     }
   },
   created() {
-    this.getOrganizationSearch()
+    this.getMesOrderBitchClosedSearch()
   },
   mounted() {
     window.addEventListener('resize', this.getHeight)
     this.getHeight()
   },
   methods: {
-    async getOrganizationSearch() {
-      const res = await OrganizationSearch(this.form)
+    async getMesOrderBitchClosedSearch() {
+      const res = await MesOrderBitchClosedSearch(this.form)
       this.tableData = res.data
       this.total = res.count
     },
@@ -281,11 +389,11 @@
       }
       this.form.order = order
       this.form.prop = prop
-      this.getOrganizationSearch()
+      this.getMesOrderBitchClosedSearch()
     },
     // 鏌ヨ
     search() {
-      this.getOrganizationSearch()
+      this.getMesOrderBitchClosedSearch()
     },
     // 瀵煎叆鎸夐挳
     upload() {
@@ -297,88 +405,71 @@
     },
     // 閲嶇疆
     reset() {
-      this.form.OrgCode = ''
-      this.form.OrgName = ''
-      this.form.OrgType = ''
-      this.form.UserName = ''
-      this.getOrganizationSearch()
+      this.form.mesorderstus = ''
+      this.form.mesordercode = ''
+      this.form.sourceorder = ''
+      this.form.ordertype = ''
+      this.form.partcode = ''
+      this.form.partname = ''
+      this.form.partspec = ''
+      this.form.creatuser = ''
+      this.form.createdate = ''
+      this.getMesOrderBitchClosedSearch()
     },
-
-    // 鏂板鎸夐挳
-    add(operation) {
-      this.operation = operation
-      this.dialogVisible = true
+    handleSelectionChange(val) {
+      this.multipleSelection = val
     },
-    // 淇敼鎸夐挳
-    edit(operation, row) {
-      this.operation = operation
-      this.dialogVisible = true
-
-      this.$nextTick(() => {
-        this.dialogForm.OrgCode = row.org_code
-        this.dialogForm.OrgName = row.org_name
-        this.dialogForm.SupUnit = row.parent_id
-      })
-    },
-    // 鍒犻櫎鎸夐挳
-    async del(row) {
-      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
-        confirmButtonText: '纭畾',
-        cancelButtonText: '鍙栨秷',
-        type: 'warning'
-      }).then(() => {
-        DeleteOrganization({ orgid: row.code }).then(res => {
-          if (res.code === '200') {
-            this.$message.success('鍒犻櫎鎴愬姛!')
-            if (this.form.page > 1 && this.tableData.length === 1) {
-              this.form.page--
-            }
-            this.getOrganizationSearch()
+    handleClose(val) {
+      const data = []
+      if (val === 'close') {
+        // 鍒ゆ柇閫昏緫:鍚堟牸+涓嶈壇>=浠诲姟鏁伴噺鏃� 涓旂姸鎬佷笉涓篊LOSED
+        this.multipleSelection.forEach(item => {
+          if (item.status !== 'CLOSED' && parseFloat(item.good_qty) + parseFloat(item.ng_qty) + parseFloat(item.bad_qty) >= parseFloat(item.plan_qty)) {
+            data.push({ wo_code: item.wo_code })
           }
         })
-      }).catch(() => {
-        this.$message.info('宸插彇娑堝垹闄�')
-      })
-    },
-    // 瀵硅瘽妗嗗叧闂簨浠�
-    handleClose() {
-      this.dialogForm.OrgType = ''
-      this.dialogForm.OrgCode = ''
-      this.dialogForm.OrgName = ''
-      this.dialogForm.SupUnit = ''
-      this.$refs.dialogForm.clearValidate()
-    },
-    // 瀵硅瘽妗嗗彇娑�
-    dialogVisibleCancel() {
-      this.dialogVisible = false
-    },
-    // 瀵硅瘽妗嗙‘璁�
-    dialogVisibleConfirm() {
-      this.$refs.dialogForm.validate(valid => {
-        if (valid) {
-          const data = {
-            OrganCode: this.dialogForm.OrgCode,
-            OrganName: this.dialogForm.OrgName,
-            OperType: this.operation === 'add' ? 'Add' : 'Update',
-            Operator: getCookie('admin')
-          }
-          AddUpdateOrganization(data).then(res => {
+        this.$confirm('鏄惁纭鎵归噺鍏冲崟?', '鎻愮ず', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          MesOrderBitchClosedSeave({ dt: data }).then(res => {
             if (res.code === '200') {
-              this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
-              this.dialogVisible = false
-              this.getOrganizationSearch()
-            } else {
-              this.$message.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+              this.$message.success('鎵归噺鍏冲崟鎴愬姛锛�')
+              this.$refs.multipleTable.clearSelection()
             }
           })
-        }
-      })
+        }).catch(() => {
+          this.$message.info('宸插彇娑堟壒閲忓叧鍗曪紒')
+        })
+      } else if (val === 'noClose') {
+        this.multipleSelection.forEach(item => {
+          if (item.status === 'CLOSED') {
+            data.push({ wo_code: item.wo_code })
+          }
+        })
+        this.$confirm('鏄惁纭鎵归噺鍙嶅叧鍗�?', '鎻愮ず', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning'
+        }).then(() => {
+          MesOrderBitchAntiClosedSeave({ dt: data }).then(res => {
+            if (res.code === '200') {
+              this.$message.success('鎵归噺鍙嶅叧鍗曟垚鍔燂紒')
+              this.$refs.multipleTable.clearSelection()
+            }
+          })
+        }).catch(() => {
+          this.$message.info('宸插彇娑堟壒閲忓弽鍏冲崟锛�')
+        })
+      }
     },
+
     // 鑾峰彇椤甸潰楂樺害
     getHeight() {
       this.$nextTick(() => {
         this.mainHeight = window.innerHeight - 85
-        this.tableHeight = this.mainHeight - 200
+        this.tableHeight = this.mainHeight - 240
       })
     },
     tableRowClassName({ row, rowIndex }) {
@@ -391,15 +482,17 @@
 <!--鍏叡椤甸潰鏍峰紡-->
 <style lang="scss" scoped>
 $main_color: #42b983;
-::v-deep .el-button--text{
-  font-size: 14px ;
-  cursor: pointer ;
+::v-deep .el-button--text {
+  font-size: 14px;
+  cursor: pointer;
 }
-.el-icon-share ,.el-icon-delete,.el-icon-edit-outline{
+
+.el-icon-share, .el-icon-delete, .el-icon-edit-outline {
   color: $main_color;
   cursor: pointer;
 }
-.el-icon-edit-outline{
+
+.el-icon-edit-outline {
   margin-right: 15px;
 }
 
@@ -460,8 +553,8 @@
   background-color: #f8f8fa;
 }
 
-::v-deep .el-table__body .el-table__row.hover-row td{
-  background-color: #eaecef ;
+::v-deep .el-table__body .el-table__row.hover-row td {
+  background-color: #eaecef;
 }
 
 ::v-deep .el-form--inline .el-form-item__label {
@@ -482,7 +575,7 @@
   margin-bottom: 0;
 }
 
-::v-deep .el-select__caret{
+::v-deep .el-select__caret {
   display: flex;
   align-items: center;
   justify-content: center;
diff --git a/src/views/scgl/scdd.vue b/src/views/scgl/scdd.vue
index d3dcd73..4b078da 100644
--- a/src/views/scgl/scdd.vue
+++ b/src/views/scgl/scdd.vue
@@ -49,14 +49,13 @@
             <el-form-item label="浜у搧鍚嶇О" style=" display: flex;">
               <el-input v-model="form.partname" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
-            <el-form-item label="浜у搧瑙勬牸" style=" display: flex;">
+            <el-form-item v-show="isExpandForm" label="浜у搧瑙勬牸" style=" display: flex;">
               <el-input v-model="form.partspec" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
-
-            <el-form-item label="鍒涘缓浜哄憳" style=" display: flex;">
+            <el-form-item v-show="isExpandForm" label="鍒涘缓浜哄憳" style=" display: flex;">
               <el-input v-model="form.creatuser" style="width: 200px" placeholder="璇疯緭鍏�" />
             </el-form-item>
-            <el-form-item label="棰勮寮�宸ユ椂闂�" label-width="100px" style=" display: flex;font-size: 14px;margin-top: 3px">
+            <el-form-item v-show="isExpandForm" label="棰勮寮�宸ユ椂闂�" label-width="100px" style=" line-height: 40px;;display: flex;font-size: 14px;">
               <el-date-picker
                 v-model="form.paystartdate"
                 type="daterange"
@@ -72,7 +71,7 @@
               <!--              :picker-options="expireTimeOption"-->
 
             </el-form-item>
-            <el-form-item label="棰勮瀹屽伐鏃堕棿" label-width="100px" style=" display: flex;font-size: 14px;margin-top: 3px">
+            <el-form-item v-show="isExpandForm" label="棰勮瀹屽伐鏃堕棿" label-width="100px" style=" display: flex;font-size: 14px;">
               <el-date-picker
                 v-model="form.payenddate"
                 type="daterange"
@@ -96,7 +95,7 @@
               <!--              />-->
             </el-form-item>
           </div>
-          <div style="min-height: 100px">
+          <div>
             <div style="display: flex;align-items: start;margin-top: 5px;z-index: 2;justify-content: end">
               <el-button type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
               <el-button type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
@@ -133,13 +132,23 @@
           </div>
         </el-form>
       </div>
-      <div class="elTableDiv">
+
+      <div
+        class="bodyTopFormExpand"
+        @click="isExpandForm=!isExpandForm"
+      >
+        <i
+          :class="!isExpandForm?'el-icon-arrow-down':'el-icon-arrow-up'"
+          :style="{color:'#42B983'}"
+        /></div>
+
+      <div class="elTableDiv" style="margin-top: 0">
         <el-table
           :data="tableData"
-          :height="tableHeight+'px'"
+          :height="isExpandForm?tableHeight:(tableHeight+40)+'px'"
           border
           :row-class-name="tableRowClassName"
-          :style="{width: 100+'%',height:tableHeight+'px',}"
+          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+40)+'px',}"
           highlight-current-row
           :header-cell-style="this.$headerCellStyle"
           :cell-style="this.$cellStyle"
@@ -474,7 +483,8 @@
           { required: true, message: '璇疯緭鍏ヤ笅鍗曞崟鏁�', trigger: ['blur', 'change'] }
         ]
 
-      }
+      },
+      isExpandForm: false
       // expireTimeOption: {
       //   disabledDate(time) {
       //     return time.getTime() > Date.now() - 8.64e6 // 濡傛灉娌℃湁鍚庨潰鐨�-8.64e6灏辨槸涓嶅彲浠ラ�夋嫨浠婂ぉ鐨�
@@ -713,7 +723,7 @@
     getHeight() {
       this.$nextTick(() => {
         this.mainHeight = window.innerHeight - 85
-        this.tableHeight = this.mainHeight - 260
+        this.tableHeight = this.mainHeight - 250
         this.isIpad = window.innerHeight < 769 && window.innerWidth < 1367
 
         if (this.isIpad) {
diff --git a/src/views/template.vue b/src/views/template.vue
index 7716a9c..1e0fa00 100644
--- a/src/views/template.vue
+++ b/src/views/template.vue
@@ -172,32 +172,14 @@
 import { AddUpdateOrganization, DeleteOrganization, OrganizationSearch, PrentOrganization } from '@/api/jcsz'
 import { getCookie } from '@/utils/auth'
 import ImportPicker from '@/components/ImportPicker'
+import { validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'Zzjg',
   components: {
     Pagination, ImportPicker
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
-    const validateTypeCode = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇烽�夋嫨涓婄骇'))
-      } else {
-        callback()
-      }
-    }
     return {
       mainHeight: 0,
       tableHeight: 0,
@@ -234,14 +216,12 @@
           { required: true, message: '璇疯緭鍏ラ�夋嫨绫诲瀷', trigger: ['blur', 'change'] }
         ],
         OrgCode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         OrgName: [
           { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
-        ],
-        SupUnit: [
-          { required: true, validator: validateTypeCode, trigger: ['blur', 'change'] }
         ]
+
       },
 
       title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
diff --git a/src/views/wlgl/ckdy.vue b/src/views/wlgl/ckdy.vue
index 5d01ae0..f58855d 100644
--- a/src/views/wlgl/ckdy.vue
+++ b/src/views/wlgl/ckdy.vue
@@ -165,25 +165,14 @@
 import { AddUpdateWareHouseDef, DeleteWareHouseDef, WareHouseDefSearch } from '@/api/wlgl'
 import { SeaveSearchWhareHouseLocation } from '@/api/ErpSyncMes'
 import ImportPicker from '@/components/ImportPicker'
+import { validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'CKDY',
   components: {
     Pagination, ImportPicker
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
     return {
       mainHeight: 0,
       tableHeight: 0,
@@ -210,7 +199,7 @@
       operation: '',
       dialogFormRules: {
         warehousecode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         warehousename: [
           { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/wlgl/kwdy.vue b/src/views/wlgl/kwdy.vue
index 548dd9c..6f67058 100644
--- a/src/views/wlgl/kwdy.vue
+++ b/src/views/wlgl/kwdy.vue
@@ -192,25 +192,14 @@
 <script>
 import Pagination from '@/components/Pagination'
 import { AddUpdateStorageDef, DeleteStorageDef, StorageDefSearch, WareHouseSelect } from '@/api/wlgl'
+import { validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'KWDY',
   components: {
     Pagination
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
     return {
       mainHeight: 0,
       tableHeight: 0,
@@ -241,7 +230,7 @@
       operation: '',
       dialogFormRules: {
         storagecode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         storagename: [
           { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/xtsz/cjgg.vue b/src/views/xtsz/cjgg.vue
index 337d2d1..21de5c2 100644
--- a/src/views/xtsz/cjgg.vue
+++ b/src/views/xtsz/cjgg.vue
@@ -240,31 +240,12 @@
 import { SystemAnnouncementAddUpdate, SystemAnnouncementDelete, SystemAnnouncementSearch } from '@/api/xtsz'
 import { ShopSearch } from '@/api/dzkb'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'Zzjg',
   components: {
     Pagination, ImportPicker
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
-    const validateTypeCode = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇烽�夋嫨涓婄骇'))
-      } else {
-        callback()
-      }
-    }
     return {
       mainHeight: 0,
       tableHeight: 0,
diff --git a/src/views/zlgl/gxjybz.vue b/src/views/zlgl/gxjybz.vue
index ac781af..4296788 100644
--- a/src/views/zlgl/gxjybz.vue
+++ b/src/views/zlgl/gxjybz.vue
@@ -268,32 +268,14 @@
   StepCheckItemSelect,
   StepCheckStanedSearch
 } from '@/api/zlgl'
+import { validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'ZJBZ',
   components: {
     Pagination
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
-    const validateTypeCode = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇烽�夋嫨涓婄骇'))
-      } else {
-        callback()
-      }
-    }
     return {
       isIpad: false,
       mainHeight: 0,
@@ -319,7 +301,7 @@
       operation: '',
       dialogFormRules: {
         code: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         name: [
           { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/zlgl/gxjyjl.vue b/src/views/zlgl/gxjyjl.vue
index 10a3446..74ed6c9 100644
--- a/src/views/zlgl/gxjyjl.vue
+++ b/src/views/zlgl/gxjyjl.vue
@@ -31,10 +31,10 @@
             <el-form-item label="宸ュ簭鍚嶇О" style=" display: flex;">
               <el-input v-model="form.stepname" placeholder="璇疯緭鍏�" style="width: 200px" />
             </el-form-item>
-            <el-form-item label="鏍囧噯鍚嶇О" style=" display: flex;">
+            <el-form-item v-show="isExpandForm" label="鏍囧噯鍚嶇О" style=" display: flex;">
               <el-input v-model="form.standname" placeholder="璇疯緭鍏�" style="width: 200px" />
             </el-form-item>
-            <el-form-item label="妫�楠岀被鍨�" style=" display: flex;">
+            <el-form-item v-show="isExpandForm" label="妫�楠岀被鍨�" style=" display: flex;">
               <el-select v-model="form.checktype" style="width: 200px" placeholder="璇烽�夋嫨">
                 <el-option
                   v-for="item in checktypeArr"
@@ -44,7 +44,7 @@
                 />
               </el-select>
             </el-form-item>
-            <el-form-item label="妫�楠岀粨鏋�" style=" display: flex;">
+            <el-form-item v-show="isExpandForm" label="妫�楠岀粨鏋�" style=" display: flex;">
               <el-select v-model="form.checkresult	" style="width: 200px" placeholder="璇烽�夋嫨">
                 <el-option
                   v-for="item in checkresultArr"
@@ -54,7 +54,6 @@
                 />
               </el-select>
             </el-form-item>
-
           </div>
           <div style="display: flex;align-items: start;margin-top: 5px;z-index: 2">
             <el-button type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
@@ -62,14 +61,21 @@
           </div>
         </el-form>
       </div>
-
-      <div class="elTableDiv">
+      <div
+        class="bodyTopFormExpand"
+        @click="isExpandForm=!isExpandForm"
+      >
+        <i
+          :class="!isExpandForm?'el-icon-arrow-down':'el-icon-arrow-up'"
+          :style="{color:'#42B983'}"
+        /></div>
+      <div class="elTableDiv" style="margin-top: 0">
         <el-table
           :data="tableData"
-          :height="tableHeight+'px'"
+          :height="isExpandForm?tableHeight:(tableHeight+40)+'px'"
           border
           :row-class-name="tableRowClassName"
-          :style="{width: 100+'%',height:tableHeight+'px',}"
+          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+40)+'px'}"
           highlight-current-row
           :header-cell-style="this.$headerCellStyle"
           :cell-style="this.$cellStyle"
@@ -341,25 +347,8 @@
     Pagination, ImportPicker
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
-    const validateTypeCode = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇烽�夋嫨涓婄骇'))
-      } else {
-        callback()
-      }
-    }
     return {
+      isExpandForm: false,
       mainHeight: 0,
       tableHeight: 0,
       form: {
@@ -536,7 +525,7 @@
     getHeight() {
       this.$nextTick(() => {
         this.mainHeight = window.innerHeight - 85
-        this.tableHeight = this.mainHeight - 240
+        this.tableHeight = this.mainHeight - 250
       })
     },
     tableRowClassName({ row, rowIndex }) {
diff --git a/src/views/zlgl/gxjyxm.vue b/src/views/zlgl/gxjyxm.vue
index a508651..2f5bf13 100644
--- a/src/views/zlgl/gxjyxm.vue
+++ b/src/views/zlgl/gxjyxm.vue
@@ -146,25 +146,14 @@
 <script>
 import Pagination from '@/components/Pagination'
 import { AddUpdateStepCheckItem, DeleteStepCheckItem, StepCheckItemSearch } from '@/api/zlgl'
+import { validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'Xxxx',
   components: {
     Pagination
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
     return {
       mainHeight: 0,
       tableHeight: 0,
@@ -188,7 +177,7 @@
       operation: '',
       dialogFormRules: {
         checkitemcode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         checkitemname: [
           { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/zlgl/qxdy.vue b/src/views/zlgl/qxdy.vue
index c0e5366..d23a90f 100644
--- a/src/views/zlgl/qxdy.vue
+++ b/src/views/zlgl/qxdy.vue
@@ -153,25 +153,14 @@
 import Pagination from '@/components/Pagination'
 import { AddUpdateDedect, DedectSearch, DeleteDedect } from '@/api/zlgl'
 import ImportPicker from '@/components/ImportPicker'
+import { validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'QXDY',
   components: {
     Pagination, ImportPicker
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ己闄蜂唬鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('浠g爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
     return {
       mainHeight: 0,
       tableHeight: 0,
@@ -195,7 +184,7 @@
       operation: '',
       dialogFormRules: {
         defectcode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         defectname: [
           { required: true, message: '璇疯緭鍏ョ己闄峰悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/zzmx/chda.vue b/src/views/zzmx/chda.vue
index 3dba389..a05d39d 100644
--- a/src/views/zzmx/chda.vue
+++ b/src/views/zzmx/chda.vue
@@ -608,25 +608,14 @@
 } from '@/api/zzmx'
 import $ from 'jquery'
 import { SeaveSearchInventory, SeaveSearchInventoryClass, SeaveSearchUnit } from '@/api/ErpSyncMes'
+import { validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'CHDA',
   components: {
     Pagination
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ墿鏂欑紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
     return {
       isIpad: false,
       mainHeight: 0,
@@ -668,7 +657,7 @@
       operation: '',
       dialogFormRules: {
         materialcode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         materialname: [
           { required: true, message: '璇疯緭鍏ョ墿鏂欏悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/zzmx/gxdy.vue b/src/views/zzmx/gxdy.vue
index c98245e..21623a6 100644
--- a/src/views/zzmx/gxdy.vue
+++ b/src/views/zzmx/gxdy.vue
@@ -406,25 +406,14 @@
   StepSearch
 } from '@/api/zzmx'
 import $ from 'jquery'
+import { validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'GXDY',
   components: {
     Pagination
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
     return {
       isIpad: false,
       mainHeight: 0,
@@ -464,7 +453,7 @@
       operation: '',
       dialogFormRules: {
         stepcode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         stepname: [
           { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/zzmx/gylx.vue b/src/views/zzmx/gylx.vue
index 44b8b17..ad8e904 100644
--- a/src/views/zzmx/gylx.vue
+++ b/src/views/zzmx/gylx.vue
@@ -285,25 +285,14 @@
 <script>
 import Pagination from '@/components/Pagination'
 import { AddUpdateRoute, DeleteRoute, RouteSearch, StepSelect, ViewRoute } from '@/api/zzmx'
+import { validateCode } from '@/utils/global'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'GYLX',
   components: {
     Pagination
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
     return {
       isIpad: false,
       mainHeight: 0,
@@ -349,7 +338,7 @@
       operation: '',
       dialogFormRules: {
         code: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
         ],
         name: [
           { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
diff --git a/src/views/zzmx/jpgj.vue b/src/views/zzmx/jpgj.vue
index 3381926..90f6db1 100644
--- a/src/views/zzmx/jpgj.vue
+++ b/src/views/zzmx/jpgj.vue
@@ -2,9 +2,9 @@
   <div>
     <div class="body" :style="{height:mainHeight+'px'}">
 
-      <div class="bodyTopButtonGroup">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
         <el-button type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
-        <!--        <el-button type="primary" icon="el-icon-upload2" @click="upload">瀵煎叆</el-button>-->
+        <el-button icon="el-icon-download" @click="upload">瀵煎叆</el-button>
       </div>
 
       <div class="bodyTopFormGroup">
@@ -453,6 +453,16 @@
         </div>
       </span>
     </el-dialog>
+
+    <!--瀵煎叆缁勪欢-->
+    <import-picker
+      ref="importPickerFunc"
+      class="importPickerClass"
+      :shows.sync="shows"
+      :title="title_value"
+      :colos="colos"
+      :code="code"
+    />
   </div>
 </template>
 
@@ -466,32 +476,14 @@
   StepSelectEqp,
   StepSelectEqpList
 } from '@/api/zzmx'
+import ImportPicker from '@/components/ImportPicker'
 
-const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
   name: 'JPGJ',
   components: {
-    Pagination
+    Pagination, ImportPicker
   },
   data() {
-    const validateName = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇疯緭鍏ョ紪鐮�'))
-      } else {
-        if (SER_HZ.test(value)) {
-          return callback(new Error('缂栫爜涓嶈兘涓轰腑鏂�'))
-        } else {
-          callback()
-        }
-      }
-    }
-    const validateTypeCode = (rule, value, callback) => {
-      if (!value) {
-        return callback(new Error('璇烽�夋嫨涓婄骇'))
-      } else {
-        callback()
-      }
-    }
     return {
       isIpad: false,
       mainHeight: 0,
@@ -543,21 +535,18 @@
       editRouteName: '', // 缂栬緫鏃跺伐鑹鸿矾绾垮悕绉�
       editStepName: '', // 缂栬緫鏃跺姞宸ュ伐搴忓悕绉�
       operation: '',
-      dialogFormRules: {
-        OrgType: [
-          { required: true, message: '璇疯緭鍏ラ�夋嫨绫诲瀷', trigger: ['blur', 'change'] }
-        ],
-        OrgCode: [
-          { required: true, validator: validateName, trigger: ['blur', 'change'] }
-        ],
-        OrgName: [
-          { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
-        ],
-        SupUnit: [
-          { required: true, validator: validateTypeCode, trigger: ['blur', 'change'] }
-        ]
-      }
+      dialogFormRules: {},
 
+      title_value: '鏁版嵁瀵煎叆 / 鑺傛媿宸ヤ环',
+      code: '24',
+      shows: false
+    }
+  },
+  watch: {
+    shows() {
+      if (!this.shows) {
+        this.getBeatRateSearch()
+      }
     }
   },
   created() {
@@ -863,6 +852,14 @@
     //     }
     //   })
     // },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    },
     // 鑾峰彇椤甸潰楂樺害
     getHeight() {
       this.$nextTick(() => {

--
Gitblit v1.9.3