From dc1879fd0713eed48b2c75af5f29a1085291d276 Mon Sep 17 00:00:00 2001
From: loulijun2021 <1694218219@qq.com>
Date: 星期二, 07 五月 2024 14:40:55 +0800
Subject: [PATCH] 1.文件替换

---
 src/views/deviceManager/maintainPosition.vue    |  526 
 src/assets/images/box02.png                     |    0 
 src/views/deviceManager/checkStandard.vue       | 1349 +
 vue.config.js                                   |    2 
 src/views/mouldManager/mouldCheckStand.vue      |  713 
 src/views/statistic/workOrderProcess.vue        |  439 
 src/icons/svg/bbgl.svg                          |    4 
 src/views/basicSettings/processList.vue         |  434 
 src/views/mouldManager/mouldMaintain.vue        |  453 
 src/views/workOrder/produceOrderList.vue        | 1122 +
 src/api/ProductModel.js                         |    9 
 src/views/deviceManager/maintainRecord.vue      |  616 
 src/views/qualityManager/processCheckRecord.vue |  732 
 src/icons/svg/example.svg                       |    2 
 src/icons/svg/xtsz.svg                          |    2 
 src/views/workOrder/workOrderSend.vue           | 3414 ++++
 src/views/statistic/defectDetailList.vue        |  595 
 src/views/statistic/personSalaryList.vue        |  880 +
 src/icons/svg/mj.svg                            |   15 
 src/views/mouldManager/mouldMaintainStand.vue   |  713 
 src/icons/svg/home.svg                          |    2 
 src/icons/svg/blcs.svg                          |    1 
 src/views/basicSettings/roleList.vue            |   95 
 src/views/deviceManager/checkPosition.vue       |  608 
 src/views/statistic/subcontractingOperation.vue |  644 
 src/views/basicSettings/groupList.vue           |    1 
 src/views/basicSettings/storageList.vue         |  888 +
 src/permission.js                               |    2 
 src/icons/svg/quality.svg                       |   21 
 src/views/basicSettings/postList.vue            |    1 
 src/views/workOrder/workOrderClose.vue          | 3438 ++++
 src/views/kanbanManager/cj.vue                  |  436 
 src/assets/images/background001.jpg             |    0 
 src/router/index.js                             |  342 
 src/views/basicSettings/contactUnitList.vue     |   56 
 src/views/qualityManager/defectDefine.vue       |  356 
 src/utils/myEcharts.js                          | 1317 +
 .env.development                                |    3 
 src/views/deviceManager/maintainStandard.vue    | 1298 +
 src/api/basicSettings.js                        |   90 
 src/views/statistic/groupSalaryList.vue         |  897 +
 src/views/systemSetting/encodingRules.vue       |   13 
 .env.production                                 |    3 
 src/icons/svg/table.svg                         |   25 
 src/views/kanbanManager/zhkb.vue                |  906 
 src/views/produce/stepReport.vue                | 1512 ++
 src/icons/svg/component.svg                     |    2 
 src/components/VcronTab/components/Crontab.vue  |    2 
 src/views/materialManager/inventoryList.vue     |   66 
 src/views/mouldManager/mouldCheckRecord.vue     |  488 
 src/styles/global.css                           |    9 
 src/api/kanbanManager.js                        |  111 
 src/views/mouldManager/mouldCheck.vue           |  450 
 src/api/Excel.js                                |   58 
 src/views/systemSetting/dataImport.vue          | 2308 +++
 src/views/mouldManager/mouldOutInRecord.vue     |  496 
 src/views/deviceManager/repairRecord.vue        |  730 
 src/views/deviceManager/deviceList.vue          |  773 +
 src/views/materialManager/unitList.vue          |   12 
 src/components/UploadExcel/index.vue            |  162 
 src/api/ErpSyncMes.js                           |   30 
 src/api/DeviceManager.js                        |  290 
 src/icons/svg/tree2.svg                         |    4 
 src/api/QualityManagement.js                    |  171 
 src/views/qualityManager/qualityPlaning.vue     | 1292 +
 src/api/GeneralBasicData.js                     |  110 
 src/views/mouldManager/mouldList.vue            |  982 +
 src/api/ReportManager.js                        |  118 
 src/views/workOrder/workOrderList.vue           | 3481 ++++
 src/views/produce/reportVerify.vue              |  525 
 src/api/WorkOrder.js                            |  258 
 src/icons/svg/zlgl.svg                          |    8 
 src/views/mouldManager/mouldRepairRecord.vue    |  728 
 src/views/produce/reportCorrect.vue             |  767 +
 src/icons/svg/ckkc.svg                          |    1 
 src/views/basicSettings/personList.vue          |   15 
 src/views/mouldManager/mouldUpDownRecord.vue    |  500 
 src/api/MouldManager.js                         |  334 
 src/views/deviceManager/checkRecord.vue         |  595 
 src/views/mouldManager/mouldMaintainRecord.vue  |  492 
 src/views/qualityManager/processCheckItem.vue   |  406 
 src/views/statistic/repairDetailList.vue        |  614 
 src/views/basicSettings/powerDivider.vue        |  159 
 src/api/GridReport.js                           |   10 
 src/views/qualityManager/processCheck.vue       |  802 +
 package.json                                    |    5 
 src/views/basicSettings/organizationList.vue    |   30 
 src/views/basicSettings/warehouseList.vue       |  467 
 src/views/kanbanManager/kbCommon.css            |   20 
 src/components/DragSelect/index.vue             |   65 
 src/views/mouldManager/mouldCirculateRecord.vue |  476 
 91 files changed, 43,367 insertions(+), 1,030 deletions(-)

diff --git a/.env.development b/.env.development
index 62fdafb..6e3cf47 100644
--- a/.env.development
+++ b/.env.development
@@ -5,5 +5,6 @@
 VUE_APP_BASE_API = '/api/'
 
 # 鏂囦欢涓嬭浇鍦板潃   涓嬭浇鏁版嵁妯℃澘鍦板潃
-VUE_APP_BASE_API_FILE = 'http://121.196.36.24:8001'
+# 鏈湴鏈嶅姟鍣�
+VUE_APP_BASE_API_FILE = 'http://121.196.36.24:8019/'
 
diff --git a/.env.production b/.env.production
index 6b25792..ab5e16a 100644
--- a/.env.production
+++ b/.env.production
@@ -5,4 +5,5 @@
 VUE_APP_BASE_API = '/api/'
 
 # 鏂囦欢涓嬭浇鍦板潃   涓嬭浇鏁版嵁妯℃澘鍦板潃
-VUE_APP_BASE_API_FILE = 'http://121.196.36.24:8001'
+# 鏈湴鏈嶅姟鍣�
+VUE_APP_BASE_API_FILE = 'http://121.196.36.24:8019/'
diff --git a/package.json b/package.json
index 13f5c8b..e68cccf 100644
--- a/package.json
+++ b/package.json
@@ -27,12 +27,14 @@
     "jsonwebtoken": "^9.0.1",
     "lib-flexible": "^0.3.2",
     "lib-flexible-computer": "^1.0.2",
+    "nanoid": "^4.0.2",
     "normalize.css": "7.0.0",
     "nprogress": "0.2.0",
     "path-to-regexp": "2.4.0",
     "postcss-px2rem": "^0.3.0",
     "qrcode": "^1.5.0",
     "qrcodejs2": "0.0.2",
+    "sortablejs": "^1.15.0",
     "vcrontab": "^0.3.5",
     "vue": "2.6.10",
     "vue-count-to": "^1.0.13",
@@ -42,7 +44,8 @@
     "vue-print-nb": "^1.7.5",
     "vue-router": "3.0.6",
     "vue-splitpane": "^1.0.6",
-    "vuedraggable": "^2.24.3"
+    "vuedraggable": "^2.24.3",
+    "xlsx": "0.14.1"
   },
   "devDependencies": {
     "@aspnet/signalr": "^1.0.27",
diff --git a/src/api/DeviceManager.js b/src/api/DeviceManager.js
new file mode 100644
index 0000000..bf3f061
--- /dev/null
+++ b/src/api/DeviceManager.js
@@ -0,0 +1,290 @@
+import request from '@/utils/request'
+
+// 璁惧绫诲瀷鏌ヨ
+export function DeviceTypeSearch(data) {
+  return request({
+    url: 'DeviceManager/DeviceTypeSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 璁惧绫诲瀷鏂板
+export function AddUpdateDeviceType(data, OperType) {
+  return request({
+    url: 'DeviceManager/AddUpdateDeviceType?OperType=' + OperType,
+    method: 'post',
+    data
+  })
+}
+
+// 璁惧绫诲瀷鍒犻櫎
+export function DeleteDeviceType(data) {
+  return request({
+    url: 'DeviceManager/DeleteDeviceType',
+    method: 'post',
+    params: data
+  })
+}
+// 璁惧鍒楄〃鏌ヨ
+export function DeviceMangerSearch(data) {
+  return request({
+    url: 'DeviceManager/DeviceMangerSearch',
+    method: 'get',
+    params: data
+  })
+}
+// 璁惧娓呭崟鏂板缂栬緫
+export function AddUpdateDeviceManger(data) {
+  return request({
+    url: 'DeviceManager/AddUpdateDeviceManger',
+    method: 'post',
+    data
+  })
+}
+// 璁惧淇℃伅鍒犻櫎
+export function DeleteDeviceManger(data) {
+  return request({
+    url: 'DeviceManager/DeleteDeviceManger',
+    method: 'post',
+    params: data
+  })
+}
+
+// 璁惧鐐规椤瑰垪琛ㄦ煡璇�
+export function DeviceCheckItemSearch(data) {
+  return request({
+    url: 'DeviceManager/DeviceCheckItemSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 璁惧鐐规椤规柊澧炵紪杈�
+export function AddUpdateDeviceCheckItem(data) {
+  return request({
+    url: 'DeviceManager/AddUpdateDeviceCheckItem',
+    method: 'post',
+    data
+  })
+}
+// 璁惧鐐规椤瑰垹闄�
+export function DeleteDeviceCheckItem(data) {
+  return request({
+    url: 'DeviceManager/DeleteDeviceCheckItem',
+    method: 'post',
+    params: data
+  })
+}
+// 璁惧淇濆吇椤瑰垪琛ㄦ煡璇�
+export function DeviceMaiItemSearch(data) {
+  return request({
+    url: 'DeviceManager/DeviceMaiItemSearch',
+    method: 'get',
+    params: data
+  })
+}
+// 璁惧淇濆吇椤规柊澧炵紪杈�
+export function AddUpdateDeviceMaiItem(data) {
+  return request({
+    url: 'DeviceManager/AddUpdateDeviceMaiItem',
+    method: 'post',
+    data
+  })
+}
+// 璁惧淇濆吇椤瑰垹闄�
+export function DeleteDeviceMaiItem(data) {
+  return request({
+    url: 'DeviceManager/DeleteDeviceMaiItem',
+    method: 'post',
+    params: data
+  })
+}
+// 璁惧鐐规鏍囧噯鍒楄〃鏌ヨ
+export function DeviceCheckStandArdSearch(data) {
+  return request({
+    url: 'DeviceManager/DeviceCheckStandArdSearch',
+    method: 'get',
+    params: data
+  })
+}
+// 璁惧鐐规鏍囧噯鏂板銆佺紪杈戣幏鍙栨楠岄」鐩笅鎷夊垪琛�
+export function DeviceCheckItemSelect() {
+  return request({
+    url: 'DeviceManager/DeviceCheckItemSelect',
+    method: 'get'
+  })
+}
+// 璁惧鐐规鏍囧噯缂栬緫/鏌ョ湅鑾峰彇鏁版嵁
+export function ViewDeviceCheckStanedSearch(data) {
+  return request({
+    url: 'DeviceManager/ViewDeviceCheckStanedSearch',
+    method: 'post',
+    params: data
+  })
+}
+// 璁惧鐐规鏍囧噯鏂板缂栬緫
+export function AddUpdateDeviceCheckStandArd(data, opertype) {
+  return request({
+    url: 'DeviceManager/AddUpdateDeviceCheckStandArd?opertype=' + opertype,
+    method: 'post',
+    data
+  })
+}
+// 璁惧鐐规鏍囧噯鍒犻櫎
+export function DeleteDeviceCheckStaned(data) {
+  return request({
+    url: 'DeviceManager/DeleteDeviceCheckStaned',
+    method: 'post',
+    params: data
+  })
+}
+// 璁惧鐐规鏍囧噯鍏宠仈宸ヤ綔绔欐煡璇�
+export function DeviceCheckStanedAssociationEqp(data) {
+  return request({
+    url: 'DeviceManager/DeviceCheckStanedAssociationEqp',
+    method: 'get',
+    params: data
+  })
+}
+// 璁惧鐐规鏍囧噯鍏宠仈宸ヤ綔绔欐彁浜�
+export function SaveDeviceCheckStanedAssociationEqp(data, checkstand_code) {
+  return request({
+    url: 'DeviceManager/SaveDeviceCheckStanedAssociationEqp?checkstand_code=' + checkstand_code,
+    method: 'post',
+    data
+  })
+}
+// 璁惧淇濆吇鏍囧噯鍒楄〃鏌ヨ
+export function DeviceRepairStandArdSearch(data) {
+  return request({
+    url: 'DeviceManager/DeviceRepairStandArdSearch',
+    method: 'get',
+    params: data
+  })
+}
+// 璁惧淇濆吇鏍囧噯鏂板銆佺紪杈戣幏鍙栦繚鍏婚」鐩笅鎷夊垪琛�
+export function DeviceRepairItemSelect() {
+  return request({
+    url: 'DeviceManager/DeviceRepairItemSelect',
+    method: 'get'
+  })
+}
+// 璁惧淇濆吇鏍囧噯缂栬緫/鏌ョ湅鑾峰彇鏁版嵁
+export function ViewDeviceRepairStanedSearch(data) {
+  return request({
+    url: 'DeviceManager/ViewDeviceRepairStanedSearch',
+    method: 'post',
+    params: data
+  })
+}
+// 璁惧淇濆吇鏍囧噯鏂板缂栬緫
+export function AddUpdateDeviceRepairStandArd(data, opertype) {
+  return request({
+    url: 'DeviceManager/AddUpdateDeviceRepairStandArd?opertype=' + opertype,
+    method: 'post',
+    data
+  })
+}
+// 璁惧淇濆吇鏍囧噯鍒犻櫎
+export function DeleteDeviceRepairStaned(data) {
+  return request({
+    url: 'DeviceManager/DeleteDeviceRepairStaned',
+    method: 'post',
+    params: data
+  })
+}
+// 璁惧淇濆吇鏍囧噯鍏宠仈宸ヤ綔绔欐煡璇�
+export function DeviceRepairStanedAssociationEqp(data) {
+  return request({
+    url: 'DeviceManager/DeviceRepairStanedAssociationEqp',
+    method: 'get',
+    params: data
+  })
+}
+// 璁惧淇濆吇鏍囧噯鍏宠仈宸ヤ綔绔欐彁浜�
+export function SaveDeviceRepairStanedAssociationEqp(data, repairstand_code) {
+  return request({
+    url: 'DeviceManager/SaveDeviceRepairStanedAssociationEqp?repairstand_code=' + repairstand_code,
+    method: 'post',
+    data
+  })
+}
+
+// 璁惧淇濆吇璁板綍鏄庣粏鏌ヨ
+export function DeviceCheckTakeSearch(data) {
+  return request({
+    url: 'DeviceManager/DeviceCheckTakeSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 璁惧鐐规璁板綍鏌ヨ
+export function DeviceCheckSubTakeSearch(data) {
+  return request({
+    url: 'DeviceManager/DeviceCheckSubTakeSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 璁惧鐐规璁板綍瀵煎嚭
+export function DeviceCheckTakeOutExcel(data) {
+  return request({
+    url: 'DeviceManager/DeviceCheckTakeOutExcel',
+    method: 'get',
+    params: data
+  })
+}
+
+// 璁惧淇濆吇璁板綍鏌ヨ
+export function DeviceRepairTakeSearch(data) {
+  return request({
+    url: 'DeviceManager/DeviceRepairTakeSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 璁惧淇濆吇璁板綍鏄庣粏鏌ヨ
+export function DeviceRepairSubTakeSearch(data) {
+  return request({
+    url: 'DeviceManager/DeviceRepairSubTakeSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 璁惧淇濆吇璁板綍瀵煎嚭
+export function DeviceRepairTakeOutExcel(data) {
+  return request({
+    url: 'DeviceManager/DeviceRepairTakeOutExcel',
+    method: 'get',
+    params: data
+  })
+}
+// 璁惧缁翠慨璁板綍鏌ヨ
+export function DeviceUpdateSearch(data) {
+  return request({
+    url: 'DeviceManager/DeviceUpdateSearch',
+    method: 'get',
+    params: data
+  })
+}
+// 璁惧缁翠慨璁板綍鏄庣粏鏌ヨ
+export function DeviceUpdateSubSearch(data) {
+  return request({
+    url: 'DeviceManager/DeviceUpdateSubSearch',
+    method: 'get',
+    params: data
+  })
+}
+// 璁惧缁翠慨璁板綍涓嬭浇
+export function DeviceUpdateOutExcel(data) {
+  return request({
+    url: 'DeviceManager/DeviceUpdateOutExcel',
+    method: 'get',
+    params: data
+  })
+}
diff --git a/src/api/ErpSyncMes.js b/src/api/ErpSyncMes.js
index fe87b32..bb54a83 100644
--- a/src/api/ErpSyncMes.js
+++ b/src/api/ErpSyncMes.js
@@ -10,9 +10,37 @@
 // }
 
 // 鐗╂枡绠$悊锛氳閲忓崟浣嶅悓姝�
-export function SaveSearchUnit(data) {
+export function SaveSearchUnit() {
   return request({
     url: 'ErpSyncMes/SaveSearchUnit',
     method: 'post'
   })
 }
+// 鐢熶骇绠$悊锛欵RP鐢熶骇璁㈠崟鍚屾
+export function SeaveSearchErpOrder() {
+  return request({
+    url: 'ErpSyncMes/SeaveSearchErpOrder',
+    method: 'post'
+  })
+}
+// 鐗╂枡绠$悊锛氬瓨璐ф。妗堝悓姝�
+export function SaveSearchMateriel_Info() {
+  return request({
+    url: 'ErpSyncMes/SaveSearchMateriel_Info',
+    method: 'post'
+  })
+}
+// 鍩虹璁剧疆锛氫粨搴撳悓姝�
+export function SaveSearchWareHouse() {
+  return request({
+    url: 'ErpSyncMes/SaveSearchWareHouse',
+    method: 'post'
+  })
+}
+// 鍩虹璁剧疆锛氬線鏉ュ崟浣嶅悓姝�
+export function SeaveSearchPartner() {
+  return request({
+    url: 'ErpSyncMes/SeaveSearchPartner',
+    method: 'post'
+  })
+}
diff --git a/src/api/Excel.js b/src/api/Excel.js
index 53e6af9..5ea8c1a 100644
--- a/src/api/Excel.js
+++ b/src/api/Excel.js
@@ -1,6 +1,15 @@
 import request from '@/utils/request'
 
-// Excel瀵煎叆妯℃澘涓嬭浇
+// 鏌ヨexcel妯℃澘
+export function ExcelModelData(data) {
+  return request({
+    url: 'ImportExcel/ExcelModelData',
+    method: 'get',
+    params: data
+  })
+}
+
+// 涓嬭浇excel妯℃澘
 export function DownLoadExcel(data) {
   return request({
     url: 'ImportExcel/DownLoadExcel',
@@ -9,29 +18,38 @@
   })
 }
 
-// Excel瀵煎叆鏂囦欢涓婁紶銆佹ā鏉块獙璇併�佹暟鎹噺銆侀獙璇�
+// Excel瀵煎叆鏁版嵁鎻愪氦銆佹ā鏉块獙璇�
 export function ExcelModelCheck(data) {
   return request({
     url: 'ImportExcel/ExcelModelCheck',
     method: 'post',
-    params: data
+    data
   })
 }
 
-// Excel瀵煎叆鏁版嵁楠岃瘉
-export function ExcelCheckData(data) {
-  return request({
-    url: 'ImportExcel/ExcelCheckData',
-    method: 'post',
-    params: data
-  })
-}
-
-// Excel瀵煎叆鏁版嵁
-export function ExcelImportSubmit(data) {
-  return request({
-    url: 'ImportExcel/ExcelImportSubmit',
-    method: 'POST',
-    params: data
-  })
-}
+// Excel瀵煎叆鏂囦欢涓婁紶銆佹ā鏉块獙璇併�佹暟鎹噺銆侀獙璇�
+// export function ExcelModelCheck(data) {
+//   return request({
+//     url: 'ImportExcel/ExcelModelCheck',
+//     method: 'post',
+//     params: data
+//   })
+// }
+//
+// // Excel瀵煎叆鏁版嵁楠岃瘉
+// export function ExcelCheckData(data) {
+//   return request({
+//     url: 'ImportExcel/ExcelCheckData',
+//     method: 'post',
+//     params: data
+//   })
+// }
+//
+// // Excel瀵煎叆鏁版嵁
+// export function ExcelImportSubmit(data) {
+//   return request({
+//     url: 'ImportExcel/ExcelImportSubmit',
+//     method: 'POST',
+//     params: data
+//   })
+// }
diff --git a/src/api/GeneralBasicData.js b/src/api/GeneralBasicData.js
index 2a93441..1b58b28 100644
--- a/src/api/GeneralBasicData.js
+++ b/src/api/GeneralBasicData.js
@@ -8,6 +8,14 @@
     params: data
   })
 }
+// 缁勭粐鏋舵瀯鍩虹璧勬枡(鏃犲叕鍙�)
+export function PrentOrganizationNoCompany(data) {
+  return request({
+    url: 'GeneralBasicData/PrentOrganizationNoCompany',
+    method: 'get',
+    params: data
+  })
+}
 
 // 鎸夐挳鍩虹璧勬枡
 export function ButtonData() {
@@ -24,6 +32,7 @@
     method: 'get'
   })
 }
+
 // 宀椾綅
 export function PostPermissions() {
   return request({
@@ -31,6 +40,7 @@
     method: 'get'
   })
 }
+
 // 瑙掕壊
 export function RolePermissions() {
   return request({
@@ -38,6 +48,7 @@
     method: 'get'
   })
 }
+
 // 鐝粍
 export function GroupsPermissions() {
   return request({
@@ -45,6 +56,7 @@
     method: 'get'
   })
 }
+
 // 鍗曚綅淇℃伅鏌ヨ
 export function UnitSerch(data) {
   return request({
@@ -53,3 +65,101 @@
     params: data
   })
 }
+
+// 浠撳簱
+export function WareHouse(data) {
+  return request({
+    url: 'GeneralBasicData/WareHouse',
+    method: 'get',
+    params: data
+  })
+}
+
+// 宸ュ簭鍩虹璧勬枡
+export function StepData(data) {
+  return request({
+    url: 'GeneralBasicData/StepData',
+    method: 'get',
+    params: data
+  })
+}
+
+// 浜哄憳鍩虹璧勬枡
+export function PersonPermissions(data) {
+  return request({
+    url: 'GeneralBasicData/PersonPermissions',
+    method: 'get',
+    params: data
+  })
+}
+
+// 鐝粍鏌ユ壘浜哄憳鍩虹璧勬枡
+export function GroupsPersonPermissions(data) {
+  return request({
+    url: 'GeneralBasicData/GroupsPersonPermissions',
+    method: 'get',
+    params: data
+  })
+}
+
+// 缂洪櫡瀹氫箟鍩虹璧勬枡
+export function DefectPermissions(data) {
+  return request({
+    url: 'GeneralBasicData/DefectPermissions',
+    method: 'get',
+    params: data
+  })
+}
+
+// 璁惧鍩虹璧勬枡
+export function EqpPermissions(data) {
+  return request({
+    url: 'GeneralBasicData/EqpPermissions',
+    method: 'get',
+    params: data
+  })
+}
+
+// 寰�鏉ュ崟浣嶅熀纭�璧勬枡
+export function CustomerPermissions(data) {
+  return request({
+    url: 'GeneralBasicData/CustomerPermissions',
+    method: 'get',
+    params: data
+  })
+}
+
+// 瀛樿揣鏍戝瀷鍩虹璧勬枡
+export function InventoryTreePermissions(data) {
+  return request({
+    url: 'GeneralBasicData/InventoryTreePermissions',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿妫�楠岄」鐩笅鎷夊垪琛�
+export function MouldCheckItemSelect(data) {
+  return request({
+    url: 'GeneralBasicData/MouldCheckItemSelect',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿淇濆吇椤圭洰涓嬫媺鍒楄〃
+export function MouldRepairItemSelect(data) {
+  return request({
+    url: 'GeneralBasicData/MouldRepairItemSelect',
+    method: 'get',
+    params: data
+  })
+}
+// 浠撳簱鏌ユ壘浠撲綅淇℃伅
+export function WareHouseSelectLocation(data) {
+  return request({
+    url: 'GeneralBasicData/WareHouseSelectLocation',
+    method: 'get',
+    params: data
+  })
+}
diff --git a/src/api/GridReport.js b/src/api/GridReport.js
new file mode 100644
index 0000000..081b7bb
--- /dev/null
+++ b/src/api/GridReport.js
@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+// MES宸ュ崟鎵撳嵃
+export function MesOrderPrintSearch(data) {
+  return request({
+    url: 'GridReport/MesOrderPrintSearch',
+    method: 'post',
+    data
+  })
+}
diff --git a/src/api/MouldManager.js b/src/api/MouldManager.js
new file mode 100644
index 0000000..7ad0dd8
--- /dev/null
+++ b/src/api/MouldManager.js
@@ -0,0 +1,334 @@
+import request from '@/utils/request'
+
+// 妯″叿娓呭崟鍒楄〃鏌ヨ
+export function MouldMangerSearch(data) {
+  return request({
+    url: 'MouldManager/MouldMangerSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿娓呭崟鏂板缂栬緫
+export function AddUpdateMouldManger(data) {
+  return request({
+    url: 'MouldManager/AddUpdateMouldManger',
+    method: 'post',
+    data
+  })
+}
+
+// 妯″叿娓呭崟鍒犻櫎
+export function DeleteMouldManger(data) {
+  return request({
+    url: 'MouldManager/DeleteMouldManger',
+    method: 'post',
+    params: data
+  })
+}
+
+// 妯″叿鐐规椤瑰垪琛ㄦ煡璇�
+export function MouldCheckItemSearch(data) {
+  return request({
+    url: 'MouldManager/MouldCheckItemSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿鐐规椤规柊澧炵紪杈�
+export function AddUpdateMouldCheckItem(data) {
+  return request({
+    url: 'MouldManager/AddUpdateMouldCheckItem',
+    method: 'post',
+    data
+  })
+}
+
+// 妯″叿鐐规椤瑰垹闄�
+export function DeleteMouldCheckItem(data) {
+  return request({
+    url: 'MouldManager/DeleteMouldCheckItem',
+    method: 'post',
+    params: data
+  })
+}
+
+// 妯″叿鐐规鏍囧噯鍒楄〃鏌ヨ
+export function DeviceCheckStandArdSearch(data) {
+  return request({
+    url: 'MouldManager/DeviceCheckStandArdSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿鐐规鏍囧噯缂栬緫/鏌ョ湅鑾峰彇鏁版嵁
+export function ViewMouldCheckStanedSearch(data) {
+  return request({
+    url: 'MouldManager/ViewMouldCheckStanedSearch',
+    method: 'post',
+    params: data
+  })
+}
+
+// 妯″叿鐐规鏍囧噯鏂板缂栬緫
+export function AddUpdateMouldCheckStandArd(data, opertype) {
+  return request({
+    url: 'MouldManager/AddUpdateMouldCheckStandArd?opertype=' + opertype,
+    method: 'post',
+    data
+  })
+}
+
+// 妯″叿鐐规鏍囧噯鍒犻櫎
+export function DeleteMouldCheckStaned(data) {
+  return request({
+    url: 'MouldManager/DeleteMouldCheckStaned',
+    method: 'post',
+    params: data
+  })
+}
+
+// 妯″叿鐐规鏍囧噯鍏宠仈妯″叿鏌ヨ
+export function CheckStanedAssociationMould(data) {
+  return request({
+    url: 'MouldManager/CheckStanedAssociationMould',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿鐐规鏍囧噯鍏宠仈妯″叿鎻愪氦
+export function SaveCheckStanedAssociationMould(data, checkstand_code) {
+  return request({
+    url: 'MouldManager/SaveCheckStanedAssociationMould?checkstand_code=' + checkstand_code,
+    method: 'post',
+    data
+  })
+}
+
+// 妯″叿淇濆吇椤瑰垪琛ㄦ煡璇�
+export function MouldMaiItemSearch(data) {
+  return request({
+    url: 'MouldManager/MouldMaiItemSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿淇濆吇椤规柊澧炵紪杈�
+export function AddUpdateMouldMaiItem(data) {
+  return request({
+    url: 'MouldManager/AddUpdateMouldMaiItem',
+    method: 'post',
+    data
+  })
+}
+
+// 妯″叿淇濆吇椤瑰垹闄�
+export function DeleteMouldMaiItem(data) {
+  return request({
+    url: 'MouldManager/DeleteMouldMaiItem',
+    method: 'post',
+    params: data
+  })
+}
+
+// 妯″叿淇濆吇鏍囧噯鍒楄〃鏌ヨ
+export function MouldRepairStandArdSearch(data) {
+  return request({
+    url: 'MouldManager/MouldRepairStandArdSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿淇濆吇鏍囧噯缂栬緫/鏌ョ湅鑾峰彇鏁版嵁
+export function ViewMouldRepairStanedSearch(data) {
+  return request({
+    url: 'MouldManager/ViewMouldRepairStanedSearch',
+    method: 'post',
+    params: data
+  })
+}
+
+// 妯″叿淇濆吇鏍囧噯鏂板缂栬緫
+export function AddUpdateMouldRepairStandArd(data, opertype) {
+  return request({
+    url: 'MouldManager/AddUpdateMouldRepairStandArd?opertype=' + opertype,
+    method: 'post',
+    data
+  })
+}
+
+// 妯″叿淇濆吇鏍囧噯鍒犻櫎
+export function DeleteMouldRepairStaned(data) {
+  return request({
+    url: 'MouldManager/DeleteMouldRepairStaned',
+    method: 'post',
+    params: data
+  })
+}
+
+// 妯″叿淇濆吇鏍囧噯鍏宠仈妯″叿鏌ヨ
+export function RepairStanedAssociationMould(data) {
+  return request({
+    url: 'MouldManager/RepairStanedAssociationMould',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿淇濆吇鏍囧噯鍏宠仈妯″叿鎻愪氦
+export function SaveRepairStanedAssociationMould(data, repairstand_code) {
+  return request({
+    url: 'MouldManager/SaveRepairStanedAssociationMould?repairstand_code=' + repairstand_code,
+    method: 'post',
+    data
+  })
+}
+
+// 妯″叿鐐规璁板綍鏌ヨ
+export function MouldCheckTakeSearch(data) {
+  return request({
+    url: 'MouldManager/MouldCheckTakeSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿鐐规璁板綍鏄庣粏鏌ヨ
+export function MouldCheckSubTakeSearch(data) {
+  return request({
+    url: 'MouldManager/MouldCheckSubTakeSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿鐐规璁板綍瀵煎嚭
+export function MouldCheckTakeOutExcel(data) {
+  return request({
+    url: 'MouldManager/MouldCheckTakeOutExcel',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿淇濆吇璁板綍鏌ヨ
+export function MouldRepairTakeSearch(data) {
+  return request({
+    url: 'MouldManager/MouldRepairTakeSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿淇濆吇璁板綍鏄庣粏鏌ヨ
+export function MouldRepairSubTakeSearch(data) {
+  return request({
+    url: 'MouldManager/MouldRepairSubTakeSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿淇濆吇璁板綍瀵煎嚭
+export function MouldRepairTakeOutExcel(data) {
+  return request({
+    url: 'MouldManager/MouldRepairTakeOutExcel',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿缁翠慨璁板綍鏌ヨ
+export function MouldUpdateSearch(data) {
+  return request({
+    url: 'MouldManager/MouldUpdateSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿缁翠慨璁板綍鏄庣粏鏌ヨ
+export function MouldUpdateSubSearch(data) {
+  return request({
+    url: 'MouldManager/MouldUpdateSubSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿缁翠慨璁板綍瀵煎嚭
+export function MouldUpdateOutExcel(data) {
+  return request({
+    url: 'MouldManager/MouldUpdateOutExcel',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿涓婁笅鏈鸿褰曟煡璇�
+export function MouldUpDownMachinesSearch(data) {
+  return request({
+    url: 'MouldManager/MouldUpDownMachinesSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿涓婁笅鏈鸿瀵煎嚭
+export function MouldUpDownMachinesOutExcel(data) {
+  return request({
+    url: 'MouldManager/MouldUpDownMachinesOutExcel',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿鍊熻繕璁板綍鏌ヨ
+export function MouldCirculateMachinesSearch(data) {
+  return request({
+    url: 'MouldManager/MouldCirculateMachinesSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿鍊熻繕璁板綍瀵煎嚭
+export function MouldCirculateMachinesOutExcel(data) {
+  return request({
+    url: 'MouldManager/MouldCirculateMachinesOutExcel',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿鍑哄叆搴撹褰曟煡璇�
+export function MouldInOutMachinesSearch(data) {
+  return request({
+    url: 'MouldManager/MouldInOutMachinesSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿鍑哄叆搴撹褰曞鍑�
+export function MouldInOutMachinesOutExcel(data) {
+  return request({
+    url: 'MouldManager/MouldInOutMachinesOutExcel',
+    method: 'get',
+    params: data
+  })
+}
+
+// 妯″叿鍑哄叆搴撹褰曟煡璇�
+export function MoldResumeSearch(data) {
+  return request({
+    url: 'MouldManager/MoldResumeSearch',
+    method: 'get',
+    params: data
+  })
+}
diff --git a/src/api/ProductModel.js b/src/api/ProductModel.js
index 3935f3b..124f76d 100644
--- a/src/api/ProductModel.js
+++ b/src/api/ProductModel.js
@@ -105,3 +105,12 @@
     params: data
   })
 }
+
+// 宸ュ崟浜у搧淇℃伅涓嬫媺妗嗘煡璇�
+export function PartSelect(data) {
+  return request({
+    url: 'ProductModel/PartSelect',
+    method: 'get',
+    params: data
+  })
+}
diff --git a/src/api/QualityManagement.js b/src/api/QualityManagement.js
new file mode 100644
index 0000000..48d5970
--- /dev/null
+++ b/src/api/QualityManagement.js
@@ -0,0 +1,171 @@
+import request from '@/utils/request'
+
+// 璐ㄩ噺绠$悊,缂洪櫡瀹氫箟鏌ヨ鍒楄〃
+export function DedectSearch(data) {
+  return request({
+    url: 'QualityManagement/DedectSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 璐ㄩ噺绠$悊锛岀己闄峰畾涔夋柊澧炪�佺紪杈戞彁浜�
+export function AddUpdateDedect(data) {
+  return request({
+    url: 'QualityManagement/AddUpdateDedect',
+    method: 'post',
+    data
+  })
+}
+
+// 璐ㄩ噺绠$悊锛岀己闄峰畾涔夊垹闄�
+export function DeleteDedect(data) {
+  return request({
+    url: 'QualityManagement/DeleteDedect',
+    method: 'post',
+    params: data
+  })
+}
+
+// 宸ュ簭妫�楠岄」鐩垪琛ㄦ煡璇�
+export function StepCheckItemSearch(data) {
+  return request({
+    url: 'QualityManagement/StepCheckItemSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 宸ュ簭妫�楠岄」鐩柊澧炪�佺紪杈戞彁浜�
+export function AddUpdateStepCheckItem(data) {
+  return request({
+    url: 'QualityManagement/AddUpdateStepCheckItem',
+    method: 'post',
+    data
+  })
+}
+
+// 宸ュ簭妫�楠岄」鐩垹闄�
+export function DeleteStepCheckItem(data) {
+  return request({
+    url: 'QualityManagement/DeleteStepCheckItem',
+    method: 'post',
+    params: data
+  })
+}
+
+// 宸ュ簭妫�楠屾爣鍑嗗垹闄�
+export function DeleteStepCheckStaned(data) {
+  return request({
+    url: 'QualityManagement/DeleteStepCheckStaned',
+    method: 'post',
+    params: data
+  })
+}
+
+// 鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾壂鐮佽幏鍙栦换鍔′俊鎭�
+export function MesOrderStepCheckSearch(data) {
+  return request({
+    url: 'QualityManagement/MesOrderStepCheckSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠岃幏鍙栨楠屾爣鍑嗕笅鎷夋鏁版嵁
+export function MesOrderStepCheckSelect() {
+  return request({
+    url: 'QualityManagement/MesOrderStepCheckSelect',
+    method: 'get'
+  })
+}
+
+// 鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾牴鎹楠屾爣鍑嗚幏鍙栨楠岄」鐩垪琛�
+export function MesOrderStepCheckItemList(data) {
+  return request({
+    url: 'QualityManagement/MesOrderStepCheckItemList',
+    method: 'get',
+    params: data
+  })
+}
+
+// 鐢熶骇寮�鎶ュ伐,宸ュ簭妫�楠屾彁浜や繚瀛�
+export function SaveMesOrderStepCheckItem(data) {
+  return request({
+    url: 'QualityManagement/SaveMesOrderStepCheckItem',
+    method: 'post',
+    data
+  })
+}
+
+// 宸ュ簭妫�楠岃褰曞垪琛ㄦ煡璇�
+export function StepCheckTableSearch(data) {
+  return request({
+    url: 'QualityManagement/StepCheckTableSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 宸ュ簭妫�楠岃褰曞垪琛ㄦ煡璇�
+export function StepCheckTableSubSearch(data) {
+  return request({
+    url: 'QualityManagement/StepCheckTableSubSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 宸ュ簭妫�楠岃褰曞鍑�
+export function StepCheckTableOutExcel(data) {
+  return request({
+    url: 'QualityManagement/StepCheckTableOutExcel',
+    method: 'get',
+    params: data
+  })
+}
+
+// 璐ㄦ鏂规鍒楄〃鏌ヨ
+export function QualityInspectionSearch(data) {
+  return request({
+    url: 'QualityManagement/QualityInspectionSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 璐ㄦ鏂规鏌ョ湅缂栬緫
+export function QualityInspectionSeeEdit(data) {
+  return request({
+    url: 'QualityManagement/QualityInspectionSeeEdit',
+    method: 'get',
+    params: data
+  })
+}
+
+// 璐ㄦ鏂规鏂板/缂栬緫鎻愪氦
+export function QualityInspectionAddEditSave(data) {
+  return request({
+    url: 'QualityManagement/QualityInspectionAddEditSave',
+    method: 'post',
+    data
+  })
+}
+
+// 璐ㄦ鏂规鍒犻櫎
+export function QualityInspectionDelete(data) {
+  return request({
+    url: 'QualityManagement/QualityInspectionDelete',
+    method: 'post',
+    params: data
+  })
+}
+
+// 宸ュ簭妫�楠屾爣鍑嗘柊澧炪�佺紪杈戣幏鍙栨楠岄」鐩笅鎷夊垪琛�
+export function QualityStepCheckItemSelect() {
+  return request({
+    url: 'QualityManagement/QualityStepCheckItemSelect',
+    method: 'get'
+  })
+}
+
diff --git a/src/api/ReportManager.js b/src/api/ReportManager.js
new file mode 100644
index 0000000..404fe9d
--- /dev/null
+++ b/src/api/ReportManager.js
@@ -0,0 +1,118 @@
+import request from '@/utils/request'
+
+// 鐢熶骇杩涘害鎶ヨ〃
+export function ProductionScheduleReportSearch(data) {
+  return request({
+    url: 'ReportManager/ProductionScheduleReportSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 鐢熶骇杩涘害鎶ヨ〃瀵煎嚭
+export function ProductionScheduleReportExcelSearch(data) {
+  return request({
+    url: 'ReportManager/ProductionScheduleReportExcelSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 鐝粍宸ヨ祫鎶ヨ〃璁板綍鏌ヨ
+export function GroupSalaryReportSearch(data) {
+  return request({
+    url: 'ReportManager/GroupSalaryReportSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 鐝粍宸ヨ祫鎶ヨ〃璁板綍鏌ヨ
+export function GroupSalaryReportExcelSearch(data) {
+  return request({
+    url: 'ReportManager/GroupSalaryReportExcelSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 鐝粍宸ヨ祫鎶ヨ〃璁板綍鏌ョ湅鎶ュ伐浜哄憳
+export function GroupSalaryReportSearchUser(data) {
+  return request({
+    url: 'ReportManager/GroupSalaryReportSearchUser',
+    method: 'get',
+    params: data
+  })
+}
+
+// 浜哄憳宸ヨ祫鏄庣粏鎶ヨ〃
+export function PeopleSalaryReportSearch(data) {
+  return request({
+    url: 'ReportManager/PeopleSalaryReportSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 浜哄憳宸ヨ祫鏄庣粏鎶ヨ〃瀵煎嚭
+export function PeopleSalaryReportExcelSearch(data) {
+  return request({
+    url: 'ReportManager/PeopleSalaryReportExcelSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 濮斿鎶ヨ〃璁板綍鏌ヨ
+export function OutSourceReportSearch(data) {
+  return request({
+    url: 'ReportManager/OutSourceReportSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 濮斿鎶ヨ〃璁板綍瀵煎嚭
+export function OutSourceReportExcelSearch(data) {
+  return request({
+    url: 'ReportManager/OutSourceReportExcelSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 涓嶈壇鏄庣粏鎶ヨ〃
+export function DefectDetailsReportSearch(data) {
+  return request({
+    url: 'ReportManager/DefectDetailsReportSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 涓嶈壇鏄庣粏鎶ヨ〃瀵煎嚭
+export function DefectDetailsReportExcelSearch(data) {
+  return request({
+    url: 'ReportManager/DefectDetailsReportExcelSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 缁翠慨鏄庣粏鎶ヨ〃
+export function MaintenanceDetailsReportSearch(data) {
+  return request({
+    url: 'ReportManager/MaintenanceDetailsReportSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 缁翠慨鏄庣粏鎶ヨ〃瀵煎嚭
+export function MaintenanceDetailsReportExcelSearch(data) {
+  return request({
+    url: 'ReportManager/MaintenanceDetailsReportExcelSearch',
+    method: 'get',
+    params: data
+  })
+}
diff --git a/src/api/WorkOrder.js b/src/api/WorkOrder.js
new file mode 100644
index 0000000..36c1a99
--- /dev/null
+++ b/src/api/WorkOrder.js
@@ -0,0 +1,258 @@
+import request from '@/utils/request'
+
+// ERP璁㈠崟鏌ヨ
+export function ErpOrderSearch(data) {
+  return request({
+    url: 'WorkOrder/ErpOrderSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// ERP璁㈠崟涓嬭揪
+export function MarkSaveErpOrder(data) {
+  return request({
+    url: 'WorkOrder/MarkSaveErpOrder',
+    method: 'post',
+    data
+  })
+}
+
+export function MarkBatchSaveErpOrder(data) {
+  return request({
+    url: 'WorkOrder/MarkBatchSaveErpOrder',
+    method: 'post',
+    data
+  })
+}
+
+export function MesOrderNewStepContent(data) {
+  return request({
+    url: 'WorkOrder/MesOrderNewStepContent',
+    method: 'post',
+    params: data
+  })
+}
+
+// ERP璁㈠崟鍏抽棴
+export function ClosedErpOrder(data) {
+  return request({
+    url: 'WorkOrder/ClosedErpOrder',
+    method: 'post',
+    params: data
+  })
+}
+
+// ERP璁㈠崟鍒犻櫎
+export function DeleteErpOrder(data) {
+  return request({
+    url: 'WorkOrder/DeleteErpOrder',
+    method: 'post',
+    params: data
+  })
+}
+
+// MES宸ュ崟鏌ヨ
+export function MesOrderSearch(data) {
+  return request({
+    url: 'WorkOrder/MesOrderSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// MES鎶ュ簾琛ュ崟宸ュ崟鏌ヨ
+export function MesBadOrderSearch(data) {
+  return request({
+    url: 'WorkOrder/MesBadOrderSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// MES宸ュ崟鏂板銆佽幏鍙栧伐鍗曞彿
+export function AddMesOrderCodeSearch(data) {
+  return request({
+    url: 'WorkOrder/AddMesOrderCodeSearch',
+    method: 'post',
+    params: data
+  })
+}
+
+// MES宸ュ崟鍒犻櫎
+export function DeleteMesOrder(data) {
+  return request({
+    url: 'WorkOrder/DeleteMesOrder',
+    method: 'post',
+    params: data
+  })
+}
+
+// 淇敼鍓嶈幏鍙�
+export function UpdateMesOrderStepSearch(data) {
+  return request({
+    url: 'WorkOrder/UpdateMesOrderStepSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 宸ュ崟娲惧彂
+export function MesOrderDistribution(data) {
+  return request({
+    url: 'WorkOrder/MesOrderDistribution',
+    method: 'post',
+    data
+  })
+}
+
+// MES宸ュ崟鏂板銆佺紪杈戞彁浜�
+export function AddUpdateMesOrder(data, OperType) {
+  return request({
+    url: 'WorkOrder/AddUpdateMesOrder?OperType=' + OperType,
+    method: 'post',
+    data
+  })
+}
+
+// MES宸ュ崟鍏抽棴鍒楄〃鏌ヨ
+export function MesOrderClosedSearch(data) {
+  return request({
+    url: 'WorkOrder/MesOrderClosedSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// MES宸ュ崟鍏抽棴鎻愪氦
+export function MesOrderBitchClosedSeave(data) {
+  return request({
+    url: 'WorkOrder/MesOrderBitchClosedSeave',
+    method: 'post',
+    data
+  })
+}
+
+// 鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(鑷埗)
+export function MesOrderStepSearch(data) {
+  return request({
+    url: 'WorkOrder/MesOrderStepSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(澶栧崗)
+export function MesOrderWxStepSearch(data) {
+  return request({
+    url: 'WorkOrder/MesOrderWxStepSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(涓嶈壇)
+export function MesOrderNgStepSearch(data) {
+  return request({
+    url: 'WorkOrder/MesOrderNgStepSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(涓嶈壇鏄庣粏)
+export function MesOrderNgSubStepSearch(data) {
+  return request({
+    url: 'WorkOrder/MesOrderNgSubStepSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 鐢熶骇寮�鎶ュ伐锛氭姤宸�/澶栧崗(鍙戞枡/鏀舵枡)鏃舵潯浠跺垽鏂強鏁版嵁杩斿洖鎺ュ彛
+export function MesOrderStepStart(data) {
+  return request({
+    url: 'WorkOrder/MesOrderStepStart',
+    method: 'get',
+    params: data
+  })
+}
+
+// 鐢熶骇寮�鎶ュ伐,鎶ュ伐鎻愪氦
+export function SavaMesOrderStepReport(data) {
+  return request({
+    url: 'WorkOrder/SavaMesOrderStepReport',
+    method: 'post',
+    data
+  })
+}
+
+// 鐢熶骇寮�鎶ュ伐,鍙戞枡鎻愪氦
+export function SavaMesOrderStepOut(data) {
+  return request({
+    url: 'WorkOrder/SavaMesOrderStepOut',
+    method: 'post',
+    data
+  })
+}
+
+// 鐢熶骇寮�鎶ュ伐,鏀舵枡鎻愪氦
+export function SavaMesOrderStepIn(data) {
+  return request({
+    url: 'WorkOrder/SavaMesOrderStepIn',
+    method: 'post',
+    data
+  })
+}
+
+// 涓嶈壇澶勭悊,鎻愪氦
+export function EditOrderNgStepSeave(data) {
+  return request({
+    url: 'WorkOrder/EditOrderNgStepSeave',
+    method: 'post',
+    data
+  })
+}
+
+// 鐢熶骇鎵ц,鎶ュ伐璋冩暣鍒楄〃鏁版嵁鏌ヨ鎺ュ彛
+export function MesOrderStepVerifySearch(data) {
+  return request({
+    url: 'WorkOrder/MesOrderStepVerifySearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 鐢熶骇鎵ц,鎶ュ伐璋冩暣鑾峰彇閫夊畾鎶ュ伐璁板綍鐨勪笉鑹暟鎹�
+export function MesOrderStepModelSearch(data) {
+  return request({
+    url: 'WorkOrder/MesOrderStepModelSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 鐢熶骇鎵ц,鎶ュ伐璋冩暣鏁版嵁鎻愪氦
+export function MesOrderStepUpdateSeave(data) {
+  return request({
+    url: 'WorkOrder/MesOrderStepUpdateSeave',
+    method: 'post',
+    data
+  })
+}
+
+// 鐢熶骇鎵ц,鎶ュ伐瀹℃牳鍒楄〃鏁版嵁鏌ヨ鎺ュ彛
+export function MesOrderStepReportVerifySearch(data) {
+  return request({
+    url: 'WorkOrder/MesOrderStepReportVerifySearch',
+    method: 'get',
+    params: data
+  })
+}// 鐢熶骇鎵ц,鎶ュ伐瀹℃牳鍒楄〃鏁版嵁鏌ヨ鎺ュ彛
+export function MesOrderStepReportVerifySeave(data) {
+  return request({
+    url: 'WorkOrder/MesOrderStepReportVerifySeave',
+    method: 'post',
+    data
+  })
+}
diff --git a/src/api/basicSettings.js b/src/api/basicSettings.js
index 989ceaf..2fe6cf9 100644
--- a/src/api/basicSettings.js
+++ b/src/api/basicSettings.js
@@ -256,6 +256,96 @@
   })
 }
 
+// 浠撳簱淇℃伅鍒楄〃
+export function TSecStckData(data) {
+  return request({
+    url: 'BasicSetting/TSecStckData',
+    method: 'get',
+    params: data
+  })
+}
+
+// 浠撳簱鏂板/缂栬緫淇濆瓨
+export function TSecStckAddUpdate(data) {
+  return request({
+    url: 'BasicSetting/TSecStckAddUpdate',
+    method: 'post',
+    data
+  })
+}
+
+// 浠撳簱鍒犻櫎
+export function TSecStckDelete(data) {
+  return request({
+    url: 'BasicSetting/TSecStckDelete',
+    method: 'post',
+    params: data
+  })
+}
+
+// 璐т綅鏍戝瀷淇℃伅
+export function TSecLocaTree(data) {
+  return request({
+    url: 'BasicSetting/TSecLocaTree',
+    method: 'get',
+    params: data
+  })
+}
+
+// 璐т綅淇℃伅鍒楄〃
+export function TSecLocaData(data) {
+  return request({
+    url: 'BasicSetting/TSecLocaData',
+    method: 'get',
+    params: data
+  })
+}
+
+// 璐т綅淇℃伅鏂板/缂栬緫淇濆瓨
+export function TSecLocaAddUpdate(data) {
+  return request({
+    url: 'BasicSetting/TSecLocaAddUpdate',
+    method: 'post',
+    data
+  })
+}
+
+// 璐т綅淇℃伅鍒犻櫎
+export function TSecLocaDelete(data) {
+  return request({
+    url: 'BasicSetting/TSecLocaDelete',
+    method: 'post',
+    params: data
+  })
+}
+
+// 宸ュ簭鏌ヨ
+export function StepSearch(data) {
+  return request({
+    url: 'BasicSetting/StepSearch',
+    method: 'get',
+    params: data
+  })
+}
+
+// 宸ュ簭鏂板缂栬緫
+export function AddUpdateStep(data) {
+  return request({
+    url: 'BasicSetting/AddUpdateStep',
+    method: 'post',
+    data
+  })
+}
+
+// 宸ュ簭鍒犻櫎
+export function DeleteStep(data) {
+  return request({
+    url: 'BasicSetting/DeleteStep',
+    method: 'post',
+    params: data
+  })
+}
+
 // 瀹夌伅绯荤粺/鑷畾涔夊畨鐏懠鍙被鍨嬫煡璇�
 export function AnDengTypeSearch() {
   return request({
diff --git a/src/api/kanbanManager.js b/src/api/kanbanManager.js
index f55828e..33786f3 100644
--- a/src/api/kanbanManager.js
+++ b/src/api/kanbanManager.js
@@ -1,124 +1,55 @@
 import request from '@/utils/request'
 
-// 澶у矝杞﹂棿缁煎悎鐪嬫澘,鑾峰彇鐢熶骇杞﹂棿
-export function ShopSearch() {
+// 杞﹂棿鐪嬫澘,涓婄敓浜т俊鎭�
+export function WorkShopProduceTopData(data) {
   return request({
-    url: 'KanBanManagerent/ShopSearch',
-    method: 'get'
-  })
-}
-// 澶у矝杞﹂棿缁煎悎鐪嬫澘,宸︿笂浜х嚎鍔犲伐浠诲姟鎺ュ彛
-export function LineSearchTopLeftData(data) {
-  return request({
-    url: 'KanBanManagerent/LineSearchTopLeftData',
-    method: 'post',
-    params: data
-  })
-}
-
-// 澶у矝杞﹂棿缁煎悎鐪嬫澘,鐢熶骇杞﹂棿鏌ユ壘浜х嚎鎺ュ彛
-export function ShopSearchLine(data) {
-  return request({
-    url: 'KanBanManagerent/ShopSearchLine',
+    url: 'KanBanManagerent/WorkShopProduceTopData',
     method: 'get',
     params: data
   })
 }
 
-// // 澶у矝杞﹂棿缁煎悎鐪嬫澘,宸︿笂浜х嚎鍔犲伐浠诲姟鎺ュ彛
-// export function LineSearchTopLeftData(data) {
-//   return request({
-//     url: 'KanBanManagerent/LineSearchTopLeftData',
-//     method: 'post',
-//     data
-//   })
-// }
-
-// 澶у矝杞﹂棿缁煎悎鐪嬫澘,宸︿笅鍒楄〃鎺ュ彛
-export function LineSearchBottomLeftData(data) {
+// 杞﹂棿鐪嬫澘,涓嬪乏杩戜竴鍛ㄤ笉鑹秼鍔�
+export function WorkShopProduceBottomLeftData(data) {
   return request({
-    url: 'KanBanManagerent/LineSearchBottomLeftData',
+    url: 'KanBanManagerent/WorkShopProduceBottomLeftData',
     method: 'get',
     params: data
   })
 }
 
-// 澶у矝杞﹂棿缁煎悎鐪嬫澘,鍙充笂top鎺掕鎺ュ彛
-export function LineSearchTopRightData(data) {
+// 杞﹂棿鐪嬫澘,涓嬪彸杩戜竴鏈堜笉鑹粺璁�
+export function WorkShopProduceBottomRightData(data) {
   return request({
-    url: 'KanBanManagerent/LineSearchTopRightData',
+    url: 'KanBanManagerent/WorkShopProduceBottomRightData',
     method: 'get',
     params: data
   })
 }
 
-// 澶у矝杞﹂棿缁煎悎鐪嬫澘,鍙充笅top鎺掕鎺ュ彛
-export function LineSearchBottomRightData(data) {
+// 杞﹂棿缁煎悎鐪嬫澘,宸︿笂鐢熶骇璁㈠崟
+export function WorkShopCompreLeftTop(data) {
   return request({
-    url: 'KanBanManagerent/LineSearchBottomRightData',
+    url: 'KanBanManagerent/WorkShopCompreLeftTop',
     method: 'get',
     params: data
   })
 }
 
-// 閲囪喘璁㈠崟璺熻釜绠$悊鐪嬫澘,宸︿笂鏈湀閲囪喘璁㈠崟鏁般�佹湰鏈堥噰璐繘璐у崟鏁般�佹湰鏈堥噰璐叆搴撳崟鏁�
-export function PurchaseLeftTop() {
+// 杞﹂棿缁煎悎鐪嬫澘,鍙充笂閿�鍞鍗�
+export function WorkShopCompreRightTop(data) {
   return request({
-    url: 'KanBanManagerent/PurchaseLeftTop',
-    method: 'get'
+    url: 'KanBanManagerent/WorkShopCompreRightTop',
+    method: 'get',
+    params: data
   })
 }
 
-// 閲囪喘璁㈠崟璺熻釜绠$悊鐪嬫澘,宸︿笅閲囪喘璁㈠崟璺熻釜鍒楄〃
-export function PurchaseLeftBottom() {
+// 杞﹂棿缁煎悎鐪嬫澘,鍙充笅搴撳瓨
+export function WorkShopCompreRightBottom(data) {
   return request({
-    url: 'KanBanManagerent/PurchaseLeftBottom',
-    method: 'get'
-  })
-}
-
-// 閲囪喘璁㈠崟璺熻釜绠$悊鐪嬫澘,鍙充晶Top
-export function PurchaseRight() {
-  return request({
-    url: 'KanBanManagerent/PurchaseRight',
-    method: 'get'
-  })
-}
-
-// 澶у矝浠撳簱鐪嬫澘,宸︿笂浜у搧寰呭叆搴撳垪琛�
-export function WareHouseTopLeftData() {
-  return request({
-    url: 'KanBanManagerent/WareHouseTopLeftData',
-    method: 'get'
-  })
-}
-
-// 澶у矝浠撳簱鐪嬫澘,宸︿笅浜у搧寰呭叆搴撳垪琛�
-export function WareHouseTopBottomData() {
-  return request({
-    url: 'KanBanManagerent/WareHouseTopBottomData',
-    method: 'get'
-  })
-}
-// 澶у矝浠撳簱鐪嬫澘,鍙充笂鎴愬搧搴撱�佸崐鎴愬搧搴搕op5搴撳瓨鎺掕
-export function WareHouseRightTopData() {
-  return request({
-    url: 'KanBanManagerent/WareHouseRightTopData',
-    method: 'get'
-  })
-}
-// 澶у矝浠撳簱鐪嬫澘,鍙充笅鍘熸枡搴撳簱top5搴撳瓨鎺掕
-export function WareHouseRightBottomData() {
-  return request({
-    url: 'KanBanManagerent/WareHouseRightBottomData',
-    method: 'get'
-  })
-}
-// 杞﹂棿鐪嬫澘鍏憡
-export function WkspReportNotice(data) {
-  return request({
-    url: 'KanBanManagerent/WkspReportNotice',
-    method: 'post',
+    url: 'KanBanManagerent/WorkShopCompreRightBottom',
+    method: 'get',
     params: data
   })
 }
diff --git a/src/assets/images/background001.jpg b/src/assets/images/background001.jpg
new file mode 100644
index 0000000..0b020d1
--- /dev/null
+++ b/src/assets/images/background001.jpg
Binary files differ
diff --git a/src/assets/images/box02.png b/src/assets/images/box02.png
new file mode 100644
index 0000000..c2ef325
--- /dev/null
+++ b/src/assets/images/box02.png
Binary files differ
diff --git a/src/components/DragSelect/index.vue b/src/components/DragSelect/index.vue
new file mode 100644
index 0000000..5454770
--- /dev/null
+++ b/src/components/DragSelect/index.vue
@@ -0,0 +1,65 @@
+<template>
+  <el-select ref="dragSelect" v-model="selectVal" v-bind="$attrs" class="drag-select" multiple filterable v-on="$listeners">
+    <slot />
+  </el-select>
+</template>
+
+<script>
+import Sortable from 'sortablejs'
+
+export default {
+  name: 'DragSelect',
+  props: {
+    value: {
+      type: Array,
+      required: true
+    }
+  },
+  computed: {
+    selectVal: {
+      get() {
+        return [...this.value]
+      },
+      set(val) {
+        this.$emit('input', [...val])
+      }
+    }
+  },
+  mounted() {
+    this.setSort()
+  },
+  methods: {
+    setSort() {
+      const el = this.$refs.dragSelect.$el.querySelectorAll('.el-select__tags > span')[0]
+      this.sortable = Sortable.create(el, {
+        ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
+        setData: function(dataTransfer) {
+          dataTransfer.setData('Text', '')
+          // to avoid Firefox bug
+          // Detail see : https://github.com/RubaXa/Sortable/issues/1012
+        },
+        onEnd: evt => {
+          const targetRow = this.value.splice(evt.oldIndex, 1)[0]
+          this.value.splice(evt.newIndex, 0, targetRow)
+        }
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+.drag-select {
+  ::v-deep {
+    .sortable-ghost {
+      opacity: .8;
+      color: #fff !important;
+      background: #42b983 !important;
+    }
+
+    .el-tag {
+      cursor: pointer;
+    }
+  }
+}
+</style>
diff --git a/src/components/UploadExcel/index.vue b/src/components/UploadExcel/index.vue
new file mode 100644
index 0000000..a9f2292
--- /dev/null
+++ b/src/components/UploadExcel/index.vue
@@ -0,0 +1,162 @@
+<template>
+  <div>
+    <input
+      ref="excel-upload-input"
+      class="excel-upload-input"
+      type="file"
+      accept=".xlsx, .xls"
+      @change="handleClick"
+    >
+    <el-button
+      :loading="loading"
+      style="margin-left:16px;"
+      :disabled="disabled"
+      type="primary"
+      icon="el-icon-upload2"
+      waves
+      @click="handleUpload"
+    >
+      鏂囦欢涓婁紶
+    </el-button>
+  </div>
+</template>
+
+<script>
+import XLSX from 'xlsx'
+import waves from '@/directive/waves'
+
+export default {
+  directives: { waves },
+  props: {
+    disabled: Boolean,
+    beforeUpload: Function, // eslint-disable-line
+    onSuccess: Function// eslint-disable-line
+  },
+  data() {
+    return {
+      loading: false,
+      excelData: {
+        header: null,
+        results: null,
+        sheetName: null
+      }
+    }
+  },
+  methods: {
+    generateData({ header, results }) {
+      this.excelData.header = header // 鐢ㄥ仛el-table琛ㄥご
+      this.excelData.results = results // 鐢ㄥ仛el-table琛ㄤ綋
+      this.onSuccess && this.onSuccess(this.excelData)
+
+      // 鏁扮粍瀵硅薄鏇存崲閿悕
+      // const aaa = JSON.parse(JSON.stringify(results))
+      // const bb = aaa.map(({
+      //   搴忓彿, 濮撳悕
+      // }) => ({
+      //   index: 搴忓彿,
+      //   name: 濮撳悕
+      // }))
+      // console.log(bb, 321)
+    },
+    handleUpload() {
+      this.$refs['excel-upload-input'].click()
+    },
+    handleClick(e) {
+      const files = e.target.files
+      const rawFile = files[0] // only use files[0]
+      if (!rawFile) return
+      this.upload(rawFile)
+    },
+    upload(rawFile) {
+      this.$refs['excel-upload-input'].value = null // fix can't select the same excel
+      if (!this.beforeUpload) {
+        this.readerData(rawFile)
+        return
+      }
+      const before = this.beforeUpload(rawFile)
+      if (before) { // 鎵ц浜�
+        this.readerData(rawFile)
+      }
+    },
+    readerData(rawFile) {
+      this.loading = true
+      return new Promise((resolve, reject) => {
+        const reader = new FileReader()
+        reader.onload = e => {
+          const data = e.target.result
+          const workbook = XLSX.read(data, { type: 'array', cellDates: true })
+          let worksheet = []
+          const header = []
+          const results = []
+          workbook.SheetNames.forEach((item, index) => {
+            worksheet = workbook.Sheets[item]
+            header.push(this.getHeaderRow(worksheet))
+            results.push(XLSX.utils.sheet_to_json(worksheet, { defval: null, raw: false }))
+          })
+          this.excelData.sheetName = workbook.SheetNames
+          // console.log(header)
+          // console.log(results)
+          // const firstSheetName = workbook.SheetNames[0]
+          // const worksheet = workbook.Sheets[firstSheetName]
+          // const header = this.getHeaderRow(worksheet)
+          // const results = XLSX.utils.sheet_to_json(worksheet)
+          this.generateData({ header, results })
+          this.loading = false
+          resolve()
+        }
+        reader.readAsArrayBuffer(rawFile)
+      })
+    },
+    getHeaderRow(sheet) {
+      const headers = []
+      const range = XLSX.utils.decode_range(sheet['!ref'])
+      let C
+      const R = range.s.r
+      /* start in the first row */
+      for (C = range.s.c; C <= range.e.c; ++C) { /* walk every column in the range */
+        const cell = sheet[XLSX.utils.encode_cell({ c: C, r: R })]
+        /* find the cell in the first row */
+        let hdr = 'UNKNOWN ' + C // <-- replace with your desired default
+        if (cell && cell.t) hdr = XLSX.utils.format_cell(cell)
+        headers.push(hdr)
+      }
+      return headers
+    },
+    isExcel(file) {
+      return /\.(xlsx|xls|csv)$/.test(file.name)
+    }
+  }
+}
+</script>
+
+<style scoped>
+.excel-upload-input {
+  display: none;
+  z-index: -9999;
+}
+
+.drop {
+  border: 2px dashed #bbb;
+  width: 600px;
+  height: 160px;
+  line-height: 160px;
+  margin: 0 auto;
+  font-size: 24px;
+  border-radius: 5px;
+  text-align: center;
+  color: #bbb;
+  position: relative;
+}
+
+</style>
+
+<style>
+
+/*.has-gutter{*/
+/*  color:  #34bfa3 !important;*/
+/*}*/
+
+/*.is-leaf{*/
+/*  background-color: #34bfa3 !important;*/
+/*}*/
+</style>
diff --git a/src/components/VcronTab/components/Crontab.vue b/src/components/VcronTab/components/Crontab.vue
index 8aedca6..05cb8c1 100644
--- a/src/components/VcronTab/components/Crontab.vue
+++ b/src/components/VcronTab/components/Crontab.vue
@@ -99,8 +99,8 @@
       <CrontabResult :ex="contabValueString" />
 
       <div class="pop_btn">
-        <el-button size="small" type="warning" @click="clearCron">閲嶇疆</el-button>
         <el-button size="small" type="primary" @click="submitFill">纭畾</el-button>
+        <el-button size="small" type="warning" @click="clearCron">閲嶇疆</el-button>
         <el-button size="small" @click="hidePopup">鍙栨秷</el-button>
       </div>
     </div>
diff --git a/src/icons/svg/bbgl.svg b/src/icons/svg/bbgl.svg
index 24f4103..5ff15de 100644
--- a/src/icons/svg/bbgl.svg
+++ b/src/icons/svg/bbgl.svg
@@ -11,8 +11,8 @@
   </defs>
   <path
     d="M500.92 308.92L386 404.71l-98-98-150.63 150.66 45.25 45.26L288 397.25l94 94 164.36-136.89L608 416V256H448zM640 64H128a64.19 64.19 0 0 0-64 64v768a64.19 64.19 0 0 0 64 64h444a289.06 289.06 0 0 1-82.6-64H128.11l-0.11-0.11V128.11l0.11-0.11h511.78l0.11 0.11v295a288.9 288.9 0 0 1 64-7.11V128a64.19 64.19 0 0 0-64-64zM446 576H160v64h263.15A285.9 285.9 0 0 1 446 576zM160 768h263.15a288.91 288.91 0 0 1-7.15-64H160z"
-    p-id="2463" fill="#157b7e"></path>
+    p-id="2463" fill="#00A79D"></path>
   <path
     d="M704 448c-141.38 0-256 114.62-256 256s114.62 256 256 256 256-114.62 256-256-114.62-256-256-256z m181 285.63L843.15 742a13.77 13.77 0 0 0-10.23 8.84q-2.08 5.72-4.64 11.2a13.78 13.78 0 0 0 1 13.49L852.92 811a13.71 13.71 0 0 1-1.71 17.3l-22.89 22.89a13.71 13.71 0 0 1-17.3 1.71l-35.49-23.66a13.78 13.78 0 0 0-13.49-1q-5.47 2.56-11.2 4.64a13.77 13.77 0 0 0-8.84 10.27L733.63 885a13.71 13.71 0 0 1-13.45 11h-32.37a13.71 13.71 0 0 1-13.45-11L666 843.15a13.77 13.77 0 0 0-8.84-10.23q-5.72-2.08-11.2-4.64a13.78 13.78 0 0 0-13.49 1L597 852.92a13.71 13.71 0 0 1-17.3-1.71l-22.89-22.89a13.71 13.71 0 0 1-1.71-17.3l23.66-35.49a13.78 13.78 0 0 0 1-13.49q-2.56-5.47-4.64-11.2a13.77 13.77 0 0 0-10.27-8.84L523 733.63a13.71 13.71 0 0 1-11-13.45v-32.37a13.71 13.71 0 0 1 11-13.45l41.85-8.36a13.77 13.77 0 0 0 10.23-8.84q2.08-5.72 4.64-11.2a13.78 13.78 0 0 0-1-13.49L555.08 597a13.71 13.71 0 0 1 1.71-17.3l22.89-22.89a13.71 13.71 0 0 1 17.3-1.71l35.49 23.66a13.78 13.78 0 0 0 13.49 1q5.47-2.56 11.2-4.64a13.77 13.77 0 0 0 8.84-10.27l8.37-41.85a13.71 13.71 0 0 1 13.45-11h32.37a13.71 13.71 0 0 1 13.45 11l8.36 41.85a13.77 13.77 0 0 0 8.84 10.23q5.72 2.08 11.2 4.64a13.78 13.78 0 0 0 13.49-1L811 555.08a13.71 13.71 0 0 1 17.3 1.71l22.89 22.89a13.71 13.71 0 0 1 1.71 17.3l-23.66 35.49a13.78 13.78 0 0 0-1 13.49q2.56 5.47 4.64 11.2a13.77 13.77 0 0 0 10.27 8.84l41.85 8.37a13.71 13.71 0 0 1 11 13.45v32.37a13.71 13.71 0 0 1-11 13.44zM704 621.71a82.29 82.29 0 1 0 58.19 24.1 81.75 81.75 0 0 0-58.19-24.1z"
-    p-id="2464" fill="#157b7e"></path>
+    p-id="2464" fill="#00A79D"></path>
 </svg>
diff --git a/src/icons/svg/blcs.svg b/src/icons/svg/blcs.svg
new file mode 100644
index 0000000..b29e8d6
--- /dev/null
+++ b/src/icons/svg/blcs.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1694480164779" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5197" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M517.2 878l-69.7-38.1-30.6-16.7-30.6 16.7-86.9 47.3-86.7-47.3-30.6-16.7-30.6 16.7-22.6 12.3V160c0-17.7 14.3-32 32-32h511.6c17.7 0 32 14.3 32 32v381c0 17.7 14.3 32 32 32s32-14.3 32-32V128c0-35.3-26.2-64-58.6-64H123.4C91 64 64.7 92.7 64.7 128v832L182 896l117.3 64 117.5-64 69.7 38.1c21.3 11.7 47.3-3.8 47.3-28.1 0-11.7-6.4-22.4-16.6-28z" p-id="5198" fill="#00ffff"></path><path d="M639.5 926.9c0 17.7 14.3 32 32 32s32-14.3 32-32V672.1c0-17.7-14.3-32-32-32s-32 14.3-32 32v254.8zM799.3 736.1c-17.7 0-32 14.3-32 32v158.8c0 17.7 14.3 32 32 32s32-14.3 32-32V768.1c0-17.7-14.4-32-32-32zM927.3 799.1c-17.7 0-32 14.3-32 32v95.8c0 17.7 14.3 32 32 32s32-14.3 32-32v-95.8c0-17.7-14.4-32-32-32z" p-id="5199" fill="#00ffff" data-spm-anchor-id="a313x.search_index.0.i3.d8a93a81BG5nd3" class="selected"></path><path d="M544.6 572h-256c-17.7 0-32 14.3-32 32s14.3 32 32 32h256c17.7 0 32-14.3 32-32s-14.3-32-32-32zM303.4 493.1c12.5 12.5 32.8 12.5 45.3 0l67.9-67.9 67.9 67.9c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3l-68-67.8 67.9-67.9c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0l-67.9 67.9-67.9-67.9c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l67.9 67.9-67.9 67.9c-12.3 12.5-12.3 32.7 0.1 45.2z" p-id="5200" fill="#00ffff"></path></svg>
\ No newline at end of file
diff --git a/src/icons/svg/ckkc.svg b/src/icons/svg/ckkc.svg
new file mode 100644
index 0000000..79d8410
--- /dev/null
+++ b/src/icons/svg/ckkc.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1694592951293" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7561" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M640 725.333333v-128h128v128h85.333333v128h-128v-128h-42.666666v128h-128v-128h85.333333z m213.333333-128h-85.333333v-51.2l-256-256-256 256V768h256v85.333333H170.666667v-298.666666H128l384-384 384 384h-42.666667v42.666666z" fill="#00ffff" p-id="7562"></path></svg>
\ No newline at end of file
diff --git a/src/icons/svg/component.svg b/src/icons/svg/component.svg
index 1975534..bd32f64 100644
--- a/src/icons/svg/component.svg
+++ b/src/icons/svg/component.svg
@@ -8,6 +8,6 @@
     <rect id="鐭╁舰" x="0" y="0" width="20" height="20"></rect>
     <path
       d="M6.78926121,0.5 L3.19007351,0.5 C1.71249893,0.5 0.500187903,1.71240277 0.500187903,3.1710221 L0.500187903,6.7701364 C0.500187903,8.22879243 1.71249893,9.38432942 3.17111827,9.38432942 L9.38446229,9.38432942 L9.38446229,3.1710221 C9.38446229,1.71240277 8.22892528,0.5 6.78926121,0.5 L6.78926121,0.5 Z M8.07737495,8.07722373 L3.17111827,8.07722373 C2.45131375,8.07722373 1.82613875,7.48999596 1.82613875,6.7701364 L1.82613875,3.1710221 C1.82613875,2.45112585 2.45131375,1.82604258 3.17111827,1.82604258 L6.77032432,1.82604258 C7.49012883,1.82604258 8.07737495,2.43222561 8.07737495,3.1710221 L8.07737495,8.07722373 L8.07737495,8.07722373 Z M16.9048936,0.5 L13.3056876,0.5 C11.8470682,0.5 10.6346104,1.71240277 10.6346104,3.1710221 L10.6346104,9.38431107 L16.9048753,9.38431107 C18.3633111,9.38431107 19.4998928,8.22879243 19.4998928,6.77011804 L19.4998928,3.17100375 C19.4998928,1.71240277 18.344521,0.5 16.9048936,0.5 L16.9048936,0.5 Z M18.1741438,6.7701364 C18.1741438,7.48999596 17.6246614,8.07722373 16.8857182,8.07722373 L11.9228526,8.07722373 L11.9228526,3.1520852 C11.9228526,2.43222563 12.5668361,1.80710569 13.2867874,1.80710569 L16.8856998,1.80710569 C17.6058347,1.80710569 18.1741438,2.41328872 18.1741438,3.1520852 L18.1741438,6.7701364 L18.1741438,6.7701364 Z M0.500187903,13.2865077 L0.500187903,16.8857872 C0.500187903,18.3443148 1.71249893,19.4999802 3.17111827,19.4999802 L6.77032432,19.4999802 C8.22894365,19.4999802 9.36552537,18.3443148 9.36552537,16.8857872 L9.36552537,10.6157241 L3.17111827,10.6157241 C1.71249893,10.6157241 0.500187903,11.8279985 0.500187903,13.2865077 L0.500187903,13.2865077 Z M8.0773566,16.8858055 C8.0773566,17.6055733 7.50906571,18.1738642 6.77030595,18.1738642 L3.17111827,18.1738642 C2.45131375,18.1738642 1.82613875,17.6055733 1.82613875,16.8858055 L1.82613875,13.2865077 C1.82613875,12.5666482 2.45131375,11.9226647 3.17111827,11.9226647 L8.0773566,11.9226647 L8.0773566,16.8858055 L8.0773566,16.8858055 Z M16.9048936,10.6157241 L10.6157286,10.6157241 L10.6157286,16.8858055 C10.6157286,18.3443331 11.8280946,19.4999985 13.2868057,19.4999985 L16.8857182,19.4999985 C18.344521,19.4999985 19.4811027,18.3443331 19.4811027,16.8858055 L19.4811027,13.2865077 C19.4998928,11.8279985 18.344521,10.6157241 16.9048936,10.6157241 L16.9048936,10.6157241 Z M18.1741438,16.8858055 C18.1741438,17.6055733 17.6246614,18.1738642 16.8857182,18.1738642 L13.2867874,18.1738642 C12.5668361,18.1738642 11.9228526,17.6055733 11.9228526,16.8858055 L11.9228526,11.922683 L16.9048753,11.922683 C17.6246431,11.922683 18.1929339,12.547858 18.1929339,13.2865261 L18.1929339,16.8858055 L18.1741438,16.8858055 Z"
-      id="褰㈢姸" fill="#157b7e" fill-rule="nonzero"></path>
+      id="褰㈢姸" fill="#00A79D" fill-rule="nonzero"></path>
   </g>
 </svg>
diff --git a/src/icons/svg/example.svg b/src/icons/svg/example.svg
index 7d0ac3c..37d3b97 100644
--- a/src/icons/svg/example.svg
+++ b/src/icons/svg/example.svg
@@ -8,6 +8,6 @@
     <rect id="鐭╁舰" x="0" y="0" width="20" height="20"></rect>
     <path
       d="M18.5451858,3.22269871 L15.4641047,6.3205248 L13.6668074,4.51345958 L15.7850507,2.38370414 L16.7478885,1.41563349 C14.5012669,-0.00420346467 11.5485642,0.253948709 9.55869932,2.19009001 C8.14653716,3.60992697 7.63302365,5.61060632 7.95396959,7.41767154 L0.893158784,14.5168563 C0.37964527,15.0331607 0.37964527,15.8076172 0.893158784,16.3239215 L3.58910473,19.0345194 C4.10261824,19.5508237 4.87288851,19.5508237 5.38640203,19.0345194 L12.4472128,11.9353346 C14.2445101,12.3225628 16.234375,11.7417204 17.6465372,10.3218835 C19.7005912,8.45028023 19.957348,5.48153023 18.5451858,3.22269871 Z M16.8120777,9.54742697 C15.5282939,10.8381878 13.7309966,11.1608781 12.1262669,10.5800357 L4.61613176,18.1955248 L1.92018581,15.484927 L9.49451014,7.86943784 C8.91680743,6.25598675 9.30194257,4.44892154 10.5215372,3.15816067 C11.6127534,2.06101393 13.0891047,1.67378567 14.5012669,1.93193784 L12.832348,3.60992697 L11.9336993,4.51345958 L15.5924831,8.19212806 L18.2242399,5.54606827 C18.3526182,6.96590523 17.9032939,8.45028023 16.8120777,9.54742697 Z"
-      id="褰㈢姸" fill="#157b7e" fill-rule="nonzero"></path>
+      id="褰㈢姸" fill="#00A79D" fill-rule="nonzero"></path>
   </g>
 </svg>
diff --git a/src/icons/svg/home.svg b/src/icons/svg/home.svg
index ddc0840..98523c5 100644
--- a/src/icons/svg/home.svg
+++ b/src/icons/svg/home.svg
@@ -8,6 +8,6 @@
     <rect id="鐭╁舰" x="0" y="0" width="20" height="20"></rect>
     <path
       d="M15.4667218,18.9453146 C15.4288032,18.9453146 15.3983216,18.9442715 15.3764745,18.9431705 L3.82986779,18.9431705 C3.05639166,18.9431705 2.61116286,18.6173957 2.37387749,18.3441041 C1.85389337,17.7452309 1.89565591,16.9332761 1.91910628,16.7079863 L1.91910628,9.76308164 L3.15537002,9.76308164 L3.15537002,16.7926511 L3.1495364,16.8290243 C3.13483645,16.95267 3.13344566,17.3366071 3.30965187,17.5361865 C3.34693295,17.5784126 3.46037946,17.7069068 3.82988711,17.7069068 L15.4258092,17.7069068 L15.4402966,17.7084907 C15.4818853,17.7099588 15.871347,17.7168741 16.1163011,17.4852485 C16.2796038,17.3308315 16.3623948,17.0755044 16.3623948,16.7263371 L16.3623948,9.75775026 L17.5986586,9.75775026 L17.5986586,16.7263371 C17.5986586,17.6124099 17.2461882,18.1243003 16.9504894,18.3977078 C16.4186255,18.8895089 15.7448231,18.9453146 15.4667218,18.9453146 Z M2.53721884,10.3432177 L0.637448489,10.3432177 C0.380711281,10.3432177 0.150727593,10.184551 0.0595724588,9.94454198 C-0.0315633585,9.70453297 0.0351176168,9.43319239 0.227124828,9.26278116 L9.34880022,1.16737852 C9.58098601,0.961308808 9.9299794,0.95941578 10.1644059,1.16299365 L19.412837,9.19467076 C19.6051339,9.36168226 19.6753112,9.62954584 19.5896034,9.86938101 C19.5038955,10.1092162 19.2798613,10.2719394 19.025249,10.2792604 L16.9982014,10.3374421 C16.9921553,10.3376352 16.9861478,10.3377125 16.9801211,10.3377125 C16.6469673,10.3377125 16.3722077,10.0725146 16.3625687,9.73731327 C16.3527752,9.39606585 16.6214694,9.11149339 16.9627168,9.10169986 L17.4056662,9.08898953 L9.76354739,2.45220424 L2.26518286,9.10695398 L2.53721884,9.10695398 C2.87860148,9.10695398 3.1553507,9.38370321 3.1553507,9.72508585 C3.1553507,10.0664685 2.87860148,10.3432177 2.53721884,10.3432177 Z M7.68801511,18.3308916 C7.39996566,18.3308916 7.16646635,18.0973923 7.16646635,17.8093428 L7.16646635,13.4467612 C7.16646635,13.3527666 7.19030306,12.9657774 7.55320441,12.5969265 C7.99362337,12.1493025 8.7403653,11.9223322 9.77270347,11.9223322 C10.7894918,11.9223322 11.5281207,12.1524124 11.9680761,12.6061985 C12.3394381,12.9892084 12.3633714,13.3925009 12.3626528,13.4994763 L12.3626528,17.7925953 C12.3626528,18.0806447 12.129138,18.3141441 11.8410886,18.3141441 C11.5530391,18.3141441 11.3195398,18.0806447 11.3195398,17.7925953 L11.3195398,13.505619 C11.3160822,13.4830765 11.2942737,13.3877103 11.1646785,13.2826859 C11.018471,13.1641977 10.6431877,12.9654297 9.77268415,12.9654297 C8.76296575,12.9654297 8.4041402,13.2193467 8.29673978,13.3284856 C8.24400541,13.3820892 8.22186856,13.4276957 8.21257727,13.4564968 C8.21116715,13.4608431 8.21020132,13.464436 8.20954456,13.4671016 L8.20954456,17.8093428 C8.20956387,18.0973923 7.97606456,18.3308916 7.68801511,18.3308916 Z"
-      id="褰㈢姸" fill="#157b7e" fill-rule="nonzero"></path>
+      id="褰㈢姸" fill="#00A79D" fill-rule="nonzero"></path>
   </g>
 </svg>
diff --git a/src/icons/svg/mj.svg b/src/icons/svg/mj.svg
new file mode 100644
index 0000000..3e8aa3f
--- /dev/null
+++ b/src/icons/svg/mj.svg
@@ -0,0 +1,15 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1697088871240" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9354"
+     xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200">
+  <path
+    d="M510.084712 803.578485l-42.192666-23.653463v219.913284h77.35322v-214.159739l-35.160554 17.899918zM250.535893 365.669764l39.635534-21.735615L108.61511 239.731052 69.618859 306.855746l180.917034 104.203097v-45.389079zM786.894166 373.341158l0.639283 28.128443 164.295681-91.417441-38.356969-67.763977-179.638468 100.3674 53.060473 30.685575z"
+    fill="#00A79D" p-id="9355" data-spm-anchor-id="a313x.search_index.0.i12.ad893a81P9q8WY" class="selected"></path>
+  <path
+    d="M510.723994 294.07009L305.514214 396.355339v235.256072l198.816952 109.31736 214.799023-109.31736-3.196414-219.913285L510.723994 294.07009z"
+    fill="#00A79D" opacity=".28" p-id="9356" data-spm-anchor-id="a313x.search_index.0.i10.ad893a81P9q8WY"
+    class=""></path>
+  <path
+    d="M907.718616 208.406194L576.570123 17.260636a127.856561 127.856561 0 0 0-127.856561 0l-331.148492 191.784841A127.856561 127.856561 0 0 0 51.718941 319.641402v383.569683a127.856561 127.856561 0 0 0 63.92828 111.874491l331.148493 191.784841a127.856561 127.856561 0 0 0 127.856561 0l331.148493-191.784841a127.856561 127.856561 0 0 0 63.92828-111.874491V319.641402a127.856561 127.856561 0 0 0-62.010432-111.235208zM512.00256 944.859985a51.781907 51.781907 0 0 1-25.571312-7.032111l-331.148493-191.784841a51.781907 51.781907 0 0 1-25.571312-44.749796V319.641402a51.781907 51.781907 0 0 1 25.571312-44.749796l331.148493-191.784841a51.781907 51.781907 0 0 1 51.781907 0l331.148493 191.784841a51.781907 51.781907 0 0 1 25.571312 44.749796v383.569683a51.781907 51.781907 0 0 1-25.571312 44.749796l-331.148493 191.784842a51.781907 51.781907 0 0 1-26.210595 5.114262z"
+    fill="#00A79D" p-id="9357" data-spm-anchor-id="a313x.search_index.0.i11.ad893a81P9q8WY" class="selected"></path>
+</svg>
diff --git a/src/icons/svg/quality.svg b/src/icons/svg/quality.svg
index bdc740e..63ca87f 100644
--- a/src/icons/svg/quality.svg
+++ b/src/icons/svg/quality.svg
@@ -1,11 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
-    <title>璐ㄩ噺绠$悊澶囦唤</title>
-    <desc>Created with Sketch.</desc>
-    <g id="璐ㄩ噺绠$悊澶囦唤" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <rect id="鐭╁舰" x="0" y="0" width="20" height="20"></rect>
-        <rect id="鐭╁舰" x="0" y="0" width="20" height="20"></rect>
-        <path d="M1.87152539,1.85888424 L11.3130252,1.85888424 L11.3130252,7.27232022 L15.366151,7.27232022 L15.366151,8.65276028 L16.7172577,8.65276028 L16.7172577,5.93521422 L11.3130468,0.500122058 L1.8265604,0.500122058 C1.0916723,0.500122058 0.519059396,1.11183304 0.519059396,1.85888424 L0.519059396,18.1294631 C0.519059396,18.8764926 1.0916723,19.4882036 1.8265604,19.4882036 L8.61089811,19.4882036 L8.61089811,18.1294631 L1.87152539,18.1294631 L1.87152539,1.85888424 Z M12.6640887,3.21766814 L15.366151,5.93304425 L12.6579826,5.93265365 L12.6640887,3.21766814 Z M18.8916505,12.9413989 C17.75033,11.8440514 15.4229614,10.0022567 12.6561918,10.0022567 C9.89071679,10.0022567 7.56196728,11.8440297 6.42068992,12.9413989 C5.73197504,13.602216 5.73197504,14.5642232 6.42068992,15.2250403 C7.56196726,16.3224311 9.89071679,18.1642041 12.6561918,18.1642041 C15.4229614,18.1642041 17.75033,16.3224311 18.8916505,15.2250403 C19.5790276,14.5642232 19.5790276,13.602216 18.8916505,12.9413989 Z M17.9680347,14.2325018 C16.9705848,15.1905163 14.9545835,16.7987801 12.6561918,16.7987801 C10.3565055,16.7987801 8.3417556,15.1905379 7.34428415,14.2325018 C7.27830389,14.1687702 7.24926222,14.1117437 7.24926222,14.0825577 C7.24926222,14.0546738 7.27832546,13.9976473 7.34428415,13.9339591 C8.34173401,12.9745558 10.3565055,11.3676373 12.6561918,11.3676373 C14.9545835,11.3676373 16.9705848,12.9758578 17.9680347,13.932592 C18.0340365,13.9963019 18.0629919,14.0546521 18.0629919,14.082536 C18.0629919,14.111722 18.0340365,14.1701372 17.9680347,14.2325018 Z M12.6983734,12.7171555 C11.9608314,12.7171555 11.36319,13.3262191 11.36319,14.0759177 C11.36319,14.8256379 11.9608314,15.4346798 12.6983734,15.4346798 C13.4346424,15.4346798 14.0335784,14.8256379 14.0335784,14.0759177 C14.0335784,13.3262191 13.4346424,12.7171555 12.6983734,12.7171555 Z" id="褰㈢姸" fill="#157b7e" fill-rule="nonzero"></path>
-    </g>
+<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink">
+  <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
+  <title>璐ㄩ噺绠$悊澶囦唤</title>
+  <desc>Created with Sketch.</desc>
+  <g id="璐ㄩ噺绠$悊澶囦唤" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+    <rect id="鐭╁舰" x="0" y="0" width="20" height="20"></rect>
+    <rect id="鐭╁舰" x="0" y="0" width="20" height="20"></rect>
+    <path
+      d="M1.87152539,1.85888424 L11.3130252,1.85888424 L11.3130252,7.27232022 L15.366151,7.27232022 L15.366151,8.65276028 L16.7172577,8.65276028 L16.7172577,5.93521422 L11.3130468,0.500122058 L1.8265604,0.500122058 C1.0916723,0.500122058 0.519059396,1.11183304 0.519059396,1.85888424 L0.519059396,18.1294631 C0.519059396,18.8764926 1.0916723,19.4882036 1.8265604,19.4882036 L8.61089811,19.4882036 L8.61089811,18.1294631 L1.87152539,18.1294631 L1.87152539,1.85888424 Z M12.6640887,3.21766814 L15.366151,5.93304425 L12.6579826,5.93265365 L12.6640887,3.21766814 Z M18.8916505,12.9413989 C17.75033,11.8440514 15.4229614,10.0022567 12.6561918,10.0022567 C9.89071679,10.0022567 7.56196728,11.8440297 6.42068992,12.9413989 C5.73197504,13.602216 5.73197504,14.5642232 6.42068992,15.2250403 C7.56196726,16.3224311 9.89071679,18.1642041 12.6561918,18.1642041 C15.4229614,18.1642041 17.75033,16.3224311 18.8916505,15.2250403 C19.5790276,14.5642232 19.5790276,13.602216 18.8916505,12.9413989 Z M17.9680347,14.2325018 C16.9705848,15.1905163 14.9545835,16.7987801 12.6561918,16.7987801 C10.3565055,16.7987801 8.3417556,15.1905379 7.34428415,14.2325018 C7.27830389,14.1687702 7.24926222,14.1117437 7.24926222,14.0825577 C7.24926222,14.0546738 7.27832546,13.9976473 7.34428415,13.9339591 C8.34173401,12.9745558 10.3565055,11.3676373 12.6561918,11.3676373 C14.9545835,11.3676373 16.9705848,12.9758578 17.9680347,13.932592 C18.0340365,13.9963019 18.0629919,14.0546521 18.0629919,14.082536 C18.0629919,14.111722 18.0340365,14.1701372 17.9680347,14.2325018 Z M12.6983734,12.7171555 C11.9608314,12.7171555 11.36319,13.3262191 11.36319,14.0759177 C11.36319,14.8256379 11.9608314,15.4346798 12.6983734,15.4346798 C13.4346424,15.4346798 14.0335784,14.8256379 14.0335784,14.0759177 C14.0335784,13.3262191 13.4346424,12.7171555 12.6983734,12.7171555 Z"
+      id="褰㈢姸" fill="#00A79D" fill-rule="nonzero"></path>
+  </g>
 </svg>
diff --git a/src/icons/svg/table.svg b/src/icons/svg/table.svg
index f6e25fa..ea11433 100644
--- a/src/icons/svg/table.svg
+++ b/src/icons/svg/table.svg
@@ -1,12 +1,17 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-    <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
-    <title>鐗╂枡绠$悊澶囦唤</title>
-    <desc>Created with Sketch.</desc>
-    <g id="鐗╂枡绠$悊澶囦唤" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
-        <rect id="鐭╁舰" x="0" y="0" width="20" height="20"></rect>
-        <rect id="鐭╁舰" x="0" y="0" width="20" height="20"></rect>
-        <path d="M6.42353753,9.80617618 L3.54412378,8.17911347 C3.31331205,8.04783984 3.02038813,8.11674647 2.87229833,8.33714011 C2.80615013,8.44215245 2.78660602,8.56992741 2.8183394,8.68991145 C2.85007034,8.80990314 2.93026695,8.91129751 3.03972388,8.96981279 L5.91905268,10.5976398 C6.1498361,10.7287719 6.44278834,10.6598936 6.59087815,10.4396132 C6.65709137,10.3345034 6.67667301,10.2066141 6.64494351,10.0865079 C6.613214,9.96640167 6.53302414,9.86486981 6.42353753,9.80617618 L6.42353753,9.80617618 Z" id="璺緞" fill="#157b7e" fill-rule="nonzero"></path>
-        <path d="M18.8389321,7.57033447 C18.5678918,7.57033447 18.3490552,7.7769128 18.3490552,8.03204284 L18.3490552,13.7298622 L10.1153644,18.1101891 L10.1153644,10.0395075 C10.1153644,10.0040067 10.1015208,9.97280904 10.0943583,9.93951644 L18.5041942,5.44906349 C18.6603415,5.37127572 18.7571951,5.20998183 18.7524732,5.03559542 C18.7478807,4.86118297 18.6425305,4.70527255 18.4824238,4.63594263 L9.84497521,0.566488227 C9.70620155,0.501996187 9.54604743,0.501996187 9.40727377,0.566488227 L0.769825202,4.63594263 C0.567691545,4.72704432 0.465832045,4.95508166 0.532841901,5.1664161 C0.512394113,5.21487085 0.50132728,5.26676583 0.500228732,5.3193469 L0.500228732,14.0002514 C0.500228732,14.1625811 0.590141401,14.3118882 0.736447674,14.395148 L9.37386791,19.2951057 L9.37751992,19.2965495 C9.38326686,19.299522 9.39057084,19.299522 9.39566665,19.3030608 C9.45662395,19.3330285 9.52286178,19.3507637 9.59063787,19.3552645 C9.61308772,19.3567083 9.63485813,19.3531696 9.65730799,19.3516125 C9.71548887,19.348298 9.77264079,19.3348268 9.82617736,19.3118086 C9.83987942,19.3060616 9.85293034,19.3089493 9.86674564,19.3016453 L19.08036,14.4010082 C19.2316231,14.3239088 19.3276239,14.1692543 19.3296016,13.999487 L19.3296016,8.03204284 C19.3289505,7.77756392 19.1093212,7.57033447 18.8389321,7.57033447 Z M9.13688461,18.0834078 L1.47791583,13.73861 L1.47791583,5.83900592 L9.15789066,9.93951644 C9.14993553,9.97280904 9.13688461,10.0040067 9.13688461,10.0395075 L9.13688461,18.0834078 Z M17.222061,5.07364409 L9.62611033,9.1292549 L2.03083913,5.07364409 L9.62534596,1.49485922 L17.222061,5.07364409 Z" id="褰㈢姸" fill="#157b7e" fill-rule="nonzero"></path>
-    </g>
+<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg"
+     xmlns:xlink="http://www.w3.org/1999/xlink">
+  <!-- Generator: Sketch 55.2 (78181) - https://sketchapp.com -->
+  <title>鐗╂枡绠$悊澶囦唤</title>
+  <desc>Created with Sketch.</desc>
+  <g id="鐗╂枡绠$悊澶囦唤" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
+    <rect id="鐭╁舰" x="0" y="0" width="20" height="20"></rect>
+    <rect id="鐭╁舰" x="0" y="0" width="20" height="20"></rect>
+    <path
+      d="M6.42353753,9.80617618 L3.54412378,8.17911347 C3.31331205,8.04783984 3.02038813,8.11674647 2.87229833,8.33714011 C2.80615013,8.44215245 2.78660602,8.56992741 2.8183394,8.68991145 C2.85007034,8.80990314 2.93026695,8.91129751 3.03972388,8.96981279 L5.91905268,10.5976398 C6.1498361,10.7287719 6.44278834,10.6598936 6.59087815,10.4396132 C6.65709137,10.3345034 6.67667301,10.2066141 6.64494351,10.0865079 C6.613214,9.96640167 6.53302414,9.86486981 6.42353753,9.80617618 L6.42353753,9.80617618 Z"
+      id="璺緞" fill="#00A79D" fill-rule="nonzero"></path>
+    <path
+      d="M18.8389321,7.57033447 C18.5678918,7.57033447 18.3490552,7.7769128 18.3490552,8.03204284 L18.3490552,13.7298622 L10.1153644,18.1101891 L10.1153644,10.0395075 C10.1153644,10.0040067 10.1015208,9.97280904 10.0943583,9.93951644 L18.5041942,5.44906349 C18.6603415,5.37127572 18.7571951,5.20998183 18.7524732,5.03559542 C18.7478807,4.86118297 18.6425305,4.70527255 18.4824238,4.63594263 L9.84497521,0.566488227 C9.70620155,0.501996187 9.54604743,0.501996187 9.40727377,0.566488227 L0.769825202,4.63594263 C0.567691545,4.72704432 0.465832045,4.95508166 0.532841901,5.1664161 C0.512394113,5.21487085 0.50132728,5.26676583 0.500228732,5.3193469 L0.500228732,14.0002514 C0.500228732,14.1625811 0.590141401,14.3118882 0.736447674,14.395148 L9.37386791,19.2951057 L9.37751992,19.2965495 C9.38326686,19.299522 9.39057084,19.299522 9.39566665,19.3030608 C9.45662395,19.3330285 9.52286178,19.3507637 9.59063787,19.3552645 C9.61308772,19.3567083 9.63485813,19.3531696 9.65730799,19.3516125 C9.71548887,19.348298 9.77264079,19.3348268 9.82617736,19.3118086 C9.83987942,19.3060616 9.85293034,19.3089493 9.86674564,19.3016453 L19.08036,14.4010082 C19.2316231,14.3239088 19.3276239,14.1692543 19.3296016,13.999487 L19.3296016,8.03204284 C19.3289505,7.77756392 19.1093212,7.57033447 18.8389321,7.57033447 Z M9.13688461,18.0834078 L1.47791583,13.73861 L1.47791583,5.83900592 L9.15789066,9.93951644 C9.14993553,9.97280904 9.13688461,10.0040067 9.13688461,10.0395075 L9.13688461,18.0834078 Z M17.222061,5.07364409 L9.62611033,9.1292549 L2.03083913,5.07364409 L9.62534596,1.49485922 L17.222061,5.07364409 Z"
+      id="褰㈢姸" fill="#00A79D" fill-rule="nonzero"></path>
+  </g>
 </svg>
diff --git a/src/icons/svg/tree2.svg b/src/icons/svg/tree2.svg
index 6ee34cc..077160b 100644
--- a/src/icons/svg/tree2.svg
+++ b/src/icons/svg/tree2.svg
@@ -4,8 +4,8 @@
      xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128">
   <path
     d="M545.784454 962.539206l-65.943898 0c-29.341259 0-54.624085-25.281803-54.624085-54.615898L425.216471 868.462574c0-9.623171-7.826246-20.911262-16.690124-23.680329l-1.566682-0.611937-55.725162-23.104207-0.880043-0.494257c-8.153704-4.41045-22.017456-2.376117-28.55229 4.187369l-28.17469 28.123524c-9.930163 9.977235-23.239284 15.494902-37.432541 15.494902-14.195304 0-27.507494-5.517667-37.487799-15.541975l-46.682205-46.630017c-20.60427-20.603247-20.6319-54.233182-0.069585-74.974575l28.15013-28.106128c6.637164-6.574742 8.676613-20.599154 4.253884-28.909423l-0.831948-1.768273-23.164582-56.128345-0.26913-0.682545c-2.803859-9.03477-14.279215-17.394159-23.611767-17.394159l-39.631626 0c-29.391401 0-52.861952-24.065092-52.861952-53.193503l0-65.943898c0-28.770254 22.998807-51.754734 52.919257-51.754734l39.575344 0c9.081843 0 20.803815-8.830109 23.666002-18.057261l0.567935-1.476631 23.163559-57.088206 0.505513-0.913812c4.40431-8.220219 2.319835-22.224164-4.2897-28.830629l-28.04166-28.087709c-9.964956-9.921977-15.486716-23.216771-15.502066-37.396725-0.01535-14.201443 5.492084-27.53717 15.507182-37.552268l46.6556-46.614667c9.94142-9.985422 23.248494-15.503089 37.432541-15.503089 0.001023 0 0 0 0.001023 0 14.184047 0 27.490098 5.51869 37.46938 15.540951l28.039613 28.05087c6.557346 6.525624 20.500916 8.596795 28.655643 4.231371l0.893346-0.478907 57.375755-23.64963c8.836249-2.731204 16.634866-14.037714 16.634866-23.719214l0-39.632649c0-28.967752 24.777313-52.095495 54.624085-52.095495L545.784454 64.076364c29.161157 0 52.370765 22.636556 52.370765 52.095495l0 39.632649c0 9.127891 8.709359 20.85498 17.767666 23.674189l1.51654 0.577145 56.639998 23.113417 0.923022 0.509606c8.202822 4.424776 22.184255 2.353604 28.788673-4.254907l28.163433-27.912723c9.895371-9.94142 23.179932-15.33936 37.352723-15.33936 0.019443 0 0.040932 0 0.060375 0 14.18814 0 27.508517 5.375427 37.516452 15.384385l46.709835 46.554292c10.004865 9.960863 15.524578 23.254633 15.524578 37.47552 0 14.18814-5.498224 27.506471-15.479553 37.532825l-28.16855 28.152177c-6.580882 6.610558-8.640798 20.771069-4.204765 29.107945l0.478907 0.896416 23.654746 57.956993c2.902096 9.255805 14.635325 18.114566 23.686469 18.114566l39.132252 0 0-0.573051c27.629267 0 52.188616 22.984481 52.188616 52.327786l0 65.998133c0 29.590945-22.985504 53.138244-51.746548 53.138244l-39.630602 0c-9.337669 0-20.84884 8.372691-23.686469 17.423835l-0.580215 1.51654-23.086811 56.240909-0.468674 0.860601c-4.419659 8.30413-2.393513 22.320355 4.169973 28.855188l28.135804 28.02017c10.031471 10.029424 15.539928 23.350824 15.537881 37.541011-0.004093 14.186094-5.514597 27.505447-15.518438 37.505195l-46.747697 46.682205c-9.920954 9.964956-23.219841 15.506159-37.406958 15.506159-0.019443 0-0.040932 0-0.060375 0-14.192234 0-27.514657-5.514597-37.518498-15.517415l-28.039613-28.095895c-6.490831-6.490831-20.807908-8.575306-28.887934-4.206812l-0.951675 0.514723-57.93755 23.680329c-9.087982 2.859118-17.823947 14.594393-17.823947 23.691585l0 39.460734C598.155219 937.76394 574.45954 962.539206 545.784454 962.539206zM421.86719 806.892287c25.192775 8.370645 44.282552 34.650171 44.282552 61.570287l0 39.460734c0 7.114025 6.569626 13.68365 13.691837 13.68365L545.784454 921.606958c6.496971 0 12.461823-6.043646 12.461823-13.68365L558.246277 868.462574c0-26.273387 19.516496-53.131081 44.901653-61.58052l53.859675-22.062482c23.62814-12.116969 56.342216-7.098675 75.118861 11.6749l28.009937 28.1532c2.432399 2.430352 5.678326 3.837398 9.179057 3.837398 0.00614 0 0.011256 0 0.01535 0 3.482311 0 6.726192-1.39886 9.135054-3.820002l46.780443-46.738487c2.436492-2.436492 3.783163-5.724375 3.78521-9.224082 0-3.495614-1.344624-6.774287-3.787256-9.216919l-28.106128-27.998681c-18.693758-18.609847-23.762193-51.349505-11.773138-75.036997l22.083971-53.603849c8.374738-25.167193 35.224246-44.51382 61.578474-44.51382l39.630602 0c7.745405 0 10.8143-7.086395 10.8143-13.229303l0-65.998133c0-6.862291-5.116531-12.07399-11.256368-12.302187l0 1.479701-39.132252 0c-26.236548 0-53.099359-20.149922-61.585637-45.735647l-22.083971-54.261834c-11.960403-23.654746-6.913457-56.502875 11.728112-75.228355l28.16855-28.192086c2.430352-2.441609 3.78828-5.764284 3.78828-9.295714 0-3.498684-1.334391-6.762007-3.759627-9.17394l-46.741557-46.577828c-2.462075-2.462075-5.736655-3.734044-9.234315-3.734044-0.004093 0-0.010233 0-0.013303 0-3.465938 0-6.700609 1.255597-9.105379 3.671623l-28.198226 28.037567c-18.703991 18.710131-51.417043 23.734564-75.000158 11.69025l-53.865815-22.072715c-25.403576-8.388041-44.934398-35.255968-44.934398-61.60508l0-39.632649c0-7.253194-5.517667-12.186554-12.461823-12.186554l-65.943898 0c-7.517207 0-13.691837 5.51869-13.691837 12.186554l0 39.632649c0 27.027563-19.107173 53.336766-44.325531 61.643965l-53.501518 21.99699c-23.834848 12.168134-55.857169 7.234775-74.878384-11.69639l-28.130687-28.115338c-2.441609-2.451842-5.690606-3.787256-9.152451-3.787256-3.462868-0.001023-6.704702 1.334391-9.117658 3.758604l-46.690392 46.64639c-2.438539 2.438539-3.784186 5.710049-3.781116 9.207709 0.004093 3.474125 1.339508 6.716982 3.762697 9.128915l28.068266 28.121478c18.698874 18.690688 23.782659 51.389414 11.808954 74.973552l-22.124903 54.813397c-8.413624 25.616424-35.281551 45.783743-61.603033 45.783743l-39.575344 0c-6.630001 0-13.010315 3.411703-13.010315 10.822486l0 65.943898c0 6.942109 5.753027 13.284561 12.95301 13.284561l39.631626 0c26.380834 0 53.195549 19.35072 61.524239 44.537356l22.182208 53.629431c12.027941 23.731494 6.918573 56.449663-11.863189 75.05644l-28.022217 27.949562c-5.021364 5.066389-5.048993 13.348006 0.010233 18.409279l46.713928 46.653553c2.452865 2.464121 5.695722 3.794419 9.168824 3.794419 3.472078 0 6.711865-1.336438 9.124821-3.759627l28.181853-28.122501c18.641569-18.730597 51.440579-23.752983 75.011414-11.642155L421.86719 806.892287z"
-    fill="#157b7e" p-id="4801"></path>
+    fill="#00A79D" p-id="4801"></path>
   <path
     d="M513.734504 731.880873c-120.639614 0-218.786958-98.147344-218.786958-218.786958s98.147344-218.786958 218.786958-218.786958 218.786958 98.147344 218.786958 218.786958S634.375142 731.880873 513.734504 731.880873zM513.734504 334.324368c-98.573039 0-178.769546 80.195483-178.769546 178.769546s80.195483 178.769546 178.769546 178.769546 178.769546-80.195483 178.769546-178.769546S612.308567 334.324368 513.734504 334.324368z"
-    fill="#157b7e" p-id="4802"></path>
+    fill="#00A79D" p-id="4802"></path>
 </svg>
diff --git a/src/icons/svg/xtsz.svg b/src/icons/svg/xtsz.svg
index c80d11e..259dd9d 100644
--- a/src/icons/svg/xtsz.svg
+++ b/src/icons/svg/xtsz.svg
@@ -11,5 +11,5 @@
   </defs>
   <path
     d="M892.928 614.4L972.8 533.504 900.096 460.8 819.2 540.672a200.704 200.704 0 0 0-51.2-21.504V409.6h-102.4v109.568a200.704 200.704 0 0 0-51.2 21.504L533.504 460.8 460.8 533.504 540.672 614.4a200.704 200.704 0 0 0-21.504 51.2H409.6v102.4h109.568a200.704 200.704 0 0 0 21.504 51.2L460.8 900.096 533.504 972.8 614.4 892.928a200.704 200.704 0 0 0 51.2 21.504V1024h102.4v-109.568a200.704 200.704 0 0 0 51.2-21.504L900.096 972.8 972.8 900.096 892.928 819.2a200.704 200.704 0 0 0 21.504-51.2H1024v-102.4h-109.568a200.704 200.704 0 0 0-21.504-51.2zM716.8 819.2a102.4 102.4 0 1 1 102.4-102.4 102.4 102.4 0 0 1-102.4 102.4zM0 0v716.8h204.8v102.4H102.4v102.4h204.8v-307.2H102.4v-102.4h307.2V409.6H102.4V102.4h819.2v256h102.4V0z"
-    fill="#157b7e" p-id="2185"></path>
+    fill="#00A79D" p-id="2185"></path>
 </svg>
diff --git a/src/icons/svg/zlgl.svg b/src/icons/svg/zlgl.svg
new file mode 100644
index 0000000..a742159
--- /dev/null
+++ b/src/icons/svg/zlgl.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
+  "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg t="1697089291410" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"
+     p-id="10715" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" height="300">
+  <path
+    d="M512 134.4l289.6 133.6V472c0 96.8-31.2 193.6-88.8 272.8-52.8 73.6-124 126.4-200.8 150.4-77.6-24-148-76.8-200.8-150.4-57.6-79.2-88.8-176-88.8-272.8V268L512 134.4m0-71.2L158.4 226.4v244.8c0 226.4 151.2 437.6 353.6 489.6 203.2-51.2 353.6-263.2 353.6-489.6V226.4L512 63.2z m191.2 447.2c0-106.4-85.6-192-192-192s-192 85.6-192 192 85.6 192 192 192c24 0 46.4-4.8 68-12l58.4 58.4 45.6-45.6-47.2-47.2c40.8-35.2 67.2-87.2 67.2-145.6z m-192 128c-70.4 0-128-57.6-128-128s57.6-128 128-128 128 57.6 128 128c0 40.8-19.2 76.8-48.8 100l-43.2-43.2-45.6 45.6 24.8 24.8c-4.8 0-10.4 0.8-15.2 0.8z"
+    p-id="10716" fill="#00A79D"></path>
+</svg>
diff --git a/src/permission.js b/src/permission.js
index a0190b0..ad087ea 100644
--- a/src/permission.js
+++ b/src/permission.js
@@ -9,7 +9,7 @@
 
 NProgress.configure({ showSpinner: false }) // NProgress Configuration
 
-const whiteList = ['/login', '/zhkb', '/ckgl', '/cgdd', '/back'] // no redirect whitelist
+const whiteList = ['/login', '/zhkb', '/cj'] // no redirect whitelist
 
 router.beforeEach(async(to, from, next) => {
   // start progress bar
diff --git a/src/router/index.js b/src/router/index.js
index 698f87b..b9690ec 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -18,7 +18,7 @@
  * name:'router-name'             the name is used by <keep-alive> (must set!!!)
  * meta : {
     roles: ['admin','editor']    control the page roles (you can set multiple roles)
-    seq:0,title: 'seq:0,title'               the name show in sidebar and breadcrumb (recommend set)
+    title: 'title'               the name show in sidebar and breadcrumb (recommend set)
     icon: 'svg-name'/'el-icon-x' the icon show in the sidebar
     breadcrumb: false            if set false, the item will hidden in breadcrumb(default is true)
     activeMenu: '/example/list'  if set path, the sidebar will highlight the path you set
@@ -40,8 +40,8 @@
     component: () => import('@/views/kanbanManager/zhkb'),
     hidden: true
   }, {
-    path: '/cgdd',
-    component: () => import('@/views/kanbanManager/cgdd'),
+    path: '/cj',
+    component: () => import('@/views/kanbanManager/cj'),
     hidden: true
   }, {
     path: '/ckgl',
@@ -79,7 +79,7 @@
       path: 'index',
       name: 'index',
       component: () => import('@/views/systemHome/index'),
-      meta: { seq: 0, title: '绯荤粺棣栭〉', icon: 'home', affix: true }
+      meta: { title: '绯荤粺棣栭〉', icon: 'home', affix: true }
     }]
   }
   // { path: '*', redirect: '/404', hidden: true }
@@ -92,7 +92,7 @@
     redirect: '/basicSettings/organizationList',
     name: '鍩虹璁剧疆',
     code: '01',
-    meta: { code: '01', seq: 0, title: '鍩虹璁剧疆', icon: 'tree2' },
+    meta: { code: '01', title: '鍩虹璁剧疆', icon: 'tree2' },
     alwaysShow: true, // 褰揷hildren鍙湁涓�涓椂锛屼篃鏄剧ず鐖惰彍鍗�
     children: [
       {
@@ -100,64 +100,40 @@
         name: 'organizationListCancel',
         code: '0101',
         component: () => import('@/views/basicSettings/organizationList'),
-        meta: { code: '0101', seq: 0, title: '缁勭粐鏋舵瀯', icon: '', keepAlive: true }
+        meta: { code: '0101', title: '缁勭粐鏋舵瀯', icon: '', keepAlive: true }
       },
       {
         path: 'postList',
         name: 'personListCancel',
         code: '0102',
         component: () => import('@/views/basicSettings/postList'),
-        meta: { code: '0102', seq: 0, title: '宀椾綅绠$悊', icon: '', keepAlive: true }
+        meta: { code: '0102', title: '宀椾綅绠$悊', icon: '', keepAlive: true }
       }, {
         path: 'groupList',
         name: 'groupListCancel',
         code: '0103',
         component: () => import('@/views/basicSettings/groupList'),
-        meta: { code: '0103', seq: 0, title: '鐝粍绠$悊', icon: '', keepAlive: true }
+        meta: { code: '0103', title: '鐝粍绠$悊', icon: '', keepAlive: true }
       },
       {
         path: 'personList',
         name: 'personListCancel',
         code: '0104',
         component: () => import('@/views/basicSettings/personList'),
-        meta: { code: '0104', seq: 0, title: '浜哄憳绠$悊', icon: '', keepAlive: true }
+        meta: { code: '0104', title: '浜哄憳绠$悊', icon: '', keepAlive: true }
       }, {
         path: 'roleList',
         name: 'roleListCancel',
         code: '0105',
         component: () => import('@/views/basicSettings/roleList'),
-        meta: { code: '0105', seq: 0, title: '瑙掕壊绠$悊', icon: '', keepAlive: true }
-      }, {
-        path: 'contactUnitList',
-        name: 'contactUnitListCancel',
-        code: '0106',
-        component: () => import('@/views/basicSettings/contactUnitList'),
-        meta: { code: '0106', seq: 0, title: '寰�鏉ュ崟浣�', icon: '', keepAlive: true }
-      }, {
-        path: 'warehouseList',
-        name: 'warehouseListCancel',
-        code: '0107',
-        component: () => import('@/views/basicSettings/warehouseList'),
-        meta: { code: '0107', seq: 0, title: '浠撳簱璁剧疆', icon: '', keepAlive: true }
-      }, {
-        path: 'storageList',
-        name: 'storageListCancel',
-        code: '0108',
-        component: () => import('@/views/basicSettings/storageList'),
-        meta: { code: '0108', seq: 0, title: '搴撲綅璁剧疆', icon: '', keepAlive: true }
-      }, {
-        path: 'installLampList',
-        name: 'installLampListCancel',
-        code: '0109',
-        component: () => import('@/views/basicSettings/installLampList'),
-        meta: { code: '0109', seq: 0, title: '瀹夌伅璁剧疆', icon: '', keepAlive: true }
+        meta: { code: '0105', title: '瑙掕壊绠$悊', icon: '', keepAlive: true }
       },
       {
         path: 'powerDivider',
         name: 'powerDividerCancel',
         code: '0110',
         component: () => import('@/views/basicSettings/powerDivider'),
-        meta: { code: '0110', seq: 0, title: '鏉冮檺鍒嗛厤', icon: '', keepAlive: true }
+        meta: { code: '0110', title: '鏉冮檺鍒嗛厤', icon: '', keepAlive: true }
       },
       {
         path: 'roleDivider',
@@ -165,15 +141,43 @@
         code: '0111',
         hidden: true,
         component: () => import('@/views/basicSettings/roleDivider'),
-        meta: { code: '0111', seq: 0, title: '瑙掕壊鍒嗛厤', icon: '', keepAlive: true }
-      },
-      {
+        meta: { code: '0111', title: '瑙掕壊鍒嗛厤', icon: '', keepAlive: true }
+      }, {
+        path: 'contactUnitList',
+        name: 'contactUnitListCancel',
+        code: '0106',
+        component: () => import('@/views/basicSettings/contactUnitList'),
+        meta: { code: '0106', title: '寰�鏉ュ崟浣�', icon: '', keepAlive: true }
+      }, {
+        path: 'warehouseList',
+        name: 'warehouseListCancel',
+        code: '0107',
+        component: () => import('@/views/basicSettings/warehouseList'),
+        meta: { code: '0107', title: '浠撳簱璁剧疆', icon: '', keepAlive: true }
+      }, {
+        path: 'storageList',
+        name: 'storageListCancel',
+        code: '0108',
+        component: () => import('@/views/basicSettings/storageList'),
+        meta: { code: '0108', title: '搴撲綅璁剧疆', icon: '', keepAlive: true }
+      }, {
+        path: 'installLampList',
+        name: 'installLampListCancel',
+        code: '0109',
+        component: () => import('@/views/basicSettings/installLampList'),
+        meta: { code: '0109', title: '瀹夌伅璁剧疆', icon: '', keepAlive: true }
+      }, {
+        path: 'processList',
+        name: 'processListCancel',
+        code: '0112',
+        component: () => import('@/views/basicSettings/processList'),
+        meta: { code: '0112', title: '宸ュ簭璁剧疆', icon: '', keepAlive: true }
+      }, {
         path: 'cronTime',
         name: 'cronTimeCancel',
         code: '0113',
-        hidden: true,
         component: () => import('@/views/basicSettings/cronTime'),
-        meta: { code: '0113', seq: 0, title: '瀹氭椂浠诲姟', icon: '', keepAlive: true }
+        meta: { code: '0113', title: '瀹氭椂浠诲姟', icon: '', keepAlive: true }
       }
 
     ]
@@ -185,7 +189,7 @@
     redirect: '/materialManager/unitList',
     name: '鐗╂枡绠$悊',
     code: '02',
-    meta: { code: '02', seq: 0, title: '鐗╂枡绠$悊', icon: 'table' },
+    meta: { code: '02', title: '鐗╂枡绠$悊', icon: 'table' },
     alwaysShow: true, // 褰揷hildren鍙湁涓�涓椂锛屼篃鏄剧ず鐖惰彍鍗�
     children: [
       {
@@ -193,20 +197,20 @@
         name: 'unitListCancel',
         code: '0201',
         component: () => import('@/views/materialManager/unitList'),
-        meta: { code: '0201', seq: 0, title: '璁¢噺鍗曚綅', icon: '', keepAlive: true }
+        meta: { code: '0201', title: '璁¢噺鍗曚綅', icon: '', keepAlive: true }
       },
       {
         path: 'inventoryList',
         name: 'inventoryListCancel',
         code: '0202',
         component: () => import('@/views/materialManager/inventoryList'),
-        meta: { code: '0202', seq: 0, title: '瀛樿揣妗f', icon: '', keepAlive: true }
+        meta: { code: '0202', title: '瀛樿揣妗f', icon: '', keepAlive: true }
       }, {
         path: 'materialList',
         name: 'materialListCancel',
         code: '0203',
         component: () => import('@/views/materialManager/materialList'),
-        meta: { code: '0203', seq: 0, title: '鐗╂枡娓呭崟', icon: '', keepAlive: true }
+        meta: { code: '0203', title: '鐗╂枡娓呭崟', icon: '', keepAlive: true }
       }
 
     ]
@@ -218,7 +222,7 @@
     redirect: '/deviceManager/deviceType',
     name: '璁惧绠$悊',
     code: '03',
-    meta: { code: '03', seq: 0, title: '璁惧绠$悊', icon: 'example' },
+    meta: { code: '03', title: '璁惧绠$悊', icon: 'example' },
     alwaysShow: true,
     children: [
       {
@@ -226,56 +230,135 @@
         name: 'deviceListCancel',
         code: '0301',
         component: () => import('@/views/deviceManager/deviceList'),
-        meta: { code: '0301', seq: 0, title: '璁惧娓呭崟', icon: '', keepAlive: true }
+        meta: { code: '0301', title: '璁惧娓呭崟', icon: '', keepAlive: true }
       },
       {
         path: 'checkStandard',
         name: 'checkStandardCancel',
         code: '0302',
         component: () => import('@/views/deviceManager/checkStandard'),
-        meta: { code: '0302', seq: 0, title: '鐐规鏍囧噯', icon: '', keepAlive: true }
+        meta: { code: '0302', title: '鐐规鏍囧噯', icon: '', keepAlive: true }
       },
       {
         path: 'checkPosition',
         name: 'checkPositionCancel',
         code: '0303',
         component: () => import('@/views/deviceManager/checkPosition'),
-        meta: { code: '0303', seq: 0, title: '鐐规閮ㄤ綅', icon: '', keepAlive: true }
+        meta: { code: '0303', title: '鐐规閮ㄤ綅', icon: '', keepAlive: true }
       },
       {
         path: 'maintainStandard',
         name: 'maintainStandardCancel',
         code: '0304',
         component: () => import('@/views/deviceManager/maintainStandard'),
-        meta: { code: '0304', seq: 0, title: '淇濆吇鏍囧噯', icon: '', keepAlive: true }
+        meta: { code: '0304', title: '淇濆吇鏍囧噯', icon: '', keepAlive: true }
       },
       {
         path: 'maintainPosition',
         name: 'maintainPositionCancel',
         code: '0305',
         component: () => import('@/views/deviceManager/maintainPosition'),
-        meta: { code: '0305', seq: 0, title: '淇濆吇閮ㄤ綅', icon: '', keepAlive: true }
+        meta: { code: '0305', title: '淇濆吇閮ㄤ綅', icon: '', keepAlive: true }
       },
       {
         path: 'checkRecord',
         name: 'checkRecordCancel',
         code: '0306',
         component: () => import('@/views/deviceManager/checkRecord'),
-        meta: { code: '0306', seq: 0, title: '鐐规璁板綍', icon: '', keepAlive: true }
+        meta: { code: '0306', title: '鐐规璁板綍', icon: '', keepAlive: true }
       },
       {
         path: 'maintainRecord',
         name: 'maintainRecordCancel',
         code: '0307',
         component: () => import('@/views/deviceManager/maintainRecord'),
-        meta: { code: '0307', seq: 0, title: '淇濆吇璁板綍', icon: '', keepAlive: true }
+        meta: { code: '0307', title: '淇濆吇璁板綍', icon: '', keepAlive: true }
       },
       {
         path: 'repairRecord',
         code: '0308',
         name: 'repairRecordCancel',
         component: () => import('@/views/deviceManager/repairRecord'),
-        meta: { code: '0308', seq: 0, title: '缁翠慨璁板綍', icon: '', keepAlive: true }
+        meta: { code: '0308', title: '缁翠慨璁板綍', icon: '', keepAlive: true }
+      }
+    ]
+  },
+
+  {
+    path: '/mouldManager',
+    component: Layout,
+    redirect: '/mouldManager/mouldList',
+    name: '妯″叿绠$悊',
+    code: '09',
+    meta: { code: '09', title: '妯″叿绠$悊', icon: 'mj' },
+    alwaysShow: true,
+    children: [
+      {
+        path: 'mouldList',
+        name: 'mouldListCancel',
+        code: '0901',
+        component: () => import('@/views/mouldManager/mouldList'),
+        meta: { code: '0901', title: '妯″叿娓呭崟', icon: '', keepAlive: true }
+      }, {
+        path: 'mouldCheckPos',
+        name: 'mouldCheckCancel',
+        code: '0902',
+        component: () => import('@/views/mouldManager/mouldCheck'),
+        meta: { code: '0902', title: '妯″叿鐐规椤�', icon: '', keepAlive: true }
+      }, {
+        path: 'mouldCheckStand',
+        name: 'mouldCheckStandCancel',
+        code: '0903',
+        component: () => import('@/views/mouldManager/mouldCheckStand'),
+        meta: { code: '0903', title: '妯″叿鐐规鏍囧噯', icon: '', keepAlive: true }
+      }, {
+        path: 'mouldMaintain',
+        name: 'mouldMaintainCancel',
+        code: '0904',
+        component: () => import('@/views/mouldManager/mouldMaintain'),
+        meta: { code: '0904', title: '妯″叿淇濆吇椤�', icon: '', keepAlive: true }
+      }, {
+        path: 'mouldMaintainStand',
+        name: 'mouldMaintainStandCancel',
+        code: '0905',
+        component: () => import('@/views/mouldManager/mouldMaintainStand'),
+        meta: { code: '0905', title: '妯″叿淇濆吇鏍囧噯', icon: '', keepAlive: true }
+      }, {
+        path: 'mouldCheckRecord',
+        name: 'mouldCheckRecordCancel',
+        code: '0906',
+        component: () => import('@/views/mouldManager/mouldCheckRecord'),
+        meta: { code: '0906', title: '妯″叿鐐规璁板綍', icon: '', keepAlive: true }
+      }, {
+        path: 'mouldMaintainRecord',
+        name: 'mouldMaintainRecordCancel',
+        code: '0907',
+        component: () => import('@/views/mouldManager/mouldMaintainRecord'),
+        meta: { code: '0907', title: '妯″叿淇濆吇璁板綍', icon: '', keepAlive: true }
+      }, {
+        path: 'mouldRepairRecord',
+        name: 'mouldRepairRecordCancel',
+        code: '0908',
+        component: () => import('@/views/mouldManager/mouldRepairRecord'),
+        meta: { code: '0908', title: '妯″叿缁翠慨璁板綍', icon: '', keepAlive: true }
+      }, {
+        path: 'mouldUpDownRecord',
+        name: 'mouldUpDownRecordCancel',
+        code: '0909',
+        component: () => import('@/views/mouldManager/mouldUpDownRecord'),
+        meta: { code: '0909', title: '妯″叿涓婁笅鏈鸿褰�', icon: '', keepAlive: true }
+      }, {
+        path: 'mouldOutInRecord',
+        name: 'mouldOutInRecordCancel',
+        code: '0910',
+        component: () => import('@/views/mouldManager/mouldOutInRecord'),
+        meta: { code: '0910', title: '妯″叿鍑哄叆搴撹褰�', icon: '', keepAlive: true }
+      }, {
+        path: 'mouldCirculateRecord',
+        name: 'mouldCirculateRecordCancel',
+        code: '0911',
+        component: () => import('@/views/mouldManager/mouldCirculateRecord'),
+        meta: { code: '0911', title: '妯″叿鍊熻繕璁板綍', icon: '', keepAlive: true }
       }
     ]
   },
@@ -286,7 +369,7 @@
     redirect: '/qualityManager/defectDefine',
     name: '璐ㄩ噺绠$悊',
     code: '04',
-    meta: { code: '04', seq: 0, title: '璐ㄩ噺绠$悊', icon: 'quality' },
+    meta: { code: '04', title: '璐ㄩ噺绠$悊', icon: 'zlgl' },
     alwaysShow: true,
     children: [
       {
@@ -294,32 +377,32 @@
         name: 'defectDefineCancel',
         code: '0401',
         component: () => import('@/views/qualityManager/defectDefine'),
-        meta: { code: '0401', seq: 0, title: '缂洪櫡瀹氫箟', icon: '', keepAlive: true }
+        meta: { code: '0401', title: '缂洪櫡瀹氫箟', icon: '', keepAlive: true }
       },
       {
         path: 'processCheckItem',
         name: 'processCheckItemCancel',
         code: '0402',
         component: () => import('@/views/qualityManager/processCheckItem'),
-        meta: { code: '0402', seq: 0, title: '妫�楠岄」璁剧疆', icon: '', keepAlive: true }
+        meta: { code: '0402', title: '妫�楠岄」璁剧疆', icon: '', keepAlive: true }
       }, {
         path: 'qualityPlaning',
         name: 'qualityPlaningCancel',
         code: '0403',
         component: () => import('@/views/qualityManager/qualityPlaning'),
-        meta: { code: '0403', seq: 0, title: '璐ㄦ鏂规', icon: '', keepAlive: true }
+        meta: { code: '0403', title: '璐ㄦ鏂规', icon: '', keepAlive: true }
       }, {
         path: 'processCheck',
         name: 'processCheckCancel',
         code: '0404',
         component: () => import('@/views/qualityManager/processCheck'),
-        meta: { code: '0404', seq: 0, title: '宸ュ簭妫�楠�', icon: '', keepAlive: true }
+        meta: { code: '0404', title: '宸ュ簭妫�楠�', icon: '', keepAlive: true }
       }, {
         path: 'processCheckRecord',
         name: 'processCheckRecordCancel',
         code: '0405',
         component: () => import('@/views/qualityManager/processCheckRecord'),
-        meta: { code: '0405', seq: 0, title: '宸ュ簭妫�楠�', icon: '', keepAlive: true }
+        meta: { code: '0405', title: '宸ュ簭妫�楠�', icon: '', keepAlive: true }
       }
     ]
   },
@@ -330,7 +413,7 @@
     redirect: '/workOrder/workOrderList',
     name: '宸ュ崟绠$悊',
     code: '05',
-    meta: { code: '05', seq: 0, title: '宸ュ崟绠$悊', icon: 'bbgl' },
+    meta: { code: '05', title: '宸ュ崟绠$悊', icon: 'bbgl' },
     alwaysShow: true, // 褰揷hildren鍙湁涓�涓椂锛屼篃鏄剧ず鐖惰彍鍗�
     children: [
       {
@@ -338,27 +421,27 @@
         name: 'produceOrderListCancel',
         code: '0501',
         component: () => import('@/views/workOrder/produceOrderList'),
-        meta: { code: '0501', seq: 0, title: 'ERP璁㈠崟', icon: '', keepAlive: true }
+        meta: { code: '0501', title: 'ERP璁㈠崟', icon: '', keepAlive: true }
       },
       {
         path: 'workOrderList',
-        name: 'workOrderListCancel',
+        name: 'WorkOrderListCancel',
         code: '0502',
         component: () => import('@/views/workOrder/workOrderList'),
-        meta: { code: '0502', seq: 0, title: 'MES宸ュ崟', icon: '', keepAlive: true }
+        meta: { code: '0502', title: 'MES宸ュ崟', icon: '', keepAlive: true }
       },
       {
         path: 'workOrderSend',
         name: 'workOrderSendCancel',
         code: '0503',
         component: () => import('@/views/workOrder/workOrderSend'),
-        meta: { code: '0503', seq: 0, title: '宸ュ崟娲惧彂', icon: '', keepAlive: true }
+        meta: { code: '0503', title: '宸ュ崟娲惧彂', icon: '', keepAlive: true }
       }, {
         path: 'workOrderClose',
         name: 'workOrderCloseCancel',
         code: '0504',
         component: () => import('@/views/workOrder/workOrderClose'),
-        meta: { code: '0504', seq: 0, title: '宸ュ崟鍏抽棴', icon: '', keepAlive: true }
+        meta: { code: '0504', title: '宸ュ崟鍏抽棴', icon: '', keepAlive: true }
       }
 
     ]
@@ -370,7 +453,7 @@
     redirect: '/produce/stepReport',
     name: '鐢熶骇鎵ц',
     code: '06',
-    meta: { code: '06', seq: 0, title: '鐢熶骇鎵ц', icon: 'component' },
+    meta: { code: '06', title: '鐢熶骇鎵ц', icon: 'component' },
     alwaysShow: true, // 褰揷hildren鍙湁涓�涓椂锛屼篃鏄剧ず鐖惰彍鍗�
     children: [
       {
@@ -378,63 +461,95 @@
         name: 'stepReportCancel',
         code: '0601',
         component: () => import('@/views/produce/stepReport'),
-        meta: { code: '0601', seq: 0, title: '宸ュ簭鎶ュ伐', icon: '', keepAlive: true }
+        meta: { code: '0601', title: '宸ュ簭鎶ュ伐', icon: '', keepAlive: true }
       },
       {
         path: 'reportCorrect',
         name: 'reportCorrectCancel',
         code: '0602',
         component: () => import('@/views/produce/reportCorrect'),
-        meta: { code: '0602', seq: 0, title: '鎶ュ伐璋冩暣', icon: '', keepAlive: true }
+        meta: { code: '0602', title: '鎶ュ伐璋冩暣', icon: '', keepAlive: true }
       }, {
         path: 'reportVerify',
         name: 'reportVerifyCancel',
         code: '0603',
         component: () => import('@/views/produce/reportVerify'),
-        meta: { code: '0603', seq: 0, title: '鎶ュ伐瀹℃牳', icon: '', keepAlive: true }
+        meta: { code: '0603', title: '鎶ュ伐瀹℃牳', icon: '', keepAlive: true }
       }
 
     ]
   },
 
-  // {
-  //   path: '/statistic',
-  //   component: Layout,
-  //   redirect: '/statistic/reportList',
-  //   name: '缁熻鎶ヨ〃',
-  //   code: '1004',
-  //   meta: { code: '1004', seq:0,title: '缁熻鎶ヨ〃', icon: 'quality' },
-  //   alwaysShow: true, // 褰揷hildren鍙湁涓�涓椂锛屼篃鏄剧ず鐖惰彍鍗�
-  //   children: [
-  //     {
-  //       path: 'reportList',
-  //       name: 'reportListCancel',
-  //       code: '1040',
-  //       component: () => import('@/views/statistic/reportList'),
-  //       meta: { code: '1040', seq:0,title: '鎶ュ伐璁板綍', icon: '', keepAlive: true }
-  //     },
-  //     {
-  //       path: 'monthReport',
-  //       name: 'monthReportCancel',
-  //       code: '1041',
-  //       component: () => import('@/views/statistic/monthReport'),
-  //       meta: { code: '1041', seq:0,title: '鏈堝害缁熻', icon: '', keepAlive: true }
-  //     }, {
-  //       path: 'workOrderProcess',
-  //       name: 'workOrderProcessCancel',
-  //       code: '1042',
-  //       component: () => import('@/views/statistic/workOrderProcess'),
-  //       meta: { code: '1042', seq:0,title: '宸ュ崟杩涘害', icon: '', keepAlive: true }
-  //     }, {
-  //       path: 'inProcessList',
-  //       name: 'inProcessListCancel',
-  //       code: '1043',
-  //       component: () => import('@/views/statistic/inProcessList'),
-  //       meta: { code: '1043', seq:0,title: '鍦ㄥ埗鍒楄〃', icon: '', keepAlive: true }
-  //     }
-  //
-  //   ]
-  // },
+  {
+    path: '/statistic',
+    component: Layout,
+    redirect: '/statistic/reportList',
+    name: '缁熻鎶ヨ〃',
+    code: '07',
+    meta: { code: '0701', title: '缁熻鎶ヨ〃', icon: 'quality' },
+    alwaysShow: true, // 褰揷hildren鍙湁涓�涓椂锛屼篃鏄剧ず鐖惰彍鍗�
+    children: [
+      {
+        path: 'reportList',
+        name: 'reportListCancel',
+        code: '1040',
+        component: () => import('@/views/statistic/reportList'),
+        meta: { code: '1040', title: '鎶ュ伐璁板綍', icon: '', keepAlive: true }
+      },
+      {
+        path: 'monthReport',
+        name: 'monthReportCancel',
+        code: '1041',
+        component: () => import('@/views/statistic/monthReport'),
+        meta: { code: '1041', title: '鏈堝害缁熻', icon: '', keepAlive: true }
+      }, {
+        path: 'workOrderProcess',
+        name: 'workOrderProcessCancel',
+        code: '0701',
+        component: () => import('@/views/statistic/workOrderProcess'),
+        meta: { code: '0701', title: '鐢熶骇杩涘害', icon: '', keepAlive: true }
+      }, {
+        path: 'inProcessList',
+        name: 'inProcessListCancel',
+        code: '1043',
+        component: () => import('@/views/statistic/inProcessList'),
+        meta: { code: '1043', title: '鍦ㄥ埗鍒楄〃', icon: '', keepAlive: true }
+      },
+      {
+        path: 'groupSalaryList',
+        name: 'groupSalaryListCancel',
+        code: '0702',
+        component: () => import('@/views/statistic/groupSalaryList'),
+        meta: { code: '0702', title: '鐝粍宸ヨ祫缁熻鎶ヨ〃', icon: '', keepAlive: true }
+      },
+      {
+        path: 'personSalaryList',
+        name: 'personSalaryListCancel',
+        code: '0703',
+        component: () => import('@/views/statistic/personSalaryList'),
+        meta: { code: '0703', title: '浜哄憳宸ヨ祫缁熻鎶ヨ〃', icon: '', keepAlive: true }
+      }, {
+        path: 'subcontractingOperation',
+        name: 'subcontractingOperationCancel',
+        code: '0704',
+        component: () => import('@/views/statistic/subcontractingOperation'),
+        meta: { code: '0704', title: '濮斿宸ュ簭鏄庣粏鎶ヨ〃', icon: '', keepAlive: true }
+      }, {
+        path: 'defectDetailList',
+        name: 'defectDetailListCancel',
+        code: '0705',
+        component: () => import('@/views/statistic/defectDetailList'),
+        meta: { code: '0705', title: '涓嶈壇鏄庣粏鎶ヨ〃', icon: '', keepAlive: true }
+      }, {
+        path: 'repairDetailList',
+        name: 'repairDetailListCancel',
+        code: '0706',
+        component: () => import('@/views/statistic/repairDetailList'),
+        meta: { code: '0706', title: '缁翠慨鏄庣粏鎶ヨ〃', icon: '', keepAlive: true }
+      }
+
+    ]
+  },
 
   {
     path: '/systemSetting',
@@ -442,7 +557,7 @@
     redirect: '/systemSetting/encodingRules',
     name: '绯荤粺璁剧疆',
     code: '08',
-    meta: { code: '08', seq: 0, title: '绯荤粺璁剧疆', icon: 'xtsz' },
+    meta: { code: '08', title: '绯荤粺璁剧疆', icon: 'xtsz' },
     alwaysShow: true, // 褰揷hildren鍙湁涓�涓椂锛屼篃鏄剧ず鐖惰彍鍗�
     children: [
       {
@@ -450,14 +565,21 @@
         name: 'menuListCancel',
         code: '0801',
         component: () => import('@/views/systemSetting/menuList'),
-        meta: { code: '0801', seq: 0, title: '鑿滃崟绠$悊', icon: '', keepAlive: true }
+        meta: { code: '0801', title: '鑿滃崟绠$悊', icon: '', keepAlive: true }
       },
       {
         path: 'reportList',
         name: 'reportListCancel',
         code: '0802',
         component: () => import('@/views/systemSetting/encodingRules'),
-        meta: { code: '0802', seq: 0, title: '缂栫爜瑙勫垯', icon: '', keepAlive: true }
+        meta: { code: '0802', title: '缂栫爜瑙勫垯', icon: '', keepAlive: true }
+      },
+      {
+        path: 'dataImport',
+        name: 'DataImport',
+        code: '0803',
+        component: () => import('@/views/systemSetting/dataImport'),
+        meta: { code: '0803', title: '鏁版嵁瀵煎叆', icon: '', keepAlive: true }
       }
     ]
   }
diff --git a/src/styles/global.css b/src/styles/global.css
index 4a09c44..6f5c868 100644
--- a/src/styles/global.css
+++ b/src/styles/global.css
@@ -3,8 +3,8 @@
   height: 100%;
   margin: 0;
   padding: 0;
-  min-width: 1200px;
-  overflow-y: hidden;
+  /*min-width: 1200px;*/ /*杩欒浠g爜鐩墠涓嶈兘鍔�  鍔犱簡宸ュ崟鎵撳嵃瀹藉害浼氬嚭闂*/
+  /*overflow-y: hidden;*/
   /*overflow-x: hidden;*/
 
   -moz-osx-font-smoothing: grayscale;
@@ -63,6 +63,11 @@
   justify-content: flex-end;
 }
 
+.el-button--text{
+  font-size: 14px !important;
+  cursor: pointer !important;
+}
+
 
 /*澶撮儴鎸夐挳缁勬牱寮�*/
 .bodyTopButtonGroup {
diff --git a/src/utils/myEcharts.js b/src/utils/myEcharts.js
index 8add81c..b659d64 100644
--- a/src/utils/myEcharts.js
+++ b/src/utils/myEcharts.js
@@ -131,21 +131,21 @@
   var option = {
     backgroundColor: 'transparent',
     grid: {
-      left: '2%',
+      left: '5%',
       right: '5%',
       bottom: '0%',
       top: '2%',
       containLabel: true
     },
-    tooltip: {
-      trigger: 'axis',
-      axisPointer: {
-        type: 'none'
-      },
-      formatter: function(params) {
-        return params[0].name + ' : ' + params[0].value
-      }
-    },
+    // tooltip: {
+    //   trigger: 'axis',
+    //   axisPointer: {
+    //     type: 'none'
+    //   },
+    //   formatter: function(params) {
+    //     return params[0].name + ' : ' + params[0].value
+    //   }
+    // },
     xAxis: {
       show: true,
       type: 'value',
@@ -169,7 +169,7 @@
       type: 'category',
       inverse: true,
       axisLabel: {
-        show: true,
+        show: false,
         textStyle: {
           color: '#000'
         }
@@ -266,16 +266,16 @@
 
   const option = {
     backgroundColor: 'transparent',
-    tooltip: {
-      trigger: 'axis',
-      axisPointer: {
-        // type: 'shadow',
-        label: {
-          show: true,
-          backgroundColor: '#000'
-        }
-      }
-    },
+    // tooltip: {
+    //   trigger: 'axis',
+    //   axisPointer: {
+    //     // type: 'shadow',
+    //     label: {
+    //       show: true,
+    //       backgroundColor: '#000'
+    //     }
+    //   }
+    // },
     grid: {
       left: '2%',
       right: '5%',
@@ -327,7 +327,8 @@
         }
       }
     },
-    series: [{
+    series: [
+      {
       name: '鏃堕棿',
       type: 'line',
       smooth: false,
@@ -346,7 +347,8 @@
         }
       },
       data: dataY
-    }]
+    }
+    ]
   }
 
   return option
@@ -1853,3 +1855,1272 @@
   }
   return option
 }
+
+export function all01(xData2, yData) {
+  // var xData2 = ['123', '21', '32', '23', '1233']
+  var data1 = yData.map(i => i.quantity)
+  var data2 = yData.map(i => i.plan_qty)
+  var barWidth = 30
+  const option = {
+    backgroundColor: 'transparent',
+    // tooltip: {
+    //   trigger: 'item'
+    // },
+    grid: {
+      left: '2%',
+      top: '20%',
+      right: '2%',
+      bottom: '5%',
+      containLabel: true
+    },
+    title: {
+      text: '鍚勮溅闂村綋鏈堣鍗曟暟/鍏ュ簱鏁伴噺',
+      left: '50%',
+      top: '0%',
+      textAlign: 'center',
+      textStyle: {
+        color: 'rgba(0,255,255,0.8)',
+        fontSize: '20',
+        fontWeight: 'bolder'
+      }
+    },
+    xAxis: {
+      data: xData2,
+      type: 'category',
+      boundaryGap: true,
+      axisLabel: {
+        interval: 0,
+        formatter: '{value}',
+        fontSize: 16,
+        margin: 20,
+        textStyle: {
+          color: colorX
+        }
+      },
+      axisLine: {
+        lineStyle: {
+          color: '#032c58'
+        }
+      },
+      splitLine: {
+        show: false,
+        lineStyle: {
+          color: '#032c58'
+        }
+      },
+      axisTick: {
+        show: false
+      }
+    },
+    yAxis: {
+      boundaryGap: false,
+      // splitNumber: 4,
+      type: 'value',
+      // max: 100,
+      axisLabel: {
+        textStyle: {
+          fontSize: 16,
+          color: colorX
+        }
+      },
+      nameTextStyle: {
+        color: '#fff',
+        fontSize: 16,
+        lineHeight: 40
+      },
+      splitLine: {
+        show: true,
+        lineStyle: {
+          color: '#032c58'
+        }
+      },
+      axisLine: {
+        show: true,
+        lineStyle: {
+          color: '#032c58'
+        }
+      },
+      axisTick: {
+        show: false
+      }
+    },
+    series: [
+      { // 涓婂崐鎴煴瀛�
+        name: '2019',
+        type: 'bar',
+        barWidth: barWidth,
+        barGap: '-100%',
+        z: 0,
+        itemStyle: {
+          color: '#163F7A',
+          opacity: 0.7
+        },
+        data: data2
+      },
+      { // 涓嬪崐鎴煴瀛�
+        name: '2020',
+        type: 'bar',
+        barWidth: barWidth,
+        barGap: '-100%',
+        itemStyle: { // lenged鏂囨湰
+          opacity: 0.7,
+          color: function(params) {
+            return new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+              offset: 0,
+              color: '#12B9DB' // 0% 澶勭殑棰滆壊
+            }, {
+              offset: 1,
+              color: '#6F8EF2' // 100% 澶勭殑棰滆壊
+            }], false)
+          }
+        },
+        data: data1
+      },
+      { // 鏇夸唬鏌辩姸鍥� 榛樿涓嶆樉绀洪鑹诧紝鏄渶涓嬫柟鏌卞浘锛堥偖浠惰惀閿�锛夌殑value鍊� - 20
+        type: 'bar',
+        barWidth: barWidth,
+        barGap: '-100%',
+        stack: '骞垮憡',
+        itemStyle: {
+          color: 'transparent'
+        },
+        label: {
+          normal: {
+            show: true,
+            position: 'left',
+            fontSize: 16,
+            color: colorX,
+            zIndex: 10
+          }
+        },
+        data: data1
+      },
+      { // 涓婂崐鎴煴瀛愰《閮ㄥ渾鐗�
+        'name': '',
+        'type': 'pictorialBar',
+        'symbolSize': [barWidth, 15],
+        'symbolOffset': [0, -10],
+        'z': 12,
+        'symbolPosition': 'end',
+        itemStyle: {
+          color: '#163F7A',
+          opacity: 1
+        },
+        label: {
+          show: true,
+          position: 'top',
+          fontSize: 16,
+          color: '#fff'
+        },
+        'data': data2
+      },
+      { // 涓嬪崐鎴煴瀛愰《閮ㄥ渾鐗�
+        'name': '',
+        'type': 'pictorialBar',
+        'symbolSize': [barWidth, 15],
+        'symbolOffset': [0, -10],
+        'z': 12,
+        itemStyle: {
+          opacity: 1,
+          color: function(params) {
+            return new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+              offset: 0,
+              color: '#12B9DB' // 0% 澶勭殑棰滆壊
+            }, {
+              offset: 1,
+              color: '#6F8EF2' // 100% 澶勭殑棰滆壊
+            }], false)
+          }
+        },
+        // label: {
+        //   show: true,
+        //   position: 'top',
+        //   fontSize: 16,
+        //   color: '#fff'
+        // // formatter:(item)=>{
+        // //     console.log(item)
+        // //     return 'ssss'
+        // // }
+        // },
+        'symbolPosition': 'end',
+        'data': data1
+      },
+      { // 涓嬪崐鎴煴瀛愬簳閮ㄥ渾鐗�
+        'name': '',
+        'type': 'pictorialBar',
+        'symbolSize': [barWidth, 15],
+        'symbolOffset': [0, 5],
+        'z': 12,
+        itemStyle: {
+          opacity: 1,
+          color: function(params) {
+            return new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+              offset: 0,
+              color: '#12B9DB' // 0% 澶勭殑棰滆壊
+            }, {
+              offset: 1,
+              color: '#6F8EF2' // 100% 澶勭殑棰滆壊
+            }], false)
+          }
+        },
+        'data': [1, 1, 1, 1, 1]
+      },
+      {
+        name: '绗竴鍦�',
+        type: 'pictorialBar',
+        symbolSize: [47, 16],
+        symbolOffset: [0, 11],
+        z: 11,
+        itemStyle: {
+          normal: {
+            color: 'transparent',
+            borderColor: '#00ffff',
+            borderWidth: 2
+          }
+        },
+        data: [1, 1, 1, 1, 1]
+      },
+      {
+        name: '绗簩鍦�',
+        type: 'pictorialBar',
+        symbolSize: [62, 22],
+        symbolOffset: [0, 17],
+        z: 10,
+        itemStyle: {
+          normal: {
+            color: 'transparent',
+            borderColor: '#00ffff',
+            borderWidth: 2
+          }
+        },
+        data: [1, 1, 1, 1, 1]
+      }
+    ]
+  }
+
+  return option
+}
+
+export function all02(data) {
+  return {
+    backgroundColor: 'transparent',
+    // tooltip: {},
+    title: {
+      text: '姣忔湀璁㈠崟鏁伴噺/鍑哄簱鏁伴噺',
+      left: '50%',
+      top: '0%',
+      textAlign: 'center',
+      textStyle: {
+        // color: '#fff',
+        color: '#00ffff',
+        fontSize: '20',
+        fontWeight: 'bolder'
+      }
+    },
+    grid: {
+      left: '4%',
+      right: '4%',
+      bottom: '4%',
+      top: '15%',
+      containLabel: true
+    },
+    // legend: {
+    //   show: false,
+    //   itemGap: 50,
+    //   data: ['娉ㄥ唽鎬婚噺', '鏈�鏂版敞鍐岄噺'],
+    //   textStyle: {
+    //     color: '#f9f9f9',
+    //     borderColor: '#fff'
+    //   }
+    // },
+    xAxis: [{
+      type: 'category',
+      boundaryGap: true,
+      axisLabel: {
+        interval: 0,
+        formatter: '{value}',
+        fontSize: 16,
+        margin: 20,
+        textStyle: {
+          color: colorX
+        }
+      },
+      axisLine: {
+        lineStyle: {
+          color: '#032c58'
+        }
+      },
+      splitLine: {
+        show: false,
+        lineStyle: {
+          color: '#032c58'
+        }
+      },
+      axisTick: {
+        show: false
+      },
+      data: data.map(i => i.Month)
+    }],
+    yAxis: [
+      {
+        // max: 800,
+        boundaryGap: false,
+        splitNumber: 4,
+        type: 'value',
+        axisLabel: {
+          textStyle: {
+            fontSize: 16,
+            color: colorX
+          }
+        },
+        // name: '鍗�',
+        // nameTextStyle: {
+        //   color: colorY,
+        //   fontSize: 14,
+        //   lineHeight: 20
+        // },
+        splitLine: {
+          show: true,
+          lineStyle: {
+            color: '#032c58'
+          }
+        },
+        axisLine: {
+          show: true,
+          lineStyle: {
+            color: '#032c58'
+          }
+        },
+        axisTick: {
+          show: true
+        }
+      }
+    ],
+    series: [
+      {
+        name: '娉ㄥ唽鎬婚噺',
+        type: 'line',
+        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+        showAllSymbol: true,
+        symbol: 'emptyCircle',
+        symbolSize: 6,
+        lineStyle: {
+          normal: {
+            color: '#28ffb3' // 绾挎潯棰滆壊
+          },
+          borderColor: '#f0f'
+        },
+        label: {
+          show: true,
+          position: 'top',
+          textStyle: {
+            fontSize: 16,
+            color: '#fff'
+          }
+        },
+        itemStyle: {
+          normal: {
+            color: '#28ffb3'
+
+          }
+        },
+        tooltip: {
+          show: false
+        },
+        areaStyle: { // 鍖哄煙濉厖鏍峰紡
+          normal: {
+            // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+              offset: 0,
+              color: 'rgba(0,154,120,1)'
+            },
+            {
+              offset: 1,
+              color: 'rgba(0,0,0, 0)'
+            }
+            ], false),
+            shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+            shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+          }
+        },
+        data: data.map(i => i.quantity)
+      },
+      {
+        name: '鏈�鏂版敞鍐岄噺',
+        type: 'line',
+        barWidth: 20,
+        tooltip: {
+          show: false
+        },
+        label: {
+          show: true,
+          position: 'top',
+          textStyle: {
+            fontSize: 16,
+            color: '#fff'
+          }
+        },
+        areaStyle: { // 鍖哄煙濉厖鏍峰紡
+          normal: {
+            // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+              offset: 0,
+              color: 'rgba(0,154,120,1)'
+            },
+            {
+              offset: 1,
+              color: 'rgba(0,0,0, 0)'
+            }
+            ], false),
+            shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+            shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+          }
+        },
+        // itemStyle: {
+        //   normal: {
+        //     // barBorderRadius: 5,
+        //     // color: new echarts.graphic.LinearGradient(
+        //     //     0, 0, 0, 1,
+        //     //     [{
+        //     //             offset: 0,
+        //     //             color: '#14c8d4'
+        //     //         },
+        //     //         {
+        //     //             offset: 1,
+        //     //             color: '#43eec6'
+        //     //         }
+        //     //     ]
+        //     // )
+        //     color: function(params) {
+        //       var colorList = ['#0ec1ff', '#10cdff', '#12daff', '#15ebff', '#17f8ff', '#1cfffb', '#1dfff1']
+        //       return colorList[params.dataIndex]
+        //     }
+        //   }
+        // },
+        data: data.map(i => i.ouquantity)
+      }
+    ]
+  }
+}
+
+export function cjzl03(xData, legendData, yData, show) { // 宸︿晶
+  return {
+    backgroundColor: 'transparent',
+    // tooltip: {},
+    title: {
+      show: show,
+      text: '鍚勮溅闂翠笉鑹秼鍔�',
+      left: '50%',
+      top: '3%',
+      textAlign: 'center',
+      textStyle: {
+        // color: '#fff',
+        color: '#00ffff',
+        fontSize: '20',
+        fontWeight: 'bolder'
+      }
+    },
+    grid: {
+      left: '2%',
+      right: '2%',
+      bottom: '15%',
+      top: '20%',
+      containLabel: true
+    },
+    legend: {
+      data: legendData,
+      textStyle: { fontSize: 16, color: '#fff' },
+      itemWidth: 25,
+      itemHeight: 10,
+      itemGap: 15,
+      bottom: '5%',
+      selectedMode: false
+    },
+    xAxis: [{
+      type: 'category',
+      boundaryGap: true,
+      axisLabel: {
+        interval: 0,
+        formatter: '{value}',
+        fontSize: 16,
+        margin: 20,
+        textStyle: {
+          color: colorX
+        }
+      },
+      axisLine: {
+        lineStyle: {
+          color: '#032c58'
+        }
+      },
+      splitLine: {
+        show: false,
+        lineStyle: {
+          color: '#032c58'
+        }
+      },
+      axisTick: {
+        show: false
+      },
+      data: xData
+    }],
+    yAxis: [
+      {
+        // max: 800,
+        boundaryGap: false,
+        splitNumber: 4,
+        type: 'value',
+        axisLabel: {
+          textStyle: {
+            fontSize: 18,
+            color: colorX
+          }
+        },
+        // name: '鍗�',
+        // nameTextStyle: {
+        //   color: colorY,
+        //   fontSize: 14,
+        //   lineHeight: 20
+        // },
+        splitLine: {
+          show: true,
+          lineStyle: {
+            color: '#032c58'
+          }
+        },
+        axisLine: {
+          show: true,
+          lineStyle: {
+            color: '#032c58'
+          }
+        },
+        axisTick: {
+          show: true
+        }
+      }
+    ],
+    series: [
+      {
+        name: legendData[0],
+        type: 'line',
+        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+        showAllSymbol: true,
+        symbol: 'emptyCircle',
+        symbolSize: 6,
+        lineStyle: {
+          normal: {
+            color: '#00ffff' // 绾挎潯棰滆壊
+          },
+          borderColor: '#00ffff'
+        },
+        label: {
+          show: true,
+          position: 'top',
+          textStyle: {
+            fontSize: 16,
+            color: '#fff'
+          }
+        },
+        itemStyle: {
+          normal: {
+            color: '#00ffff'
+          }
+        },
+        tooltip: {
+          show: false
+        },
+        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
+        //   normal: {
+        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+        //       offset: 0,
+        //       color: 'rgba(0,154,120,1)'
+        //     },
+        //     {
+        //       offset: 1,
+        //       color: 'rgba(0,0,0, 0)'
+        //     }
+        //     ], false),
+        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+        //   }
+        // },
+        data: yData[0]
+      },
+      {
+        name: legendData[1],
+        type: 'line',
+        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+        showAllSymbol: true,
+        symbol: 'emptyCircle',
+        symbolSize: 6,
+        lineStyle: {
+          normal: {
+            color: '#ff3000' // 绾挎潯棰滆壊
+          },
+          borderColor: '#ff3000'
+        },
+        label: {
+          show: true,
+          position: 'top',
+          textStyle: {
+            fontSize: 16,
+            color: '#fff'
+          }
+        },
+        itemStyle: {
+          normal: {
+            color: '#ff3000'
+          }
+        },
+        tooltip: {
+          show: false
+        },
+        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
+        //   normal: {
+        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+        //       offset: 0,
+        //       color: 'rgba(0,154,120,1)'
+        //     },
+        //     {
+        //       offset: 1,
+        //       color: 'rgba(0,0,0, 0)'
+        //     }
+        //     ], false),
+        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+        //   }
+        // },
+        data: yData[1]
+      },
+      {
+        name: legendData[2],
+        type: 'line',
+        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+        showAllSymbol: true,
+        symbol: 'emptyCircle',
+        symbolSize: 6,
+        lineStyle: {
+          normal: {
+            color: '#ffa800' // 绾挎潯棰滆壊
+          },
+          borderColor: '#ffa800'
+        },
+        label: {
+          show: true,
+          position: 'top',
+          textStyle: {
+            fontSize: 16,
+            color: '#fff'
+          }
+        },
+        itemStyle: {
+          normal: {
+            color: '#ffa800'
+          }
+        },
+        tooltip: {
+          show: false
+        },
+        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
+        //   normal: {
+        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+        //       offset: 0,
+        //       color: 'rgba(0,154,120,1)'
+        //     },
+        //     {
+        //       offset: 1,
+        //       color: 'rgba(0,0,0, 0)'
+        //     }
+        //     ], false),
+        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+        //   }
+        // },
+        data: yData[2]
+      },
+      {
+        name: legendData[3],
+        type: 'line',
+        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+        showAllSymbol: true,
+        symbol: 'emptyCircle',
+        symbolSize: 6,
+        lineStyle: {
+          normal: {
+            color: '#ffee00' // 绾挎潯棰滆壊
+          },
+          borderColor: '#ffee00'
+        },
+        label: {
+          show: true,
+          position: 'top',
+          textStyle: {
+            fontSize: 16,
+            color: '#fff'
+          }
+        },
+        itemStyle: {
+          normal: {
+            color: '#ffee00'
+          }
+        },
+        tooltip: {
+          show: false
+        },
+        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
+        //   normal: {
+        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+        //       offset: 0,
+        //       color: 'rgba(0,154,120,1)'
+        //     },
+        //     {
+        //       offset: 1,
+        //       color: 'rgba(0,0,0, 0)'
+        //     }
+        //     ], false),
+        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+        //   }
+        // },
+        data: yData[3]
+      },
+      {
+        name: legendData[4],
+        type: 'line',
+        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+        showAllSymbol: true,
+        symbol: 'emptyCircle',
+        symbolSize: 6,
+        lineStyle: {
+          normal: {
+            color: '#ff5b00' // 绾挎潯棰滆壊
+          },
+          borderColor: '#ff5b00'
+        },
+        label: {
+          show: true,
+          position: 'top',
+          textStyle: {
+            fontSize: 16,
+            color: '#fff'
+          }
+        },
+        itemStyle: {
+          normal: {
+            color: '#ff5b00'
+          }
+        },
+        tooltip: {
+          show: false
+        },
+        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
+        //   normal: {
+        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+        //       offset: 0,
+        //       color: 'rgba(0,154,120,1)'
+        //     },
+        //     {
+        //       offset: 1,
+        //       color: 'rgba(0,0,0, 0)'
+        //     }
+        //     ], false),
+        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+        //   }
+        // },
+        data: yData[4]
+      }
+    ]
+  }
+}
+
+export function cjzl03_2(xData, legendData, yData, show) { // 宸︿晶
+  return {
+    backgroundColor: 'transparent',
+    // tooltip: {},
+    // title: {
+    //   show: show,
+    //   text: '鍚勮溅闂翠笉鑹秼鍔�',
+    //   left: '50%',
+    //   top: '3%',
+    //   textAlign: 'center',
+    //   textStyle: {
+    //     // color: '#fff',
+    //     color: '#00ffff',
+    //     fontSize: '20',
+    //     fontWeight: 'bolder'
+    //   }
+    // },
+    grid: {
+      left: '2%',
+      right: '2%',
+      bottom: '5%',
+      top: '20%',
+      containLabel: true
+    },
+    // legend: {
+    //   data: legendData,
+    //   textStyle: { fontSize: 16, color: '#fff' },
+    //   itemWidth: 25,
+    //   itemHeight: 10,
+    //   itemGap: 15,
+    //   bottom: '5%',
+    //   selectedMode: false
+    // },
+    xAxis: [{
+      type: 'category',
+      boundaryGap: true,
+      axisLabel: {
+        interval: 0,
+        formatter: '{value}',
+        fontSize: 16,
+        margin: 20,
+        textStyle: {
+          color: colorX
+        }
+      },
+      axisLine: {
+        lineStyle: {
+          color: '#032c58'
+        }
+      },
+      splitLine: {
+        show: false,
+        lineStyle: {
+          color: '#032c58'
+        }
+      },
+      axisTick: {
+        show: false
+      },
+      data: xData
+    }],
+    yAxis: [
+      {
+        // max: 800,
+        boundaryGap: false,
+        splitNumber: 4,
+        type: 'value',
+        axisLabel: {
+          textStyle: {
+            fontSize: 18,
+            color: colorX
+          }
+        },
+        // name: '鍗�',
+        // nameTextStyle: {
+        //   color: colorY,
+        //   fontSize: 14,
+        //   lineHeight: 20
+        // },
+        splitLine: {
+          show: true,
+          lineStyle: {
+            color: '#032c58'
+          }
+        },
+        axisLine: {
+          show: true,
+          lineStyle: {
+            color: '#032c58'
+          }
+        },
+        axisTick: {
+          show: true
+        }
+      }
+    ],
+    series: [
+      {
+        name: legendData[0],
+        type: 'line',
+        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+        showAllSymbol: true,
+        symbol: 'emptyCircle',
+        symbolSize: 6,
+        lineStyle: {
+          normal: {
+            color: '#00ffff' // 绾挎潯棰滆壊
+          },
+          borderColor: '#00ffff'
+        },
+        label: {
+          show: true,
+          position: 'top',
+          textStyle: {
+            fontSize: 16,
+            color: '#fff'
+          }
+        },
+        itemStyle: {
+          normal: {
+            color: '#00ffff'
+          }
+        },
+        tooltip: {
+          show: false
+        },
+        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
+        //   normal: {
+        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+        //       offset: 0,
+        //       color: 'rgba(0,154,120,1)'
+        //     },
+        //     {
+        //       offset: 1,
+        //       color: 'rgba(0,0,0, 0)'
+        //     }
+        //     ], false),
+        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+        //   }
+        // },
+        data: yData[0]
+      },
+      {
+        name: legendData[1],
+        type: 'line',
+        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+        showAllSymbol: true,
+        symbol: 'emptyCircle',
+        symbolSize: 6,
+        lineStyle: {
+          normal: {
+            color: '#ff3000' // 绾挎潯棰滆壊
+          },
+          borderColor: '#ff3000'
+        },
+        label: {
+          show: true,
+          position: 'top',
+          textStyle: {
+            fontSize: 16,
+            color: '#fff'
+          }
+        },
+        itemStyle: {
+          normal: {
+            color: '#ff3000'
+          }
+        },
+        tooltip: {
+          show: false
+        },
+        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
+        //   normal: {
+        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+        //       offset: 0,
+        //       color: 'rgba(0,154,120,1)'
+        //     },
+        //     {
+        //       offset: 1,
+        //       color: 'rgba(0,0,0, 0)'
+        //     }
+        //     ], false),
+        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+        //   }
+        // },
+        data: yData[1]
+      },
+      {
+        name: legendData[2],
+        type: 'line',
+        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+        showAllSymbol: true,
+        symbol: 'emptyCircle',
+        symbolSize: 6,
+        lineStyle: {
+          normal: {
+            color: '#ffa800' // 绾挎潯棰滆壊
+          },
+          borderColor: '#ffa800'
+        },
+        label: {
+          show: true,
+          position: 'top',
+          textStyle: {
+            fontSize: 16,
+            color: '#fff'
+          }
+        },
+        itemStyle: {
+          normal: {
+            color: '#ffa800'
+          }
+        },
+        tooltip: {
+          show: false
+        },
+        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
+        //   normal: {
+        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+        //       offset: 0,
+        //       color: 'rgba(0,154,120,1)'
+        //     },
+        //     {
+        //       offset: 1,
+        //       color: 'rgba(0,0,0, 0)'
+        //     }
+        //     ], false),
+        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+        //   }
+        // },
+        data: yData[2]
+      },
+      {
+        name: legendData[3],
+        type: 'line',
+        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+        showAllSymbol: true,
+        symbol: 'emptyCircle',
+        symbolSize: 6,
+        lineStyle: {
+          normal: {
+            color: '#ffee00' // 绾挎潯棰滆壊
+          },
+          borderColor: '#ffee00'
+        },
+        label: {
+          show: true,
+          position: 'top',
+          textStyle: {
+            fontSize: 16,
+            color: '#fff'
+          }
+        },
+        itemStyle: {
+          normal: {
+            color: '#ffee00'
+          }
+        },
+        tooltip: {
+          show: false
+        },
+        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
+        //   normal: {
+        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+        //       offset: 0,
+        //       color: 'rgba(0,154,120,1)'
+        //     },
+        //     {
+        //       offset: 1,
+        //       color: 'rgba(0,0,0, 0)'
+        //     }
+        //     ], false),
+        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+        //   }
+        // },
+        data: yData[3]
+      },
+      {
+        name: legendData[4],
+        type: 'line',
+        // smooth: true, //鏄惁骞虫粦鏇茬嚎鏄剧ず
+        // 			symbol:'circle',  // 榛樿鏄┖蹇冨渾锛堜腑闂存槸鐧借壊鐨勶級锛屾敼鎴愬疄蹇冨渾
+        showAllSymbol: true,
+        symbol: 'emptyCircle',
+        symbolSize: 6,
+        lineStyle: {
+          normal: {
+            color: '#ff5b00' // 绾挎潯棰滆壊
+          },
+          borderColor: '#ff5b00'
+        },
+        label: {
+          show: true,
+          position: 'top',
+          textStyle: {
+            fontSize: 16,
+            color: '#fff'
+          }
+        },
+        itemStyle: {
+          normal: {
+            color: '#ff5b00'
+          }
+        },
+        tooltip: {
+          show: false
+        },
+        // areaStyle: { // 鍖哄煙濉厖鏍峰紡
+        //   normal: {
+        //     // 绾挎�ф笎鍙橈紝鍓�4涓弬鏁板垎鍒槸x0,y0,x2,y2(鑼冨洿0~1);鐩稿綋浜庡浘褰㈠寘鍥寸洅涓殑鐧惧垎姣斻�傚鏋滄渶鍚庝竴涓弬鏁版槸鈥榯rue鈥欙紝鍒欒鍥涗釜鍊兼槸缁濆鍍忕礌浣嶇疆銆�
+        //     color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+        //       offset: 0,
+        //       color: 'rgba(0,154,120,1)'
+        //     },
+        //     {
+        //       offset: 1,
+        //       color: 'rgba(0,0,0, 0)'
+        //     }
+        //     ], false),
+        //     shadowColor: 'rgba(53,142,215, 0.9)', // 闃村奖棰滆壊
+        //     shadowBlur: 20 // shadowBlur璁惧浘褰㈤槾褰辩殑妯$硦澶у皬銆傞厤鍚坰hadowColor,shadowOffsetX/Y, 璁剧疆鍥惧舰鐨勯槾褰辨晥鏋溿��
+        //   }
+        // },
+        data: yData[4]
+      }
+    ]
+  }
+}
+
+export function cjzl04(xData, yData) {
+  const option = {
+    backgroundColor: 'transparent',
+    // tooltip: {
+    //   trigger: 'axis',
+    //   axisPointer: {
+    //     type: 'shadow'
+    //   }
+    // },
+    grid: {
+      left: '2%',
+      right: '2%',
+      bottom: '5%',
+      top: '20%',
+      containLabel: true
+    },
+    xAxis: [{
+      type: 'category',
+      data: xData,
+      boundaryGap: true,
+      axisLabel: {
+        interval: 0,
+        formatter: '{value}',
+        fontSize: 16,
+        margin: 20,
+        textStyle: {
+          color: colorX
+        }
+      },
+      axisLine: {
+        lineStyle: {
+          color: '#032c58'
+        }
+      },
+      splitLine: {
+        show: false,
+        lineStyle: {
+          color: '#032c58'
+        }
+      },
+      axisTick: {
+        show: false
+      }
+    }],
+    yAxis: [
+      {
+        // max: 800,
+        boundaryGap: false,
+        splitNumber: 4,
+        type: 'value',
+        axisLabel: {
+          textStyle: {
+            fontSize: 18,
+            color: colorX
+          }
+        },
+        // name: '鍗�',
+        // nameTextStyle: {
+        //   color: colorY,
+        //   fontSize: 14,
+        //   lineHeight: 20
+        // },
+        splitLine: {
+          show: true,
+          lineStyle: {
+            color: '#032c58'
+          }
+        },
+        axisLine: {
+          show: true,
+          lineStyle: {
+            color: '#032c58'
+          }
+        },
+        axisTick: {
+          show: true
+        }
+      }
+    ],
+    series: [
+      {
+        type: 'bar',
+        data: yData,
+        barWidth: '20px',
+        itemStyle: {
+          normal: {
+            color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
+              offset: 0,
+              color: 'rgba(0,244,255,1)' // 0% 澶勭殑棰滆壊
+            }, {
+              offset: 1,
+              color: 'rgba(0,77,167,1)' // 100% 澶勭殑棰滆壊
+            }], false),
+            barBorderRadius: [30, 30, 30, 30],
+            shadowColor: 'rgba(0,160,221,1)',
+            shadowBlur: 4
+          }
+        },
+        label: {
+          normal: {
+            show: true,
+            lineHeight: 30,
+            width: 80,
+            height: 30,
+            backgroundColor: 'rgba(0,160,221,0.1)',
+            borderRadius: 200,
+            position: ['-8', '-60'],
+            distance: 1,
+            formatter: [
+              '    {d|鈼弣',
+              ' {a|{c}}     \n',
+              '    {b|}'
+            ].join(','),
+            rich: {
+              d: {
+                color: '#3CDDCF'
+              },
+              a: {
+                fontSize: 16,
+                color: '#3CDDCF',
+                align: 'center'
+              },
+              b: {
+                width: 1,
+                height: 30,
+                borderWidth: 1,
+                borderColor: '#3CDDCF',
+                align: 'left'
+              }
+            }
+          }
+        }
+      }
+    ]
+  }
+
+  return option
+}
diff --git a/src/views/basicSettings/contactUnitList.vue b/src/views/basicSettings/contactUnitList.vue
index 448a898..b62fa97 100644
--- a/src/views/basicSettings/contactUnitList.vue
+++ b/src/views/basicSettings/contactUnitList.vue
@@ -61,8 +61,13 @@
         <div
           style=" width:calc(100% - 300px);"
         >
-          <div class="bodyTopButtonGroup">
+          <div class="bodyTopButtonGroup" style="justify-content: space-between">
             <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+            <div style="display: flex">
+              <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=5')">瀵煎叆</el-button>
+              <el-button v-waves icon="el-icon-refresh-right" @click="syncERP">鍚屾寰�鏉ュ崟浣�</el-button>
+
+            </div>
           </div>
 
           <div class="bodyTopFormGroup">
@@ -216,12 +221,12 @@
                   {{ row.addr?row.addr:'/' }}
                 </template>
               </el-table-column>
-              <el-table-column
-                label="鏁版嵁鏉ユ簮"
-                prop="data_sources"
-                sortable="custom"
-                width="110"
-              />
+              <!--              <el-table-column-->
+              <!--                label="鏁版嵁鏉ユ簮"-->
+              <!--                prop="data_sources"-->
+              <!--                sortable="custom"-->
+              <!--                width="110"-->
+              <!--              />-->
               <el-table-column
                 label="鍒涘缓浜哄憳"
                 prop="username"
@@ -418,6 +423,7 @@
   TCunstomerClassTreeDelete,
   TCunstomerData, TCunstomerDelete
 } from '@/api/basicSettings'
+import { SeaveSearchPartner } from '@/api/ErpSyncMes'
 
 export default {
   name: 'RoleList',
@@ -519,12 +525,15 @@
         i.idparent = i.idparent ? i.idparent : '-1'
       })
       this.treeLeftArr = res.data
+      this.treeLeftArr.forEach(e => {
+        e.name = e.code + ' ' + e.name
+      })
       this.treeLeft = arrayToTree(this.treeLeft.concat(res.data), {
         parentProperty: 'idparent',
         customID: 'code',
         childrenProperty: 'children'
       })
-
+      console.log(JSON.stringify(this.treeLeft), 1)
       this.$nextTick(() => {
         this.$refs.treeLeftRef.setCurrentKey('-1')
         this.getTCunstomerData(this.$refs.treeLeftRef.getCurrentNode())
@@ -660,7 +669,7 @@
     treeEditClick(node, data, operation) {
       this.dialogClassForm.data_sources = data.data_sources
       this.dialogClassForm.customerclasscode = data.code
-      this.dialogClassForm.customerclassname = data.name
+      this.dialogClassForm.customerclassname = data.name.split(' ')[1]
       this.dialogClassForm.parentcode = data.idparent === '-1' ? '' : data.idparent
       this.dialogClassForm.OperType = 'Update'
       this.operation = operation
@@ -762,6 +771,35 @@
         this.dialogForm.idUnitBySale = mainUnitCode
         this.dialogForm.idunitbymanufacture = mainUnitCode
       }
+    },
+    // 鍚屾ERP
+    syncERP() {
+      const loading = this.$loading({
+        lock: true,
+        text: '姝e湪鍚屾ERP锛岃绋嶇瓑...',
+        spinner: 'el-icon-loading',
+        customClass: 'osloading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+
+      SeaveSearchPartner().then(res => {
+        if (res.code === '200') {
+          setTimeout(() => {
+            this.getTCunstomerData(this.$refs.treeLeftRef.getCurrentNode())
+            this.getTCunstomerClassTree()
+            loading.close()
+            this.$notify.success('鍚屾鎴愬姛锛�')
+          }, 2000)
+        }
+        // else if (res.code === '300') {
+        //   setTimeout(() => {
+        //     loading.close()
+        //     this.$message.error('鍚屾澶辫触锛�')
+        //   }, 10000)
+        // }
+      }).catch(e => {
+        loading.close()
+      })
     }
   }
 }
diff --git a/src/views/basicSettings/groupList.vue b/src/views/basicSettings/groupList.vue
index 89fc83d..a8e7617 100644
--- a/src/views/basicSettings/groupList.vue
+++ b/src/views/basicSettings/groupList.vue
@@ -3,6 +3,7 @@
     <div class="body" :style="{height:mainHeight+'px'}">
       <div class="bodyTopButtonGroup" style="justify-content: space-between">
         <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=2')">瀵煎叆</el-button>
       </div>
 
       <div class="bodyTopFormGroup">
diff --git a/src/views/basicSettings/organizationList.vue b/src/views/basicSettings/organizationList.vue
index 76e2b73..d821c74 100644
--- a/src/views/basicSettings/organizationList.vue
+++ b/src/views/basicSettings/organizationList.vue
@@ -131,15 +131,15 @@
         </el-table>
       </div>
       <!--鍒嗛〉-->
-      <pagination
-        :total="total"
-        :page.sync="form.page"
-        :limit.sync="form.rows"
-        align="right"
-        layout="total,prev, pager, next,sizes,jumper"
-        popper-class="select_bottom"
-        @pagination="getSTorgData"
-      />
+      <!--      <pagination-->
+      <!--        :total="total"-->
+      <!--        :page.sync="form.page"-->
+      <!--        :limit.sync="form.rows"-->
+      <!--        align="right"-->
+      <!--        layout="total,prev, pager, next,sizes,jumper"-->
+      <!--        popper-class="select_bottom"-->
+      <!--        @pagination="getSTorgData"-->
+      <!--      />-->
     </div>
 
     <el-dialog
@@ -219,11 +219,11 @@
       tableHeight: 0,
       form: {
         storg_code: '', // 缁勭粐鏋舵瀯缂栫爜
-        storg_name: '', // 缁勭粐鏋舵瀯鍚嶇О
-        prop: 'lm_date', // 鎺掑簭瀛楁
-        order: 'desc', // 鎺掑簭瀛楁
-        page: 1, // 绗嚑椤�
-        rows: 20 // 姣忛〉澶氬皯鏉�
+        storg_name: '' // 缁勭粐鏋舵瀯鍚嶇О
+        // prop: 'lm_date', // 鎺掑簭瀛楁
+        // order: 'desc', // 鎺掑簭瀛楁
+        // page: 1, // 绗嚑椤�
+        // rows: 20 // 姣忛〉澶氬皯鏉�
       },
       total: 10,
       tableData: [],
@@ -431,7 +431,7 @@
     getHeight() {
       this.$nextTick(() => {
         this.mainHeight = window.innerHeight - 85
-        this.tableHeight = this.mainHeight - 200
+        this.tableHeight = this.mainHeight - 137
         this.$refs.tableDataRef.doLayout()
       })
     }
diff --git a/src/views/basicSettings/personList.vue b/src/views/basicSettings/personList.vue
index 4635050..4f93ad5 100644
--- a/src/views/basicSettings/personList.vue
+++ b/src/views/basicSettings/personList.vue
@@ -37,8 +37,9 @@
         </div>
 
         <div style="width: calc(100% - 300px)">
-          <div class="bodyTopButtonGroup">
+          <div class="bodyTopButtonGroup" style="justify-content: space-between">
             <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+            <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=3')">瀵煎叆</el-button>
           </div>
 
           <div class="bodyTopFormGroup">
@@ -127,15 +128,18 @@
                 prop="usercode"
                 label="鐢ㄦ埛缂栫爜"
                 sortable="custom"
+                show-overflow-tooltip
               />
               <el-table-column
                 prop="username"
                 label="鐢ㄦ埛鍚嶇О"
                 sortable="custom"
+                show-overflow-tooltip
               />
               <el-table-column
                 prop="storg_name"
                 label="鎵�灞炵粍缁�"
+                show-overflow-tooltip
                 sortable="custom"
               >
                 <template slot-scope="{row}">
@@ -146,11 +150,12 @@
               <el-table-column
                 prop="status"
                 label="鐘舵��"
+                show-overflow-tooltip
                 sortable="custom"
               >
                 <template slot-scope="{row}">
-                  <el-tag v-if="row.status==='Y'" size="small" type="success">姝e父</el-tag>
-                  <el-tag v-if="row.status==='N'" size="small" type="danger">鍋滅敤</el-tag>
+                  <el-tag v-if="row.status==='Y'" size="small" type="success">鍦ㄨ亴</el-tag>
+                  <el-tag v-if="row.status==='N'" size="small" type="danger">绂昏亴</el-tag>
                 </template>
               </el-table-column>
               <el-table-column
@@ -300,8 +305,8 @@
 
         <el-form-item required label="鐢ㄦ埛鐘舵��">
           <el-radio-group v-model="dialogForm.status" style="width: 200px;">
-            <el-radio label="Y">姝e父</el-radio>
-            <el-radio label="N">鍋滅敤</el-radio>
+            <el-radio label="Y">鍦ㄨ亴</el-radio>
+            <el-radio label="N">绂昏亴</el-radio>
           </el-radio-group>
         </el-form-item>
 
diff --git a/src/views/basicSettings/postList.vue b/src/views/basicSettings/postList.vue
index fb8c498..4177e23 100644
--- a/src/views/basicSettings/postList.vue
+++ b/src/views/basicSettings/postList.vue
@@ -3,6 +3,7 @@
     <div class="body" :style="{height:mainHeight+'px'}">
       <div class="bodyTopButtonGroup" style="justify-content: space-between">
         <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=1')">瀵煎叆</el-button>
       </div>
 
       <div class="bodyTopFormGroup">
diff --git a/src/views/basicSettings/powerDivider.vue b/src/views/basicSettings/powerDivider.vue
index 4a55af6..28a33d7 100644
--- a/src/views/basicSettings/powerDivider.vue
+++ b/src/views/basicSettings/powerDivider.vue
@@ -52,12 +52,12 @@
           >淇� 瀛�
           </el-button>
 
-          <el-tabs v-model="activeName" type="border-card">
+          <el-tabs v-model="activeName" type="border-card" @tab-click="tabClick">
             <el-tab-pane label="PC绔�" name="PC">
               <div style="display: flex;">
                 <div
                   ref="scrollLeft"
-                  style="border-right: 1px solid rgba(0,0,0,0.2);width:260px;
+                  style="border-right: 1px solid rgba(0,0,0,0.2);width:100%;
                   overflow-y: auto;overflow-x:hidden;"
                   :style="{height:(tableHeight-40)+'px'}"
                   @scroll="scrollLeftScroll()"
@@ -68,8 +68,8 @@
                   </div>
 
                   <el-tree
-                    ref="treeCenterRef"
-                    style="padding-top: 10px;width: 199px;"
+                    ref="treeCenterPCRef"
+                    style="padding-top: 10px;"
                     :data="treeCenter"
                     highlight-current
                     :props="defaultPropsCenter"
@@ -81,58 +81,87 @@
                     @node-click="getLeftTreeNode"
                   />
                 </div>
+                <!--                <div-->
+                <!--                  ref="scrollCenter"-->
+                <!--                  style="width: calc(100% - 260px );padding-left: 10px;overflow-y: auto;"-->
+                <!--                  :style="{height:(tableHeight-40)+'px'}"-->
+                <!--                  @scroll="scrollCenterScroll()"-->
+                <!--                  @mouseover="isScroll='center'"-->
+                <!--                >-->
+                <!--                  <div style=" ">-->
+                <!--                    <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 鎸夐挳鏉冮檺-->
+                <!--                  </div>-->
+
+                <!--                  <el-checkbox-->
+                <!--                    v-model="buttonIsChecked"-->
+                <!--                    style="height: 26px;display:flex;align-items: center;margin-top:10px;width:200px"-->
+                <!--                    @change=" handleCheckAllChange "-->
+                <!--                  >鍏ㄩ��-->
+                <!--                  </el-checkbox>-->
+
+                <!--                  <div v-if="treeCenter.length>0">-->
+                <!--                    <div v-for="(item,index) in treeCenter[0].children" :key="item.menucode">-->
+
+                <!--                      <div-->
+                <!--                        v-if="!item.buttoncodelist"-->
+                <!--                        style="margin-left: 40px;height:26px;display: flex;"-->
+                <!--                      />-->
+
+                <!--                      <el-checkbox-group-->
+                <!--                        v-for="it in item.children"-->
+                <!--                        v-if="item.expanded"-->
+                <!--                        :key="it.menucode"-->
+                <!--                        v-model="it.buttonChecked"-->
+                <!--                        style="margin-left: 40px;height:26px;display: flex;"-->
+                <!--                        @change="val=>handleCheckedButtonChange(val,it.menucode,it.buttonChecked)"-->
+                <!--                      >-->
+
+                <!--                        <el-checkbox-->
+                <!--                          v-for="i in it.buttoncodelist"-->
+                <!--                          :key="i"-->
+                <!--                          :label="i"-->
+                <!--                          style="display:flex;align-items: center;"-->
+                <!--                        />-->
+                <!--                      </el-checkbox-group>-->
+
+                <!--                    </div>-->
+
+                <!--                  </div>-->
+
+                <!--                </div>-->
+              </div>
+            </el-tab-pane>
+            <el-tab-pane label="APP绔�" name="APP">
+              <div style="display: flex;">
                 <div
-                  ref="scrollCenter"
-                  style="width: calc(100% - 260px );padding-left: 10px;overflow-y: auto"
+                  ref="scrollLeft"
+                  style="border-right: 1px solid rgba(0,0,0,0.2);width:100%;
+                                overflow-y: auto;overflow-x:hidden;"
                   :style="{height:(tableHeight-40)+'px'}"
-                  @scroll="scrollCenterScroll()"
-                  @mouseover="isScroll='center'"
+                  @scroll="scrollLeftScroll()"
+                  @mouseover="isScroll='left'"
                 >
                   <div style=" ">
-                    <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 鎸夐挳鏉冮檺
+                    <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 鑿滃崟鏉冮檺
                   </div>
 
-                  <el-checkbox
-                    v-model="buttonIsChecked"
-                    style="height: 26px;display:flex;align-items: center;margin-top:10px;width:200px"
-                    @change=" handleCheckAllChange "
-                  >鍏ㄩ��
-                  </el-checkbox>
-
-                  <div v-if="treeCenter.length>0">
-                    <div v-for="(item,index) in treeCenter[0].children" :key="item.menucode">
-
-                      <div
-                        v-if="!item.buttoncodelist"
-                        style="margin-left: 40px;height:26px;display: flex;"
-                      />
-
-                      <el-checkbox-group
-                        v-for="it in item.children"
-                        v-if="item.expanded"
-                        :key="it.menucode"
-                        v-model="it.buttonChecked"
-                        style="margin-left: 40px;height:26px;display: flex;"
-                        @change="val=>handleCheckedButtonChange(val,it.menucode,it.buttonChecked)"
-                      >
-
-                        <el-checkbox
-                          v-for="i in it.buttoncodelist"
-                          :key="i"
-                          :label="i"
-                          style="display:flex;align-items: center;"
-                        />
-                      </el-checkbox-group>
-
-                    </div>
-
-                  </div>
-
+                  <el-tree
+                    ref="treeCenterAPPRef"
+                    style="padding-top: 10px;"
+                    :data="treeCenter"
+                    highlight-current
+                    :props="defaultPropsCenter"
+                    show-checkbox
+                    node-key="menucode"
+                    :default-expand-all="true"
+                    @check-change="handleTreeCenterCheckChange"
+                    @check="handleTreeCenterCheck"
+                    @node-click="getLeftTreeNode"
+                  />
                 </div>
               </div>
             </el-tab-pane>
-            <el-tab-pane label="APP绔�" name="APP">APP绔�</el-tab-pane>
-            <el-tab-pane label="宸ユ帶绔�" name="宸ユ帶绔�">宸ユ帶绔�</el-tab-pane>
+            <!--            <el-tab-pane label="宸ユ帶绔�" name="宸ユ帶绔�">宸ユ帶绔�</el-tab-pane>-->
           </el-tabs>
 
         </div>
@@ -220,6 +249,11 @@
         this.$notify.error('璇峰厛寤虹浉瀵瑰簲鐨勮鑹诧紒')
       }
     },
+    async tabClick() {
+      this.treeCenter = []
+      await this.getRolePermissionSearchRoleMenuButton(this.$refs.treeLeftRef.getCurrentKey())// 鐢ㄤ簬鏁版嵁鍥炴樉
+      await this.getRolePermissionSearchRoleMenu(this.$refs.treeLeftRef.getCurrentKey())// 鐢ㄤ簬娓叉煋椤甸潰
+    },
 
     // 鑾峰彇鑿滃崟鏉冮檺瀵瑰簲鐨勬寜閽�
     async getRolePermissionSearchRoleMenuButton(rolecode) {
@@ -264,7 +298,12 @@
     handleData() {
       this.menuCheckedCodeArr = this.allButtonData.map(i => i.menucode)
       this.$nextTick(() => {
-        this.$refs.treeCenterRef.setCheckedKeys(this.menuCheckedCodeArr)
+        if (this.activeName === 'PC') {
+          this.$refs.treeCenterPCRef.setCheckedKeys(this.menuCheckedCodeArr)
+        }
+        if (this.activeName === 'APP') {
+          this.$refs.treeCenterAPPRef.setCheckedKeys(this.menuCheckedCodeArr)
+        }
       })
 
       this.treeCenter[0].children.forEach(item => {
@@ -301,7 +340,13 @@
 
     // 鍏ㄩ�夋敼鍙�
     handleCheckAllChange(val) {
-      const checkedKeys = this.$refs.treeCenterRef.getCheckedKeys()
+      let checkedKeys
+      if (this.activeName === 'PC') {
+        checkedKeys = this.$refs.treeCenterPCRef.getCheckedKeys()
+      }
+      if (this.activeName === 'APP') {
+        checkedKeys = this.$refs.treeCenterAPPRef.getCheckedKeys()
+      }
 
       if (val) {
         this.treeCenter[0].children.forEach(item => {
@@ -335,7 +380,12 @@
         } else if (this.menuCheckedCodeArr.includes(code) && oldValue.length === 1 && newValue.length === 0) { // 鏄�
           this.menuCheckedCodeArr = this.menuCheckedCodeArr.filter(i => i !== code)
         }
-        this.$refs.treeCenterRef.setCheckedKeys(this.menuCheckedCodeArr)
+        if (this.activeName === 'PC') {
+          this.$refs.treeCenterPCRef.setCheckedKeys(this.menuCheckedCodeArr)
+        }
+        if (this.activeName === 'APP') {
+          this.$refs.treeCenterAPPRef.setCheckedKeys(this.menuCheckedCodeArr)
+        }
       }
 
       // 杩欓噷鏄垽鏂叏閫塩heckbox 鏄惁閫変腑
@@ -420,7 +470,14 @@
     async saveClick() {
       const rolecode = this.$refs.treeLeftRef.getCurrentKey()
       const datacode = this.treeLeft.find(i => i.code === rolecode).datarange !== 'CUSTOM' ? this.treeLeft.find(i => i.code === rolecode).datarange : this.treeLeft.find(i => i.code === rolecode).datapermissions
-      const menuKeyArr = this.$refs.treeCenterRef.getCheckedKeys()
+      let menuKeyArr
+      if (this.activeName === 'PC') {
+        menuKeyArr = this.$refs.treeCenterPCRef.getCheckedKeys()
+      }
+      if (this.activeName === 'APP') {
+        menuKeyArr = this.$refs.treeCenterAPPRef.getCheckedKeys()
+      }
+
       const arr = []
       this.treeCenter[0].children.forEach(item => {
         if (item.children && item.children.length) {
diff --git a/src/views/basicSettings/processList.vue b/src/views/basicSettings/processList.vue
new file mode 100644
index 0000000..cf3f122
--- /dev/null
+++ b/src/views/basicSettings/processList.vue
@@ -0,0 +1,434 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=15')">瀵煎叆</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="宸ュ簭缂栫爜" style=" display: flex;">
+              <el-input v-model="form.stepcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <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-select
+                v-model="form.steptypecode"
+                style="width:200px"
+                placeholder="璇烽�夋嫨"
+                :popper-append-to-body="false"
+              >
+                <el-option
+                  v-for="item in steptypeArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="鐘舵��" style=" display: flex;">
+              <el-select
+                v-model="form.enable"
+                style="width:200px"
+                placeholder="璇烽�夋嫨"
+                :popper-append-to-body="false"
+              >
+                <el-option
+                  v-for="item in enableArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="getStepSearch">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+          style="height:5px"
+        >
+          <!--          <svg-icon-->
+          <!--            v-show="mouseHoverType==='mouseout'"-->
+          <!--            style="cursor: pointer"-->
+          <!--            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"-->
+          <!--            @mouseenter="mouseHoverType=$event.type"-->
+          <!--          />-->
+          <!--          <svg-icon-->
+          <!--            v-show="mouseHoverType==='mouseenter'"-->
+          <!--            style="cursor: pointer"-->
+          <!--            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"-->
+          <!--            @click="isExpandForm=!isExpandForm"-->
+          <!--            @mouseout="mouseHoverType=$event.type"-->
+          <!--          />-->
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :data="tableData"
+          :height="tableHeight+'px'"
+          border
+          row-class-name="custom-row"
+          :style="{width: 100+'%',height:tableHeight+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <el-table-column
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="stepcode"
+            label="宸ュ簭缂栫爜"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="flwtype"
+            label="宸ュ簭绫诲瀷"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              {{ row.flwtype==='Z'?'鑷埗':'澶栧崗' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="enable"
+            label="鐘舵��"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <el-tag v-if="row.enable==='Y'" size="small" type="success">姝e父</el-tag>
+              <el-tag v-if="row.enable==='N'" size="small" type="danger">鍋滅敤</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="descr"
+            label="鎻忚堪"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              {{ row.descr?row.descr:'/' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="lm_user"
+            label="鍒涘缓浜哄憳"
+            sortable="custom"
+          />
+          <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
+                    v-if="row.leve!==0"
+                    class="el-icon-edit-outline"
+                    :style="{color:$store.state.settings.theme}"
+                    @click="edit('edit',row)"
+                  />
+                </el-tooltip>
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                  <i
+                    v-if="row.leve!==0"
+                    class="el-icon-delete"
+                    :style="{color:$store.state.settings.theme}"
+                    @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,jumper"
+        popper-class="select_bottom"
+        @pagination="getStepSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-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="stepcode">
+          <el-input v-model="dialogForm.stepcode" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="宸ュ簭鍚嶇О" prop="stepname">
+          <el-input v-model="dialogForm.stepname" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="宸ュ簭绫诲瀷" required>
+          <el-select
+            v-model="dialogForm.steptypecode"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in steptypeArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item required label="鐘舵��">
+          <el-radio-group v-model="dialogForm.enable">
+            <el-radio label="Y">姝e父</el-radio>
+            <el-radio label="N">鍋滅敤</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="鎻忚堪">
+          <el-input
+            v-model="dialogForm.description"
+            type="textarea"
+            style="width: 200px"
+          />
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { AddUpdateStep, DeleteStep, StepSearch } from '@/api/basicSettings'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        stepcode: '', //
+        stepname: '', //
+        enable: '', //
+        steptypecode: '', // 宸ュ簭绫诲瀷
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      total: 10,
+      tableData: [],
+      steptypeArr: [
+        { code: 'Z', name: '鑷埗' },
+        { code: 'W', name: '澶栧崗' }
+      ],
+      enableArr: [
+        { code: 'Y', name: '姝e父' },
+        { code: 'N', name: '鍋滅敤' }
+      ],
+      dialogVisible: false,
+      dialogForm: {
+        id: '',
+        stepcode: '', //
+        stepname: '', //
+        steptypecode: 'Z',
+        description: '', // 鎻忚堪
+        enable: 'Y'// 鐘舵��
+      },
+      operation: '',
+      dialogFormRules: {
+        stepcode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        stepname: [
+          { required: true, message: '璇疯緭鍏ュ伐搴忓悕绉�', trigger: ['blur', 'change'] }
+        ]
+      }
+
+    }
+  },
+  created() {
+    this.getStepSearch()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    // 缁勭粐鏋舵瀯澶у垪琛ㄦ煡璇�
+    async getStepSearch() {
+      const res = await StepSearch(this.form)
+      this.tableData = res.data
+      this.total = res.count
+    },
+
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getStepSearch()
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.stepcode = ''
+      this.form.stepname = ''
+      this.form.enable = ''
+      this.form.steptypecode = ''
+      this.getStepSearch()
+    },
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+      this.dialogForm.OperType = 'Add'
+    },
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+      this.dialogForm.OperType = 'Update'
+
+      this.$nextTick(() => {
+        this.dialogForm.id = row.id
+        this.dialogForm.stepcode = row.stepcode
+        this.dialogForm.stepname = row.stepname
+        this.dialogForm.description = row.descr
+        this.dialogForm.enable = row.enable
+        this.dialogForm.steptypecode = row.flwtype
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        DeleteStep({ stepcode: row.stepcode }).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getStepSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.stepcode = ''
+      this.dialogForm.stepname = ''
+      this.dialogForm.id = ''
+      this.dialogForm.enable = 'Y'
+      this.dialogForm.description = ''
+      this.dialogForm.steptypecode = 'Z'
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          // console.log(JSON.parse(JSON.stringify(this.dialogForm)))
+          this.$store.state.app.buttonIsDisabled = true
+          AddUpdateStep(this.dialogForm).then(res => {
+            if (res.code === '200') {
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.dialogVisible = false
+              this.$store.state.app.buttonIsDisabled = false
+              this.getStepSearch()
+            } else {
+              this.$store.state.app.buttonIsDisabled = false
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 200
+        this.$refs.tableDataRef.doLayout()
+      })
+    }
+  }
+}
+</script>
diff --git a/src/views/basicSettings/roleList.vue b/src/views/basicSettings/roleList.vue
index 0d211da..c940480 100644
--- a/src/views/basicSettings/roleList.vue
+++ b/src/views/basicSettings/roleList.vue
@@ -3,6 +3,7 @@
     <div class="body" :style="{height:mainHeight+'px'}">
       <div class="bodyTopButtonGroup" style="justify-content: space-between">
         <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=4')">瀵煎叆</el-button>
       </div>
 
       <div class="bodyTopFormGroup">
@@ -89,11 +90,11 @@
               <el-tag v-if="row.status==='N'" size="small" type="danger">鍋滅敤</el-tag>
             </template>
           </el-table-column>
-          <el-table-column
-            prop="dataname"
-            label="鏉冮檺鑼冨洿"
-            sortable="custom"
-          />
+          <!--          <el-table-column-->
+          <!--            prop="dataname"-->
+          <!--            label="鏉冮檺鑼冨洿"-->
+          <!--            sortable="custom"-->
+          <!--          />-->
           <el-table-column
             prop="description"
             label="澶囨敞"
@@ -190,55 +191,55 @@
           <el-input v-model="dialogForm.rolename" style="width: 200px" />
         </el-form-item>
 
-        <el-form-item required label="鏁版嵁鑼冨洿">
-          <el-select
-            v-model="dialogForm.datacode"
-            style="width:200px"
-            placeholder="璇烽�夋嫨"
-            :popper-append-to-body="false"
-          >
-            <el-option
-              v-for="item in datacodeArr"
-              :key="item.datacode"
-              :label="item.dataname"
-              :value="item.datacode"
-            />
-          </el-select>
-        </el-form-item>
+        <!--        <el-form-item required label="鏁版嵁鑼冨洿">-->
+        <!--          <el-select-->
+        <!--            v-model="dialogForm.datacode"-->
+        <!--            style="width:200px"-->
+        <!--            placeholder="璇烽�夋嫨"-->
+        <!--            :popper-append-to-body="false"-->
+        <!--          >-->
+        <!--            <el-option-->
+        <!--              v-for="item in datacodeArr"-->
+        <!--              :key="item.datacode"-->
+        <!--              :label="item.dataname"-->
+        <!--              :value="item.datacode"-->
+        <!--            />-->
+        <!--          </el-select>-->
+        <!--        </el-form-item>-->
         <el-form-item required label="鐘舵��">
           <el-radio-group v-model="dialogForm.status" style="width: 200px">
             <el-radio label="Y">姝e父</el-radio>
             <el-radio label="N">鍋滅敤</el-radio>
           </el-radio-group>
         </el-form-item>
-        <el-form-item v-if="dialogForm.datacode==='CUSTOM'" label="鏁版嵁鏉冮檺" style="margin: 0">
-          <el-checkbox-group v-model="checkboxGroupSelected" @change="checkboxGroupChange">
-            <el-checkbox v-for="item in checkboxGroup" :key="item" :label="item">
-              {{ item }}
-              <el-tooltip class="item" effect="dark" content="鍕鹃�夌埗鑺傜偣鏄惁鍚屾椂閫変腑瀛愯妭鐐�" placement="top">
-                <i v-if="item==='鐖跺瓙鑱斿姩'" class="el-icon-question" />
-              </el-tooltip>
-            </el-checkbox>
-          </el-checkbox-group>
-        </el-form-item>
-        <el-card
-          v-if="dialogForm.datacode==='CUSTOM'"
-          class="box-card"
-          shadow="never"
-          style="margin-bottom: 30px;width: 78%;margin-left: 12%;"
-        >
+        <!--        <el-form-item v-if="dialogForm.datacode==='CUSTOM'" label="鏁版嵁鏉冮檺" style="margin: 0">-->
+        <!--          <el-checkbox-group v-model="checkboxGroupSelected" @change="checkboxGroupChange">-->
+        <!--            <el-checkbox v-for="item in checkboxGroup" :key="item" :label="item">-->
+        <!--              {{ item }}-->
+        <!--              <el-tooltip class="item" effect="dark" content="鍕鹃�夌埗鑺傜偣鏄惁鍚屾椂閫変腑瀛愯妭鐐�" placement="top">-->
+        <!--                <i v-if="item==='鐖跺瓙鑱斿姩'" class="el-icon-question" />-->
+        <!--              </el-tooltip>-->
+        <!--            </el-checkbox>-->
+        <!--          </el-checkbox-group>-->
+        <!--        </el-form-item>-->
+        <!--        <el-card-->
+        <!--          v-if="dialogForm.datacode==='CUSTOM'"-->
+        <!--          class="box-card"-->
+        <!--          shadow="never"-->
+        <!--          style="margin-bottom: 30px;width: 78%;margin-left: 12%;"-->
+        <!--        >-->
 
-          <el-tree
-            ref="tree"
-            :key="checkboxGroupSelected.toString()"
-            :data="treeData"
-            show-checkbox
-            :check-strictly="!checkboxGroupSelected.includes('鐖跺瓙鑱斿姩')"
-            :default-expand-all="checkboxGroupSelected.includes('灞曞紑/鎶樺彔')"
-            node-key="torg_code"
-            :props="defaultProps"
-          />
-        </el-card>
+        <!--          <el-tree-->
+        <!--            ref="tree"-->
+        <!--            :key="checkboxGroupSelected.toString()"-->
+        <!--            :data="treeData"-->
+        <!--            show-checkbox-->
+        <!--            :check-strictly="!checkboxGroupSelected.includes('鐖跺瓙鑱斿姩')"-->
+        <!--            :default-expand-all="checkboxGroupSelected.includes('灞曞紑/鎶樺彔')"-->
+        <!--            node-key="torg_code"-->
+        <!--            :props="defaultProps"-->
+        <!--          />-->
+        <!--        </el-card>-->
 
         <el-form-item label="澶囨敞">
           <el-input v-model="dialogForm.description" type="textarea" style="width:500px" />
diff --git a/src/views/basicSettings/storageList.vue b/src/views/basicSettings/storageList.vue
index 22d566a..b737779 100644
--- a/src/views/basicSettings/storageList.vue
+++ b/src/views/basicSettings/storageList.vue
@@ -1,11 +1,893 @@
-<template />
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+
+      <div style="display: flex">
+        <div style="width: 300px;margin: 10px 10px 0  0;background:#fff">
+
+          <div style="margin: 20px 10px 0 10px;display: flex;justify-content: space-between;">
+            <div style="display: flex;">
+              <div
+                style="width: 5px;height: 100%;border-radius: 5px;"
+                :style="{background:$store.state.settings.theme}"
+              />
+              <div style="margin-left: 8px;">浠撳簱</div>
+            </div>
+
+            <!--            <div style="margin-right:10px">-->
+            <!--              <el-tooltip v-del-tab-index class="item" effect="dark" content="鏂板" placement="top">-->
+            <!--                <i class="el-icon-plus" style="cursor: pointer;color: #999" @click="treeAddClick('add')" />-->
+            <!--              </el-tooltip>-->
+            <!--            </div>-->
+
+          </div>
+
+          <el-tree
+            ref="treeLeftRef"
+            style="padding: 10px;overflow: auto"
+            :style="{height:(tableHeight+222)+'px'}"
+            :data="treeLeft"
+            node-key="code"
+            highlight-current
+            :props="defaultPropsLeft"
+            :default-expand-all="true"
+            :expand-on-click-node="false"
+            @node-click="getTSecLocaData"
+          >
+            <!--            <span slot-scope="{ node, data }" class="custom-tree-node">-->
+            <!--              <span v-if="!data.isEdit">{{ data.name }}</span>-->
+            <!--              <span v-if="!data.isEdit">-->
+            <!--                <el-tooltip v-del-tab-index class="item" effect="dark" content="缂栬緫" placement="top">-->
+            <!--                  <i-->
+            <!--                    v-if="data.code!=='-1'"-->
+            <!--                    class="el-icon-edit"-->
+            <!--                    style="margin-right:10px;color: #999"-->
+            <!--                    @click.stop="treeEditClick(node,data,'edit')"-->
+            <!--                  />-->
+            <!--                </el-tooltip>-->
+            <!--                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">-->
+            <!--                  <i-->
+            <!--                    v-if="data.code!=='-1'"-->
+            <!--                    class="el-icon-delete"-->
+            <!--                    style="margin-right: 4px;color: #999"-->
+            <!--                    @click.stop="treeDeleteClick(node,data)"-->
+            <!--                  />-->
+            <!--                </el-tooltip>-->
+            <!--              </span>-->
+            <!--            </span>-->
+          </el-tree>
+        </div>
+
+        <div
+          style=" width:calc(100% - 300px);"
+        >
+          <div class="bodyTopButtonGroup" style="justify-content: space-between">
+            <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+            <el-button
+              v-waves
+              type="success"
+              icon="el-icon-download"
+              @click="$router.push('./../systemSetting/dataImport?fileCode=7')"
+            >瀵煎叆
+            </el-button>
+          </div>
+
+          <div class="bodyTopFormGroup">
+            <el-form
+              ref="form"
+              :model="form"
+              label-width="100px"
+              inline
+              style="display: flex;"
+            >
+              <div class="elForm">
+                <el-form-item label="璐т綅缂栫爜" style=" display: flex;">
+                  <el-input v-model="form.locacode" placeholder="璇疯緭鍏�" style="width: 200px" />
+                </el-form-item>
+                <el-form-item label="璐т綅鍚嶇О" style=" display: flex;">
+                  <el-input v-model="form.locaname" placeholder="璇疯緭鍏�" style="width: 200px" />
+                </el-form-item>
+                <!--                <el-form-item label="瀛樿揣瑙勬牸" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.partspec" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
+                <!--                <el-form-item label="鐢ㄦ埛缂栫爜" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
+                <!--                <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
+                <!--                <el-form-item v-show="isExpandForm" label="鐢ㄦ埛缂栫爜" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
+                <!--                <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
+                <!--                <el-form-item v-show="isExpandForm" label="鐢ㄦ埛缂栫爜" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
+                <!--                <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
+              </div>
+              <div
+                class="bodySearchReset"
+                :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+              >
+                <el-button
+                  v-waves
+                  type="primary"
+                  icon="el-icon-search"
+                  @click="getTSecLocaData($refs.treeLeftRef.getCurrentNode())"
+                >鏌ヨ
+                </el-button>
+                <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+              </div>
+            </el-form>
+            <div
+              class="bodyTopFormExpand"
+              style="height: 5px;"
+            >
+              <!--              <svg-icon-->
+              <!--                v-show="mouseHoverType==='mouseout'"-->
+              <!--                style="cursor: pointer"-->
+              <!--                :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"-->
+              <!--                @mouseenter="mouseHoverType=$event.type"-->
+              <!--              />-->
+              <!--              <svg-icon-->
+              <!--                v-show="mouseHoverType==='mouseenter'"-->
+              <!--                style="cursor: pointer"-->
+              <!--                :icon-class="!isExpandForm?'doubleDown':'doubleUp'"-->
+              <!--                @click="isExpandForm=!isExpandForm"-->
+              <!--                @mouseout="mouseHoverType=$event.type"-->
+              <!--              />-->
+            </div>
+          </div>
+
+          <div class="elTableDiv">
+            <el-table
+              ref="tableDataRef"
+              class="tableFixed"
+              :data="tableData"
+              :height="isExpandForm?tableHeight:(tableHeight+80)+'px'"
+              border
+              row-class-name="custom-row"
+              :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px',}"
+              highlight-current-row
+              :header-cell-style="this.$headerCellStyle"
+              :cell-style="this.$cellStyle"
+              @sort-change="sortChange"
+            >
+              <!--            prop="RowNum"-->
+              <el-table-column
+                prop="rowNum"
+                width="50"
+                fixed
+                label="搴忓彿"
+              />
+              <el-table-column
+                prop="code"
+                label="璐т綅缂栫爜"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="name"
+                label="璐т綅鍚嶇О"
+                show-overflow-tooltip
+                sortable="custom"
+              />
+
+              <el-table-column
+                prop="stckname"
+                label="瀵瑰簲浠撳簱"
+                sortable="custom"
+              />
+
+              <el-table-column
+                prop="status"
+                label="鐘舵��"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <el-tag v-if="row.status==='0'" size="small" type="success">姝e父</el-tag>
+                  <el-tag v-if="row.status==='1'" size="small" type="danger">鍋滅敤</el-tag>
+                </template>
+              </el-table-column>
+
+              <el-table-column
+                prop="description"
+                label="澶囨敞"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  {{ row.description ? row.description : '/' }}
+                </template>
+              </el-table-column>
+              <!--              <el-table-column-->
+              <!--                label="鏁版嵁鏉ユ簮"-->
+              <!--                prop="data_sources"-->
+              <!--                sortable="custom"-->
+              <!--                width="110"-->
+              <!--              />-->
+              <el-table-column
+                label="鍒涘缓浜哄憳"
+                prop="username"
+                sortable="custom"
+                width="110"
+              />
+              <el-table-column
+                label="鍒涘缓鏃堕棿"
+                prop="lm_date"
+                sortable="custom"
+                width="160"
+              />
+
+              <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"
+                        :style="{color:$store.state.settings.theme}"
+                        @click="edit('edit',row)"
+                      />
+                    </el-tooltip>
+                    <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                      <i
+                        class="el-icon-delete"
+                        :style="{color:$store.state.settings.theme}"
+                        @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,jumper"
+            popper-class="select_bottom"
+            @pagination="getTSecLocaData($refs.treeLeftRef.getCurrentNode())"
+          />
+
+        </div>
+      </div>
+    </div>
+
+    <!--    寰�鏉ョ被鍒柊澧炰慨鏀�-->
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'缂栬緫'"
+      :visible.sync="dialogClassVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClassClose"
+      @close="handleClassClose"
+    >
+      <el-form ref="dialogClassForm" inline :rules="dialogClassFormRules" :model="dialogClassForm" label-width="80px">
+        <el-form-item label="鍒嗙被缂栫爜" prop="customerclasscode">
+          <el-input v-model="dialogClassForm.customerclasscode" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="鍒嗙被鍚嶇О" prop="customerclassname">
+          <el-input v-model="dialogClassForm.customerclassname" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="涓婄骇鍒嗙被">
+          <el-select
+            v-model="dialogClassForm.parentcode"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            :popper-append-to-body="false"
+            clearable
+          >
+            <el-option
+              v-for="item in treeLeftArr"
+              :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 v-waves @click="dialogVisibleClassCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleClassConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--    寰�鏉ュ崟浣嶆柊澧炰慨鏀�-->
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'缂栬緫'"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+
+      <el-form ref="dialogForm" class="" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px">
+        <!--        <el-divider content-position="left">鍩烘湰淇℃伅</el-divider>-->
+        <el-form-item label="璐т綅缂栫爜" prop="locacode">
+          <el-input v-model="dialogForm.locacode" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="璐т綅鍚嶇О" prop="locaname">
+          <el-input v-model="dialogForm.locaname" style="width: 200px" />
+        </el-form-item>
+
+        <el-form-item label="瀵瑰簲浠撳簱" prop="stckcode">
+          <el-select
+            v-model="dialogForm.stckcode"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            filterable
+            :popper-append-to-body="false"
+            :disabled="!isEdit&&operation==='edit'"
+            @change="stckcodeChange"
+          >
+            <el-option
+              v-for="item in stckcodeArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="涓婄骇璐т綅">
+          <el-select
+            v-model="dialogForm.parentlocacode"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            clearable
+            filterable
+            :disabled="dialogForm.stckcode===''"
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in parentlocacodeArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item required label="鐘舵��">
+          <el-radio-group v-model="dialogForm.status" style="width: 200px">
+            <el-radio label="0">姝e父</el-radio>
+            <el-radio label="1">鍋滅敤</el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item label="澶囨敞">
+          <el-input
+            v-model="dialogForm.description"
+            type="textarea"
+            :autosize="{ minRows: 2, maxRows: 4}"
+            style="width: 200px;"
+          />
+        </el-form-item>
+
+      </el-form>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
 
 <script>
+import waves from '@/directive/waves'
+import Pagination from '@/components/Pagination'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import arrayToTree from 'array-to-tree'
+import {
+  TCunstomerAddUpdate,
+  TCunstomerClassTree,
+  TCunstomerClassTreeAddUpdate,
+  TCunstomerClassTreeDelete,
+  TCunstomerData, TCunstomerDelete, TSecLocaAddUpdate, TSecLocaData, TSecLocaDelete, TSecLocaTree
+} from '@/api/basicSettings'
+import { WareHouseSelectLocation } from '@/api/GeneralBasicData'
+
+const _ = require('lodash')
+
 export default {
-  name: 'StorageList'
+  name: 'RoleList',
+  directives: { waves, elDragDialog },
+  components: {
+    Pagination
+  },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      operation: '',
+
+      treeLeft: [
+        {
+          code: '-1',
+          name: '鍏ㄩ儴'
+        }
+      ], // 宸︿晶鏍�
+      treeLeftArr: [],
+      defaultPropsLeft: {
+        children: 'children',
+        label: 'name'
+      },
+
+      tableData: [],
+      form: {
+        stckcode: '',
+        locacode: '',
+        locaname: '',
+        partspec: '',
+        flag: '',
+        page: 1,
+        rows: 20,
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc' // 鎺掑簭瀛楁
+      },
+      total: 0,
+      dialogClassVisible: false,
+      dialogClassForm: {
+        data_sources: '', // 鏁版嵁鏉ユ簮:ERP/MES
+        customerclasscode: '', // 瀛樿揣鍒嗙被缂栫爜
+        customerclassname: '', // 瀛樿揣鍒嗙被鍚嶇О
+        parentcode: '', // 涓婄骇鍒嗙被缂栫爜
+        OperType: ''// OperType
+      },
+      classArr: [],
+      dialogClassFormRules: {
+        customerclasscode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        customerclassname: [
+          { required: true, message: '璇疯緭寰�鏉ュ崟浣嶅悕绉�', trigger: ['blur', 'change'] }
+        ]
+      },
+
+      dialogVisible: false,
+      dialogForm: {
+        data_sources: 'MES', // 鏁版嵁鏉ユ簮锛汦RP/MES
+        locacode: '', //
+        locaname: '', //
+        stckcode: '', // 瀵瑰簲浠撳簱缂栫爜
+        parentlocacode: '', // 涓婄骇璐т綅缂栫爜
+        status: '0', // 浣跨敤鐘舵��: 姝e父(0)鍋滅敤(1)
+        description: '',
+        depth: '', // 灞傜骇
+
+        OperType: '' // 鎿嶄綔绫诲瀷
+      },
+      dialogFormRules: {
+        locacode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        locaname: [
+          { required: true, message: '璇疯緭鍏ュ線鏉ュ崟浣嶅悕绉�', trigger: ['blur', 'change'] }
+        ],
+        stckcode: [
+          { required: true, message: '璇烽�夋嫨瀵瑰簲浠撳簱', trigger: ['blur', 'change'] }
+        ]
+      },
+      stckcodeArr: [],
+      parentlocacodeArr: [],
+
+      isEdit: true
+
+    }
+  },
+
+  created() {
+
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+
+    this.getTSecLocaTree()
+  },
+  methods: {
+    async getTSecLocaTree() {
+      const { data: res } = await TSecLocaTree()
+      res.forEach(e => {
+        e.name = e.code + ' ' + e.name
+      })
+      //  鑾峰彇浠撳簱
+      const ck = res.filter(i => i.depth === 0)// 灞傜骇涓�0鐨�  鏄粨搴�
+      const kw = res.filter(i => i.depth !== 0)// 鍙嶄箣 涓轰粨浣�
+      this.stckcodeArr = ck
+      const tree = arrayToTree(kw, {
+        parentProperty: 'idparent',
+        customID: 'code',
+        childrenProperty: 'children'
+      })
+      const group = _.groupBy(tree, i => i.warhouse)
+      const newArr = []
+      ck.forEach(j => {
+        if (Object.keys(group).includes(j.code)) {
+          newArr.push({
+            code: j.code,
+            name: j.name,
+            depth: 0,
+            idparent: '-1',
+            children: group[j.code]
+          })
+        } else {
+          newArr.push({
+            code: j.code,
+            name: j.name,
+            depth: 0,
+            idparent: '-1',
+            children: []
+          })
+        }
+      })
+      this.treeLeft = [
+        {
+          code: '-1',
+          name: '鍏ㄩ儴',
+          idparent: '',
+          children: newArr
+        }
+      ]// 宸︿晶鏍�
+      this.$nextTick(() => {
+        this.$refs.treeLeftRef.setCurrentKey('-1')
+        this.getTSecLocaData(this.$refs.treeLeftRef.getCurrentNode())
+      })
+
+      console.log(JSON.parse(JSON.stringify(this.treeLeft)))
+    },
+
+    async getTSecLocaData(node) {
+      let result = ''
+      if (node.code === '-1') {
+        result = node.children.map(i => i.code)
+      } else {
+        result = [node.code]
+      }
+      // const result = this.getChildrenCodeMethod(node, [])
+      // if (result.includes('-1')) {
+      //   result.shift()
+      // }
+      this.form.stckcode = result.join(',')
+
+      if (this.$refs.treeLeftRef.getCurrentNode().idparent === '') {
+        this.form.flag = -1
+      } else {
+        this.form.flag = this.$refs.treeLeftRef.getCurrentNode().depth
+      }
+
+      const res = await TSecLocaData(this.form)
+
+      this.tableData = res.data
+      this.total = res.count
+    },
+
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 280
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    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.getTSecLocaData(this.$refs.treeLeftRef.getCurrentNode())
+    },
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+      this.dialogForm.OperType = 'Add'
+    },
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+      this.dialogForm.OperType = 'Update'
+
+      const temp = this.$refs.treeLeftRef.getCurrentNode()
+
+      if (temp.idparent === '-1' || temp.idparent === '') {
+        this.isEdit = temp.depth !== 1
+      } else {
+        this.isEdit = false
+      }
+
+      // this.$nextTick(() => {
+      this.dialogForm.data_sources = row.data_sources
+      this.dialogForm.locacode = row.code
+      this.dialogForm.locaname = row.name
+      this.dialogForm.stckcode = row.stckcode
+
+      const { data: res } = await WareHouseSelectLocation({ warhousecode: row.stckcode })
+
+      this.parentlocacodeArr = res
+      // this.parentlocacodeArr = this.treeLeftArr.filter(i => i.idparent === this.dialogForm.stckcode)
+
+      this.dialogForm.parentlocacode = row.parentname ? row.parentcode : null
+      this.dialogForm.status = row.status
+      this.dialogForm.description = row.description
+      // })
+    },
+    del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        TSecLocaDelete({ locacode: row.code, data_sources: row.data_sources }).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            this.getTSecLocaTree()
+            this.getTSecLocaData(this.$refs.treeLeftRef.getCurrentNode())
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+    reset() {
+      this.form.stckcode = ''
+      this.form.locacode = ''
+      this.form.locaname = ''
+      this.$refs.treeLeftRef.setCurrentKey('-1')
+      this.getTSecLocaData(this.$refs.treeLeftRef.getCurrentNode())
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.data_sources = 'MES'
+      this.dialogForm.locacode = ''
+      this.dialogForm.locaname = ''
+      this.dialogForm.stckcode = ''
+      this.dialogForm.parentlocacode = ''
+      this.dialogForm.description = ''
+      this.dialogForm.status = '0'
+
+      if (this.$refs.treeLeftRef.getCurrentNode().idparent === '') {
+        this.form.flag = ''
+      } else {
+        this.form.flag = this.$refs.treeLeftRef.getCurrentNode().depth
+      }
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          // console.log(JSON.parse(JSON.stringify(this.dialogForm)), 2)
+
+          if (this.dialogForm.locacode === this.dialogForm.parentlocacode) {
+            return this.$message.error('涓婄骇璐т綅涓嶈兘鏄揣浣嶆湰韬紒')
+          }
+
+          if (this.dialogForm.parentlocacode === '') {
+            this.dialogForm.depth = 1
+          } else {
+            this.dialogForm.depth = parseFloat(this.parentlocacodeArr.find(i => i.code === this.dialogForm.parentlocacode).depth) + 1
+          }
+
+          this.$store.state.app.buttonIsDisabled = true
+          TSecLocaAddUpdate(this.dialogForm).then(res => {
+            if (res.code === '200') {
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.dialogVisible = false
+              this.$store.state.app.buttonIsDisabled = false
+              this.getTSecLocaTree()
+            } else {
+              this.$store.state.app.buttonIsDisabled = false
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+
+    async stckcodeChange(val) {
+      const { data: res } = await WareHouseSelectLocation({ warhousecode: val })
+      this.parentlocacodeArr = res
+
+      this.dialogForm.parentlocacode = ''
+      // const res = this.recursiveLookupArray([], val)// 閫掑綊鏌ユ壘鏁扮粍
+      // this.parentlocacodeArr = res
+    },
+    recursiveLookupArray(newArr, val) {
+      const temp = this.treeLeftArr.filter(i => i.idparent === val)
+      if (temp.length > 0 && temp) {
+        temp.forEach(i => {
+          newArr.push(i)
+          this.recursiveLookupArray(newArr, i.code)
+        })
+      }
+      return newArr
+    },
+
+    // 閫掑綊鍙栧瓙闆嗙殑鎵�鏈塩ode
+    getChildrenCodeMethod(node, result) {
+      result.push(node.code)
+      if (node.children && node.children.length > 0) {
+        node.children.forEach(i => {
+          this.getChildrenCodeMethod(i, result)
+        })
+      }
+      return result
+    },
+
+    treeEditClick(node, data, operation) {
+      this.dialogClassForm.data_sources = data.data_sources
+      this.dialogClassForm.customerclasscode = data.code
+      this.dialogClassForm.customerclassname = data.name
+      this.dialogClassForm.parentcode = data.idparent === '-1' ? '' : data.idparent
+      this.dialogClassForm.OperType = 'Update'
+      this.operation = operation
+      this.dialogClassVisible = true
+    },
+    treeDeleteClick(node, data) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        const result = this.getChildrenCodeMethod(data, [])
+        TCunstomerClassTreeDelete({ customerclasscode: result.join(',') }).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            this.getTSecLocaTree()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+    treeAddClick(operation) {
+      this.operation = operation
+      this.dialogClassVisible = true
+      this.dialogClassForm.OperType = 'Add'
+      this.dialogClassForm.data_sources = 'MES'
+    },
+
+    handleClassClose() {
+      this.dialogClassForm.data_sources = ''
+      this.dialogClassForm.customerclasscode = ''
+      this.dialogClassForm.customerclassname = ''
+      this.dialogClassForm.parentcode = ''
+      this.dialogClassForm.OperType = ''
+      this.$refs.dialogClassForm.clearValidate()
+    },
+    dialogVisibleClassCancel() {
+      this.dialogClassVisible = false
+    },
+    dialogVisibleClassConfirm() {
+      this.$refs.dialogClassForm.validate(valid => {
+        if (valid) {
+          TCunstomerClassTreeAddUpdate(this.dialogClassForm).then(res => {
+            if (res.code === '200') {
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.dialogClassVisible = false
+              this.$store.state.app.buttonIsDisabled = false
+              this.getTSecLocaTree()
+            } else {
+              this.$store.state.app.buttonIsDisabled = false
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    unittypcodeChange(val) {
+      console.log(val)
+
+      this.dialogForm.unitcode = ''
+      this.dialogForm.unitsubcode = ''
+      this.dialogForm.idSubUnitByReport = ''
+      this.dialogForm.idUnitByStock = ''
+      this.dialogForm.idUnitByPurchase = ''
+      this.dialogForm.idUnitBySale = ''
+      this.dialogForm.idunitbymanufacture = ''
+      // this.$refs.dialogForm.clearValidate()
+      // this.$forceUpdate()
+    },
+    unitcodeChange(val, type) {
+      console.log(val)
+
+      if (type === '1') {
+        // this.dialogForm.unitcode = val
+        this.dialogForm.unitsubcode = ''
+        this.dialogForm.idSubUnitByReport = ''
+
+        const unitname = this.unitcodeSingleArr.find(i => i.unitcode === val).unitname
+
+        this.dialogForm.idUnitByStock = unitname
+        this.dialogForm.idUnitByPurchase = unitname
+        this.dialogForm.idUnitBySale = unitname
+        this.dialogForm.idunitbymanufacture = unitname
+      }
+
+      if (type === '0') {
+        const t = this.unitcodeGroupArr.find(i => i.unitcode === val).children
+
+        this.idSubUnitByReportArr = t.filter(i => i.isMainUnit !== '1')
+        this.idUnitBvStockArr = t
+
+        const mainUnitCode = t.find(i => i.isMainUnit === '1').unitcode
+        this.dialogForm.unitsubcode = mainUnitCode
+        this.dialogForm.idSubUnitByReport = this.idSubUnitByReportArr[0].unitcode
+
+        this.dialogForm.idUnitByStock = mainUnitCode
+        this.dialogForm.idUnitByPurchase = mainUnitCode
+        this.dialogForm.idUnitBySale = mainUnitCode
+        this.dialogForm.idunitbymanufacture = mainUnitCode
+      }
+    }
+  }
 }
 </script>
 
-<style scoped>
+<style scoped lang="scss">
+.custom-tree-node {
+  flex: 1;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 14px;
+  padding-right: 8px;
+}
 
+//::v-deep .el-checkbox__label {
+//  width: 55px;
+//}
+//
+.el-icon-plus:hover, .el-icon-edit:hover, .el-icon-delete:hover {
+  color: #000 !important;
+}
 </style>
diff --git a/src/views/basicSettings/warehouseList.vue b/src/views/basicSettings/warehouseList.vue
index 404dcc0..c6cce70 100644
--- a/src/views/basicSettings/warehouseList.vue
+++ b/src/views/basicSettings/warehouseList.vue
@@ -1,11 +1,466 @@
-<template />
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+
+        <div style="display:flex">
+          <el-button
+            v-waves
+            type="success"
+            icon="el-icon-download"
+            @click="$router.push('./../systemSetting/dataImport?fileCode=6')"
+          >瀵煎叆
+          </el-button>
+          <el-button v-waves icon="el-icon-refresh-right" @click="syncERP">鍚屾浠撳簱</el-button>
+        </div>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="浠撳簱缂栫爜" style="display: flex;">
+              <el-input v-model="form.code" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="浠撳簱鍚嶇О" style="display: flex;">
+              <el-input v-model="form.name" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鐘舵��" style=" display: flex;">
+              <el-select
+                v-model="form.status"
+                style="width:200px"
+                placeholder="璇烽�夋嫨"
+                :popper-append-to-body="false"
+              >
+                <el-option
+                  v-for="item in statusArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+
+            <el-form-item label="璐т綅绠$悊" style="display: flex;">
+
+              <el-select
+                v-model="form.ishasPosition"
+                style="width:200px"
+                placeholder="璇烽�夋嫨"
+                :popper-append-to-body="false"
+              >
+                <el-option
+                  v-for="item in ishasPositionArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="getTSecStckData">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+          style="height:5px"
+        >
+          <!--          <svg-icon-->
+          <!--            v-show="mouseHoverType==='mouseout'"-->
+          <!--            style="cursor: pointer"-->
+          <!--            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"-->
+          <!--            @mouseenter="mouseHoverType=$event.type"-->
+          <!--          />-->
+          <!--          <svg-icon-->
+          <!--            v-show="mouseHoverType==='mouseenter'"-->
+          <!--            style="cursor: pointer"-->
+          <!--            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"-->
+          <!--            @click="isExpandForm=!isExpandForm"-->
+          <!--            @mouseout="mouseHoverType=$event.type"-->
+          <!--          />-->
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :data="tableData"
+          :height="tableHeight+'px'"
+          border
+          row-class-name="custom-row"
+          :style="{width: 100+'%',height:tableHeight+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <el-table-column
+            prop="rowNum"
+            width="120"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="code"
+            label="浠撳簱缂栫爜"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="name"
+            label="浠撳簱鍚嶇О"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="ishasPosition"
+            label="鏄惁璐т綅绠$悊"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <el-tag v-if="row.ishasPosition==='1'" size="small" type="primary">鏄�</el-tag>
+              <el-tag v-if="row.ishasPosition==='0'" size="small" type="info">鍚�</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="status"
+            label="鐘舵��"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <el-tag v-if="row.status==='0'" size="small" type="success">姝e父</el-tag>
+              <el-tag v-if="row.status==='1'" size="small" type="danger">鍋滅敤</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="description"
+            label="澶囨敞"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              {{ row.description ? row.description : '/' }}
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            prop="data_sources"-->
+          <!--            label="鏁版嵁鏉ユ簮"-->
+          <!--            sortable="custom"-->
+          <!--          />-->
+          <el-table-column
+            prop="username"
+            label="鍒涘缓浜哄憳"
+            sortable="custom"
+          />
+          <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-edit-outline"
+                    :style="{color:$store.state.settings.theme}"
+                    @click="edit('edit',row)"
+                  />
+                </el-tooltip>
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                  <i
+                    class="el-icon-delete"
+                    :style="{color:$store.state.settings.theme}"
+                    @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,jumper"
+        popper-class="select_bottom"
+        @pagination="getTSecStckData"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-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="stckcode">
+          <el-input v-model="dialogForm.stckcode" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="浠撳簱鍚嶇О" prop="stckname">
+          <el-input v-model="dialogForm.stckname" style="width: 200px" />
+        </el-form-item>
+        <el-form-item required label="璐т綅绠$悊">
+          <el-radio-group v-model="dialogForm.ishaspostion" style="width: 200px">
+            <el-radio label="1">鏄�</el-radio>
+            <el-radio label="0">鍚�</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item required label="鐘舵��">
+          <el-radio-group v-model="dialogForm.status" style="width: 200px">
+            <el-radio label="0">姝e父</el-radio>
+            <el-radio label="1">鍋滅敤</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item label="鎻忚堪">
+          <el-input v-model="dialogForm.description" type="textarea" style="width: 490px" />
+        </el-form-item>
+
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
 
 <script>
+import Pagination from '@/components/Pagination'
+import { TSecStckAddUpdate, TSecStckData, TSecStckDelete } from '@/api/basicSettings'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import { SaveSearchWareHouse } from '@/api/ErpSyncMes'
+
 export default {
-  name: 'WarehouseLIst'
+  name: 'Zzjg',
+  components: {
+    Pagination
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        code: '',
+        name: '',
+        status: '',
+        ishasPosition: '',
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      total: 10,
+      tableData: [],
+      statusArr: [
+        { code: '0', name: '姝e父' },
+        { code: '1', name: '鍋滅敤' }
+      ],
+      ishasPositionArr: [
+        { code: '0', name: '鍚�' },
+        { code: '1', name: '鏄�' }
+      ],
+      dialogVisible: false,
+      dialogForm: {
+        data_sources: 'MES',
+        stckcode: '', //
+        stckname: '', //
+        ishaspostion: '0', // 0鍚� 1 鏄�
+        description: '',
+        status: '0', // 0姝e父 1鍋滅敤
+        OperType: ''
+      },
+      operation: '',
+      dialogFormRules: {
+        stckcode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        stckname: [
+          { required: true, message: '璇疯緭鍏ョ粍缁囧悕绉�', trigger: ['blur', 'change'] }
+        ]
+      }
+
+    }
+  },
+  created() {
+    this.getTSecStckData()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    // 缁勭粐鏋舵瀯澶у垪琛ㄦ煡璇�
+    async getTSecStckData() {
+      const res = await TSecStckData(this.form)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getTSecStckData()
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.code = ''
+      this.form.name = ''
+      this.form.status = ''
+      this.form.ishasPosition = ''
+      this.getTSecStckData()
+    },
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+      this.dialogForm.OperType = 'Add'
+    },
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+      this.dialogForm.OperType = 'Update'
+      this.$nextTick(() => {
+        this.dialogForm.stckcode = row.code
+        this.dialogForm.stckname = row.name
+        this.dialogForm.status = row.status
+        this.dialogForm.description = row.description
+        this.dialogForm.ishaspostion = row.ishasPosition
+        this.dialogForm.data_sources = row.data_sources
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        TSecStckDelete({ stckcode: row.code, data_sources: row.data_sources }).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getTSecStckData()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.data_sources = 'MES'
+      this.dialogForm.stckcode = ''
+      this.dialogForm.stckname = ''
+      this.dialogForm.ishaspostion = '0'
+      this.dialogForm.description = ''
+      this.dialogForm.status = '0'
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          this.$store.state.app.buttonIsDisabled = true
+          TSecStckAddUpdate(this.dialogForm).then(res => {
+            if (res.code === '200') {
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.dialogVisible = false
+              this.getTSecStckData()
+              this.$store.state.app.buttonIsDisabled = false
+            } else {
+              this.$store.state.app.buttonIsDisabled = false
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 200
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    // 鍚屾ERP
+    syncERP() {
+      const loading = this.$loading({
+        lock: true,
+        text: '姝e湪鍚屾ERP锛岃绋嶇瓑...',
+        spinner: 'el-icon-loading',
+        customClass: 'osloading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+
+      SaveSearchWareHouse().then(res => {
+        if (res.code === '200') {
+          setTimeout(() => {
+            this.getTSecStckData()
+            loading.close()
+            this.$notify.success('鍚屾鎴愬姛锛�')
+          }, 2000)
+        }
+        // else if (res.code === '300') {
+        //   setTimeout(() => {
+        //     loading.close()
+        //     this.$message.error('鍚屾澶辫触锛�')
+        //   }, 10000)
+        // }
+      }).catch(e => {
+        loading.close()
+      })
+    }
+  }
 }
 </script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/deviceManager/checkPosition.vue b/src/views/deviceManager/checkPosition.vue
index e69de29..0a02f4a 100644
--- a/src/views/deviceManager/checkPosition.vue
+++ b/src/views/deviceManager/checkPosition.vue
@@ -0,0 +1,608 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=10')">瀵煎叆</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="閮ㄤ綅缂栫爜" style=" display: flex;">
+              <el-input v-model="form.checkitemcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="閮ㄤ綅鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.checkitemname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鐐规瑕佹眰" style=" display: flex;">
+              <el-input v-model="form.checkdescr" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="閫変腑鎵爜" style=" display: flex;">
+              <el-select v-model="form.isqrcode" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in isqrcodeArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鐐规鍛ㄦ湡" style=" display: flex;">
+              <el-select v-model="form.cycle" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in cycleArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <el-table
+          ref="tableDataRef"
+          :key="tableTimeStampKey"
+          :data="tableData"
+          :height="isExpandForm?tableHeight:(tableHeight+40)+'px'"
+          border
+          class="tableFixed"
+          :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
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :key="item.id"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+              <div v-else-if="item.prop==='cycle'">{{ cycleArr.find(i=>i.code===row[item.prop]).name }}</div>
+              <div v-else-if="item.prop==='isscan'">
+                <div v-if="row[item.prop]==='Y'">
+                  <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                  鏄�
+                </div>
+                <div v-if="row[item.prop]==='N'">
+                  <i class="el-icon-info" style="margin-right: 2px" />
+                  鍚�
+                </div>
+              </div>
+              <div v-else>{{ row[item.prop] }}</div>
+            </template>
+          </el-table-column>
+
+          <!--          <el-table-column-->
+          <!--            type="selection"-->
+          <!--            width="50"-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="RowNum"-->
+          <!--            width="50"-->
+          <!--            fixed-->
+          <!--            label="搴忓彿"-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="code"-->
+          <!--            label="閮ㄤ綅缂栫爜"-->
+          <!--            sortable="custom"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="name"-->
+          <!--            label="閮ㄤ綅鍚嶇О"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            sortable="custom"-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="description"-->
+          <!--            label="鐐规瑕佹眰"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            sortable="custom"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div v-if="row.description">{{ row.description }}</div>-->
+          <!--              <div v-else>/</div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <!--          <el-table-column-->
+          <!--            prop="isscan"-->
+          <!--            label="閫夋嫨鎵爜"-->
+          <!--            sortable="custom"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div v-if="row.isscan==='Y'">-->
+          <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
+          <!--                鏄�-->
+          <!--              </div>-->
+          <!--              <div v-if="row.isscan==='N'">-->
+          <!--                <i class="el-icon-info" style="margin-right: 2px" />-->
+          <!--                鍚�-->
+          <!--              </div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <!--          <el-table-column-->
+          <!--            prop="cycle"-->
+          <!--            label="鐐规鍛ㄦ湡"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            sortable="custom"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div v-if="row.cycle==='Y'">骞�</div>-->
+          <!--              <div v-if="row.cycle==='S'">瀛�</div>-->
+          <!--              <div v-if="row.cycle==='M'">鏈�</div>-->
+          <!--              <div v-if="row.cycle==='W'">鍛�</div>-->
+          <!--              <div v-if="row.cycle==='D'">鏃�</div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <!--          <el-table-column-->
+          <!--            prop="lm_user"-->
+          <!--            label="鍒涘缓浜哄憳"-->
+          <!--            sortable="custom"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="lm_date"-->
+          <!--            label="鍒涘缓鏃堕棿"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            width="160"-->
+          <!--            sortable="custom"-->
+          <!--          />-->
+          <el-table-column
+            label="鎿嶄綔"
+            fixed="right"
+            width="120"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top">
+                  <i :style="{color:$store.state.settings.theme}" 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 :style="{color:$store.state.settings.theme}" 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="getDeviceCheckItemSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-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="checkitemcode">
+          <el-input v-model="dialogForm.checkitemcode" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="閮ㄤ綅鍚嶇О" prop="checkitemname">
+          <el-input v-model="dialogForm.checkitemname" style="width: 200px" />
+        </el-form-item>
+        <el-form-item prop="cycle" label="鐐规鍛ㄦ湡">
+          <el-select
+            v-model="dialogForm.cycle"
+            style="width: 200px"
+            placeholder="璇烽�夋嫨"
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in cycleArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item prop="isqrcode" label="閫夋嫨鎵爜">
+          <el-select
+            v-model="dialogForm.isqrcode"
+            style="width: 200px"
+            placeholder="璇烽�夋嫨"
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in isqrcodeArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鐐规瑕佹眰" prop="checkitemdescr">
+          <el-input v-model="dialogForm.checkitemdescr" type="textarea" style="width: 200px" />
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { AddUpdateDeviceCheckItem, DeleteDeviceCheckItem, DeviceCheckItemSearch } from '@/api/DeviceManager'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import TableColumnSettings from '@/components/TableColumnSettings'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, TableColumnSettings
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        checkitemcode: '', // 閮ㄤ綅缂栫爜
+        checkitemname: '', // 閮ㄤ綅鍚嶇О
+        checkdescr: '', // 鐐规瑕佹眰
+        isqrcode: '', // 閫変腑鎵爜
+        cycle: '', // 鐐规鍛ㄦ湡
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      isqrcodeArr: [
+        { code: 'Y', name: '鏄�' },
+        { code: 'N', name: '鍚�' }
+      ],
+      cycleArr: [
+        { code: 'Y', name: '骞�' },
+        { code: 'S', name: '瀛�' },
+        { code: 'M', name: '鏈�' },
+        { code: 'W', name: '鍛�' },
+        { code: 'D', name: '鏃�' }
+      ],
+
+      total: 10,
+      tableData: [],
+      tableColumnSettingsArray: [
+        { minWidth: false, width: 55, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: false, width: 55, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'code',
+          label: '閮ㄤ綅缂栫爜',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'name',
+          label: '閮ㄤ綅鍚嶇О',
+          id: 4,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 330,
+          width: false,
+          prop: 'description',
+          label: '鐐规瑕佹眰',
+          id: 5,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'isscan',
+          label: '閫夋嫨鎵爜',
+          id: 6,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'cycle',
+          label: '鐐规鍛ㄦ湡',
+          id: 7,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'lm_user',
+          label: '鍒涘缓浜哄憳',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 160,
+          prop: 'lm_date',
+          label: '鍒涘缓鏃堕棿',
+          id: 9,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+
+      dialogVisible: false,
+      dialogForm: {
+        id: '',
+        checkitemcode: '', // 璁惧鐐规閮ㄤ綅缂栫爜
+        checkitemname: '', // 璁惧鐐规閮ㄤ綅鍚嶇О
+        checkitemdescr: '', // 璁惧鐐规閮ㄤ綅瑕佹眰
+        cycle: 'D', // 璁惧鐐规閮ㄤ綅鍛ㄦ湡
+        isqrcode: 'N', // 鏄惁鎵爜
+        OperType: '' // 鎿嶄綔绫诲瀷
+      },
+      operation: '',
+      dialogFormRules: {
+        checkitemcode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        checkitemname: [
+          { required: true, message: '璇疯緭鍏ラ儴浣嶅悕绉�', trigger: ['blur', 'change'] }
+        ],
+        cycle: [
+          { required: true, message: '', trigger: ['blur', 'change'] }
+        ],
+        isqrcode: [
+          { required: true, message: '', trigger: ['blur', 'change'] }
+        ]
+      },
+
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '10',
+      shows: false
+
+    }
+  },
+  watch: {
+    shows() {
+      if (!this.shows) {
+        this.getDeviceCheckItemSearch()
+      }
+    }
+  },
+  created() {
+    this.getDeviceCheckItemSearch()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+      this.$refs.tableDataRef.doLayout()
+    },
+    async getDeviceCheckItemSearch() {
+      const res = await DeviceCheckItemSearch(this.form)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getDeviceCheckItemSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getDeviceCheckItemSearch()
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.checkitemcode = ''
+      this.form.checkitemname = ''
+      this.form.checkdescr = ''
+      this.form.isqrcode = ''
+      this.form.cycle = ''
+      this.getDeviceCheckItemSearch()
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 淇敼鎸夐挳
+    edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      this.$nextTick(() => {
+        this.dialogForm.id = row.id
+        this.dialogForm.cycle = row.cycle
+        this.dialogForm.isqrcode = row.isscan
+        this.dialogForm.checkitemcode = row.code
+        this.dialogForm.checkitemname = row.name
+        this.dialogForm.checkitemdescr = row.description
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        DeleteDeviceCheckItem({ checkitemcode: row.code }).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getDeviceCheckItemSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.id = ''
+      this.dialogForm.checkitemcode = ''
+      this.dialogForm.checkitemname = ''
+      this.dialogForm.checkitemdescr = ''
+      this.dialogForm.cycle = 'D'
+      this.dialogForm.isqrcode = 'N'
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          this.$store.state.app.buttonIsDisabled = true
+          const data = {
+            id: this.dialogForm.id,
+            checkitemcode: this.dialogForm.checkitemcode,
+            checkitemname: this.dialogForm.checkitemname,
+            checkitemdescr: this.dialogForm.checkitemdescr,
+            cycle: this.dialogForm.cycle,
+            isqrcode: this.dialogForm.isqrcode,
+            OperType: this.operation === 'add' ? 'Add' : 'Update'
+            // Operator: getCookie('admin')
+          }
+          AddUpdateDeviceCheckItem(data).then(res => {
+            if (res.code === '200') {
+              this.dialogVisible = false
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.getDeviceCheckItemSearch()
+              this.$store.state.app.buttonIsDisabled = false
+            } else {
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    }
+  }
+}
+</script>
diff --git a/src/views/deviceManager/checkRecord.vue b/src/views/deviceManager/checkRecord.vue
index e69de29..8f4b30c 100644
--- a/src/views/deviceManager/checkRecord.vue
+++ b/src/views/deviceManager/checkRecord.vue
@@ -0,0 +1,595 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup">
+        <!--        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>-->
+        <!--        <el-button v-waves icon="el-icon-download" @click="upload">瀵煎叆</el-button>-->
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm" style="justify-content: flex-start">
+            <el-form-item label="鐢熶骇杞﹂棿" style=" display: flex;">
+              <el-select v-model="form.wkshopcode" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in wkshopSelectArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="璁惧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.eqpcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="璁惧鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.eqpname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鏍囧噯鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.stanedname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鐐规浜哄憳" style=" display: flex;">
+              <el-input v-model="form.checkuser" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鐐规鏃堕棿" style=" display: flex;font-size:14px;align-items: center">
+              <el-date-picker
+                v-model="form.checkdate"
+                type="daterange"
+                :clearable="false"
+                class="timeMini"
+                range-separator="~"
+                start-placeholder="寮�濮嬫棩鏈�"
+                style="width: 200px;display: flex;line-height: 34px ;height: 34px;"
+                end-placeholder="缁撴潫鏃ユ湡"
+                size="mini"
+              />
+            </el-form-item>
+
+          </div>
+          <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}">
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <el-table
+          ref="tableDataRef"
+          :key="tableTimeStampKey"
+          class="tableFixed"
+          :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
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :key="item.id"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+
+              <div v-else-if="item.prop==='chk_result'">
+                <div v-if="row[item.prop]==='OK'" style="display: flex;align-items: center">
+                  <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                  姝e父
+                </div>
+                <div v-if="row[item.prop]==='NG'" style="display: flex;align-items: center">
+                  <i class="el-icon-info" style="margin-right: 2px" />
+                  寮傚父
+                </div>
+              </div>
+              <div v-else>{{ row[item.prop] }}</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-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>-->
+              <i
+                class="el-icon-tickets"
+                :style="{color:$store.state.settings.theme}"
+                style="cursor: pointer;margin-right: 15px"
+                @click="edit('edit',row)"
+              />
+            </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="getDeviceCheckTakeSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'鐐规鏄庣粏'"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+
+      <div class="elTableDiv" style="margin-top: 0">
+        <el-table
+          :data="tableDataDialog"
+          :height="500+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:500+'px'}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <el-table-column
+            prop="seq"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="itemcode"
+            label="閮ㄤ綅缂栫爜"
+          />
+          <el-table-column
+            prop="itemname"
+            label="閮ㄤ綅鍚嶇О"
+          />
+          <el-table-column
+            prop="result"
+            label="鐐规缁撴灉"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.result==='OK'" style="display: flex;align-items: center">
+                <!--                <div style="margin-right: 5px;width:10px;height: 10px;border-radius: 50%;background-color: #42b983" />-->
+                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                姝e父
+              </div>
+              <div v-if="row.result==='NG'" style="display: flex;align-items: center">
+                <!--                <div style="margin-right: 5px;width:10px;height: 10px;border-radius: 50%;background-color: red" />-->
+                <i class="el-icon-info" style="margin-right: 2px" />
+                寮傚父
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="chk_value"
+            label="鏁板��"
+          />
+          <el-table-column
+            prop="remark"
+            label="澶囨敞"
+            show-tooltip-when-overflow
+          />
+        </el-table>
+      </div>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisible = false">杩� 鍥�</el-button>
+          <!--          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>-->
+          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { AddUpdateOrganization, DeleteOrganization } from '@/api/basicSettings'
+import { getCookie } from '@/utils/auth'
+import { handleDatetime } from '@/utils/global'
+import { DeviceCheckSubTakeSearch, DeviceCheckTakeOutExcel, DeviceCheckTakeSearch } from '@/api/DeviceManager'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import TableColumnSettings from '@/components/TableColumnSettings'
+import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, TableColumnSettings
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        wkshopcode: '', // 杞﹂棿缂栫爜
+        eqpcode: '', // 璁惧缂栫爜
+        eqpname: '', // 璁惧鍚嶇О
+        stanedname: '', // 鏍囧噯鍚嶇О
+        checkuser: '', // 鐐规浜哄憳
+        checkdate: '', // 鐐规鏃堕棿
+        prop: 'chk_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      wkshopSelectArr: [],
+      total: 10,
+      tableData: [],
+      tableColumnSettingsArray: [
+        // { minWidth: false, width: 55, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: false, width: 55, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'djwo',
+          label: '鐐规鍗曞彿',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 130,
+          prop: 'org_code',
+          label: '鐢熶骇杞﹂棿缂栫爜',
+          id: 4,
+          show: false,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'org_name',
+          label: '鐢熶骇杞﹂棿',
+          id: 5,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'eqp_code',
+          label: '璁惧缂栫爜',
+          id: 6,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'eqp_name',
+          label: '璁惧鍚嶇О',
+          id: 7,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 130,
+          prop: 'stanedcode',
+          label: '鐐规鏍囧噯缂栫爜',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 130,
+          width: false,
+          prop: 'stanedname',
+          label: '鐐规鏍囧噯鍚嶇О',
+          id: 9,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'chk_user',
+          label: '鐐规浜哄憳',
+          id: 10,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 110,
+          prop: 'chk_result',
+          label: '鐐规缁撴灉',
+          id: 11,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 160,
+          prop: 'chk_date',
+          label: '鐐规鏃堕棿',
+          id: 12,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+      dialogVisible: false,
+      // dialogForm: {
+      //   OrgType: '',
+      //   OrgCode: '',
+      //   OrgName: '',
+      //   SupUnit: ''// 涓婄骇鍗曚綅
+      // },
+      operation: '',
+
+      tableDataDialog: [], // 鐐规鏄庣粏瀵硅瘽妗唗able
+
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '4',
+      shows: false
+
+    }
+  },
+
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+
+      this.$refs.tableDataRef.doLayout()
+    },
+    handleRequest() {
+      this.getDeviceCheckTakeSearch().then(res => {
+        if (res.code === '200') {
+          this.getShopSearch()
+        }
+      })
+    },
+    async getDeviceCheckTakeSearch() {
+      let tempDate = this.form.checkdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        eqpcode: this.form.eqpcode,
+        eqpname: this.form.eqpname,
+        stanedname: this.form.stanedname,
+        checkuser: this.form.checkuser,
+        checkdate: tempDate,
+        prop: this.form.prop, // 鎺掑簭瀛楁
+        order: this.form.order, // 鎺掑簭瀛楁
+        page: this.form.page, // 绗嚑椤�
+        rows: this.form.rows // 姣忛〉澶氬皯鏉�
+      }
+
+      const res = await DeviceCheckTakeSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+      return { code: res.code }
+    },
+    // 鑾峰彇鎵ц杞﹂棿涓嬫媺鏁扮粍
+    async getShopSearch() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopSelectArr = res
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getDeviceCheckTakeSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getDeviceCheckTakeSearch()
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.wkshopcode = ''
+      this.form.eqpcode = ''
+      this.form.eqpname = ''
+      this.form.stanedname = ''
+      this.form.checkuser = ''
+      this.form.checkdate = ''
+      this.getDeviceCheckTakeSearch()
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      const res = await DeviceCheckSubTakeSearch({ djwo: row.djwo })
+
+      this.tableDataDialog = res.data
+      // 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.getDeviceCheckTakeSearch()
+          }
+        })
+      }).catch(() => {
+        this.$message.info('宸插彇娑堝垹闄�')
+      })
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      // this.dialogForm.OrgType = ''
+      // this.dialogForm.OrgCode = ''
+      // this.dialogForm.OrgName = ''
+      // this.dialogForm.SupUnit = ''
+      // this.$refs.dialogForm.clearValidate()
+      this.tableDataDialog = []
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    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 => {
+            if (res.code === '200') {
+              this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.dialogVisible = false
+              this.getDeviceCheckTakeSearch()
+            } else {
+              this.$message.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    async download() {
+      let tempDate = this.form.checkdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        eqpcode: this.form.eqpcode,
+        eqpname: this.form.eqpname,
+        stanedname: this.form.stanedname,
+        checkuser: this.form.checkuser,
+        checkdate: tempDate
+      }
+      const { data: res } = await DeviceCheckTakeOutExcel(data)
+      window.location.href = res
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+
+  }
+}
+</script>
+
diff --git a/src/views/deviceManager/checkStandard.vue b/src/views/deviceManager/checkStandard.vue
index e69de29..c062430 100644
--- a/src/views/deviceManager/checkStandard.vue
+++ b/src/views/deviceManager/checkStandard.vue
@@ -0,0 +1,1349 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=10_1')">瀵煎叆</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="鏍囧噯缂栫爜" style=" display: flex;">
+              <el-input v-model="form.checkstandcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鏍囧噯鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.checkstandname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鐐规绠℃帶" style=" display: flex;">
+              <el-select v-model="form.checkcontr" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in checkcontrArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+
+        <div
+          class="bodyTopFormExpand"
+        />
+      </div>
+
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <el-table
+          ref="tableDataRef"
+          :key="tableTimeStampKey"
+          :data="tableData"
+          :height="tableHeight+'px'"
+          border
+          class="tableFixed"
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:tableHeight+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+
+          <el-table-column
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :key="item.id"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+              <div v-else-if="item.prop==='is_checkeqp'">
+                <i
+                  v-if="row[item.prop]==='Y'"
+                  :style="{color:$store.state.settings.theme}"
+                  class="el-icon-share"
+                  @click="checkeqpClick(row)"
+                />
+                <i
+                  v-if="row[item.prop]==='N'"
+                  class="el-icon-share"
+                  style="color: rgb(180 ,181, 185)"
+                  @click="checkeqpClick(row)"
+                />
+              </div>
+              <div v-else-if="item.prop==='iscontr'">
+                <div v-if="row[item.prop]==='Y'">
+                  <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                  鏄�
+                </div>
+                <div v-if="row[item.prop]==='N'">
+                  <i class="el-icon-info" style="margin-right: 2px" />
+                  鍚�
+                </div>
+              </div>
+              <div v-else>{{ row[item.prop] }}</div>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鎿嶄綔"
+            fixed="right"
+            width="120"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top">
+                  <i
+                    :style="{color:$store.state.settings.theme}"
+                    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 :style="{color:$store.state.settings.theme}" 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="getDeviceCheckStandArdSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'缂栬緫'"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="8vh"
+      @closed="handleClose"
+    >
+      <!--      @close="handleClose"-->
+      <div>
+        <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" style="margin: -20px 10px 20px 0" />璁惧鐐规鏍囧噯淇℃伅锛�
+      </div>
+      <div style="margin: 0 30px;">
+        <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="80px">
+          <el-form-item label="鏍囧噯缂栫爜" prop="code">
+            <el-input v-model="dialogForm.code" :disabled="operation!=='add'" style="width: 200px" />
+          </el-form-item>
+          <el-form-item label="鏍囧噯鍚嶇О" prop="name">
+            <el-input v-model="dialogForm.name" style="width: 200px" />
+          </el-form-item>
+          <el-form-item required label="鐐规绠℃帶">
+            <el-select
+              v-model="dialogForm.enable"
+              style="width: 200px"
+              placeholder="璇烽�夋嫨"
+              :popper-append-to-body="false"
+            >
+              <el-option
+                v-for="item in checkcontrArr"
+                :key="item.code"
+                :label="item.name"
+                :value="item.code"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="鏍囧噯鎻忚堪" prop="description">
+            <el-input v-model="dialogForm.description" type="textarea" style="width: 200px" />
+          </el-form-item>
+        </el-form>
+      </div>
+      <div>
+        <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" style="margin: -20px 10px 20px 0" />璁惧鍏宠仈鐐规椤逛俊鎭細
+      </div>
+      <div style="margin-bottom:10px">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="addRow">鏂板</el-button>
+      </div>
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataDialogRef"
+          :data="tableDataDialog"
+          :height="(tableHeight-300)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:(tableHeight-300)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+        >
+          <el-table-column
+            type="index"
+            width="50"
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="checkitem_code"
+            label="鐐规閮ㄤ綅缂栫爜"
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.isVisible===0">{{ row.checkitem_code }}</div>
+              <el-select
+                v-if="row.isVisible===1"
+                v-model="row.checkitem_code"
+                placeholder="璇烽�夋嫨"
+                @change="val=>selectChange(val,row)"
+              >
+                <el-option
+                  v-for="item in checkItemSelectArr"
+                  :key="item.name"
+                  :label="item.code"
+                  :value="item.name"
+                />
+              </el-select>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="checkitem_name"
+            label="鐐规閮ㄤ綅鍚嶇О"
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.isVisible===0">{{ row.checkitem_name }}</div>
+              <el-select
+                v-if="row.isVisible===1"
+                v-model="row.checkitem_code"
+                placeholder="璇烽�夋嫨"
+                @change="val=>selectChange(val,row)"
+              >
+                <el-option
+                  v-for="item in checkItemSelectArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="checkitem_descr"
+            label="鐐规瑕佹眰"
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.isVisible===0">{{ row.checkitem_descr }}</div>
+              <el-input v-else v-model="row.checkitem_descr" />
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="isscan"
+            label="閫夋嫨鎵爜"
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.isVisible===0">{{ row.isscan === 'Y' ? '鏄�' : '鍚�' }}</div>
+              <el-select
+                v-if="row.isVisible===1"
+                v-model="row.isscan"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in checkcontrArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="cycle"
+            label="鐐规鍛ㄦ湡"
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.isVisible===0">{{ row.cycle === 'D' ? '鏃�' : '' }}</div>
+              <el-select
+                v-if="row.isVisible===1"
+                v-model="row.cycle"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in cycleArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="鎿嶄綔"
+            width="120"
+            fixed="right"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-button v-if="row.isVisible===0" v-waves type="text" @click="editRow(row)">缂栬緫</el-button>
+                <el-button v-if="row.isVisible===0" v-waves type="text" @click="delRow(row)">鍒犻櫎</el-button>
+
+                <el-button v-if="row.isVisible===1" v-waves type="text" @click="saveRow(row)">纭</el-button>
+                <el-button v-if="row.isVisible===1" v-waves type="text" @click="cancelRow(row)">鍙栨秷</el-button>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--    鍏宠仈璁惧-->
+    <el-dialog
+      v-el-drag-dialog
+      title="鍏宠仈璁惧"
+      :visible.sync="dialogVisibleEqp"
+      width="800px"
+      top="10vh"
+      :close-on-click-modal="false"
+      class="dialogVisibleEqp"
+      @closed="handleCloseEqp"
+      @close="handleCloseEqp"
+    >
+      <!--      @opened="handleOpenedRoles"-->
+
+      <div>
+        <i class="el-icon-s-comment" :style="{color:$store.state.settings.theme}" /> 鏍囧噯鍚嶇О锛歿{ dialogFormEqp.name }}
+      </div>
+      <el-divider />
+      <div>
+        <div style="margin-bottom:20px">
+          <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 璁惧鎵�灞炶溅闂撮泦鍚堬細
+        </div>
+        <div class="myCheckboxGroup">
+
+          <div
+            v-for="item in dialogFormEqp.eqpArr"
+            :key="item.code"
+            :style="{border:item.isSelected1?'1px solid '+$store.state.settings.theme:'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"-->
+
+            <el-checkbox
+              :key="item.code"
+              v-model="item.isSelected2"
+              class="myCheckboxInput"
+              :value="item.code"
+              :name="item.name"
+              :checked="item.isSelected2"
+              :label="item.name"
+              @change="myCheckboxInputClick(item)"
+            />
+            <div class="myCheckboxInputLabel">{{ item.name }}</div>
+
+          </div>
+        </div>
+      </div>
+      <el-divider />
+      <div>
+        <div style="margin-bottom:20px">
+          <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 璁惧淇℃伅锛�
+        </div>
+        <el-tree
+          ref="epqTree"
+          :data="dialogFormEqp.eqpTree"
+          show-checkbox
+          node-key="code"
+          default-expand-all
+          style="height: 320px;overflow: auto"
+          :props="defaultPropsOfEqpTree"
+          @check="checkBoxClick"
+        />
+        <!--        @check-change="checkChange"-->
+
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="eqpDialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="eqpDialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import {
+  AddUpdateDeviceCheckStandArd, DeleteDeviceCheckStaned,
+  DeviceCheckItemSelect,
+  DeviceCheckStandArdSearch, DeviceCheckStanedAssociationEqp, SaveDeviceCheckStanedAssociationEqp,
+  ViewDeviceCheckStanedSearch
+} from '@/api/DeviceManager'
+import $ from 'jquery'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import TableColumnSettings from '@/components/TableColumnSettings'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, TableColumnSettings
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        checkstandcode: '', // 鏍囧噯缂栫爜
+        checkstandname: '', // 鏍囧噯鍚嶇О
+        checkcontr: '', // 鐐规绠℃帶
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      checkcontrArr: [
+        { code: 'Y', name: '鏄�' },
+        { code: 'N', name: '鍚�' }
+      ],
+      cycleArr: [
+        { code: 'D', name: '鏃�' }
+      ],
+      total: 10,
+      tableData: [],
+      tableColumnSettingsArray: [
+        { minWidth: false, width: 55, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: false, width: 55, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'code',
+          label: '鏍囧噯缂栫爜',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'name',
+          label: '鏍囧噯鍚嶇О',
+          id: 4,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 330,
+          width: false,
+          prop: 'description',
+          label: '鏍囧噯鎻忚堪',
+          id: 5,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'iscontr',
+          label: '鐐规绠℃帶',
+          id: 6,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'is_checkeqp',
+          label: '鍏宠仈璁惧',
+          id: 7,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'lm_user',
+          label: '鍒涘缓浜哄憳',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 160,
+          prop: 'lm_date',
+          label: '鍒涘缓鏃堕棿',
+          id: 9,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+
+      dialogVisible: false,
+      dialogForm: {
+        code: '',
+        name: '',
+        enable: 'Y',
+        description: ''
+      },
+      operation: '',
+      dialogFormRules: {
+
+        code: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        name: [
+          { required: true, message: '璇疯緭鍏ユ爣鍑嗗悕绉�', trigger: ['blur', 'change'] }
+        ],
+        enable: [
+          { required: true, message: '', trigger: ['blur', 'change'] }
+        ]
+      },
+      tableDataDialog: [], // 琛ㄦ牸鏁版嵁
+      // tableDataDialogSelected: [], // 宸查�塩ode
+      checkItemSelectArr: [],
+      checkItemIsCancel: true,
+      dialogVisibleEqp: false,
+
+      dialogFormEqp: {
+        name: '',
+        code: '',
+        eqpAll: [], // 杞﹂棿鍙婅澶囨墍鏈�
+        eqpArr: [], // 杞﹂棿闆嗗悎鎵�鏈�
+        eqpTree: [], // 璁惧鏍戝舰鎵�鏈�
+        eqpCodeSelectedArr: []// 璁惧鏍戝舰閫変腑
+      },
+      defaultPropsOfEqpTree: {
+        value: 'code',
+        label: 'name',
+        children: 'children'
+      },
+
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '22',
+      shows: false
+
+    }
+  },
+  watch: {
+    shows() {
+      if (!this.shows) {
+        this.getDeviceCheckStandArdSearch()
+      }
+    }
+  },
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+
+      this.$refs.tableDataRef.doLayout()
+    },
+    handleRequest() {
+      this.getDeviceCheckStandArdSearch().then(res => {
+        if (res.code === '200') {
+          this.getDeviceCheckItemSelect()
+        }
+      })
+    },
+    async getDeviceCheckStandArdSearch() {
+      const res = await DeviceCheckStandArdSearch(this.form)
+      this.tableData = res.data
+      this.total = res.count
+      return { code: res.code }
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getDeviceCheckStandArdSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getDeviceCheckStandArdSearch()
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.checkstandcode = ''
+      this.form.checkstandname = ''
+      this.form.checkcontr = ''
+      this.getDeviceCheckStandArdSearch()
+    },
+
+    async getDeviceCheckItemSelect() {
+      const { data: res } = await DeviceCheckItemSelect()
+      this.checkItemSelectArr = res
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+      // this.getDeviceCheckItemSelect()
+      this.$nextTick(() => {
+        this.$refs.tableDataDialogRef.doLayout()
+      })
+    },
+    // 淇敼鎸夐挳
+    edit(operation, row) {
+      // this.getDeviceCheckItemSelect()
+      this.operation = operation
+      this.getViewDeviceCheckStanedSearch(row.code)
+      this.dialogVisible = true
+
+      this.$nextTick(() => {
+        this.$refs.tableDataDialogRef.doLayout()
+      })
+      // this.$nextTick(() => {
+      //   this.dialogForm.code = row.code
+      //   this.dialogForm.name = row.name
+      //   this.dialogForm.enable = row.enable
+      //   this.dialogForm.description = row.description
+      // })
+    },
+    // 淇敼鍓嶈姹傛帴鍙�
+    async getViewDeviceCheckStanedSearch(checkstand_code) {
+      const { data: res } = await ViewDeviceCheckStanedSearch({ checkstand_code })
+      this.tableDataDialog = res.Data
+
+      this.dialogForm.code = res.code
+      this.dialogForm.name = res.name
+      this.dialogForm.enable = res.enable
+      this.dialogForm.description = res.description
+
+      this.tableDataDialog.forEach(item => {
+        item.isVisible = 0
+        item.checkitem_code = item.code
+        item.checkitem_name = item.name
+        item.checkitem_descr = item.chkdesc
+      })
+
+      this.checkItemSelectArr = [...this.checkItemSelectArr].filter(x => [...this.tableDataDialog].every(y => y.checkitem_code !== x.code))
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        DeleteDeviceCheckStaned({ checkstand_code: row.code }).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getDeviceCheckStandArdSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.code = ''
+      this.dialogForm.name = ''
+      this.dialogForm.enable = 'Y'
+      this.dialogForm.description = ''
+      this.tableDataDialog = []
+      this.getDeviceCheckItemSelect()
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      if (this.tableDataDialog.length === 0) {
+        return this.$message.info('璁惧鍏宠仈鐐规椤逛俊鎭笉鑳戒负绌猴紒')
+      }
+
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          this.$store.state.app.buttonIsDisabled = true
+          // this.tableDataDialog.forEach((item, index) => { // 鍘绘帀姝e湪缂栬緫涓旀槸绌篶heckitem_code
+          //   if (item.isVisible === 1 && item.checkitem_code === '') {
+          //     this.tableDataDialog.splice(index, 1)
+          //   }
+          // })
+
+          this.tableDataDialog.filter(item => item.checkitem_code !== '')
+
+          let Data = []
+          // 鏁扮粍涓璞$浉鍚岀殑鍘婚噸
+          Data = this.tableDataDialog.filter((currentValue, currentIndex, selfArr) => {
+            return selfArr.findIndex(item => item.checkitem_code === currentValue.checkitem_code) === currentIndex
+          })
+          Data.forEach((item, index) => {
+            item.checkitem_seq = index + 1
+          })
+
+          const data = {
+            'code': this.dialogForm.code,
+            'name': this.dialogForm.name,
+            'enable': this.dialogForm.enable,
+            'description': this.dialogForm.description,
+            'Data': Data
+          }
+
+          AddUpdateDeviceCheckStandArd(data, this.operation === 'add' ? 'Add' : 'Update').then(res => {
+            if (res.code === '200') {
+              this.dialogVisible = false
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.getDeviceCheckStandArdSearch()
+              this.$store.state.app.buttonIsDisabled = false
+            } else {
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+
+    selectChange(val, row) {
+      const res = this.checkItemSelectArr.find(item => {
+        return item.code === val || item.name === val
+      })
+      row.checkitem_descr = res.description
+      row.checkitem_code = res.code
+      row.checkitem_name = res.name
+    },
+    // 鏂板琛�
+    addRow() {
+      let flag = false
+      this.tableDataDialog.forEach(item => {
+        if (item.isVisible === 1) {
+          // return this.$message.info('璇峰厛纭鎴栧彇娑堜笂鏉¤褰曪紒')
+          flag = true
+        }
+      })
+      if (flag) {
+        return this.$message.info('璇峰厛纭鎴栧彇娑堜笂鏉¤褰曪紒')
+      }
+      this.tableDataDialog.push({
+        checkitem_code: '',
+        checkitem_name: '',
+        checkitem_descr: '',
+        isscan: 'Y',
+        cycle: 'D',
+        isVisible: 1
+      })
+
+      this.checkItemIsCancel = false
+    },
+    editRow(row) {
+      let flag = false
+      this.tableDataDialog.forEach((item, index) => {
+        if (item.isVisible === 1) {
+          flag = true
+        }
+      })
+      if (flag) {
+        return this.$message.info('璇峰厛纭鎴栧彇娑堝叾瀹冭锛�')
+      }
+
+      this.checkItemIsCancel = false
+      this.checkItemSelectArr.splice(0, 0, {
+        code: row.checkitem_code,
+        name: row.checkitem_name,
+        description: row.checkitem_descr
+      })
+
+      this.tableDataDialog.forEach((item, index) => {
+        if (item.checkitem_code === row.checkitem_code) {
+          this.tableDataDialog.splice(index, 1, {
+            checkitem_code: row.checkitem_code,
+            checkitem_name: row.checkitem_name,
+            checkitem_descr: row.checkitem_descr,
+            isscan: row.isscan,
+            cycle: row.cycle,
+            isVisible: 1
+          })
+        }
+      })
+    },
+    delRow(row) {
+      this.checkItemSelectArr.splice(0, 0, {
+        code: row.checkitem_code,
+        name: row.checkitem_name,
+        description: row.checkitem_descr
+      })
+      this.tableDataDialog.forEach((item, index) => {
+        if (item.checkitem_code === row.checkitem_code) {
+          this.tableDataDialog.splice(index, 1)
+        }
+      })
+    },
+    saveRow(row) {
+      if (row.checkitem_code === '' && row.checkitem_name === '') {
+        return this.$message.info('鐐规閮ㄤ綅涓嶈兘涓虹┖锛�')
+      }
+      row.isVisible = 0
+      this.checkItemSelectArr.forEach((item, index) => {
+        if (item.code === row.checkitem_code) {
+          this.checkItemSelectArr.splice(index, 1)
+        }
+      })
+    },
+    cancelRow(row) {
+      // this.checkItemSelectArr.forEach((item, index) => {
+      //   if (item.code === row.checkitem_code) {
+      if (this.checkItemIsCancel) {
+        this.checkItemSelectArr.splice(0, 0, {
+          code: row.checkitem_code,
+          name: row.checkitem_name,
+          description: row.checkitem_descr
+        })
+      }
+      this.JYIsCancel = true
+      // }
+      // })
+
+      this.tableDataDialog.forEach((item, index) => {
+        if (item.checkitem_code === row.checkitem_code && item.isVisible === 1) {
+          row.isVisible = 0
+          this.tableDataDialog.splice(index, 1)
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 195
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    },
+    // 鍏宠仈璁惧
+    checkeqpClick(row) {
+      const loading = this.$loading({
+        lock: true,
+        text: '姝e湪鍔犺浇鏁版嵁锛岃绋嶇瓑...',
+        spinner: 'el-icon-loading',
+        customClass: 'osloading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+      this.dialogFormEqp.name = row.name
+      this.dialogFormEqp.code = row.code
+
+      DeviceCheckStanedAssociationEqp({ checkstand_code: row.code }).then(res => {
+        if (res.code === '200') {
+          setTimeout(() => {
+            loading.close()
+            this.dialogFormEqp.eqpAll = res.data.filter(item => item.children.length > 0)
+
+            if (this.dialogFormEqp.eqpAll.length > 0) {
+              this.dialogFormEqp.eqpAll.forEach((item, index) => {
+                this.dialogFormEqp.eqpArr.push({
+                  code: item.code,
+                  name: item.name,
+                  type: item.type,
+                  isSelected1: index === 0,
+                  isSelected2: item.flag === 'Y'
+                })
+                if (item.flag === 'Y') {
+                  this.$nextTick(() => {
+                    $('input:checkbox').eq(index).prop('checked', true)// 鑷畾涔夊崟閫夋鍥炴樉
+                  })
+                }
+                if (item.children && item.children.length > 0) {
+                  item.children.forEach(it => {
+                    if (it.flag === 'Y') {
+                      this.dialogFormEqp.eqpCodeSelectedArr.push(it.code)
+                    }
+                  })
+                }
+              })
+              this.dialogFormEqp.eqpAll[0].name = '鍏ㄩ儴'
+              this.dialogFormEqp.eqpTree = [this.dialogFormEqp.eqpAll[0]]
+            }
+
+            this.dialogVisibleEqp = true
+
+            this.$nextTick(() => { // 鏍戝舰鍥炴樉
+              this.$refs.epqTree.setCheckedKeys(this.dialogFormEqp.eqpCodeSelectedArr)
+            })
+          }, 1000)
+        } else {
+          loading.close()
+        }
+      })
+    },
+    // 鍏宠仈璁惧瀵硅瘽妗嗗叧闂�
+    handleCloseEqp() {
+      this.$refs.epqTree.setCheckedKeys([])
+      this.dialogFormEqp.code = ''
+      this.dialogFormEqp.name = ''
+      this.dialogFormEqp.eqpAll = []
+      this.dialogFormEqp.eqpArr = []
+      this.dialogFormEqp.eqpTree = []
+      this.dialogFormEqp.eqpCodeSelectedArr = []
+    },
+    // 澶х洅瀛愮偣鍑�
+    myCheckboxClick(val) {
+      this.dialogFormEqp.eqpArr.forEach((item, index) => {
+        item.isSelected1 = item.code === val.code
+        if (item.code === val.code) {
+          this.dialogFormEqp.eqpAll[index].name = '鍏ㄩ儴'
+          this.dialogFormEqp.eqpTree = [this.dialogFormEqp.eqpAll[index]]
+        }
+      })
+      this.$nextTick(() => { // 鏍戝舰鍥炴樉
+        this.$refs.epqTree.setCheckedKeys(this.dialogFormEqp.eqpCodeSelectedArr)
+      })
+    },
+    // 灏忕洅瀛愮偣鍑�
+    myCheckboxInputClick(val) {
+      console.log(val)
+      val.isSelected2 = !!val.isSelected2
+      if (val.isSelected2) { // 浠庢病閫変腑鍒伴�変腑
+        console.log('浠庢病閫変腑鍒伴�変腑')
+        this.dialogFormEqp.eqpAll.forEach((item, index) => {
+          if (item.code === val.code) {
+            if (item.children && item.children.length > 0) {
+              item.children.forEach(it => {
+                this.dialogFormEqp.eqpCodeSelectedArr.push(it.code)
+              })
+            }
+          }
+        })
+        console.log(this.dialogFormEqp.eqpCodeSelectedArr, 1)
+        this.$nextTick(() => { // 鏍戝舰鍥炴樉
+          this.$refs.epqTree.setCheckedKeys(this.dialogFormEqp.eqpCodeSelectedArr)
+        })
+      } else { // 浠庨�変腑鍒版病閫変腑
+        console.log('浠庨�変腑鍒版病閫変腑')
+        const temp = []
+        this.dialogFormEqp.eqpAll.forEach((item, index) => {
+          if (item.code === val.code) {
+            if (item.children && item.children.length > 0) {
+              item.children.forEach(it => {
+                temp.push(it.code)
+              })
+            }
+          }
+        })
+        this.dialogFormEqp.eqpCodeSelectedArr = [...this.dialogFormEqp.eqpCodeSelectedArr].filter(x => [...temp].every(y => y !== x))
+        this.$nextTick(() => { // 鏍戝舰鍥炴樉
+          this.$refs.epqTree.setCheckedKeys(this.dialogFormEqp.eqpCodeSelectedArr)
+        })
+      }
+      console.log(this.dialogFormEqp.eqpCodeSelectedArr, 999)
+    },
+    // 鏍戝舰澶嶉�夋鐐瑰嚮浜嬩欢
+    checkBoxClick(obj, { checkedNodes, checkedKeys, halfCheckedNodes, halfCheckedKeys }) {
+      let checkedFatherCode = '' // 鎵惧埌 checkedFatherCode  鐖禼ode鍊�
+      console.log(obj, { checkedNodes, checkedKeys, halfCheckedNodes, halfCheckedKeys })
+      this.dialogFormEqp.eqpAll.forEach((item, index) => {
+        if (item.code === obj.code) {
+          checkedFatherCode = item.code
+        }
+        if (item.children && item.children.length > 0) {
+          item.children.forEach((it, ind) => {
+            if (it.code === obj.code) {
+              checkedFatherCode = item.code
+            }
+          })
+        }
+      })
+      console.log(checkedFatherCode, 1)
+
+      // 1.绗竴绉嶆儏鍐靛綋鏍戝舰   鍗婂彾 涓嶄负闆�   鍏ㄥ彾 涓嶄负闆�
+      if (halfCheckedKeys.length !== 0 && checkedKeys.length !== 0) {
+        console.log('// 1.绗竴绉嶆儏鍐靛綋鏍戝舰   鍗婂彾 涓嶄负闆�   鍏ㄥ彾 涓嶄负闆�')
+        this.dialogFormEqp.eqpArr.forEach((item, index) => {
+          if (item.code === checkedFatherCode) {
+            console.log(item.code, 777)
+            this.dialogFormEqp.eqpArr[index].isSelected2 = true
+            this.$nextTick(() => {
+              $('input:checkbox').eq(index).prop('checked', true)// 鑷畾涔夊崟閫夋鍥炴樉
+            })
+          }
+        })
+        this.dialogFormEqp.eqpCodeSelectedArr.forEach((item, index) => {
+          if (item === obj.code) {
+            this.dialogFormEqp.eqpCodeSelectedArr.splice(index, 1)
+          }
+        })
+        checkedKeys.forEach(item => {
+          this.dialogFormEqp.eqpCodeSelectedArr.push(item)
+        })
+        this.dialogFormEqp.eqpCodeSelectedArr = [...new Set(this.dialogFormEqp.eqpCodeSelectedArr)]
+      }
+      console.log(this.dialogFormEqp.eqpCodeSelectedArr, 666)
+      // 2.绗簩绉嶆儏鍐靛綋鏍戝舰   鍗婂彾 涓洪浂   鍏ㄥ彾 涓洪浂
+      if (halfCheckedKeys.length === 0 && checkedKeys.length === 0) {
+        console.log('// 2.绗簩绉嶆儏鍐靛綋鏍戝舰   鍗婂彾 涓洪浂   鍏ㄥ彾 涓洪浂')
+        const temp = []
+        this.dialogFormEqp.eqpArr.forEach((item, index) => {
+          if (item.code === checkedFatherCode) {
+            this.dialogFormEqp.eqpArr[index].isSelected2 = false
+            this.$nextTick(() => {
+              $('input:checkbox').eq(index).prop('checked', false)// 鑷畾涔夊崟閫夋鍥炴樉
+            })
+          }
+        })
+        this.dialogFormEqp.eqpAll.forEach((item, index) => {
+          if (item.code === checkedFatherCode) {
+            if (item.children && item.children.length > 0) {
+              item.children.forEach(it => {
+                temp.push(it.code)
+              })
+            }
+          }
+        })
+        this.dialogFormEqp.eqpCodeSelectedArr = [...this.dialogFormEqp.eqpCodeSelectedArr].filter(x => [...temp].every(y => y !== x))
+      }
+
+      // 3.绗笁绉嶇鎯呭喌褰撴爲褰�   鍗婂彾 涓洪浂   鍏ㄥ彾 涓嶄负闆�
+      if (halfCheckedKeys.length === 0 && checkedKeys.length !== 0) {
+        console.log('// 3.绗笁绉嶇鎯呭喌褰撴爲褰�   鍗婂彾 涓洪浂   鍏ㄥ彾 涓嶄负闆�')
+        this.dialogFormEqp.eqpArr.forEach((item, index) => {
+          if (item.code === checkedFatherCode) {
+            this.dialogFormEqp.eqpArr[index].isSelected2 = true
+            this.$nextTick(() => {
+              $('input:checkbox').eq(index).prop('checked', true)// 鑷畾涔夊崟閫夋鍥炴樉
+            })
+          }
+        })
+
+        this.dialogFormEqp.eqpAll.forEach((item, index) => {
+          if (item.code === checkedFatherCode) {
+            if (item.children && item.children.length > 0) {
+              item.children.forEach(it => {
+                this.dialogFormEqp.eqpCodeSelectedArr.push(it.code)
+              })
+            }
+          }
+        })
+      }
+    },
+    // 鍙栨秷浜嬩欢
+    eqpDialogVisibleCancel() {
+      this.dialogVisibleEqp = false
+    },
+    // 纭浜嬩欢
+    eqpDialogVisibleConfirm() {
+      // console.log(this.dialogFormEqp.eqpCodeSelectedArr, 888)
+      // this.dialogVisibleEqp = false
+      this.$store.state.app.buttonIsDisabled = true
+      const data = []
+      this.dialogFormEqp.eqpAll.forEach((item, index) => {
+        if (item.children && item.children.length > 0) {
+          item.children.forEach(it => {
+            if (this.dialogFormEqp.eqpCodeSelectedArr.includes(it.code)) {
+              data.push({
+                name: it.name,
+                code: it.code
+              })
+            }
+          })
+        }
+      })
+
+      SaveDeviceCheckStanedAssociationEqp(data, this.dialogFormEqp.code).then(res => {
+        if (res.code === '200') {
+          this.dialogVisibleEqp = false
+          this.$notify.success('鍏宠仈鎴愬姛锛�')
+          this.getDeviceCheckStandArdSearch()
+          this.$store.state.app.buttonIsDisabled = false
+        }
+      })
+    }
+  }
+}
+</script>
+<!--鍏叡椤甸潰鏍峰紡-->
+<style lang="scss" scoped>
+$main_color: #42b983;
+
+.dialogVisibleEqp {
+  .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;
+      position: relative;
+
+      .myCheckboxInput {
+        margin: 1px 5px 0 0;
+        cursor: pointer;
+      }
+
+      .myCheckboxInputLabel {
+        position: absolute;
+        left: 29px;
+        padding: 5px;
+        top: 6px;
+        color: transparent;
+
+      }
+
+    }
+
+    //.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;
+    }
+  }
+}
+
+::v-deep .el-button--text {
+  font-size: 14px;
+  cursor: pointer;
+}
+
+.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 .el-dialog__body {
+  padding: 20px 20px !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;
+}
+
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.tableFixed {
+  ::v-deep .el-table__fixed-right {
+    height: 100% !important;
+  }
+
+  ::v-deep .el-table__fixed {
+    height: 100% !important;
+  }
+}
+</style>
+<style>
+.osloading {
+  font-size: 26px !important;
+}
+
+.el-loading-text {
+  font-size: 26px !important;
+}
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/deviceManager/deviceList.vue b/src/views/deviceManager/deviceList.vue
index e69de29..050451f 100644
--- a/src/views/deviceManager/deviceList.vue
+++ b/src/views/deviceManager/deviceList.vue
@@ -0,0 +1,773 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+
+      <div style="display: flex">
+        <div style="width: 300px;margin: 10px 10px 0  0;background:#fff">
+
+          <div style="margin: 20px 10px 0 10px;display: flex;justify-content: space-between;">
+            <div style="display: flex;">
+              <div
+                style="width: 5px;height: 100%;border-radius: 5px;"
+                :style="{background:$store.state.settings.theme}"
+              />
+              <div style="margin-left: 8px;">璁惧娓呭崟</div>
+            </div>
+
+            <div style="margin-right:10px">
+              <el-tooltip v-del-tab-index class="item" effect="dark" content="鏂板" placement="top">
+                <i class="el-icon-plus" style="cursor: pointer;color: #999" @click="treeAddClick('add')" />
+              </el-tooltip>
+            </div>
+
+          </div>
+
+          <el-tree
+            ref="treeLeftRef"
+            style="padding: 10px;overflow: auto"
+            :style="{height:(tableHeight+222)+'px'}"
+            :data="treeLeft"
+            node-key="code"
+            highlight-current
+            :props="defaultPropsLeft"
+            :default-expand-all="true"
+            :expand-on-click-node="false"
+            @node-click="getDeviceMangerSearch"
+          >
+            <span slot-scope="{ node, data }" class="custom-tree-node">
+              <span v-if="!data.isEdit">{{ data.name }}</span>
+              <span v-if="!data.isEdit">
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="缂栬緫" placement="top">
+                  <i
+                    v-if="data.code!=='-1'"
+                    class="el-icon-edit"
+                    style="margin-right:10px;color: #999"
+                    @click.stop="treeEditClick(node,data,'edit')"
+                  />
+                </el-tooltip>
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                  <i
+                    v-if="data.code!=='-1'"
+                    class="el-icon-delete"
+                    style="margin-right: 4px;color: #999"
+                    @click.stop="treeDeleteClick(node,data)"
+                  />
+                </el-tooltip>
+              </span>
+            </span>
+          </el-tree>
+        </div>
+
+        <div
+          style=" width:calc(100% - 300px);"
+        >
+          <div class="bodyTopButtonGroup" style="justify-content: space-between">
+            <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+            <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=9')">瀵煎叆</el-button>
+          </div>
+
+          <div class="bodyTopFormGroup">
+            <el-form
+              ref="form"
+              :model="form"
+              label-width="100px"
+              inline
+              style="display: flex;"
+            >
+              <div class="elForm">
+                <el-form-item label="璁惧缂栫爜" style=" display: flex;">
+                  <el-input v-model="form.devicecode" placeholder="璇疯緭鍏�" style="width: 200px" />
+                </el-form-item>
+                <el-form-item label="璁惧鍚嶇О" style=" display: flex;">
+                  <el-input v-model="form.devicename" placeholder="璇疯緭鍏�" style="width: 200px" />
+                </el-form-item>
+                <!--                <el-form-item label="浣跨敤鐘舵��" style=" display: flex;">-->
+                <!--                  <el-select-->
+                <!--                    v-model="form.status"-->
+                <!--                    style="width: 100%;"-->
+                <!--                    placeholder="璇烽�夋嫨"-->
+                <!--                  >-->
+                <!--                    <el-option-->
+                <!--                      v-for="item in statusArr"-->
+                <!--                      :key="item.code"-->
+                <!--                      :label="item.name"-->
+                <!--                      :value="item.code"-->
+                <!--                    />-->
+                <!--                  </el-select>-->
+                <!--                </el-form-item>-->
+                <el-form-item label="鎵�灞炵粍缁�" style=" display: flex;">
+                  <el-cascader
+                    ref="cascader"
+                    v-model="form.storgcode"
+                    :options="cascaderOptions"
+                    filterable
+                    :props="defaultProps"
+                    :show-all-levels="false"
+                  />
+                </el-form-item>
+                <!--                <el-form-item label="鐢ㄦ埛缂栫爜" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
+                <!--                <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
+                <!--                <el-form-item v-show="isExpandForm" label="鐢ㄦ埛缂栫爜" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
+                <!--                <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
+                <!--                <el-form-item v-show="isExpandForm" label="鐢ㄦ埛缂栫爜" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.usercode" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
+                <!--                <el-form-item v-show="isExpandForm" label="鐢ㄦ埛鍚嶇О" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.username" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
+              </div>
+              <div
+                class="bodySearchReset"
+                :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+              >
+                <el-button v-waves type="primary" icon="el-icon-search" @click="getDeviceMangerSearch($refs.treeLeftRef.getCurrentNode())">鏌ヨ</el-button>
+                <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+              </div>
+            </el-form>
+            <div
+              class="bodyTopFormExpand"
+              style="height: 5px;"
+            >
+              <!--              <svg-icon-->
+              <!--                v-show="mouseHoverType==='mouseout'"-->
+              <!--                style="cursor: pointer"-->
+              <!--                :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"-->
+              <!--                @mouseenter="mouseHoverType=$event.type"-->
+              <!--              />-->
+              <!--              <svg-icon-->
+              <!--                v-show="mouseHoverType==='mouseenter'"-->
+              <!--                style="cursor: pointer"-->
+              <!--                :icon-class="!isExpandForm?'doubleDown':'doubleUp'"-->
+              <!--                @click="isExpandForm=!isExpandForm"-->
+              <!--                @mouseout="mouseHoverType=$event.type"-->
+              <!--              />-->
+            </div>
+          </div>
+
+          <div class="elTableDiv">
+            <el-table
+              ref="tableDataRef"
+              class="tableFixed"
+              :data="tableData"
+              :height="isExpandForm?tableHeight:(tableHeight+80)+'px'"
+              border
+              row-class-name="custom-row"
+              :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px',}"
+              highlight-current-row
+              :header-cell-style="this.$headerCellStyle"
+              :cell-style="this.$cellStyle"
+              @sort-change="sortChange"
+            >
+              <!--            prop="RowNum"-->
+              <el-table-column
+                prop="rowNum"
+                width="50"
+                fixed
+                label="搴忓彿"
+              />
+              <el-table-column
+                prop="code"
+                label="璁惧缂栫爜"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="name"
+                label="璁惧鍚嶇О"
+
+                sortable="custom"
+              />
+              <el-table-column
+                prop="eqptype_name"
+                label="璁惧绫诲瀷"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="torg_name"
+                label="鎵�灞炵粍缁�"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="enable"
+                label="浣跨敤鐘舵��"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <el-tag v-if="row.enable==='Y'" size="small" type="success">姝e父</el-tag>
+                  <el-tag v-if="row.enable==='N'" size="small" type="danger">鍋滅敤</el-tag>
+                </template>
+              </el-table-column>
+              <el-table-column
+                label="鍒涘缓浜哄憳"
+                prop="lm_user"
+                sortable="custom"
+                width="110"
+              />
+              <el-table-column
+                label="鍒涘缓鏃堕棿"
+                prop="lm_date"
+                sortable="custom"
+                width="160"
+              />
+
+              <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"
+                        :style="{color:$store.state.settings.theme}"
+                        @click="edit('edit',row)"
+                      />
+                    </el-tooltip>
+                    <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                      <i
+                        class="el-icon-delete"
+                        :style="{color:$store.state.settings.theme}"
+                        @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,jumper"
+            popper-class="select_bottom"
+            @pagination="getDeviceMangerSearch($refs.treeLeftRef.getCurrentNode())"
+          />
+
+        </div>
+      </div>
+    </div>
+
+    <!--    璁惧绫诲埆鏂板淇敼-->
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'缂栬緫'"
+      :visible.sync="dialogClassVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClassClose"
+      @close="handleClassClose"
+    >
+      <el-form ref="dialogClassForm" inline :rules="dialogClassFormRules" :model="dialogClassForm" label-width="110px">
+        <el-form-item label="璁惧绫诲瀷缂栫爜" prop="code">
+          <el-input v-model="dialogClassForm.code" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="璁惧绫诲瀷鍚嶇О" prop="name">
+          <el-input v-model="dialogClassForm.name" style="width: 200px" />
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleClassCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleClassConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--   璁惧娓呭崟鏂板淇敼-->
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'缂栬緫'"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <el-form ref="dialogForm" class="" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px">
+        <el-form-item label="璁惧缂栫爜" prop="devicecode">
+          <el-input v-model="dialogForm.devicecode" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="璁惧鍚嶇О" prop="devicename">
+          <el-input v-model="dialogForm.devicename" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="璁惧绫诲瀷" prop="devicetypecode">
+          <el-select
+            v-model="dialogForm.devicetypecode"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            filterable
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in treeLeftArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="鎵�灞炵粍缁�" prop="storgcode">
+          <el-cascader
+            ref="dialogCascader"
+            v-model="dialogForm.storgcode"
+            :options="cascaderOptions"
+            filterable
+            style="width: 200px;"
+            :props="defaultProps"
+            :show-all-levels="false"
+          />
+        </el-form-item>
+        <el-form-item required label="鐘舵��">
+          <el-radio-group v-model="dialogForm.status">
+            <el-radio label="Y">姝e父</el-radio>
+            <el-radio label="N">鍋滅敤</el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+      </el-form>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import waves from '@/directive/waves'
+import Pagination from '@/components/Pagination'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import arrayToTree from 'array-to-tree'
+import { PrentOrganization } from '@/api/GeneralBasicData'
+import {
+  AddUpdateDeviceManger,
+  AddUpdateDeviceType, DeleteDeviceManger,
+  DeleteDeviceType,
+  DeviceMangerSearch,
+  DeviceTypeSearch
+} from '@/api/DeviceManager'
+
+export default {
+  name: 'RoleList',
+  directives: { waves, elDragDialog },
+  components: {
+    Pagination
+  },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      operation: '',
+
+      treeLeft: [
+        {
+          code: '-1',
+          name: '鍏ㄩ儴'
+        }
+      ], // 宸︿晶鏍�
+      treeLeftArr: [],
+      defaultPropsLeft: {
+        children: 'children',
+        label: 'name'
+      },
+
+      tableData: [],
+      form: {
+        devicetype: '',
+        devicecode: '',
+        devicename: '',
+        status: '',
+        storgcode: '',
+        page: 1,
+        rows: 20,
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc' // 鎺掑簭瀛楁
+      },
+      total: 0,
+
+      statusArr: [
+        { code: '0', name: '姝e父' },
+        { code: '1', name: '鍋滅敤' }
+      ],
+      defaultProps: {
+        checkStrictly: true,
+        expandTrigger: 'hover',
+        value: 'torg_code',
+        label: 'torg_name'
+      },
+      Options: [],
+      cascaderOptions: [],
+
+      dialogClassVisible: false,
+      dialogClassForm: {
+        code: '', // 璁惧绫诲瀷缂栫爜
+        name: '', // 璁惧鍚嶇О鍚嶇О
+        OperType: ''// OperType
+      },
+      dialogClassFormRules: {
+        code: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        name: [
+          { required: true, message: '璇疯緭璁惧绫诲瀷鍚嶇О', trigger: ['blur', 'change'] }
+        ]
+      },
+
+      dialogVisible: false,
+      dialogForm: {
+        devicecode: '', //  璁惧缂栫爜
+        devicename: '', //  璁惧鍚嶇О
+        devicetypecode: '', // 璁惧绫诲瀷缂栫爜
+        storgcode: [], // 缁勭粐缂栫爜
+        status: 'Y', // 浣跨敤鐘舵��: 姝e父(Y)鍋滅敤(N)
+        OperType: '' // 鎿嶄綔绫诲瀷
+      },
+      dialogFormRules: {
+        devicecode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        devicename: [
+          { required: true, message: '璇疯緭鍏ヨ澶囧悕绉�', trigger: ['blur', 'change'] }
+        ],
+        devicetypecode: [
+          { required: true, message: '璇烽�夋嫨璁惧绫诲瀷', trigger: ['blur', 'change'] }
+        ],
+        storgcode: [
+          { required: true, message: '璇烽�夋嫨鎵�灞炵粍缁�', trigger: ['blur', 'change'] }
+        ]
+
+      }
+
+    }
+  },
+
+  created() {
+
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+
+    this.getDeviceTypeSearch()
+    this.getPrentOrganization()
+  },
+  methods: {
+    async getDeviceTypeSearch() {
+      const res = await DeviceTypeSearch()
+      res.data.forEach(i => {
+        i.idparent = i.idparent ? i.idparent : '-1'
+      })
+      this.treeLeftArr = res.data
+      this.treeLeftArr.forEach(e => {
+        e.name = e.code + ' ' + e.name
+      })
+      this.treeLeft = arrayToTree(this.treeLeft.concat(res.data), {
+        parentProperty: 'idparent',
+        customID: 'code',
+        childrenProperty: 'children'
+      })
+
+      this.$nextTick(() => {
+        this.$refs.treeLeftRef.setCurrentKey('-1')
+        this.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode())
+      })
+    },
+    async getDeviceMangerSearch(node) {
+      this.form.storgcode = this.form.storgcode ? this.$refs.cascader.checkedValue[this.$refs.cascader.checkedValue.length - 1] : ''
+      this.form.devicetype = node.code !== '-1' ? node.code : ''
+      const res = await DeviceMangerSearch(this.form)
+
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 缁勭粐鏋舵瀯绾ц仈閫夋嫨鍣�
+    async getPrentOrganization() {
+      const { data: res } = await PrentOrganization()
+      this.Options = res
+      this.cascaderOptions = arrayToTree(res, {
+        parentProperty: 'parent_id',
+        customID: 'torg_code',
+        childrenProperty: 'children'
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 280
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    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.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode())
+    },
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+      this.dialogForm.OperType = 'Add'
+    },
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+      this.dialogForm.OperType = 'Update'
+
+      this.$nextTick(() => {
+        this.dialogForm.devicecode = row.code
+        this.dialogForm.devicename = row.name
+        this.dialogForm.status = row.enable
+        this.dialogForm.devicetypecode = row.eqptype_code
+        this.dialogForm.storgcode = this.findParent([], row.torg_code, this.cascaderOptions).reverse()
+      })
+    },
+    // parents:鐢ㄤ簬杩斿洖鐨勬暟缁勶紝childNode:瑕佹煡璇㈢殑鑺傜偣锛宼reeData锛歫son鏍戝舰鏁版嵁
+    findParent(parents, childNode, treeData) {
+      // console.log(parents, childNode, treeData, 2)
+      for (let i = 0; i < treeData.length; i++) {
+        // 鐖惰妭鐐规煡璇㈡潯浠�
+        if (treeData[i].torg_code === childNode) {
+          // 濡傛灉鎵惧埌缁撴灉,淇濆瓨褰撳墠鑺傜偣
+          parents.push(treeData[i].torg_code)
+          // 鐢ㄥ綋鍓嶈妭鐐瑰啀鍘诲師鏁版嵁鏌ユ壘褰撳墠鑺傜偣鐨勭埗鑺傜偣
+          this.findParent(parents, treeData[i].parent_id, this.cascaderOptions)
+          break
+        } else {
+          if (treeData[i].children instanceof Array) {
+            //	娌℃壘鍒帮紝閬嶅巻璇ヨ妭鐐圭殑瀛愯妭鐐�
+            this.findParent(parents, childNode, treeData[i].children)
+          }
+        }
+      }
+      return parents
+    },
+    del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        DeleteDeviceManger({ devicecode: row.code }).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            this.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode())
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+    reset() {
+      // this.form.storgcode = ''
+      this.form.devicecode = ''
+      this.form.devicename = ''
+      this.form.status = ''
+      this.form.devicetype = ''
+      this.$refs.cascader.checkedValue = []
+      this.$refs.treeLeftRef.setCurrentKey('-1')
+      this.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode())
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.devicecode = ''
+      this.dialogForm.devicename = ''
+      // this.dialogForm.storgcode =  []
+      this.dialogForm.devicetypecode = ''
+      this.dialogForm.status = 'Y'
+      this.$refs.dialogCascader.checkedValue = ''
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          this.dialogForm.storgcode = this.$refs.dialogCascader.checkedValue[this.$refs.dialogCascader.checkedValue.length - 1]
+          this.$store.state.app.buttonIsDisabled = true
+          AddUpdateDeviceManger(this.dialogForm).then(res => {
+            if (res.code === '200') {
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.dialogVisible = false
+              this.$store.state.app.buttonIsDisabled = false
+              this.getDeviceMangerSearch(this.$refs.treeLeftRef.getCurrentNode())
+            } else {
+              this.$store.state.app.buttonIsDisabled = false
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    treeEditClick(node, data, operation) {
+      this.dialogClassForm.code = data.code
+      this.dialogClassForm.name = data.name.split(' ')[1]
+      this.dialogClassForm.OperType = 'Update'
+      this.operation = operation
+      this.dialogClassVisible = true
+    },
+    treeDeleteClick(node, data) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        DeleteDeviceType({ devicetypecode: data.code }).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            this.getDeviceTypeSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+    treeAddClick(operation) {
+      this.operation = operation
+      this.dialogClassVisible = true
+      this.dialogClassForm.OperType = 'Add'
+    },
+
+    handleClassClose() {
+      this.dialogClassForm.code = ''
+      this.dialogClassForm.name = ''
+      this.$refs.dialogClassForm.clearValidate()
+    },
+    dialogVisibleClassCancel() {
+      this.dialogClassVisible = false
+    },
+    dialogVisibleClassConfirm() {
+      this.$refs.dialogClassForm.validate(valid => {
+        if (valid) {
+          const data = [{
+            code: this.dialogClassForm.code,
+            name: this.dialogClassForm.name,
+            group: '',
+            description: ''
+          }]
+          AddUpdateDeviceType(data, this.dialogClassForm.OperType).then(res => {
+            if (res.code === '200') {
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.dialogClassVisible = false
+              this.$store.state.app.buttonIsDisabled = false
+              this.getDeviceTypeSearch()
+            } else {
+              this.$store.state.app.buttonIsDisabled = false
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    unittypcodeChange(val) {
+      console.log(val)
+
+      this.dialogForm.unitcode = ''
+      this.dialogForm.unitsubcode = ''
+      this.dialogForm.idSubUnitByReport = ''
+      this.dialogForm.idUnitByStock = ''
+      this.dialogForm.idUnitByPurchase = ''
+      this.dialogForm.idUnitBySale = ''
+      this.dialogForm.idunitbymanufacture = ''
+      // this.$refs.dialogForm.clearValidate()
+      // this.$forceUpdate()
+    },
+    unitcodeChange(val, type) {
+      console.log(val)
+
+      if (type === '1') {
+        // this.dialogForm.unitcode = val
+        this.dialogForm.unitsubcode = ''
+        this.dialogForm.idSubUnitByReport = ''
+
+        const unitname = this.unitcodeSingleArr.find(i => i.unitcode === val).unitname
+
+        this.dialogForm.idUnitByStock = unitname
+        this.dialogForm.idUnitByPurchase = unitname
+        this.dialogForm.idUnitBySale = unitname
+        this.dialogForm.idunitbymanufacture = unitname
+      }
+
+      if (type === '0') {
+        const t = this.unitcodeGroupArr.find(i => i.unitcode === val).children
+
+        this.idSubUnitByReportArr = t.filter(i => i.isMainUnit !== '1')
+        this.idUnitBvStockArr = t
+
+        const mainUnitCode = t.find(i => i.isMainUnit === '1').unitcode
+        this.dialogForm.unitsubcode = mainUnitCode
+        this.dialogForm.idSubUnitByReport = this.idSubUnitByReportArr[0].unitcode
+
+        this.dialogForm.idUnitByStock = mainUnitCode
+        this.dialogForm.idUnitByPurchase = mainUnitCode
+        this.dialogForm.idUnitBySale = mainUnitCode
+        this.dialogForm.idunitbymanufacture = mainUnitCode
+      }
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+.custom-tree-node {
+  flex: 1;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  font-size: 14px;
+  padding-right: 8px;
+}
+
+//::v-deep .el-checkbox__label {
+//  width: 55px;
+//}
+//
+.el-icon-plus:hover, .el-icon-edit:hover, .el-icon-delete:hover {
+  color: #000 !important;
+}
+</style>
diff --git a/src/views/deviceManager/maintainPosition.vue b/src/views/deviceManager/maintainPosition.vue
index e69de29..47c7028 100644
--- a/src/views/deviceManager/maintainPosition.vue
+++ b/src/views/deviceManager/maintainPosition.vue
@@ -0,0 +1,526 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=11')">瀵煎叆</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="閮ㄤ綅缂栫爜" style=" display: flex;">
+              <el-input v-model="form.maiitemcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="閮ㄤ綅鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.maiitemname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="淇濆吇瑕佹眰" style=" display: flex;">
+              <el-input v-model="form.maidescr" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="閫変腑鎵爜" style=" display: flex;">
+              <el-select v-model="form.isqrcode" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in isqrcodeArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+
+          </div>
+          <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}">
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        />
+      </div>
+
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <el-table
+          ref="tableDataRef"
+          :key="tableTimeStampKey"
+          :data="tableData"
+          :height="tableHeight+'px'"
+          border
+          class="tableFixed"
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:tableHeight+'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
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :key="item.id"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+              <div v-else-if="item.prop==='cycle'">{{ cycleArr.find(i=>i.code===row[item.prop]).name }}</div>
+              <div v-else-if="item.prop==='isscan'">
+                <div v-if="row[item.prop]==='Y'">
+                  <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                  鏄�
+                </div>
+                <div v-if="row[item.prop]==='N'">
+                  <i class="el-icon-info" style="margin-right: 2px" />
+                  鍚�
+                </div>
+              </div>
+              <div v-else>{{ row[item.prop] }}</div>
+            </template>
+          </el-table-column>
+
+          <!--          <el-table-column-->
+          <!--            prop="RowNum"-->
+          <!--            width="50"-->
+          <!--            fixed-->
+          <!--            label="搴忓彿"-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="code"-->
+          <!--            label="閮ㄤ綅缂栫爜"-->
+          <!--            sortable="custom"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="name"-->
+          <!--            label="閮ㄤ綅鍚嶇О"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            sortable="custom"-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="description"-->
+          <!--            label="淇濆吇瑕佹眰"-->
+          <!--            sortable="custom"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div v-if="row.description">{{ row.description }}</div>-->
+          <!--              <div v-else>/</div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <!--          <el-table-column-->
+          <!--            prop="isscan"-->
+          <!--            label="閫夋嫨鎵爜"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            sortable="custom"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div v-if="row.isscan==='Y'">-->
+          <!--                &lt;!&ndash;                <svg-icon icon-class="circleYes" style="margin-right: 2px" />&ndash;&gt;-->
+          <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
+          <!--                鏄�-->
+          <!--              </div>-->
+          <!--              <div v-if="row.isscan==='N'">-->
+          <!--                &lt;!&ndash;                <svg-icon icon-class="circleNo" style="margin-right: 2px" />&ndash;&gt;-->
+          <!--                <i class="el-icon-info" style="margin-right: 2px" />-->
+          <!--                鍚�-->
+          <!--              </div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <!--          <el-table-column-->
+          <!--            prop="lm_user"-->
+          <!--            label="鍒涘缓浜哄憳"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            sortable="custom"-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="lm_date"-->
+          <!--            label="鍒涘缓鏃堕棿"-->
+          <!--            width="160"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            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 :style="{color:$store.state.settings.theme}" 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 :style="{color:$store.state.settings.theme}" 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="getDeviceMaiItemSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-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="maiitemcode">
+          <el-input v-model="dialogForm.maiitemcode" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="閮ㄤ綅鍚嶇О" prop="maiitemname">
+          <el-input v-model="dialogForm.maiitemname" style="width: 200px" />
+        </el-form-item>
+
+        <el-form-item required label="閫夋嫨鎵爜">
+          <el-select
+            v-model="dialogForm.isqrcode"
+            style="width: 200px"
+            placeholder="璇烽�夋嫨"
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in isqrcodeArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="淇濆吇瑕佹眰" prop="maiitemdescr">
+          <el-input v-model="dialogForm.maiitemdescr" type="textarea" style="width: 200px" />
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+
+import { AddUpdateDeviceMaiItem, DeleteDeviceMaiItem, DeviceMaiItemSearch } from '@/api/DeviceManager'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import TableColumnSettings from '@/components/TableColumnSettings'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, TableColumnSettings
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        maiitemcode: '', // 閮ㄤ綅缂栫爜
+        maiitemname: '', // 閮ㄤ綅鍚嶇О
+        maidescr: '', // 淇濆吇瑕佹眰
+        isqrcode: '', // 閫変腑鎵爜
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      isqrcodeArr: [
+        { code: 'Y', name: '鏄�' },
+        { code: 'N', name: '鍚�' }
+      ],
+
+      total: 10,
+      tableData: [],
+      tableColumnSettingsArray: [
+        { minWidth: false, width: 55, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: false, width: 55, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'code',
+          label: '閮ㄤ綅缂栫爜',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'name',
+          label: '閮ㄤ綅鍚嶇О',
+          id: 4,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 330,
+          width: false,
+          prop: 'description',
+          label: '淇濆吇瑕佹眰',
+          id: 5,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'isscan',
+          label: '閫夋嫨鎵爜',
+          id: 6,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'lm_user',
+          label: '鍒涘缓浜哄憳',
+          id: 7,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 160,
+          prop: 'lm_date',
+          label: '鍒涘缓鏃堕棿',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+      dialogVisible: false,
+      dialogForm: {
+        id: '',
+        maiitemcode: '',
+        maiitemname: '',
+        maiitemdescr: '',
+        isqrcode: 'N',
+        OperType: ''
+      },
+      operation: '',
+      dialogFormRules: {
+        maiitemcode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        maiitemname: [
+          { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
+        ]
+      },
+
+      title_value: '鏁版嵁瀵煎叆 / 淇濆吇閮ㄤ綅',
+      code: '11',
+      shows: false
+    }
+  },
+  watch: {
+    shows() {
+      if (!this.shows) {
+        this.getDeviceMaiItemSearch()
+      }
+    }
+  },
+  created() {
+    this.getDeviceMaiItemSearch()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+      this.$refs.tableDataRef.doLayout()
+    },
+    async getDeviceMaiItemSearch() {
+      const res = await DeviceMaiItemSearch(this.form)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getDeviceMaiItemSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getDeviceMaiItemSearch()
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.maiitemcode = ''
+      this.form.maiitemname = ''
+      this.form.maidescr = ''
+      this.form.isqrcode = ''
+      this.getDeviceMaiItemSearch()
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 淇敼鎸夐挳
+    edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      this.$nextTick(() => {
+        this.dialogForm.id = row.id
+        this.dialogForm.maiitemcode = row.code
+        this.dialogForm.maiitemname = row.name
+        this.dialogForm.maiitemdescr = row.description
+        this.dialogForm.isqrcode = row.isscan
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        DeleteDeviceMaiItem({ maiitemcode: row.code }).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getDeviceMaiItemSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.id = ''
+      this.dialogForm.maiitemcode = ''
+      this.dialogForm.maiitemname = ''
+      this.dialogForm.maiitemdescr = ''
+      this.dialogForm.isqrcode = 'N'
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          this.$store.state.app.buttonIsDisabled = true
+          const data = {
+            id: this.dialogForm.id,
+            maiitemcode: this.dialogForm.maiitemcode,
+            maiitemname: this.dialogForm.maiitemname,
+            maiitemdescr: this.dialogForm.maiitemdescr,
+            isqrcode: this.dialogForm.isqrcode,
+            OperType: this.operation === 'add' ? 'Add' : 'Update'
+          }
+          AddUpdateDeviceMaiItem(data).then(res => {
+            if (res.code === '200') {
+              this.dialogVisible = false
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.getDeviceMaiItemSearch()
+              this.$store.state.app.buttonIsDisabled = false
+            } else {
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 195
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
+
diff --git a/src/views/deviceManager/maintainRecord.vue b/src/views/deviceManager/maintainRecord.vue
index e69de29..0d971ce 100644
--- a/src/views/deviceManager/maintainRecord.vue
+++ b/src/views/deviceManager/maintainRecord.vue
@@ -0,0 +1,616 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup">
+        <!--        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>-->
+        <!--        <el-button v-waves icon="el-icon-download" @click="upload">瀵煎叆</el-button>-->
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm" style="justify-content: flex-start">
+            <el-form-item label="鐢熶骇杞﹂棿" style=" display: flex;">
+              <el-select v-model="form.wkshopcode" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in wkshopSelectArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="璁惧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.eqpcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="璁惧鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.eqpname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鏍囧噯鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.stanedname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="淇濆吇浜哄憳" style=" display: flex;">
+              <el-input v-model="form.repairuser" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="淇濆吇鏃堕棿" style=" display: flex;font-size:14px;align-items: center">
+              <el-date-picker
+                v-model="form.repairdate"
+                type="daterange"
+                :clearable="false"
+                class="timeMini"
+                range-separator="~"
+                start-placeholder="寮�濮嬫棩鏈�"
+                style="width: 200px;display: flex;line-height: 34px ;height: 34px;"
+                end-placeholder="缁撴潫鏃ユ湡"
+                size="mini"
+              />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="淇濆吇缁撴灉" style=" display: flex;">
+              <el-select v-model="form.repairresult" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in repairresultArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}">
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <el-table
+          ref="tableDataRef"
+          :key="tableTimeStampKey"
+          class="tableFixed"
+          :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
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :key="item.id"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+
+              <div v-else-if="item.prop==='maint_cyc'">{{ cycleArr.find(i=>i.code===row[item.prop]).name }}</div>
+              <div v-else-if="item.prop==='maint_result'">
+                <div v-if="row[item.prop]==='OK'" style="display: flex;align-items: center">
+                  <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                  姝e父
+                </div>
+                <div v-if="row[item.prop]==='NG'" style="display: flex;align-items: center">
+                  <i class="el-icon-info" style="margin-right: 2px" />
+                  寮傚父
+                </div>
+              </div>
+              <div v-else>{{ row[item.prop] }}</div>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鏄庣粏"
+            width="120"
+            fixed="right"
+          >
+            <template slot-scope="{row}">
+              <i
+                class="el-icon-tickets"
+                :style="{color:$store.state.settings.theme}"
+                style="cursor: pointer;margin-right: 15px"
+                @click="edit('edit',row)"
+              />
+            </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="getDeviceRepairTakeSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'淇濆吇鏄庣粏'"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+
+      <div class="elTableDiv" style="margin-top: 0">
+        <el-table
+          :data="tableDataDialog"
+          :height="500+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:500+'px'}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <el-table-column
+            prop="seq"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="itemcode"
+            label="閮ㄤ綅缂栫爜"
+          />
+          <el-table-column
+            prop="itemname"
+            label="閮ㄤ綅鍚嶇О"
+          />
+          <el-table-column
+            prop="result"
+            label="鐐规缁撴灉"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.result==='OK'" style="display: flex;align-items: center">
+                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                姝e父</div>
+              <div v-if="row.result==='NG'" style="display: flex;align-items: center">
+                <i class="el-icon-info" style="margin-right: 2px" />
+                寮傚父</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="maint_value"
+            label="鏁板��"
+          />
+          <el-table-column
+            prop="remark"
+            label="澶囨敞"
+            show-tooltip-when-overflow
+          />
+        </el-table>
+      </div>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisible = false">杩� 鍥�</el-button>
+          <!--          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>-->
+          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { AddUpdateOrganization, DeleteOrganization } from '@/api/basicSettings'
+import { getCookie } from '@/utils/auth'
+import { handleDatetime } from '@/utils/global'
+import { DeviceRepairSubTakeSearch, DeviceRepairTakeOutExcel, DeviceRepairTakeSearch
+} from '@/api/DeviceManager'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import TableColumnSettings from '@/components/TableColumnSettings'
+import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, TableColumnSettings
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        wkshopcode: '', // 杞﹂棿缂栫爜
+        eqpcode: '', // 璁惧缂栫爜
+        eqpname: '', // 璁惧鍚嶇О
+        stanedname: '', // 鏍囧噯鍚嶇О
+        repairuser: '', // 鐐规浜哄憳
+        repairdate: '', // 鐐规鏃堕棿
+        repairresult: '', // 淇濆吇缁撴灉
+        prop: 'maint_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      wkshopSelectArr: [],
+      cycleArr: [
+        { code: 'Y', name: '骞�' },
+        { code: 'S', name: '瀛�' },
+        { code: 'M', name: '鏈�' },
+        { code: 'W', name: '鍛�' }
+      ],
+      repairresultArr: [
+        { code: 'OK', name: '鍚堟牸' },
+        { code: 'NG', name: '涓嶈壇' }
+      ],
+      total: 10,
+      tableData: [],
+      tableColumnSettingsArray: [
+        // { minWidth: false, width: 55, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: false, width: 55, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'bywo',
+          label: '淇濆吇鍗曞彿',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 130,
+          prop: 'org_code',
+          label: '鐢熶骇杞﹂棿缂栫爜',
+          id: 4,
+          show: false,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'org_name',
+          label: '鐢熶骇杞﹂棿',
+          id: 5,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'eqp_code',
+          label: '璁惧缂栫爜',
+          id: 6,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'eqp_name',
+          label: '璁惧鍚嶇О',
+          id: 7,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 130,
+          prop: 'stanedcode',
+          label: '淇濆吇鏍囧噯缂栫爜',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 130,
+          width: false,
+          prop: 'stanedname',
+          label: '淇濆吇鏍囧噯鍚嶇О',
+          id: 9,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'maint_cyc',
+          label: '淇濆吇鍛ㄦ湡',
+          id: 10,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 110,
+          prop: 'maint_user',
+          label: '淇濆吇浜哄憳',
+          id: 10,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 110,
+          prop: 'maint_result',
+          label: '淇濆吇缁撴灉',
+          id: 11,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 160,
+          prop: 'maint_date',
+          label: '淇濆吇鏃堕棿',
+          id: 12,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+      dialogVisible: false,
+      // dialogForm: {
+      //   OrgType: '',
+      //   OrgCode: '',
+      //   OrgName: '',
+      //   SupUnit: ''// 涓婄骇鍗曚綅
+      // },
+      operation: '',
+
+      tableDataDialog: [], // 鐐规鏄庣粏瀵硅瘽妗唗able
+
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '4',
+      shows: false
+
+    }
+  },
+
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+
+      this.$refs.tableDataRef.doLayout()
+    },
+    handleRequest() {
+      this.getDeviceRepairTakeSearch().then(res => {
+        if (res.code === '200') {
+          this.getShopSearch()
+        }
+      })
+    },
+    async getDeviceRepairTakeSearch() {
+      let tempDate = this.form.repairdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        eqpcode: this.form.eqpcode,
+        eqpname: this.form.eqpname,
+        stanedname: this.form.stanedname,
+        repairuser: this.form.repairuser,
+        repairdate: tempDate,
+        repairresult: this.form.repairresult,
+        prop: this.form.prop, // 鎺掑簭瀛楁
+        order: this.form.order, // 鎺掑簭瀛楁
+        page: this.form.page, // 绗嚑椤�
+        rows: this.form.rows // 姣忛〉澶氬皯鏉�
+      }
+
+      const res = await DeviceRepairTakeSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+      return { code: res.code }
+    },
+    // 鑾峰彇鎵ц杞﹂棿涓嬫媺鏁扮粍
+    async getShopSearch() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopSelectArr = res
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getDeviceRepairTakeSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getDeviceRepairTakeSearch()
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.wkshopcode = ''
+      this.form.eqpcode = ''
+      this.form.eqpname = ''
+      this.form.stanedname = ''
+      this.form.repairuser = ''
+      this.form.repairdate = ''
+      this.form.repairresult = ''
+      this.getDeviceRepairTakeSearch()
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 淇敼鎸夐挳
+    async  edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      const res = await DeviceRepairSubTakeSearch({ bywo: row.bywo })
+
+      this.tableDataDialog = res.data
+      // 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.getDeviceRepairTakeSearch()
+          }
+        })
+      }).catch(() => {
+        this.$message.info('宸插彇娑堝垹闄�')
+      })
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      // this.dialogForm.OrgType = ''
+      // this.dialogForm.OrgCode = ''
+      // this.dialogForm.OrgName = ''
+      // this.dialogForm.SupUnit = ''
+      // this.$refs.dialogForm.clearValidate()
+      this.tableDataDialog = []
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    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 => {
+            if (res.code === '200') {
+              this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.dialogVisible = false
+              this.getDeviceRepairTakeSearch()
+            } else {
+              this.$message.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    async download() {
+      let tempDate = this.form.repairdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        eqpcode: this.form.eqpcode,
+        eqpname: this.form.eqpname,
+        stanedname: this.form.stanedname,
+        repairuser: this.form.repairuser,
+        repairdate: tempDate,
+        repairresult: this.form.repairresult
+      }
+      const { data: res } = await DeviceRepairTakeOutExcel(data)
+      window.location.href = res
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+
+  }
+}
+</script>
+
diff --git a/src/views/deviceManager/maintainStandard.vue b/src/views/deviceManager/maintainStandard.vue
index e69de29..0ed75f6 100644
--- a/src/views/deviceManager/maintainStandard.vue
+++ b/src/views/deviceManager/maintainStandard.vue
@@ -0,0 +1,1298 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=11_1')">瀵煎叆</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="鏍囧噯缂栫爜" style=" display: flex;">
+              <el-input v-model="form.repairstandcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鏍囧噯鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.repairstandname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鏍囧噯鎻忚堪" style=" display: flex;">
+              <el-input v-model="form.repairstanddescr" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        />
+      </div>
+
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <el-table
+          ref="tableDataRef"
+          :key="tableTimeStampKey"
+          :data="tableData"
+          :height="tableHeight+'px'"
+          border
+          class="tableFixed"
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:tableHeight+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+
+          <el-table-column
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :key="item.id"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+              <div v-else-if="item.prop==='main_cycle'">{{ cycleArr.find(i=>i.code===row[item.prop]).name }}</div>
+              <div v-else-if="item.prop==='is_repaireqp'">
+                <i
+                  v-if="row[item.prop]==='Y'"
+                  :style="{color:$store.state.settings.theme}"
+                  class="el-icon-share"
+                  @click="checkeqpClick(row)"
+                />
+                <i
+                  v-if="row[item.prop]==='N'"
+                  class="el-icon-share"
+                  style="color: rgb(180 ,181, 185)"
+                  @click="checkeqpClick(row)"
+                />
+              </div>
+              <div v-else>{{ row[item.prop] }}</div>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鎿嶄綔"
+            fixed="right"
+            width="120"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top">
+                  <i :style="{color:$store.state.settings.theme}" 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 :style="{color:$store.state.settings.theme}" 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="getDeviceRepairStandArdSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'缂栬緫'"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="8vh"
+      @closed="handleClose"
+    >
+      <!--      @close="handleClose"-->
+      <div>
+        <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" style="margin: -20px 10px 20px 0" />璁惧淇濆吇鏍囧噯淇℃伅锛�
+      </div>
+      <div style="margin: 0 30px;">
+        <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="80px">
+          <el-form-item label="鏍囧噯缂栫爜" prop="code">
+            <el-input v-model="dialogForm.code" :disabled="operation!=='add'" style="width: 200px" />
+          </el-form-item>
+          <el-form-item label="鏍囧噯鍚嶇О" prop="name">
+            <el-input v-model="dialogForm.name" style="width: 200px" />
+          </el-form-item>
+          <el-form-item required label="淇濆吇鍛ㄦ湡">
+            <el-select
+              v-model="dialogForm.repaircycle"
+              style="width: 200px"
+              placeholder="璇烽�夋嫨"
+            >
+              <el-option
+                v-for="item in cycleArr"
+                :key="item.code"
+                :label="item.name"
+                :value="item.code"
+              />
+            </el-select>
+          </el-form-item>
+          <el-form-item label="鏍囧噯鎻忚堪" prop="description">
+            <el-input v-model="dialogForm.description" type="textarea" style="width: 200px" />
+          </el-form-item>
+        </el-form>
+      </div>
+      <div>
+        <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" style="margin: -20px 10px 20px 0" />璁惧鍏宠仈淇濆吇椤逛俊鎭細
+      </div>
+      <div style="margin-bottom:10px">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="addRow">鏂板</el-button>
+      </div>
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataDialogRef"
+          :data="tableDataDialog"
+          :height="(tableHeight-300)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:(tableHeight-300)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+        >
+          <el-table-column
+            type="index"
+            width="50"
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="repairitem_code"
+            show-tooltip-when-overflow
+            label="淇濆吇閮ㄤ綅缂栫爜"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.isVisible===0">{{ row.repairitem_code }}</div>
+              <el-select
+                v-if="row.isVisible===1"
+                v-model="row.repairitem_code"
+                placeholder="璇烽�夋嫨"
+                @change="val=>selectChange(val,row)"
+              >
+                <el-option
+                  v-for="item in repairItemSelectArr"
+                  :key="item.name"
+                  :label="item.code"
+                  :value="item.name"
+                />
+              </el-select>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="repairitem_name"
+            label="淇濆吇閮ㄤ綅鍚嶇О"
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.isVisible===0">{{ row.repairitem_name }}</div>
+              <el-select
+                v-if="row.isVisible===1"
+                v-model="row.repairitem_code"
+                placeholder="璇烽�夋嫨"
+                @change="val=>selectChange(val,row)"
+              >
+                <el-option
+                  v-for="item in repairItemSelectArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="repairitem_descr"
+            label="淇濆吇瑕佹眰"
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.isVisible===0">{{ row.repairitem_descr }}</div>
+              <el-input v-else v-model="row.repairitem_descr" />
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="isscan"
+            label="閫夋嫨鎵爜"
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.isVisible===0">{{ row.isscan === 'Y' ? '鏄�' : '鍚�' }}</div>
+              <el-select
+                v-if="row.isVisible===1"
+                v-model="row.isscan"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in checkcontrArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="鎿嶄綔"
+            width="120"
+            fixed="right"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-button v-if="row.isVisible===0" v-waves type="text" @click="editRow(row)">缂栬緫</el-button>
+                <el-button v-if="row.isVisible===0" v-waves type="text" @click="delRow(row)">鍒犻櫎</el-button>
+
+                <el-button v-if="row.isVisible===1" v-waves type="text" @click="saveRow(row)">纭</el-button>
+                <el-button v-if="row.isVisible===1" v-waves type="text" @click="cancelRow(row)">鍙栨秷</el-button>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--    鍏宠仈璁惧-->
+    <el-dialog
+      v-el-drag-dialog
+      title="鍏宠仈璁惧"
+      :visible.sync="dialogVisibleEqp"
+      width="800px"
+      top="10vh"
+      :close-on-click-modal="false"
+      class="dialogVisibleEqp"
+      @closed="handleCloseEqp"
+      @close="handleCloseEqp"
+    >
+      <!--      @opened="handleOpenedRoles"-->
+
+      <div>
+        <i class="el-icon-s-comment" :style="{color:$store.state.settings.theme}" /> 鏍囧噯鍚嶇О锛歿{ dialogFormEqp.name }}
+      </div>
+      <el-divider />
+      <div>
+        <div style="margin-bottom:20px">
+          <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 璁惧鎵�灞炶溅闂撮泦鍚堬細
+        </div>
+        <div class="myCheckboxGroup">
+
+          <div
+            v-for="item in dialogFormEqp.eqpArr"
+            :key="item.code"
+            :style="{border:item.isSelected1?'1px solid '+$store.state.settings.theme:'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"-->
+            <el-checkbox
+              :key="item.code"
+              v-model="item.isSelected2"
+              class="myCheckboxInput"
+              :value="item.code"
+              :name="item.name"
+              :label="item.name"
+              :checked="item.isSelected2"
+              @change="myCheckboxInputClick(item)"
+            />
+            <div class="myCheckboxInputLabel">{{ item.name }}</div>
+
+          </div>
+        </div>
+      </div>
+      <el-divider />
+      <div>
+        <div style="margin-bottom:20px">
+          <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 璁惧淇℃伅锛�
+        </div>
+        <el-tree
+          ref="epqTree"
+          :data="dialogFormEqp.eqpTree"
+          show-checkbox
+          node-key="code"
+          default-expand-all
+          style="height: 320px;overflow: auto"
+          :props="defaultPropsOfEqpTree"
+          @check="checkBoxClick"
+        />
+        <!--        @check-change="checkChange"-->
+
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="eqpDialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="eqpDialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import {
+  AddUpdateDeviceRepairStandArd,
+  DeleteDeviceRepairStaned,
+  DeviceRepairItemSelect,
+  DeviceRepairStandArdSearch,
+  DeviceRepairStanedAssociationEqp,
+  SaveDeviceRepairStanedAssociationEqp,
+  ViewDeviceRepairStanedSearch
+} from '@/api/DeviceManager'
+import $ from 'jquery'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import TableColumnSettings from '@/components/TableColumnSettings'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, TableColumnSettings
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        repairstandcode: '', // 鏍囧噯缂栫爜
+        repairstandname: '', // 鏍囧噯鍚嶇О
+        repairstanddescr: '', // 鐐规绠℃帶
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      checkcontrArr: [
+        { code: 'Y', name: '鏄�' },
+        { code: 'N', name: '鍚�' }
+      ],
+      cycleArr: [
+        { code: 'Y', name: '骞�' },
+        { code: 'S', name: '瀛�' },
+        { code: 'M', name: '鏈�' },
+        { code: 'W', name: '鍛�' }
+      ],
+      total: 10,
+      tableData: [],
+      tableColumnSettingsArray: [
+        { minWidth: false, width: 55, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: false, width: 55, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'code',
+          label: '鏍囧噯缂栫爜',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'name',
+          label: '鏍囧噯鍚嶇О',
+          id: 4,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 330,
+          width: false,
+          prop: 'description',
+          label: '鏍囧噯鎻忚堪',
+          id: 5,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'main_cycle',
+          label: '淇濆吇鍛ㄦ湡',
+          id: 6,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'is_repaireqp',
+          label: '鍏宠仈璁惧',
+          id: 7,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'lm_user',
+          label: '鍒涘缓浜哄憳',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 160,
+          prop: 'lm_date',
+          label: '鍒涘缓鏃堕棿',
+          id: 9,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+
+      dialogVisible: false,
+      dialogForm: {
+        code: '',
+        name: '',
+        repaircycle: 'M',
+        description: ''
+      },
+      operation: '',
+      dialogFormRules: {
+
+        code: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        name: [
+          { required: true, message: '璇疯緭鍏ユ爣鍑嗗悕绉�', trigger: ['blur', 'change'] }
+        ],
+        enable: [
+          { required: true, message: '', trigger: ['blur', 'change'] }
+        ]
+      },
+      tableDataDialog: [], // 琛ㄦ牸鏁版嵁
+
+      repairItemSelectArr: [],
+      repairItemIsCancel: true,
+      dialogVisibleEqp: false,
+
+      dialogFormEqp: {
+        name: '',
+        code: '',
+        eqpAll: [], // 杞﹂棿鍙婅澶囨墍鏈�
+        eqpArr: [], // 杞﹂棿闆嗗悎鎵�鏈�
+        eqpTree: [], // 璁惧鏍戝舰鎵�鏈�
+        eqpCodeSelectedArr: []// 璁惧鏍戝舰閫変腑
+      },
+      defaultPropsOfEqpTree: {
+        value: 'code',
+        label: 'name',
+        children: 'children'
+      },
+
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '23',
+      shows: false
+
+    }
+  },
+  watch: {
+    shows() {
+      if (!this.shows) {
+        this.getDeviceRepairStandArdSearch()
+      }
+    }
+  },
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+
+      this.$refs.tableDataRef.doLayout()
+    },
+    handleRequest() {
+      this.getDeviceRepairStandArdSearch().then(res => {
+        if (res.code === '200') {
+          this.getDeviceRepairItemSelect()
+        }
+      })
+    },
+    async getDeviceRepairStandArdSearch() {
+      const res = await DeviceRepairStandArdSearch(this.form)
+      this.tableData = res.data
+      this.total = res.count
+      return { code: res.code }
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getDeviceRepairStandArdSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getDeviceRepairStandArdSearch()
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.repairstandcode = ''
+      this.form.repairstandname = ''
+      this.form.repairstanddescr = ''
+      this.getDeviceRepairStandArdSearch()
+    },
+
+    async getDeviceRepairItemSelect() {
+      const { data: res } = await DeviceRepairItemSelect()
+      this.repairItemSelectArr = res
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+      this.$nextTick(() => {
+        this.$refs.tableDataDialogRef.doLayout()
+      })
+    },
+    // 淇敼鎸夐挳
+    edit(operation, row) {
+      this.operation = operation
+      this.getViewDeviceRepairStanedSearch(row.code)
+      this.dialogVisible = true
+
+      this.$nextTick(() => {
+        this.$refs.tableDataDialogRef.doLayout()
+      })
+      // this.$nextTick(() => {
+      //   this.dialogForm.code = row.code
+      //   this.dialogForm.name = row.name
+      //   this.dialogForm.enable = row.enable
+      //   this.dialogForm.description = row.description
+      // })
+    },
+    // 淇敼鍓嶈姹傛帴鍙�
+    async getViewDeviceRepairStanedSearch(repairstand_code) {
+      const { data: res } = await ViewDeviceRepairStanedSearch({ repairstand_code })
+      this.tableDataDialog = res.Data
+
+      this.dialogForm.code = res.code
+      this.dialogForm.name = res.name
+      this.dialogForm.enable = res.enable
+      this.dialogForm.description = res.description
+
+      this.tableDataDialog.forEach(item => {
+        item.isVisible = 0
+        item.repairitem_code = item.code
+        item.repairitem_name = item.name
+        item.repairitem_descr = item.chk_desc
+      })
+
+      this.repairItemSelectArr = [...this.repairItemSelectArr].filter(x => [...this.tableDataDialog].every(y => y.repairitem_code !== x.code))
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        DeleteDeviceRepairStaned({ repairstand_code: row.code }).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getDeviceRepairStandArdSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.code = ''
+      this.dialogForm.name = ''
+      this.dialogForm.enable = 'Y'
+      this.dialogForm.description = ''
+      this.tableDataDialog = []
+      this.getDeviceRepairItemSelect()
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      if (this.tableDataDialog.length === 0) {
+        return this.$message.info('璁惧鍏宠仈淇濆吇椤逛俊鎭笉鑳戒负绌猴紒')
+      }
+
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          this.$store.state.app.buttonIsDisabled = true
+          this.tableDataDialog.filter(item => item.repairitem_code !== '')
+
+          let Data = []
+          // 鏁扮粍涓璞$浉鍚岀殑鍘婚噸
+          Data = this.tableDataDialog.filter((currentValue, currentIndex, selfArr) => {
+            return selfArr.findIndex(item => item.repairitem_code === currentValue.repairitem_code) === currentIndex
+          })
+          Data.forEach((item, index) => {
+            item.repairitem_seq = index + 1
+          })
+
+          const data = {
+            'code': this.dialogForm.code,
+            'name': this.dialogForm.name,
+            'repaircycle': this.dialogForm.repaircycle,
+            'description': this.dialogForm.description,
+            'Data': Data
+          }
+
+          AddUpdateDeviceRepairStandArd(data, this.operation === 'add' ? 'Add' : 'Update').then(res => {
+            if (res.code === '200') {
+              this.dialogVisible = false
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.getDeviceRepairStandArdSearch()
+              this.$store.state.app.buttonIsDisabled = false
+            } else {
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+
+    selectChange(val, row) {
+      const res = this.repairItemSelectArr.find(item => {
+        return item.code === val || item.name === val
+      })
+      row.repairitem_descr = res.description
+      row.repairitem_code = res.code
+      row.repairitem_name = res.name
+    },
+    // 鏂板琛�
+    addRow() {
+      let flag = false
+      this.tableDataDialog.forEach(item => {
+        if (item.isVisible === 1) {
+          // return this.$message.info('璇峰厛纭鎴栧彇娑堜笂鏉¤褰曪紒')
+          flag = true
+        }
+      })
+      if (flag) {
+        return this.$message.info('璇峰厛纭鎴栧彇娑堜笂鏉¤褰曪紒')
+      }
+      this.tableDataDialog.push({
+        repairitem_code: '',
+        repairitem_name: '',
+        repairitem_descr: '',
+        isscan: 'Y',
+        isVisible: 1
+      })
+
+      this.repairItemIsCancel = false
+    },
+    editRow(row) {
+      let flag = false
+      this.tableDataDialog.forEach((item, index) => {
+        if (item.isVisible === 1) {
+          flag = true
+        }
+      })
+      if (flag) {
+        return this.$message.info('璇峰厛纭鎴栧彇娑堝叾瀹冭锛�')
+      }
+
+      this.repairItemIsCancel = false
+      this.repairItemSelectArr.splice(0, 0, {
+        code: row.repairitem_code,
+        name: row.repairitem_name,
+        description: row.repairitem_descr
+      })
+
+      this.tableDataDialog.forEach((item, index) => {
+        if (item.repairitem_code === row.repairitem_code) {
+          this.tableDataDialog.splice(index, 1, {
+            repairitem_code: row.repairitem_code,
+            repairitem_name: row.repairitem_name,
+            repairitem_descr: row.repairitem_descr,
+            isscan: row.isscan,
+            isVisible: 1
+          })
+        }
+      })
+    },
+    delRow(row) {
+      this.repairItemSelectArr.splice(0, 0, {
+        code: row.repairitem_code,
+        name: row.repairitem_name,
+        description: row.repairitem_descr
+      })
+      this.tableDataDialog.forEach((item, index) => {
+        if (item.repairitem_code === row.repairitem_code) {
+          this.tableDataDialog.splice(index, 1)
+        }
+      })
+    },
+    saveRow(row) {
+      if (row.repairitem_code === '' && row.repairitem_name === '') {
+        return this.$message.info('鐐规閮ㄤ綅涓嶈兘涓虹┖锛�')
+      }
+      row.isVisible = 0
+      this.repairItemSelectArr.forEach((item, index) => {
+        if (item.code === row.repairitem_code) {
+          this.repairItemSelectArr.splice(index, 1)
+        }
+      })
+    },
+    cancelRow(row) {
+      if (this.repairItemIsCancel) {
+        this.repairItemSelectArr.splice(0, 0, {
+          code: row.repairitem_code,
+          name: row.repairitem_name,
+          description: row.repairitem_descr
+        })
+      }
+      this.JYIsCancel = true
+
+      this.tableDataDialog.forEach((item, index) => {
+        if (item.repairitem_code === row.repairitem_code && item.isVisible === 1) {
+          row.isVisible = 0
+          this.tableDataDialog.splice(index, 1)
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 195
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    },
+    // 鍏宠仈璁惧
+    checkeqpClick(row) {
+      const loading = this.$loading({
+        lock: true,
+        text: '姝e湪鍔犺浇鏁版嵁锛岃绋嶇瓑...',
+        spinner: 'el-icon-loading',
+        customClass: 'osloading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+
+      this.dialogFormEqp.name = row.name
+      this.dialogFormEqp.code = row.code
+
+      DeviceRepairStanedAssociationEqp({ repairstand_code: row.code }).then(res => {
+        if (res.code === '200') {
+          setTimeout(() => {
+            loading.close()
+            this.dialogFormEqp.eqpAll = res.data.filter(item => item.children.length > 0)
+
+            if (this.dialogFormEqp.eqpAll.length > 0) {
+              this.dialogFormEqp.eqpAll.forEach((item, index) => {
+                this.dialogFormEqp.eqpArr.push({
+                  code: item.code,
+                  name: item.name,
+                  type: item.type,
+                  isSelected1: index === 0,
+                  isSelected2: item.flag === 'Y'
+                })
+                if (item.flag === 'Y') {
+                  this.$nextTick(() => {
+                    $('input:checkbox').eq(index).prop('checked', true)// 鑷畾涔夊崟閫夋鍥炴樉
+                  })
+                }
+                if (item.children && item.children.length > 0) {
+                  item.children.forEach(it => {
+                    if (it.flag === 'Y') {
+                      this.dialogFormEqp.eqpCodeSelectedArr.push(it.code)
+                    }
+                  })
+                }
+              })
+              this.dialogFormEqp.eqpAll[0].name = '鍏ㄩ儴'
+              this.dialogFormEqp.eqpTree = [this.dialogFormEqp.eqpAll[0]]
+            }
+
+            this.dialogVisibleEqp = true
+
+            this.$nextTick(() => { // 鏍戝舰鍥炴樉
+              this.$refs.epqTree.setCheckedKeys(this.dialogFormEqp.eqpCodeSelectedArr)
+            })
+          }, 1000)
+        } else {
+          loading.close()
+        }
+      })
+    },
+    // 鍏宠仈璁惧瀵硅瘽妗嗗叧闂�
+    handleCloseEqp() {
+      this.$refs.epqTree.setCheckedKeys([])
+      this.dialogFormEqp.code = ''
+      this.dialogFormEqp.name = ''
+      this.dialogFormEqp.eqpAll = []
+      this.dialogFormEqp.eqpArr = []
+      this.dialogFormEqp.eqpTree = []
+      this.dialogFormEqp.eqpCodeSelectedArr = []
+    },
+    // 澶х洅瀛愮偣鍑�
+    myCheckboxClick(val) {
+      this.dialogFormEqp.eqpArr.forEach((item, index) => {
+        item.isSelected1 = item.code === val.code
+        if (item.code === val.code) {
+          this.dialogFormEqp.eqpAll[index].name = '鍏ㄩ儴'
+          this.dialogFormEqp.eqpTree = [this.dialogFormEqp.eqpAll[index]]
+        }
+      })
+      this.$nextTick(() => { // 鏍戝舰鍥炴樉
+        this.$refs.epqTree.setCheckedKeys(this.dialogFormEqp.eqpCodeSelectedArr)
+      })
+    },
+    // 灏忕洅瀛愮偣鍑�
+    myCheckboxInputClick(val) {
+      // console.log(val)
+      val.isSelected2 = !!val.isSelected2
+      if (val.isSelected2) { // 浠庢病閫変腑鍒伴�変腑
+        console.log('浠庢病閫変腑鍒伴�変腑')
+        this.dialogFormEqp.eqpAll.forEach((item, index) => {
+          if (item.code === val.code) {
+            if (item.children && item.children.length > 0) {
+              item.children.forEach(it => {
+                this.dialogFormEqp.eqpCodeSelectedArr.push(it.code)
+              })
+            }
+          }
+        })
+        console.log(this.dialogFormEqp.eqpCodeSelectedArr, 1)
+        this.$nextTick(() => { // 鏍戝舰鍥炴樉
+          this.$refs.epqTree.setCheckedKeys(this.dialogFormEqp.eqpCodeSelectedArr)
+        })
+      } else { // 浠庨�変腑鍒版病閫変腑
+        console.log('浠庨�変腑鍒版病閫変腑')
+        const temp = []
+        this.dialogFormEqp.eqpAll.forEach((item, index) => {
+          if (item.code === val.code) {
+            if (item.children && item.children.length > 0) {
+              item.children.forEach(it => {
+                temp.push(it.code)
+              })
+            }
+          }
+        })
+        this.dialogFormEqp.eqpCodeSelectedArr = [...this.dialogFormEqp.eqpCodeSelectedArr].filter(x => [...temp].every(y => y !== x))
+        this.$nextTick(() => { // 鏍戝舰鍥炴樉
+          this.$refs.epqTree.setCheckedKeys(this.dialogFormEqp.eqpCodeSelectedArr)
+        })
+      }
+      console.log(this.dialogFormEqp.eqpCodeSelectedArr, 999)
+    },
+    // 鏍戝舰澶嶉�夋鐐瑰嚮浜嬩欢
+    checkBoxClick(obj, { checkedNodes, checkedKeys, halfCheckedNodes, halfCheckedKeys }) {
+      let checkedFatherCode = '' // 鎵惧埌 checkedFatherCode  鐖禼ode鍊�
+      console.log(obj, { checkedNodes, checkedKeys, halfCheckedNodes, halfCheckedKeys })
+      this.dialogFormEqp.eqpAll.forEach((item, index) => {
+        if (item.code === obj.code) {
+          checkedFatherCode = item.code
+        }
+        if (item.children && item.children.length > 0) {
+          item.children.forEach((it, ind) => {
+            if (it.code === obj.code) {
+              checkedFatherCode = item.code
+            }
+          })
+        }
+      })
+      console.log(checkedFatherCode, 1)
+
+      // 1.绗竴绉嶆儏鍐靛綋鏍戝舰   鍗婂彾 涓嶄负闆�   鍏ㄥ彾 涓嶄负闆�
+      if (halfCheckedKeys.length !== 0 && checkedKeys.length !== 0) {
+        console.log('// 1.绗竴绉嶆儏鍐靛綋鏍戝舰   鍗婂彾 涓嶄负闆�   鍏ㄥ彾 涓嶄负闆�')
+        this.dialogFormEqp.eqpArr.forEach((item, index) => {
+          if (item.code === checkedFatherCode) {
+            console.log(item.code, 777)
+            this.dialogFormEqp.eqpArr[index].isSelected2 = true
+            this.$nextTick(() => {
+              $('input:checkbox').eq(index).prop('checked', true)// 鑷畾涔夊崟閫夋鍥炴樉
+            })
+          }
+        })
+        this.dialogFormEqp.eqpCodeSelectedArr.forEach((item, index) => {
+          if (item === obj.code) {
+            this.dialogFormEqp.eqpCodeSelectedArr.splice(index, 1)
+          }
+        })
+        checkedKeys.forEach(item => {
+          this.dialogFormEqp.eqpCodeSelectedArr.push(item)
+        })
+        this.dialogFormEqp.eqpCodeSelectedArr = [...new Set(this.dialogFormEqp.eqpCodeSelectedArr)]
+      }
+
+      // 2.绗簩绉嶆儏鍐靛綋鏍戝舰   鍗婂彾 涓洪浂   鍏ㄥ彾 涓洪浂
+      if (halfCheckedKeys.length === 0 && checkedKeys.length === 0) {
+        console.log('// 2.绗簩绉嶆儏鍐靛綋鏍戝舰   鍗婂彾 涓洪浂   鍏ㄥ彾 涓洪浂')
+        const temp = []
+        this.dialogFormEqp.eqpArr.forEach((item, index) => {
+          if (item.code === checkedFatherCode) {
+            this.dialogFormEqp.eqpArr[index].isSelected2 = false
+            this.$nextTick(() => {
+              $('input:checkbox').eq(index).prop('checked', false)// 鑷畾涔夊崟閫夋鍥炴樉
+            })
+          }
+        })
+        this.dialogFormEqp.eqpAll.forEach((item, index) => {
+          if (item.code === checkedFatherCode) {
+            if (item.children && item.children.length > 0) {
+              item.children.forEach(it => {
+                temp.push(it.code)
+              })
+            }
+          }
+        })
+        this.dialogFormEqp.eqpCodeSelectedArr = [...this.dialogFormEqp.eqpCodeSelectedArr].filter(x => [...temp].every(y => y !== x))
+      }
+
+      // 3.绗笁绉嶇鎯呭喌褰撴爲褰�   鍗婂彾 涓洪浂   鍏ㄥ彾 涓嶄负闆�
+      if (halfCheckedKeys.length === 0 && checkedKeys.length !== 0) {
+        console.log('// 3.绗笁绉嶇鎯呭喌褰撴爲褰�   鍗婂彾 涓洪浂   鍏ㄥ彾 涓嶄负闆�')
+        this.dialogFormEqp.eqpArr.forEach((item, index) => {
+          if (item.code === checkedFatherCode) {
+            this.dialogFormEqp.eqpArr[index].isSelected2 = true
+            this.$nextTick(() => {
+              $('input:checkbox').eq(index).prop('checked', true)// 鑷畾涔夊崟閫夋鍥炴樉
+            })
+          }
+        })
+
+        this.dialogFormEqp.eqpAll.forEach((item, index) => {
+          if (item.code === checkedFatherCode) {
+            if (item.children && item.children.length > 0) {
+              item.children.forEach(it => {
+                this.dialogFormEqp.eqpCodeSelectedArr.push(it.code)
+              })
+            }
+          }
+        })
+      }
+    },
+    // 鍙栨秷浜嬩欢
+    eqpDialogVisibleCancel() {
+      this.dialogVisibleEqp = false
+    },
+    // 纭浜嬩欢
+    eqpDialogVisibleConfirm() {
+      // console.log(this.dialogFormEqp.eqpCodeSelectedArr, 888)
+      // this.dialogVisibleEqp = false
+      this.$store.state.app.buttonIsDisabled = true
+      const data = []
+      this.dialogFormEqp.eqpAll.forEach((item, index) => {
+        if (item.children && item.children.length > 0) {
+          item.children.forEach(it => {
+            if (this.dialogFormEqp.eqpCodeSelectedArr.includes(it.code)) {
+              data.push({
+                name: it.name,
+                code: it.code
+              })
+            }
+          })
+        }
+      })
+
+      SaveDeviceRepairStanedAssociationEqp(data, this.dialogFormEqp.code).then(res => {
+        if (res.code === '200') {
+          this.dialogVisibleEqp = false
+          this.$notify.success('鍏宠仈鎴愬姛锛�')
+          this.getDeviceRepairStandArdSearch()
+          this.$store.state.app.buttonIsDisabled = false
+        }
+      })
+    }
+  }
+}
+</script>
+
+<!--鍏叡椤甸潰鏍峰紡-->
+<style lang="scss" scoped>
+$main_color: #42b983;
+
+.dialogVisibleEqp {
+  .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;
+      position: relative;
+
+      .myCheckboxInput {
+        margin: 1px 5px 0 0;
+        cursor: pointer;
+      }
+
+      .myCheckboxInputLabel {
+        position: absolute;
+        left: 29px;
+        padding: 5px;
+        top: 6px;
+        color: transparent;
+      }
+
+    }
+
+    //.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;
+    }
+  }
+}
+
+::v-deep .el-button--text {
+  font-size: 14px;
+  cursor: pointer;
+}
+
+.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 .el-dialog__body {
+  padding: 20px 20px !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;
+}
+
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.tableFixed {
+  ::v-deep .el-table__fixed-right {
+    height: 100% !important;
+  }
+
+  ::v-deep .el-table__fixed {
+    height: 100% !important;
+  }
+}
+
+</style>
+<style>
+.osloading{
+  font-size: 26px !important;
+}
+
+.el-loading-text{
+  font-size: 26px !important;
+}
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/deviceManager/repairRecord.vue b/src/views/deviceManager/repairRecord.vue
index e69de29..7e6ba3a 100644
--- a/src/views/deviceManager/repairRecord.vue
+++ b/src/views/deviceManager/repairRecord.vue
@@ -0,0 +1,730 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="鐢熶骇杞﹂棿"style=" display: flex;">
+              <el-select v-model="form.wkshopcode" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in wkshopSelectArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="璁惧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.eqpcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="璁惧鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.eqpname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鎶ヤ慨浜哄憳" style=" display: flex;">
+              <el-input v-model="form.reportuser" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="缁翠慨浜哄憳" style=" display: flex;">
+              <el-input v-model="form.repairuser" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="楠岃瘉浜哄憳" style=" display: flex;">
+              <el-input v-model="form.vrifcatuser" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎶ヤ慨鏃堕棿" style=" display: flex;align-items: center">
+              <el-date-picker
+                v-model="form.reportdate"
+                type="daterange"
+                :clearable="false"
+                class="timeMini"
+                range-separator="~"
+                start-placeholder="寮�濮嬫棩鏈�"
+                style="width: 200px;display: flex;line-height: 34px ;height: 34px ;"
+                end-placeholder="缁撴潫鏃ユ湡"
+                size="mini"
+              />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="缁翠慨鏃堕棿" style=" display: flex;align-items: center">
+              <el-date-picker
+                v-model="form.repairdate"
+                type="daterange"
+                :clearable="false"
+                class="timeMini"
+                range-separator="~"
+                start-placeholder="寮�濮嬫棩鏈�"
+                style="width: 200px;display: flex;line-height: 34px ;height: 34px ;"
+                end-placeholder="缁撴潫鏃ユ湡"
+                size="mini"
+              />
+            </el-form-item>
+            <el-form-item
+              v-show="isExpandForm"
+              label="楠岃瘉鏃堕棿"
+              style=" display: flex;align-items: center"
+            >
+              <el-date-picker
+                v-model="form.vrifcatdate"
+                type="daterange"
+                :clearable="false"
+                class="timeMini"
+                range-separator="~"
+                start-placeholder="寮�濮嬫棩鏈�"
+                style="width: 200px;display: flex;line-height: 34px ;height: 34px ;"
+                end-placeholder="缁撴潫鏃ユ湡"
+                size="mini"
+              />
+            </el-form-item>
+          </div>
+          <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}">
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <el-table
+          ref="tableDataRef"
+          :key="tableTimeStampKey"
+          class="tableFixed"
+          :data="tableData"
+          :height="isExpandForm?tableHeight:(tableHeight+80)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <el-table-column
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :key="item.id"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+              <div v-else-if="item.prop==='verify_result'">
+                <div v-if="row[item.prop]==='閫氳繃'" style="display: flex;align-items: center">
+                  <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                  閫氳繃
+                </div>
+                <div v-if="row[item.prop]==='涓嶉�氳繃'" style="display: flex;align-items: center">
+                  <i class="el-icon-info" style="margin-right: 2px" />
+                  涓嶉�氳繃
+                </div>
+              </div>
+              <div v-else>{{ row[item.prop] }}</div>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鏄庣粏"
+            width="120"
+            fixed="right"
+          >
+            <template slot-scope="{row}">
+              <i
+                class="el-icon-tickets"
+                :style="{color:$store.state.settings.theme}"
+                style="cursor: pointer;margin-right: 15px"
+                @click="edit('edit',row)"
+              />
+            </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="getDeviceUpdateSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      title="缁翠慨鏄庣粏"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="10vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div style="font-size:16px;">
+        <div style="margin-bottom: 20px">
+          <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 璁惧鎶ヤ慨淇℃伅锛�
+        </div>
+        <div style="display: flex;flex-direction: column;margin-left: 40px">
+          <div style="margin-bottom: 10px">鏁呴殰鏉ユ簮锛歿{ dialogData1.faultsource }}</div>
+          <div style="margin-bottom: 10px">鏁呴殰鎻忚堪锛歿{ dialogData1.faultdescr }}</div>
+          <div v-if="dialogData1.faultimage" style="display: flex;margin-bottom: 10px">鏁呴殰鍥剧墖锛�
+            <div v-for="item in dialogData1.faultimage">
+              <img
+                style="width: 100px;margin-right: 10px"
+                :src="baseUrl+item.img1url"
+                alt=""
+                @click="handlePictureCardPreview(baseUrl+item.img1url,'璁惧鎶ヤ慨/鏁呴殰鍥剧墖')"
+              >
+            </div>
+          </div>
+        </div>
+        <div style="margin-bottom: 20px">
+          <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 璁惧缁翠慨淇℃伅锛�
+        </div>
+        <div style="display: flex;flex-direction: column;margin-left: 40px">
+          <div style="margin-bottom: 10px">鏁呴殰鎻忚堪锛歿{ dialogData2.faultdescr }}</div>
+          <div v-if="dialogData2.repairimage" style="display: flex;margin-bottom: 10px">鏁呴殰鍥剧墖锛�
+            <div v-for="item in dialogData2.repairimage" v-if="item.img1url!==''">
+              <img
+                style="width: 100px;margin-right: 10px"
+                :src="baseUrl+item.img1url"
+                alt=""
+                @click="handlePictureCardPreview(baseUrl+item.img1url,'璁惧缁翠慨/鏁呴殰鍥剧墖')"
+              >
+            </div>
+          </div>
+          <div style="margin-bottom: 10px">鍋滄満缁翠慨锛歿{ dialogData2.isstoprepair === 'N' ? '鍚�' : '鏄�' }}</div>
+          <div v-if="dialogData2.repaircontent" style="margin-bottom: 10px">缁翠慨鍐呭锛歿{ dialogData2.repaircontent }}</div>
+          <div v-if="dialogData2.repairpart" style="margin-bottom: 10px">鏇存崲澶囦欢锛歿{ dialogData2.repairpart }}</div>
+          <div v-if="dialogData2.repairimage" style="display: flex;margin-bottom: 10px">澶囦欢鍥剧墖锛�
+            <div v-for="item in dialogData2.repairimage" v-if="item.img2url!==''">
+              <img
+                style="width: 100px;margin-right: 10px"
+                :src="baseUrl+item.img2url"
+                alt=""
+                @click="handlePictureCardPreview(baseUrl+item.img2url,'璁惧缁翠慨/澶囦欢鍥剧墖')"
+              >
+            </div>
+          </div>
+        </div>
+        <div style="margin-bottom: 20px">
+          <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 璁惧缁翠慨楠岃瘉淇℃伅锛�
+        </div>
+        <div style="display: flex;flex-direction: column;margin-left: 40px">
+          <div style="margin-bottom: 10px;display: flex;">楠岃瘉缁撴灉锛�
+
+            <i
+              v-if="isResult==='閫氳繃'"
+              class="el-icon-success"
+              :style="{color:$store.state.settings.theme}"
+              style="margin-right: 2px"
+            />
+            <i v-if="isResult==='涓嶉�氳繃'" class="el-icon-info" style="margin-right: 2px" />
+
+            {{ isResult }}
+          </div>
+
+        </div>
+      </div>
+      <!--      鍥剧墖棰勮瀵硅瘽妗�-->
+      <el-dialog
+        title="鍥剧墖棰勮"
+        :visible.sync="pictureVisible"
+        width="800px"
+        append-to-body
+        @close="pictureHandleClose"
+      >
+        <div style="font-size: 16px;margin-bottom: 10px">
+          <i class="el-icon-s-comment" :style="{color:$store.state.settings.theme}" /> {{ pictureName }}
+        </div>
+
+        <img :key="new Date()" width="100%" :src="pictureUrl" alt="">
+
+        <el-tooltip class="item" effect="light" content="涓婁竴寮�" placement="top">
+          <div
+            v-if="pictureUrlAll.findIndex(item => item.url === pictureUrl)!==0"
+            style="position: absolute;top: 48%;left: 3.5%;"
+          ><i
+            :style="{color:$store.state.settings.theme}"
+            style="cursor: pointer;font-size: 20px"
+            class="el-icon-d-arrow-left"
+            @click="arrowLeftClick(pictureUrl,pictureName)"
+          /></div>
+        </el-tooltip>
+        <el-tooltip class="item" effect="light" content="涓嬩竴寮�" placement="top">
+          <div
+            v-if="pictureUrlAll.findIndex(item => item.url === pictureUrl)!==pictureUrlAll.length-1"
+            style="position: absolute;top: 48%;right: 3.5%;"
+          >
+            <i
+              :style="{color:$store.state.settings.theme}"
+              style="cursor: pointer;font-size: 20px"
+              class="el-icon-d-arrow-right"
+              @click="arrowRightClick(pictureUrl,pictureName)"
+            /></div>
+        </el-tooltip>
+        <span slot="footer" class="dialog-footer">
+          <div class="footerButton">
+            <el-button v-waves @click="pictureVisible=false">杩� 鍥�</el-button>
+          </div>
+        </span>
+      </el-dialog>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">杩� 鍥�</el-button>
+          <!--          <el-button v-waves 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"
+    />
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime } from '@/utils/global'
+import { DeviceUpdateOutExcel, DeviceUpdateSearch, DeviceUpdateSubSearch } from '@/api/DeviceManager'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import TableColumnSettings from '@/components/TableColumnSettings'
+import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, TableColumnSettings
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        wkshopcode: '', // 杞﹂棿缂栫爜
+        eqpcode: '', // 璁惧缂栫爜
+        eqpname: '', // 璁惧鍚嶇О
+        reportuser: '', // 鎶ヤ慨浜哄憳
+        repairuser: '', // 缁翠慨浜哄憳
+        vrifcatuser: '', // 楠岃瘉浜哄憳
+        reportdate: '', // 鎶ヤ慨鏃堕棿
+        repairdate: '', // 缁翠慨鏃堕棿
+        vrifcatdate: '', // 楠岃瘉鏃堕棿
+        prop: 'repair_code', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      wkshopSelectArr: [],
+      total: 10,
+      tableData: [],
+
+      tableColumnSettingsArray: [
+        // { minWidth: false, width: 55, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: false, width: 55, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'repair_code',
+          label: '缁翠慨鍗曞彿',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 130,
+          prop: 'wksp_code',
+          label: '鎵�灞炶溅闂寸紪鐮�',
+          id: 4,
+          show: false,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'wksp_name',
+          label: '鎵�灞炶溅闂�',
+          id: 5,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'eqp_code',
+          label: '璁惧缂栫爜',
+          id: 6,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'eqp_name',
+          label: '璁惧鍚嶇О',
+          id: 7,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 110,
+          prop: 'request_person',
+          label: '鎶ヤ慨浜�',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 160,
+          prop: 'request_date',
+          label: '淇濅慨鏃堕棿',
+          id: 9,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'repair_person',
+          label: '缁翠慨浜�',
+          id: 10,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 160,
+          prop: 'repair_date',
+          label: '缁翠慨瀹屾垚鏃堕棿',
+          id: 11,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 110,
+          prop: 'cycleDate',
+          label: '缁翠慨鏃堕暱',
+          id: 12,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 110,
+          prop: 'verify_person',
+          label: '楠岃瘉浜�',
+          id: 13,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 160,
+          prop: 'verify_date',
+          label: '楠岃瘉鏃堕棿',
+          id: 14,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'verify_result',
+          label: '楠岃瘉缁撴灉',
+          id: 15,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+
+      dialogVisible: false,
+      dialogData1: {},
+      dialogData2: {},
+      isResult: '', // 楠岃瘉缁撴灉
+      operation: '',
+
+      baseUrl: '', // 鍥剧墖棰勮鍦板潃鍓嶇紑
+
+      pictureVisible: false, // 鍥剧墖棰勮瀵硅瘽妗�
+      pictureUrl: '', // 鍥剧墖棰勮Url
+      pictureName: '', // 鍥剧墖棰勮鍚嶇О
+      pictureUrlAll: [], // 鍥剧墖棰勮鍦板潃鐨勬墍鏈塙rl
+
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '4',
+      shows: false
+
+    }
+  },
+
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+
+    this.baseUrl = process.env.VUE_APP_BASE_API_FILE
+  },
+  methods: {
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+
+      this.$refs.tableDataRef.doLayout()
+    },
+    handleRequest() {
+      this.getDeviceUpdateSearch().then(res => {
+        if (res.code === '200') {
+          this.getShopSearch()
+        }
+      })
+    },
+    async getDeviceUpdateSearch() {
+      let reportdate = this.form.reportdate
+      if (reportdate.length > 0) {
+        reportdate = handleDatetime(reportdate[0]) + '~' + handleDatetime(reportdate[1])
+      }
+      let repairdate = this.form.repairdate
+      if (repairdate.length > 0) {
+        repairdate = handleDatetime(repairdate[0]) + '~' + handleDatetime(repairdate[1])
+      }
+      let vrifcatdate = this.form.vrifcatdate
+      if (vrifcatdate.length > 0) {
+        vrifcatdate = handleDatetime(vrifcatdate[0]) + '~' + handleDatetime(vrifcatdate[1])
+      }
+      const data = {
+        wkshopcode: this.form.wkshopcode, // 杞﹂棿缂栫爜
+        eqpcode: this.form.eqpcode, // 璁惧缂栫爜
+        eqpname: this.form.eqpname, // 璁惧鍚嶇О
+        reportuser: this.form.reportuser, // 鎶ヤ慨浜哄憳
+        repairuser: this.form.repairuser, // 缁翠慨浜哄憳
+        vrifcatuser: this.form.vrifcatuser, // 楠岃瘉浜哄憳
+        reportdate, // 鎶ヤ慨鏃堕棿
+        repairdate, // 缁翠慨鏃堕棿
+        vrifcatdate, // 楠岃瘉鏃堕棿
+        prop: 'repair_code', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      }
+
+      const res = await DeviceUpdateSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+      return { code: res.code }
+    },
+    // 鑾峰彇鎵ц杞﹂棿涓嬫媺鏁扮粍
+    async getShopSearch() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopSelectArr = res
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getDeviceUpdateSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getDeviceUpdateSearch()
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.wkshopcode = ''
+      this.form.eqpcode = ''
+      this.form.eqpname = ''
+      this.form.reportuser = ''
+      this.form.repairuser = ''
+      this.form.vrifcatuser = ''
+      this.form.reportdate = ''
+      this.form.repairdate = ''
+      this.form.vrifcatdate = ''
+      this.getDeviceUpdateSearch()
+    },
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      const { data: res } = await DeviceUpdateSubSearch({ repair_code: row.repair_code })
+      this.dialogData1 = res.data1
+      this.dialogData2 = res.data2
+      this.isResult = row.verify_result
+
+      // 璁惧鎶ヤ慨鍥剧墖闆嗗悎
+      if (this.dialogData1.faultimage) {
+        this.dialogData1.faultimage.forEach(item => {
+          this.pictureUrlAll.push(
+            { url: this.baseUrl + item.img1url, name: '璁惧鎶ヤ慨/鏁呴殰鍥剧墖' }
+          )
+        })
+      }
+      // 璁惧缁翠慨鍥剧墖闆嗗悎
+      if (this.dialogData2.repairimage) {
+        this.dialogData2.repairimage.forEach(item => {
+          this.pictureUrlAll.push(
+            {
+              url: item.img1url ? this.baseUrl + item.img1url : this.baseUrl + item.img2url,
+              name: item.img1url ? '璁惧缁翠慨/鏁呴殰鍥剧墖' : '璁惧缁翠慨/澶囦欢鍥剧墖'
+            }
+          )
+        })
+      }
+    },
+    handlePictureCardPreview(url, name) {
+      this.pictureVisible = true
+      this.pictureUrl = url
+      this.pictureName = name
+    },
+    arrowLeftClick(pictureUrl, pictureName) {
+      this.pictureUrlAll.forEach((item, index) => {
+        if (item.url === pictureUrl) {
+          this.pictureUrl = this.pictureUrlAll[index - 1].url
+          this.pictureName = this.pictureUrlAll[index - 1].name
+        }
+      })
+    },
+    arrowRightClick(pictureUrl, pictureName) {
+      this.pictureUrlAll.forEach((item, index) => {
+        if (item.url === pictureUrl) {
+          this.pictureUrl = this.pictureUrlAll[index + 1].url
+          this.pictureName = this.pictureUrlAll[index + 1].name
+        }
+      })
+    },
+    pictureHandleClose() {
+      this.pictureUrl = ''
+      this.pictureName = ''
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogData1 = {}
+      this.dialogData2 = {}
+      this.isResult = ''
+      this.pictureUrlAll = []
+    },
+    async download() {
+      let reportdate = this.form.reportdate
+      if (reportdate.length > 0) {
+        reportdate = handleDatetime(reportdate[0]) + '~' + handleDatetime(reportdate[1])
+      }
+      let repairdate = this.form.repairdate
+      if (repairdate.length > 0) {
+        repairdate = handleDatetime(repairdate[0]) + '~' + handleDatetime(repairdate[1])
+      }
+      let vrifcatdate = this.form.vrifcatdate
+      if (vrifcatdate.length > 0) {
+        vrifcatdate = handleDatetime(vrifcatdate[0]) + '~' + handleDatetime(vrifcatdate[1])
+      }
+      const data = {
+        wkshopcode: this.form.wkshopcode, // 杞﹂棿缂栫爜
+        eqpcode: this.form.eqpcode, // 璁惧缂栫爜
+        eqpname: this.form.eqpname, // 璁惧鍚嶇О
+        reportuser: this.form.reportuser, // 鎶ヤ慨浜哄憳
+        repairuser: this.form.repairuser, // 缁翠慨浜哄憳
+        vrifcatuser: this.form.vrifcatuser, // 楠岃瘉浜哄憳
+        reportdate, // 鎶ヤ慨鏃堕棿
+        repairdate, // 缁翠慨鏃堕棿
+        vrifcatdate // 楠岃瘉鏃堕棿
+      }
+      const { data: res } = await DeviceUpdateOutExcel(data)
+      window.location.href = res
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 295
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
+
diff --git a/src/views/kanbanManager/cj.vue b/src/views/kanbanManager/cj.vue
new file mode 100644
index 0000000..84972af
--- /dev/null
+++ b/src/views/kanbanManager/cj.vue
@@ -0,0 +1,436 @@
+<template>
+  <div>
+    <div class="kb_dashboard" style="display:flex;flex-direction: column;justify-content: space-between">
+
+      <div class="kb_backgroundCustom" />
+
+      <div class="kb_header">
+        <div class="kb_headTime" style="top: 35px;left:  20px">
+          <span>鍦f玻</span>
+        </div>
+
+        <div class="kb_headTime kb_header_text" style="top: 35px;left:  765px">
+          <span>{{ title }}鏁板瓧鍖栫湅鏉�</span>
+        </div>
+
+        <div class="kb_headTime" style="top: 35px;right:  25px">
+          <span>{{ headTime }}</span>
+        </div>
+      </div>
+      <div
+        style=" padding:5px 20px 20px 20px;z-index:2;height: 940px;flex-direction: column;justify-content: space-between;"
+      >
+        <!--        涓婅竟-->
+        <div style="display: flex;justify-content: space-between">
+          <div style="width:100%">
+            <div class="smallTitle">
+              <svg-icon icon-class="cxjg" class="svg_class" />
+              鐢熶骇淇℃伅
+            </div>
+            <div
+              class="lineContent horn"
+              style="height: 450px;display: flex;flex-direction: column;justify-content: space-between"
+            >
+              <el-table
+                ref="tableDataLeftCenterRef"
+                :data="tableDataCenterTop"
+                class="tableData tableDataCell"
+                style="width: 100%;"
+                :header-cell-style="headerCellStyle"
+                :cell-style="cellStyle"
+                height="500"
+              >
+
+                <el-table-column
+                  prop="wo_code"
+                  label="宸ュ崟鍙�"
+                  width="220"
+                />
+                <el-table-column
+                  prop="partcode"
+                  label="浜у搧缂栫爜"
+                  width="160"
+                />
+                <el-table-column
+                  prop="partname"
+                  label="浜у搧鍚嶇О"
+                  width="160"
+                />
+                <el-table-column
+                  prop="partspec"
+                  label="浜у搧瑙勬牸"
+                  width="160"
+                >
+                  <template slot-scope="{row}">
+                    {{ row.partspec ? row.partspec : '/' }}
+                  </template>
+                </el-table-column>
+                <el-table-column
+                  prop="plan_qty"
+                  label="浠诲姟鏁伴噺"
+                  width="120"
+                />
+                <el-table-column
+                  prop="good_qty"
+                  label="鍚堟牸鏁伴噺"
+                  width="120"
+                />
+                <el-table-column
+                  prop="ng_qty"
+                  label="涓嶈壇鏁伴噺"
+                  width="120"
+                />
+                <el-table-column
+                  prop="laborbad_qty"
+                  label="宸ュ簾鏁伴噺"
+                  width="120"
+                />
+                <el-table-column
+                  prop="materielbad_qty"
+                  label="鏂欏簾鏁伴噺"
+                  width="120"
+                />
+                <el-table-column
+                  prop="seq"
+                  label="宸ュ簭椤哄簭"
+                  width="120"
+                />
+                <el-table-column
+                  prop="step_code"
+                  label="宸ュ簭缂栫爜"
+                  width="120"
+                />
+                <el-table-column
+                  prop="step_name"
+                  label="宸ュ簭鍚嶇О"
+                  width="120"
+                />
+                <el-table-column
+                  prop="schedule"
+                  label="瀹屾垚杩涘害(%)"
+                  width="213"
+                />
+              </el-table>
+            </div>
+          </div>
+
+        </div>
+        <!--        涓嬭竟-->
+        <div style="display: flex;justify-content: space-between;margin-top: 15px;">
+          <div style="width: 1000px;">
+            <div class="smallTitle">
+              <svg-icon icon-class="blcs" class="svg_class" />
+              璐ㄩ噺涓嶈壇(杩戜竴鍛�)
+            </div>
+            <div class="lineContent horn" style="height: 380px;display: flex;justify-content: space-between">
+              <div id="cjzl03" class="flex_c_c" style="width: 100%;height:100%" />
+
+            </div>
+          </div>
+          <div style="width: 850px;">
+            <div class="smallTitle">
+              <svg-icon icon-class="ckkc" class="svg_class" />
+              涓嶈壇缁熻(杩戜竴鏈�)
+            </div>
+            <div class="lineContent horn" style="height: 380px;display: flex;justify-content: space-between">
+              <div id="cjzl04" class="flex_c_c" style="width: 100%;height:100%" />
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import './kbCommon.css'
+import { loadEcharts, cjzl04, cjzl03_2 } from '@/utils/myEcharts'
+import {
+  WorkShopProduceBottomLeftData,
+  WorkShopProduceBottomRightData,
+  WorkShopProduceTopData
+} from '@/api/kanbanManager'
+import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
+
+export default {
+  name: 'Cjsc',
+  data() {
+    return {
+      headTime: '',
+      tableDataRightTop: [],
+      wkshopArr: [],
+      legendData: [],
+
+      LeftTopData01: [],
+      LeftTopData02: [],
+
+      RightTopData01: [],
+      RightTopData02: [],
+      cjzl03_xData: [],
+      cjzl03_yData: [],
+      RightBottom: [],
+
+      tableDataCenterTop: [],
+
+      wkshopcode: '',
+      title: ''
+
+    }
+  },
+  created() {
+    setInterval(this.getNowTime, 1000)
+
+    // 涓ゅ皬鏃剁湅鏉垮埛鏂颁竴娆�
+    setInterval(() => {
+      window.location.reload()
+    }, 1000 * 60 * 120)
+  },
+  mounted() {
+    this.getAllApi()
+  },
+  methods: {
+    async getWorkShopProduceTopData() {
+      WorkShopProduceTopData({ wkshopcode: this.wkshopcode.join(',') }).then(res => {
+        this.tableDataCenterTop = res.data
+
+        const divData = this.$refs.tableDataLeftCenterRef.bodyWrapper
+        const timer = setInterval(() => {
+          // 鍏冪礌鑷璺濈椤堕儴1鍍忕礌
+          divData.scrollTop += 1
+          if (divData.clientHeight + divData.scrollTop === divData.scrollHeight) {
+            divData.scrollTop = 0
+            WorkShopProduceTopData({ wkshopcode: this.wkshopcode.join(',') }).then(res => {
+              this.tableDataCenterTop = res.data
+
+              if (this.tableDataCenterTop.length > 11) {
+                clearInterval(timer)
+                this.getWorkShopProduceTopData()
+              }
+            })
+          }
+        }, this.tableDataCenterTop.length <= 11 ? 1000 * 15 : 200)
+      })
+    },
+
+    async getAllApi() {
+      const res = await PrentOrganizationNoCompany()
+      this.wkshopArr = res.data
+
+      if (window.location.hash.indexOf('?') !== -1) {
+        const code = window.location.hash.split('?')[1].split('=')[1]
+        this.title = this.wkshopArr.find(i => i.torg_code === code).torg_name
+        this.wkshopcode = [code]
+      }
+
+      this.wkshopcode.forEach(i => {
+        const aa = this.wkshopArr.find(j => j.torg_code === i).torg_name
+        this.legendData.push(aa)
+      })
+
+      const res4 = await WorkShopProduceBottomLeftData({ wkshopcode: this.wkshopcode.join(',') })
+      this.cjzl03_xData = res4.data[this.wkshopcode[0]].map(i => i.click_date)
+      for (const res4Key in res4.data) {
+        if (this.wkshopcode.includes(res4Key)) {
+          const bb = res4.data[res4Key].map(i => i.count)
+          this.cjzl03_yData.push(bb)
+        }
+      }
+      loadEcharts('cjzl03', cjzl03_2(this.cjzl03_xData, this.legendData, this.cjzl03_yData, true))
+      setInterval(() => {
+        WorkShopProduceBottomLeftData({ wkshopcode: this.wkshopcode.join(',') }).then(res4 => {
+          this.cjzl03_yData = []
+
+          this.cjzl03_xData = res4.data[this.wkshopcode[0]].map(i => i.click_date)
+          for (const res4Key in res4.data) {
+            if (this.wkshopcode.includes(res4Key)) {
+              const bb = res4.data[res4Key].map(i => i.count)
+              this.cjzl03_yData.push(bb)
+            }
+          }
+          loadEcharts('cjzl03', cjzl03_2(this.cjzl03_xData, this.legendData, this.cjzl03_yData, true))
+        })
+      }, 1000 * 50)
+
+      const res5 = await WorkShopProduceBottomRightData({ wkshopcode: this.wkshopcode.join(',') })
+      this.RightBottom = res5.data
+      if (this.RightBottom.length > 0) {
+        loadEcharts('cjzl04', cjzl04(this.RightBottom.map(i => i.name), this.RightBottom.map(i => i.cont)))
+      }
+
+      setInterval(() => {
+        WorkShopProduceBottomRightData({ wkshopcode: this.wkshopcode.join(',') }).then(res5 => {
+          this.RightBottom = res5.data
+          if (this.RightBottom.length > 0) {
+            loadEcharts('cjzl04', cjzl04(this.RightBottom.map(i => i.name), this.RightBottom.map(i => i.cont)))
+          }
+        })
+      }, 1000 * 60)
+
+      this.getWorkShopProduceTopData()
+    },
+
+    // 鑾峰彇褰撳墠鏃堕棿
+    getNowTime() {
+      const dt = new Date()
+      const wk = dt.getDay()
+      const y = dt.getFullYear()
+      const m = (dt.getMonth() + 1 + '').padStart(2, '0')
+      const d = (dt.getDate() + '').padStart(2, '0')
+
+      const hh = (dt.getHours() + '').padStart(2, '0')
+      const mm = (dt.getMinutes() + '').padStart(2, '0')
+      const ss = (dt.getSeconds() + '').padStart(2, '0')
+      const weeks = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�']
+      const week = weeks[wk]
+
+      this.headTime = `${y}-${m}-${d}  ${hh}:${mm}:${ss}   ${week}`
+    },
+    headerCellStyle() {
+      return {
+        backgroundColor: 'transparent',
+        padding: '10px 0',
+        textAlign: 'center',
+        color: '#07acc2',
+        border: 'none',
+        fontSize: '18px'
+      }
+    },
+    cellStyle() {
+      return {
+        padding: '7px 0',
+        textAlign: 'center',
+        backgroundColor: 'transparent',
+        color: '#fff',
+        border: 'none',
+        fontSize: '18px'
+      }
+    }
+
+  }
+
+}
+</script>
+
+<style lang="scss" scoped>
+$main_color: #09d8f2;
+$color01: #00FFFF;
+.tableData {
+  background: transparent;
+}
+
+.el-table::before {
+  height: 0;
+}
+
+.el-table__empty-text {
+  color: $main_color;
+}
+
+.tableDataCell {
+  ::v-deep .cell {
+    padding: 0 2px;
+  }
+}
+
+::v-deep .el-table__body-wrapper::-webkit-scrollbar {
+  /* width: 0;瀹藉害涓�0鏆楄棌 */
+  width: 0;
+  background: transparent;
+}
+
+::v-deep .el-table__body-wrapper {
+  background: transparent;
+}
+
+::v-deep .el-table th,
+::v-deep .el-table tr,
+::v-deep .el-table td {
+  background-color: transparent;
+}
+
+.all_block01 {
+  width: 237px;
+  height: 180px;
+}
+
+.all_block02 {
+  width: 100%;
+  height: 49px;
+  background: rgba(9, 216, 242, 0.1);
+}
+
+.all_block03 {
+  width: 199px;
+  height: 180px;
+}
+
+.all_block04 {
+  width: 100%;
+  height: 49px;
+  background: rgba(9, 216, 242, 0.1);
+}
+
+.kb_center_block_children {
+  height: 180px;
+  //border: 1px solid $kbBorderColor;
+  width: 240px;
+  display: flex;
+  z-index: 2;
+  justify-content: space-around;
+  align-items: center;
+  flex-direction: column;
+  margin: 10px;
+  font-size: 22px;
+
+  .box02 {
+    background: url("../../assets/images/box02.png") no-repeat;
+    transform: scale(1.5);
+    width: 145px;
+    height: 84px;
+
+  }
+}
+
+.all_block05 {
+  position: absolute;
+  animation: upDown 3s ease-in-out infinite;
+  left: 60px;
+}
+
+.all_block06 {
+  position: absolute;
+  animation: upDown2 3s ease-in-out infinite;
+  left: 290px;
+}
+
+.all_block07 {
+  position: absolute;
+  animation: upDown 3s ease-in-out infinite;
+  left: 520px;
+}
+
+@keyframes upDown {
+  0% {
+    top: 50px;
+  }
+  50% {
+    top: 100px;
+  }
+  100% {
+    top: 50px;
+  }
+}
+
+@keyframes upDown2 {
+  0% {
+    top: 100px;
+  }
+  50% {
+    top: 50px;
+  }
+  100% {
+    top: 100px;
+  }
+}
+
+</style>
diff --git a/src/views/kanbanManager/kbCommon.css b/src/views/kanbanManager/kbCommon.css
index f7c4ad6..110e6ff 100644
--- a/src/views/kanbanManager/kbCommon.css
+++ b/src/views/kanbanManager/kbCommon.css
@@ -14,6 +14,13 @@
   overflow: hidden;
 }
 
+.kb_backgroundCustom {
+  position: absolute;
+  width: 1920px;
+  height: 1080px;
+  background: url('../../assets/images/background001.jpg') no-repeat;
+}
+
 .kb_header {
   /*background-color: #123;*/
   height: 90px;
@@ -27,7 +34,7 @@
   font-weight: bolder;
 }
 
-.kb_title_text{
+.kb_title_text {
   font-weight: bolder;
   font-size: 24px;
 }
@@ -60,7 +67,7 @@
 .flex_c_c {
   display: flex;
   justify-content: center;
-  align-content: center;
+  align-items: center;
 }
 
 .flex_c_s {
@@ -69,6 +76,7 @@
   justify-content: space-evenly;
   /*align-content: center;*/
 }
+
 .flex_c_b {
   display: flex;
   flex-direction: column;
@@ -99,6 +107,7 @@
 .kb_mt10 {
   margin-top: 10px;
 }
+
 /*鍏憡鏍峰紡*/
 .MarqueeTipsContentClass {
   color: #00ffff;
@@ -108,7 +117,7 @@
   font-size: 32px;
   z-index: 2;
   position: absolute;
-  top:80px;
+  top: 80px;
 }
 
 /*
@@ -124,7 +133,7 @@
 /*scrollbar END*/
 
 
-.smallTitle{
+.smallTitle {
   height: 35px;
   display: flex;
   color: #00ffff;
@@ -132,11 +141,10 @@
   /*align-content: flex-start;*/
 }
 
-.svg_class{
+.svg_class {
   margin-right: 10px;
   font-size: 28px;
 }
-
 
 
 .lineContent {
diff --git a/src/views/kanbanManager/zhkb.vue b/src/views/kanbanManager/zhkb.vue
index ff39bfe..4c34ef1 100644
--- a/src/views/kanbanManager/zhkb.vue
+++ b/src/views/kanbanManager/zhkb.vue
@@ -1,278 +1,126 @@
 <template>
   <div>
-    <div class="kb_dashboard">
-      <!--    鏄熺┖鑳屾櫙-->
-      <div ref="starsRef" class="stars">
-        <div v-for="(item, index) in starsCount" :key="index" class="star" />
-      </div>
+    <div class="kb_dashboard" style="display:flex;flex-direction: column;justify-content: space-between">
+
+      <div class="kb_backgroundCustom" />
 
       <div class="kb_header">
-        <div class="flex_c_c kb_header_text">
-          <div id="topBarLeft" style="width:600px;height:100%" />
-          杞﹂棿缁煎悎鏁板瓧鍖栫湅鏉�
-          <div id="topBarRight" style="width:600px;height:100%;transform:rotate(180deg);" />
+        <div class="kb_headTime" style="top: 35px;left:  20px">
+          <span>姘稿悍甯傚法绔嬮槻鎶ょ敤鍝佹湁闄愬叕鍙�</span>
         </div>
 
-        <div class="kb_headTime" style="left: 85px">
-          <span>娴欐睙鏂板嚡杩暟瀛楃鎶�鑲′唤鏈夐檺鍏徃</span>
+        <div class="kb_headTime kb_header_text" style="top: 35px;left:  800px">
+          <span>杞﹂棿缁煎悎鏁板瓧鍖栫湅鏉�</span>
         </div>
 
-        <div class="kb_headTime">
+        <div class="kb_headTime" style="top: 35px;right:  25px">
           <span>{{ headTime }}</span>
         </div>
       </div>
-      <div style="display: flex;justify-content: space-between;padding:0 20px 20px 20px">
-        <!--       宸﹁竟-->
-        <div style="width: 1400px ;height: 969px;" class="flex_c_b">
-          <div>
+      <div
+        style=" padding:5px 20px 20px 20px;z-index:2;height: 940px;flex-direction: column;justify-content: space-between;"
+      >
+        <!--        涓婅竟-->
+        <div style="display: flex;justify-content: space-between">
+          <div style="width: 1000px;">
             <div class="smallTitle">
               <svg-icon icon-class="cxjg" class="svg_class" />
-              浜х嚎鍔犲伐涓换鍔�
+              鐢熶骇璁㈠崟(褰撴湀)
             </div>
-            <div class="lineContent horn">
-              <div v-for="item in lineContent3" :key="item.workcode" class="kb_left_top_block">
-                <div class="kb_block02 kb_pd10">
-                  <div>
-                    <div>閿�鍞鍗�:{{ item.saleordercode }}</div>
-                    <div class="kb_mt10">
-                      鍔犲伐鍗曞彿:{{ item.workcode }}
+            <div
+              class="lineContent horn"
+              style="height: 450px;display: flex;flex-direction: column;justify-content: space-between"
+            >
+              <div style="height: 180px;padding: 10px;display: flex;justify-content: space-around">
+                <div v-for="i in LeftTopData01" :key="i.wkshp_code" class="flex_c_s">
+                  <div class="all_block01 flex_c_s">
+                    <div class="flex_c_c all_block02">{{ i.wkshp_name }}</div>
+                    <div class="" style="display: flex;justify-content:space-between">
+                      <div class="all_block02 flex_c_c" style="width: 49% ">浠诲姟鏁�</div>
+                      <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.plan_qty }}</div>
                     </div>
-                    <div class="kb_mt10">
-                      浜у搧鍚嶇О:{{ item.partname }}
-                    </div>
-                    <div class="kb_mt10">
-                      浠诲姟鏁伴噺:{{ parseFloat(item.qty) }}
+                    <div class="" style="display: flex;justify-content:space-between">
+                      <div class="all_block02 flex_c_c" style="width: 49% ">瀹屽伐鏁�</div>
+                      <div class="all_block02 flex_c_c" style="width: 49% ">{{ i.good_qty }}</div>
                     </div>
                   </div>
                 </div>
-                <div class="kb_block03 kb_pd10 ">
-                  <div v-if="item.children&&item.children.length>0" class="flex_s_c">
-                    <div
-                      v-for="(it,ind) in item.children"
-                      :key="ind"
-                      class="kb_block03_content flex_c_c"
-                    >
-                      <div>
-                        <div class="content01">{{ it.stepname }}</div>
-                      </div>
-                      <div class="content02Parent">
-                        <div class="content02">
-                          <div class="content02_1 ">浠诲姟</div>
-                          <div class="content02_2 borderTop ">{{ parseFloat(it.planqty) }}</div>
-                        </div>
-                        <div class="content02">
-                          <div class="content02_1 ">鍚堟牸</div>
-                          <div class="content02_2 borderTop ">{{ parseFloat(it.goodqty) }}</div>
-                        </div>
-                        <div class="content02" style="border-right: 0">
-                          <div class="content02_1 ">涓嶈壇</div>
-                          <div class="content02_2 borderTop ">{{ parseFloat(it.ngqty) }}</div>
-                        </div>
-                      </div>
-                    </div>
-                  </div>
-                  <div v-if="item.children&&item.children.length>0" class="kb_block03_02 flex_s_c">
-                    <div
-                      v-for="(it,ind) in item.children"
-                      :key="ind"
-                      class="kb_block03_02_content flex_c_c"
-                    >
-                      <div class="flex_c_c content01">
-                        <div
-                          v-if="it.status==='START'&&(parseFloat(it.ngqty)===0||it.ngqty==='')&&(parseFloat(it.goodqty)===0||it.goodqty==='')"
-                          class="circle"
-                          style="background-color: blue;"
-                        />
-                        <div
-                          v-else-if="it.status==='ALLO'&&(parseFloat(it.ngqty)===0||it.ngqty==='')&&(parseFloat(it.goodqty)===0||it.goodqty==='')"
-                          class="circle"
-                          style="background-color: rgb(255 255 255)"
-                        />
-                        <div
-                          v-else-if="parseFloat(it.ngqty)+parseFloat(it.goodqty)>=parseFloat(it.planqty)"
-                          class="circle"
-                        />
-                        <div v-else class="circleYellow" />
-                      </div>
-                    </div>
-                  </div>
 
-                </div>
+              </div>
+              <div style="height: 280px;">
+                <div id="all01" class="flex_c_c" style="width: 100%;height:100%;" />
               </div>
             </div>
-
           </div>
-          <div>
+          <div style="width: 850px;">
             <div class="smallTitle">
-              <svg-icon icon-class="cxmc" class="svg_class" />
-              浜х嚎鍔犲伐浠诲姟
+              <svg-icon icon-class="cggz" class="svg_class" />
+              閿�鍞鍗�(鏈�/瀛�)
             </div>
-            <div class="lineContent horn">
-              <el-table
-                ref="tableDataLeftBottomRef"
-                :data="tableDataLeftBottom"
-                class="tableData"
-                style="width: 100%;"
-                :header-cell-style="headerCellStyle"
-                :cell-style="cellStyle"
-                height="428"
-              >
-                <el-table-column
-                  prop="RowNum"
-                  label="搴忓彿"
-                  width="60"
-                />
+            <div
+              class="lineContent horn"
+              style="height: 450px;display: flex;flex-direction: column;justify-content: space-between"
+            >
+              <div style="height: 180px;padding: 10px;display: flex;justify-content: space-between">
 
-                <el-table-column
-                  prop="status"
-                  width="80"
-                  label="鐘舵��"
-                >
-                  <template slot-scope="{row}">
-                    <div v-if="row.status==='ALLO'">宸叉淳鍙�</div>
-                    <div v-if="row.status==='START'">寮�宸�</div>
-                    <div v-if="row.status==='NEW'">鏂板伐鍗�</div>
-                  </template>
-                </el-table-column>
-                <el-table-column
-                  prop="lm_date"
-                  label="娲惧彂鏃堕棿"
-                  width="120"
-                >
-                  <template slot-scope="{row}">
-                    <div>{{ row.lm_date.substring(0, 10) }}</div>
-                  </template>
-                </el-table-column>
-                <el-table-column
-                  prop="saleOrderCode"
-                  label="閿�鍞鍗曞彿"
-                  width="170"
-                >
-                  <template slot-scope="{row}">
-                    <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div>
-                    <div v-else>/</div>
-                  </template>
-                </el-table-column>
-                <el-table-column
-                  prop="wo_code"
-                  label="鍔犲伐鍗曞彿"
-                  width="190"
-                />
-                <el-table-column
-                  prop="partname"
-                  label="浜у搧鍚嶇О"
-                  width="350"
-                >
-                  <template slot-scope="{row}">
-                    <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div>
-                    <div v-else>/</div>
-                  </template>
-                </el-table-column>
-                <el-table-column
-                  prop="plan_qty"
-                  label="浠诲姟鏁伴噺"
-                  width="105"
-                />
-                <el-table-column
-                  prop="good_qty"
-                  label="瀹屽伐鏁伴噺"
-                  width="105"
-                />
-                <el-table-column
-                  prop="ng_qty"
-                  label="涓嶈壇鏁伴噺"
-                  width="105"
-                />
-                <el-table-column
-                  label="瀹屾垚鐜�"
-                  width="105"
-                >
-                  <template slot-scope="{row}">
-                    <div>{{ parseFloat((row.good_qty * 100 / row.plan_qty).toFixed(2)) }}%</div>
-                  </template>
-                </el-table-column>
-                <!--                <el-table-column-->
+                <div v-for="i in RightTopData01" :key="i.Quarter" class="flex_c_s">
+                  <div class="all_block03 flex_c_s">
+                    <div class="flex_c_c all_block04">{{ i.Quarter }}</div>
+                    <div class="" style="display: flex;justify-content:space-between">
+                      <div class="all_block04 flex_c_c" style="width: 49% ">浠诲姟鏁�</div>
+                      <div class="all_block04 flex_c_c" style="width: 49% ">{{ i.quantity }}</div>
+                    </div>
+                    <div class="" style="display: flex;justify-content:space-between">
+                      <div class="all_block04 flex_c_c" style="width: 49% ">鍑哄簱鏁�</div>
+                      <div class="all_block04 flex_c_c" style="width: 49% ">{{ i.ouquantity }}</div>
+                    </div>
+                  </div>
+                </div>
 
-                <!--                  label="棰勮寮�濮�"-->
-                <!--                  width="140"-->
-                <!--                >-->
-                <!--                  <template slot-scope="{row}">-->
-                <!--                    <div>{{ row.planstartdate.substring(0, 10) }}</div>-->
-                <!--                  </template>-->
-                <!--                </el-table-column>-->
-                <!--                <el-table-column-->
-                <!--                  prop=""-->
-                <!--                  label="棰勮缁撴潫"-->
-                <!--                  width="140"-->
-                <!--                >-->
-                <!--                  <template slot-scope="{row}">-->
-                <!--                    <div>{{ row.planenddate.substring(0, 10) }}</div>-->
-                <!--                  </template>-->
-                <!--                </el-table-column>-->
-              </el-table>
+              </div>
+              <div style="height: 260px;">
+                <div id="all02" class="flex_c_c" style="width: 100%;height:100%;" />
+              </div>
             </div>
-
           </div>
         </div>
-        <!--        鍙宠竟-->
-        <div style="width: 450px;height: 969px;" class="flex_c_b">
-          <div>
+        <!--        涓嬭竟-->
+        <div style="display: flex;justify-content: space-between;margin-top: 15px;">
+          <div style="width: 1000px;">
             <div class="smallTitle">
-              <svg-icon icon-class="drwg" class="svg_class" />
-              褰撴棩瀹屽伐浜у搧鏁伴噺鎺掕
+              <svg-icon icon-class="blcs" class="svg_class" />
+              璐ㄩ噺涓嶈壇(杩戜竴鍛�)
             </div>
-            <div class="lineContent horn">
-              <el-table
-                ref="tableDataRightTopRef"
-                :data="tableDataRightTop"
-                class="tableData"
-                style="width: 100%;"
-                :header-cell-style="headerCellStyle"
-                :cell-style="cellStyle"
-                height="428"
-              >
-                <el-table-column
-                  type="index"
-                  label="搴忓彿"
-                  width="60"
-                />
-                <el-table-column
-                  prop="linename"
-                  width="125"
-                  label="浜х嚎"
-                />
-                <el-table-column
-                  prop="partname"
-                  width="160"
-                  label="浜у搧"
-                >
-                  <template slot-scope="{row}">
-                    <div v-if="row.partname" class="ellipsis">{{ row.partname }}</div>
-                    <div v-else>/</div>
-                  </template>
-                </el-table-column>
-                <el-table-column
-                  prop="good_qty"
-                  label="鏁伴噺"
-                  width="90"
-                >
-                  <template slot-scope="{row}">
-                    <div>{{ parseFloat(row.good_qty) }}</div>
-                  </template>
-                </el-table-column>
-              </el-table>
-            </div>
+            <div class="lineContent horn" style="height: 380px;display: flex;justify-content: space-between">
+              <div id="cjzl03" class="flex_c_c" style="width: 100%;height:100%" />
 
+            </div>
           </div>
-          <div>
+          <div style="width: 850px;">
             <div class="smallTitle">
-              <svg-icon icon-class="top5" class="svg_class" />
-              涓�鍛ㄤ笉鑹疶op5
+              <svg-icon icon-class="ckkc" class="svg_class" />
+              浠撳簱搴撳瓨
             </div>
-            <div class="lineContent horn">
-              <div id="bar01" class="flex_c_c" style="width: 100%;height:100%" />
-            </div>
+            <div class="lineContent horn" style="height: 380px;display: flex;justify-content: space-between">
+              <div style="display: flex;justify-content: center;position: relative">
+                <div class="kb_center_block_children all_block05">
+                  <div style="font-size: 24px;">{{ parseFloat(RightBottom.Y) }}</div>
+                  <div class="box02" />
+                  <div>鍘熸潗鏂�</div>
+                </div>
+                <div class="kb_center_block_children all_block06">
+                  <div style="font-size: 24px;">{{ parseFloat(RightBottom.B) }}</div>
+                  <div class="box02" />
+                  <div>鍗婃垚鍝�</div>
+                </div>
+                <div class="kb_center_block_children all_block07">
+                  <div style="font-size: 24px;">{{ parseFloat(RightBottom.C) }}</div>
+                  <div class="box02" />
+                  <div>浜ф垚鍝�</div>
+                </div>
 
+              </div>
+            </div>
           </div>
         </div>
       </div>
@@ -282,228 +130,213 @@
 
 <script>
 import './kbCommon.css'
-import { bar02, kbTop, loadEcharts } from '@/utils/myEcharts'
+import { loadEcharts, all01, all02, cjzl03 } from '@/utils/myEcharts'
 import {
-  LineSearchBottomLeftData,
-  LineSearchBottomRightData,
-  LineSearchTopLeftData,
-  LineSearchTopRightData,
-  ShopSearch
+  WorkShopCompreLeftTop,
+  WorkShopCompreRightBottom,
+  WorkShopCompreRightTop,
+  WorkShopProduceBottomLeftData
 } from '@/api/kanbanManager'
-import { parseTime } from '@/utils'
+import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
 
 export default {
   name: 'Cjsc',
   data() {
     return {
-      onLine: navigator.onLine, // 鐩戝惉缃戠粶鏄惁鍦ㄧ嚎
-
       headTime: '',
       tableDataRightTop: [],
-      tableDataRightTopTemp: [],
-      tableDataLeftBottom: [],
-      tableDataLeftBottomTemp: [],
-      lineContent3: [],
-      ShopArr: [], // 杞﹂棿缂栫爜鏁扮粍
+      wkshopArr: [],
+      legendData: [],
 
-      starsCount: 800, // 鏄熸槦鏁伴噺
-      distance: 900 // 闂磋窛
+      LeftTopData01: [],
+      LeftTopData02: [],
+
+      RightTopData01: [],
+      RightTopData02: [],
+      cjzl03_xData: [],
+      cjzl03_yData: [],
+      RightBottom: {}
 
     }
   },
   created() {
     setInterval(this.getNowTime, 1000)
 
-    // 涓ゅ皬鏃剁湅鏉垮埛鏂颁竴娆�
+    // // 涓ゅ皬鏃剁湅鏉垮埛鏂颁竴娆�
     setInterval(() => {
       window.location.reload()
-    }, 1000 * 60 * 60 * 10)
+    }, 1000 * 60 * 120)
   },
   mounted() {
-    // 鐩戝惉缃戠粶鏄惁鍦ㄧ嚎
-    window.addEventListener('online', this.updateOnlineStatus)
-    window.addEventListener('offline', this.updateOnlineStatus)
-    this.updateOnlineStatus({ type: this.onLine ? 'online' : 'offline', isFirst: true })
-
-    this.getTopBar()
-
-    this.getShopSearch()
-    this.setStarsRef()
-  },
-  beforeDestroy() {
-    window.removeEventListener('online', this.updateOnlineStatus)
-    window.removeEventListener('offline', this.updateOnlineStatus)
+    this.getAllApi()
   },
   methods: {
-    // 鏇存柊缃戠粶鐘舵��
-    updateOnlineStatus(e) {
-      if (e.isFirst) {
-        // console.log('x')
-      } else {
-        const loading = this.$loading({
-          lock: true,
-          text: '鏂綉浜嗭紝姝e湪鎷煎懡鑱旂綉涓紝璇锋鏌ョ綉缁滄槸鍚︽甯�...',
-          spinner: 'el-icon-loading',
-          customClass: 'osloading',
-          background: 'rgba(0, 0, 0, 0.7)'
-        })
-        const { type } = e
-        this.onLine = type === 'online'
-        if (this.onLine) {
-          loading.close()
-          this.$message.success('缃戠粶杩炴帴鎴愬姛锛�')
-        } else {
-          this.$message.error('缃戠粶鎺夌嚎锛岃鍏虫敞缃戠粶鐘舵�侊紒')
+    async getAllApi() {
+      const res = await PrentOrganizationNoCompany()
+      this.wkshopArr = res.data
+
+      const temp = ['00401', '00402', '00501']
+
+      temp.forEach(i => {
+        const aa = this.wkshopArr.find(j => j.torg_code === i).torg_name
+        this.legendData.push(aa)
+      })
+
+      const res2 = await WorkShopCompreLeftTop({ wkshopcode: temp.join(',') })
+      for (const res2Key in res2.data.LeftTop) {
+        const data = {
+          good_qty: 0,
+          plan_qty: 0,
+          wkshp_code: '',
+          wkshp_name: ''
+        }
+        if (temp.includes(res2Key)) {
+          data.good_qty = res2.data.LeftTop[res2Key][0].good_qty
+          data.plan_qty = res2.data.LeftTop[res2Key][0].plan_qty
+          data.wkshp_code = res2.data.LeftTop[res2Key][0].wkshp_code
+          data.wkshp_name = this.wkshopArr.find(i => i.torg_code === data.wkshp_code).torg_name
+          this.LeftTopData01.push(data)
         }
       }
-    },
-    setStarsRef() {
-      const starNodes = Array.from(this.$refs.starsRef.children)
-      starNodes.forEach(item => {
-        const speed = 0.2 + Math.random() * 1
-        const thisDistance = this.distance + Math.random() * 300
-        item.style.transformOrigin = `0 0 ${thisDistance}px`
-        item.style.transform = `
-        translate3d(0,0,-${thisDistance}px)
-        rotateY(${Math.random() * 360}deg)
-        rotateX(${Math.random() * -50}deg)
-        scale(${speed},${speed})`
-      })
-    },
-    // 鑾峰彇杞﹂棿缂栫爜
-    async getShopSearch() {
-      const res1 = await ShopSearch()
-      if (res1.code === '200') {
-        this.ShopArr = []
-        res1.data.forEach(item => {
-          this.ShopArr.push(item.org_code)
-        })
-
-        if (this.ShopArr.length > 0) {
-          this.getShopSearchLine()
-          this.getRightRightData()
-          this.getLeftBottomData()
-          this.getEcharts()
+      for (const res2Key in res2.data.LeftBottom) {
+        const data = {
+          quantity: 0,
+          wkshp_code: '',
+          wkshp_name: ''
+        }
+        if (temp.includes(res2Key)) {
+          data.quantity = res2.data.LeftBottom[res2Key][0].quantity
+          data.plan_qty = res2.data.LeftBottom[res2Key][0].plan_qty
+          data.wkshp_code = res2.data.LeftBottom[res2Key][0].wkshp_code
+          data.wkshp_name = this.wkshopArr.find(i => i.torg_code === data.wkshp_code).torg_name
+          this.LeftTopData02.push(data)
         }
       }
-      if (this.ShopArr.length > 0) {
-        setInterval(() => {
-          this.ShopSearchTask = ShopSearch().then(res1 => {
-            if (res1.code === '200') {
-              this.ShopArr = []
-              res1.data.forEach(item => {
-                this.ShopArr.push(item.org_code)
-              })
-            }
-          })
-        }, 1000 * 60)
-      }
-    },
-    // 浜х嚎鍔犲伐涓换鍔�
-    getShopSearchLine() {
-      let length, count
-      LineSearchTopLeftData({ shopcode: this.ShopArr.join(',') }).then(res => {
-        this.lineContent = res.data
-        length = this.lineContent.length
-        count = Math.ceil(length / 3) // 闇�瑕佽疆鎾殑缁勬暟   3涓负涓�缁�
-        this.lineContent3 = this.lineContent.slice(0, 3)
-        this.number1 = this.lineContent.length
-      })
-
-      let start = 0
-      const timer = setInterval(() => {
-        if (Math.floor(start / 3) === count && count !== 0) {
-          start = 0
-          LineSearchTopLeftData({ shopcode: this.ShopArr.join(',') }).then(res => {
-            this.lineContent = res.data
-            length = this.lineContent.length
-            count = Math.ceil(length / 3) // 闇�瑕佽疆鎾殑缁勬暟   3涓负涓�缁�
-            this.lineContent3 = this.lineContent.slice(0, 3)
-
-            this.number1 = this.lineContent.length
-          })
-        } else if (count === 0) {
-          clearInterval(timer)
-          this.getShopSearchLine()
-        }
-        this.lineContent3 = this.lineContent.slice(start, start + 3)
-        start = start + 3
-      }, 1000 * 10)
-    },
-
-    // 鑾峰彇鍙充笂鏁版嵁 褰撴棩瀹屽伐浜у搧鏁伴噺鎺掕
-    getRightRightData() {
-      let startValue = 0 // 鍒濆鍊�
-      const scale = 10// 鍒诲害
-
-      LineSearchTopRightData({ shopcode: this.ShopArr.join(',') }).then(res => {
-        this.tableDataRightTopTemp = res.data
-
-        this.tableDataRightTop = this.tableDataRightTopTemp.slice(startValue, startValue + scale)
-
-        const loop = Math.floor(this.tableDataRightTopTemp.length / scale)// 闇�瑕佸惊鐜殑娆℃暟
-        let nowLoop = 0// 褰撳墠寰幆鐨勬鏁�
-
-        const timer = setInterval(() => {
-          startValue = startValue + scale
-          this.tableDataRightTop = this.tableDataRightTopTemp.slice(startValue, startValue + scale)
-          if (nowLoop === loop) {
-            clearInterval(timer)
-            this.getRightRightData()
-          }
-
-          nowLoop++
-        }, 1000 * 10)
-      })
-    },
-    // 浜х嚎鍔犲伐浠诲姟  宸︿笅鏁版嵁
-    getLeftBottomData() {
-      let startValue = 0 // 鍒濆鍊�
-      const scale = 10// 鍒诲害
-
-      LineSearchBottomLeftData({ shopcode: this.ShopArr.join(',') }).then(res => {
-        this.tableDataLeftBottomTemp = res.data
-        this.tableDataLeftBottom = this.tableDataLeftBottomTemp.slice(startValue, startValue + scale)
-
-        const loop = Math.floor(this.tableDataLeftBottomTemp.length / scale)// 闇�瑕佸惊鐜殑娆℃暟
-        let nowLoop = 0// 褰撳墠寰幆鐨勬鏁�
-
-        const timer = setInterval(() => {
-          startValue = startValue + scale
-          this.tableDataLeftBottom = this.tableDataLeftBottomTemp.slice(startValue, startValue + scale)
-          nowLoop++ // 鏀惧湪杩欓噷鍙互浜嗭紝灏辩瓑寰呴浂鐐瑰嚑绉�
-          if (nowLoop === loop) {
-            clearInterval(timer)
-            this.getLeftBottomData()
-          }
-
-          // nowLoop++ //涔嬪墠鏀惧湪杩欓噷閫昏緫涓嶅锛岀浉宸簡涓�娆$殑寰幆锛岀浉褰撲簬澶氱瓑寰呬簡10绉�
-        }, 1000 * 10)
-      })
-    },
-
-    getEcharts() {
-      let dataArr = [30, 20, 20, 18, 10]
-      let titlenameArr = ['棰滆壊', '灏哄', '姘斿懗', '姣涘埡', '瑁傜棔']
-      LineSearchBottomRightData({ shopcode: this.ShopArr.join(',') }).then(res => {
-        dataArr = res.data.map(i => i.cont)
-        titlenameArr = res.data.map(i => i.name)
-        loadEcharts('bar01', bar02(dataArr, titlenameArr))
-      })
+      loadEcharts('all01', all01(this.legendData, this.LeftTopData02))
 
       setInterval(() => {
-        LineSearchBottomRightData({ shopcode: this.ShopArr.join(',') }).then(res => {
-          dataArr = res.data.map(i => i.cont)
-          titlenameArr = res.data.map(i => i.name)
-          loadEcharts('bar01', bar02(dataArr, titlenameArr))
+        WorkShopCompreLeftTop({ wkshopcode: temp.join(',') }).then(res2 => {
+          this.LeftTopData01 = []
+          this.LeftTopData02 = []
+          for (const res2Key in res2.data.LeftTop) {
+            const data = {
+              good_qty: 0,
+              plan_qty: 0,
+              wkshp_code: '',
+              wkshp_name: ''
+            }
+            if (temp.includes(res2Key)) {
+              data.good_qty = res2.data.LeftTop[res2Key][0].good_qty
+              data.plan_qty = res2.data.LeftTop[res2Key][0].plan_qty
+              data.wkshp_code = res2.data.LeftTop[res2Key][0].wkshp_code
+              data.wkshp_name = this.wkshopArr.find(i => i.torg_code === data.wkshp_code).torg_name
+              this.LeftTopData01.push(data)
+            }
+          }
+          for (const res2Key in res2.data.LeftBottom) {
+            const data = {
+              quantity: 0,
+              wkshp_code: '',
+              wkshp_name: ''
+            }
+            if (temp.includes(res2Key)) {
+              data.quantity = res2.data.LeftBottom[res2Key][0].quantity
+              data.plan_qty = res2.data.LeftBottom[res2Key][0].plan_qty
+              data.wkshp_code = res2.data.LeftBottom[res2Key][0].wkshp_code
+              data.wkshp_name = this.wkshopArr.find(i => i.torg_code === data.wkshp_code).torg_name
+              this.LeftTopData02.push(data)
+            }
+          }
+          loadEcharts('all01', all01(this.legendData, this.LeftTopData02))
         })
-      }, 1000 * 10)
+      }, 1000 * 30)
+
+      const res3 = await WorkShopCompreRightTop()
+      res3.data.RightTop.forEach(i => {
+        this.RightTopData01.push({
+          Quarter: i.Quarter,
+          quantity: i.quantity,
+          ouquantity: i.ouquantity
+        })
+      })
+      res3.data.RightBottom.forEach(i => {
+        this.RightTopData02.push({
+          Month: i.Month + '鏈�',
+          quantity: i.quantity,
+          ouquantity: i.ouquantity
+        })
+      })
+      loadEcharts('all02', all02(this.RightTopData02))
+      setInterval(() => {
+        WorkShopCompreRightTop().then(res3 => {
+          this.RightTopData01 = []
+          this.RightTopData02 = []
+          res3.data.RightTop.forEach(i => {
+            this.RightTopData01.push({
+              Quarter: i.Quarter,
+              quantity: i.quantity,
+              ouquantity: i.ouquantity
+            })
+          })
+          res3.data.RightBottom.forEach(i => {
+            this.RightTopData02.push({
+              Month: i.Month + '鏈�',
+              quantity: i.quantity,
+              ouquantity: i.ouquantity
+            })
+          })
+          loadEcharts('all02', all02(this.RightTopData02))
+        })
+      }, 1000 * 40)
+
+      const res4 = await WorkShopProduceBottomLeftData({ wkshopcode: temp.join(',') })
+      this.cjzl03_xData = res4.data[temp[0]].map(i => i.click_date)
+      for (const res4Key in res4.data) {
+        if (temp.includes(res4Key)) {
+          const bb = res4.data[res4Key].map(i => i.count)
+          this.cjzl03_yData.push(bb)
+        }
+      }
+      loadEcharts('cjzl03', cjzl03(this.cjzl03_xData, this.legendData, this.cjzl03_yData, true))
+      setInterval(() => {
+        WorkShopProduceBottomLeftData({ wkshopcode: temp.join(',') }).then(res4 => {
+          this.cjzl03_yData = []
+
+          this.cjzl03_xData = res4.data[temp[0]].map(i => i.click_date)
+          for (const res4Key in res4.data) {
+            if (temp.includes(res4Key)) {
+              const bb = res4.data[res4Key].map(i => i.count)
+              this.cjzl03_yData.push(bb)
+            }
+          }
+          loadEcharts('cjzl03', cjzl03(this.cjzl03_xData, this.legendData, this.cjzl03_yData, true))
+        })
+      }, 1000 * 50)
+
+      const res5 = await WorkShopCompreRightBottom()
+      this.RightBottom = res5.data
+
+      setInterval(() => {
+        WorkShopCompreRightBottom().then(res5 => {
+          this.RightBottom = res5.data
+        })
+      }, 1000 * 60)
     },
-    // 鑾峰彇topEcharts
-    getTopBar() {
-      loadEcharts('topBarLeft', kbTop())
-      loadEcharts('topBarRight', kbTop())
+
+    // 鑾峰彇Echarts
+    getEcharts() {
+      // loadEcharts('cjzl01', cjzl01(this.cjzl01Data))
+
+      // loadEcharts('cjzl02_1', cjzl02(this.cjzl02_1Title, this.cjzl02_1Data))
+      // loadEcharts('cjzl02_2', cjzl02(this.cjzl02_2Title, this.cjzl02_2Data))
+      // loadEcharts('cjzl02_3', cjzl02(this.cjzl02_3Title, this.cjzl02_3Data))
+      // loadEcharts('cjzl02_4', cjzl02(this.cjzl02_4Title, this.cjzl02_4Data))
+      // loadEcharts('cjzl02_5', cjzl02(this.cjzl02_5Title, this.cjzl02_5Data))
+
+      // loadEcharts('cjzl04', cjzl04(this.legendData, this.cjzl04Data[0], this.cjzl04Data[1], this.cjzl04Data[2]))// 鍙充晶
+      // loadEcharts('cjzl03', cjzl03(this.cjzl03_xData, this.legendData, this.cjzl03_yData))// 宸︿晶
     },
+
     // 鑾峰彇褰撳墠鏃堕棿
     getNowTime() {
       const dt = new Date()
@@ -522,24 +355,25 @@
     },
     headerCellStyle() {
       return {
-        backgroundColor: '#000',
+        backgroundColor: 'transparent ',
         padding: '10px 0',
         textAlign: 'center',
         color: '#07acc2',
         border: 'none',
-        fontSize: '18px'
+        fontSize: '20px'
       }
     },
     cellStyle() {
       return {
         padding: '7px 0',
         textAlign: 'center',
-        backgroundColor: '#000',
-        color: '#fff',
+        backgroundColor: 'transparent ',
+        color: '#c7e7ff',
         border: 'none',
-        fontSize: '18px'
+        fontSize: '20px'
       }
     }
+
   }
 
 }
@@ -548,9 +382,8 @@
 <style lang="scss" scoped>
 $main_color: #09d8f2;
 $color01: #00FFFF;
-
 .tableData {
-  background: #000;
+  background: transparent;
 }
 
 .el-table::before {
@@ -561,139 +394,106 @@
   color: $main_color;
 }
 
-.kb_left_top_block {
+.tableDataCell {
+  ::v-deep .cell {
+    padding: 0 2px;
+  }
+}
+
+::v-deep .el-table__body-wrapper::-webkit-scrollbar {
+  /* width: 0;瀹藉害涓�0鏆楄棌 */
+  width: 0;
+  background: transparent;
+}
+
+::v-deep .el-table th,
+::v-deep .el-table tr,
+::v-deep .el-table td {
+  background-color: transparent;
+}
+
+.all_block01 {
+  width: 237px;
+  height: 180px;
+}
+
+.all_block02 {
   width: 100%;
-  height: 143px;
+  height: 49px;
+  background: rgba(9, 216, 242, 0.1);
+}
+
+.all_block03 {
+  width: 199px;
+  height: 180px;
+}
+
+.all_block04 {
+  width: 100%;
+  height: 49px;
+  background: rgba(9, 216, 242, 0.1);
+}
+
+.kb_center_block_children {
+  height: 180px;
+  //border: 1px solid $kbBorderColor;
+  width: 240px;
   display: flex;
-  font-size: 16px;
-  border-bottom: 1px solid $main_color;
-  justify-content: flex-start;
+  z-index: 2;
+  justify-content: space-around;
+  align-items: center;
+  flex-direction: column;
+  margin: 10px;
+  font-size: 22px;
 
-  .kb_block02 {
-    width: 304px;
-    display: flex;
-    align-items: center;
-    border-right: 1px solid $main_color;
-  }
+  .box02 {
+    background: url("../../assets/images/box02.png") no-repeat;
+    transform: scale(1.5);
+    width: 145px;
+    height: 84px;
 
-  .kb_block03 {
-    width: 1020px;
-    font-size: 16px;
-    display: flex;
-    flex-direction: column;
-    border-radius: 5px;
-
-    .kb_block03_content {
-      border: 1px solid $main_color;
-      width: 180px;
-      height: 80px;
-      margin-right: 15px;
-      display: flex;
-      flex-direction: column;
-
-      .content01 {
-        height: 30px;
-        width: 100%;
-        border-bottom: 1px solid $main_color;
-        display: flex;
-        align-items: center;
-        justify-content: center;
-      }
-
-      .content02Parent {
-        display: flex;
-
-        .content02 {
-          width: 60px;
-          border-right: 1px solid $main_color;
-
-          .content02_1 {
-            display: flex;
-            align-items: center;
-            justify-content: center;
-            height: 25px;
-          }
-
-          .content02_2 {
-            height: 25px;
-            display: flex;
-            align-items: center;
-            justify-content: center;
-          }
-
-          .borderTop {
-            border-top: 1px solid $main_color;
-          }
-        }
-      }
-
-    }
-  }
-
-  .kb_block03_02 {
-    margin-top: 15px;
-    display: flex;
-
-    .kb_block03_02_content {
-      width: 180px;
-      margin-right: 15px;
-
-      .content01 {
-        .circle {
-          width: 26px;
-          height: 26px;
-          background-color: #00ff8b;
-          border-radius: 50%;
-        }
-      }
-    }
   }
 }
 
-.kb_left_top_block:nth-child(3n) {
-  border-bottom: none !important;
+.all_block05 {
+  position: absolute;
+  animation: upDown 3s ease-in-out infinite;
+  left: 60px;
 }
 
-.circleYellow {
-  width: 26px;
-  height: 26px;
-  background-color: rgb(255 255 0);
-  border-radius: 50%;
+.all_block06 {
+  position: absolute;
+  animation: upDown2 3s ease-in-out infinite;
+  left: 290px;
 }
 
-</style>
+.all_block07 {
+  position: absolute;
+  animation: upDown 3s ease-in-out infinite;
+  left: 520px;
+}
 
-<!--鏄熺┖-->
-<style lang="css" scoped>
-@keyframes rotate {
+@keyframes upDown {
   0% {
-    transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(0);
+    top: 50px;
+  }
+  50% {
+    top: 100px;
   }
   100% {
-    transform: perspective(400px) rotateZ(20deg) rotateX(-40deg) rotateY(-360deg);
+    top: 50px;
   }
 }
 
-.stars {
-  transform: perspective(500px);
-  transform-style: preserve-3d;
-  position: absolute;
-  perspective-origin: 50% 100%;
-  left: 45%;
-  animation: rotate 90s infinite linear;
-  bottom: 0;
-  z-index: 102;
-}
-
-.star {
-  width: 2px;
-  height: 2px;
-  /*background: #f7f7b6;*/
-  background: #8edffc;
-  position: absolute;
-  left: 0;
-  top: 0;
-  backface-visibility: hidden;
-  z-index: 102;
+@keyframes upDown2 {
+  0% {
+    top: 100px;
+  }
+  50% {
+    top: 50px;
+  }
+  100% {
+    top: 100px;
+  }
 }
 </style>
diff --git a/src/views/materialManager/inventoryList.vue b/src/views/materialManager/inventoryList.vue
index 7d4a5d4..30808b4 100644
--- a/src/views/materialManager/inventoryList.vue
+++ b/src/views/materialManager/inventoryList.vue
@@ -61,8 +61,12 @@
         <div
           style=" width:calc(100% - 300px);"
         >
-          <div class="bodyTopButtonGroup">
+          <div class="bodyTopButtonGroup" style="justify-content: space-between">
             <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+            <div style="display: flex">
+              <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=8')">瀵煎叆</el-button>
+              <el-button v-waves icon="el-icon-refresh-right" @click="syncERP">鍚屾瀛樿揣妗f</el-button>
+            </div>
           </div>
 
           <div class="bodyTopFormGroup">
@@ -160,8 +164,9 @@
               <el-table-column
                 prop="partname"
                 label="瀛樿揣鍚嶇О"
-                width="110"
                 sortable="custom"
+                show-tooltip-when-overflow
+                min-width="200"
               />
               <el-table-column
                 prop="partspec"
@@ -199,7 +204,6 @@
                   <el-tag v-if="row.status==='1'" size="small" type="danger">鍋滅敤</el-tag>
                 </template>
               </el-table-column>
-
               <el-table-column
                 label="瀛樿揣灞炴��"
                 sortable="custom"
@@ -213,12 +217,12 @@
                   {{ row.isMadeRequest === '1' ? '濮斿' : '' }}
                 </template>
               </el-table-column>
-              <el-table-column
-                label="鏁版嵁鏉ユ簮"
-                prop="data_sources"
-                sortable="custom"
-                width="110"
-              />
+              <!--              <el-table-column-->
+              <!--                label="鏁版嵁鏉ユ簮"-->
+              <!--                prop="data_sources"-->
+              <!--                sortable="custom"-->
+              <!--                width="110"-->
+              <!--              />-->
               <el-table-column
                 label="鍒涘缓浜哄憳"
                 prop="lm_user"
@@ -571,7 +575,8 @@
   TMaterielData, TMaterielDelete
 } from '@/api/ProductModel'
 import arrayToTree from 'array-to-tree'
-import { UnitSerch } from '@/api/GeneralBasicData'
+import { UnitSerch, WareHouse } from '@/api/GeneralBasicData'
+import { SaveSearchMateriel_Info } from '@/api/ErpSyncMes'
 
 export default {
   name: 'RoleList',
@@ -697,13 +702,20 @@
 
       const { data: res2 } = await UnitSerch({ tunittype: 'S' })
       this.unitcodeSingleArr = res2
+
+      const { data: res3 } = await WareHouse()
+      this.idwarehouseArr = res3
     },
+
     async getTMaterielClassTree() {
       const res = await TMaterielClassTree()
       res.data.forEach(i => {
         i.idparent = i.idparent ? i.idparent : '-1'
       })
       this.treeLeftArr = res.data
+      this.treeLeftArr.forEach(e => {
+        e.name = e.code + ' ' + e.name
+      })
       this.treeLeft = arrayToTree(this.treeLeft.concat(res.data), {
         parentProperty: 'idparent',
         customID: 'code',
@@ -863,6 +875,9 @@
     dialogVisibleConfirm() {
       this.$refs.dialogForm.validate(valid => {
         if (valid) {
+          if (!(this.dialogForm.isPurchase || this.dialogForm.isSale || this.dialogForm.isMadeSelf || this.dialogForm.isMaterial || this.dialogForm.isMadeRequest)) {
+            return this.$message.info('瀛樿揣灞炴�т笉鑳戒负绌猴紒')
+          }
           this.dialogForm.isPurchase = this.dialogForm.isPurchase ? '1' : '0'
           this.dialogForm.isSale = this.dialogForm.isSale ? '1' : '0'
           this.dialogForm.isMadeSelf = this.dialogForm.isMadeSelf ? '1' : '0'
@@ -906,7 +921,7 @@
     treeEditClick(node, data, operation) {
       this.dialogClassForm.data_sources = data.data_sources
       this.dialogClassForm.inventoryclasscode = data.code
-      this.dialogClassForm.inventoryclassname = data.name
+      this.dialogClassForm.inventoryclassname = data.name.split(' ')[1]
       this.dialogClassForm.parentcode = data.idparent === '-1' ? '' : data.idparent
       this.dialogClassForm.OperType = 'Update'
       this.operation = operation
@@ -1008,6 +1023,35 @@
         this.dialogForm.idUnitBySale = mainUnitCode
         this.dialogForm.idunitbymanufacture = mainUnitCode
       }
+    },
+    // 鍚屾ERP
+    syncERP() {
+      const loading = this.$loading({
+        lock: true,
+        text: '姝e湪鍚屾ERP锛岃绋嶇瓑...',
+        spinner: 'el-icon-loading',
+        customClass: 'osloading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+
+      SaveSearchMateriel_Info().then(res => {
+        if (res.code === '200') {
+          setTimeout(() => {
+            this.getTMaterielData(this.$refs.treeLeftRef.getCurrentNode())
+            this.getTMaterielClassTree()
+            loading.close()
+            this.$notify.success('鍚屾鎴愬姛锛�')
+          }, 2000)
+        }
+        // else if (res.code === '300') {
+        //   setTimeout(() => {
+        //     loading.close()
+        //     this.$message.error('鍚屾澶辫触锛�')
+        //   }, 10000)
+        // }
+      }).catch(e => {
+        loading.close()
+      })
     }
   }
 }
diff --git a/src/views/materialManager/unitList.vue b/src/views/materialManager/unitList.vue
index 0f7fe94..4c0b0a7 100644
--- a/src/views/materialManager/unitList.vue
+++ b/src/views/materialManager/unitList.vue
@@ -93,11 +93,11 @@
                 sortable="custom"
               />
 
-              <el-table-column
-                prop="data_sources"
-                label="鏁版嵁鏉ユ簮"
-                sortable="custom"
-              />
+              <!--              <el-table-column-->
+              <!--                prop="data_sources"-->
+              <!--                label="鏁版嵁鏉ユ簮"-->
+              <!--                sortable="custom"-->
+              <!--              />-->
               <el-table-column
                 prop="lm_user"
                 label="鍒涘缓浜哄憳"
@@ -143,7 +143,7 @@
             align="right"
             layout="total,prev, pager, next,sizes,jumper"
             popper-class="select_bottom"
-            @pagination="getTUnitGroup"
+            @pagination="getTUnitData"
           />
         </div>
 
diff --git a/src/views/mouldManager/mouldCheck.vue b/src/views/mouldManager/mouldCheck.vue
new file mode 100644
index 0000000..3a38454
--- /dev/null
+++ b/src/views/mouldManager/mouldCheck.vue
@@ -0,0 +1,450 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=13')">瀵煎叆</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="閮ㄤ綅缂栫爜" style=" display: flex;">
+              <el-input v-model="form.checkitemcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="閮ㄤ綅鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.checkitemname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鐐规鎻忚堪" style=" display: flex;">
+              <el-input v-model="form.checkdescr" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+          style="height:5px"
+        >
+          <!--          <svg-icon-->
+          <!--            v-show="mouseHoverType==='mouseout'"-->
+          <!--            style="cursor: pointer"-->
+          <!--            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"-->
+          <!--            @mouseenter="mouseHoverType=$event.type"-->
+          <!--          />-->
+          <!--          <svg-icon-->
+          <!--            v-show="mouseHoverType==='mouseenter'"-->
+          <!--            style="cursor: pointer"-->
+          <!--            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"-->
+          <!--            @click="isExpandForm=!isExpandForm"-->
+          <!--            @mouseout="mouseHoverType=$event.type"-->
+          <!--          />-->
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <el-table
+          ref="tableDataRef"
+          :key="tableTimeStampKey"
+          :data="tableData"
+          :height="isExpandForm?tableHeight:(tableHeight+40)+'px'"
+          border
+          class="tableFixed"
+          :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
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :key="item.id"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+              <div v-else>{{ row[item.prop] }}</div>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鎿嶄綔"
+            fixed="right"
+            width="120"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top">
+                  <i :style="{color:$store.state.settings.theme}" 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 :style="{color:$store.state.settings.theme}" 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="getMouldCheckItemSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-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="checkitemcode">
+          <el-input v-model="dialogForm.checkitemcode" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="閮ㄤ綅鍚嶇О" prop="checkitemname">
+          <el-input v-model="dialogForm.checkitemname" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="鐐规鎻忚堪" prop="checkitemdescr">
+          <el-input v-model="dialogForm.checkitemdescr" type="textarea" style="width: 200px" />
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--瀵煎叆缁勪欢-->
+    <import-picker
+      ref="importPickerFunc"
+      class="importPickerClass"
+      :shows.sync="shows"
+      :title="title_value"
+      :colos="colos"
+      :code="code"
+    />
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import ImportPicker from '@/components/ImportPicker'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import TableColumnSettings from '@/components/TableColumnSettings'
+import { AddUpdateMouldCheckItem, DeleteMouldCheckItem, MouldCheckItemSearch } from '@/api/MouldManager'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, ImportPicker, TableColumnSettings
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        checkitemcode: '', // 閮ㄤ綅缂栫爜
+        checkitemname: '', // 閮ㄤ綅鍚嶇О
+        checkdescr: '', // 鐐规鎻忚堪
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+
+      total: 10,
+      tableData: [],
+      tableColumnSettingsArray: [
+        { minWidth: false, width: 55, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: false, width: 55, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'code',
+          label: '閮ㄤ綅缂栫爜',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'name',
+          label: '閮ㄤ綅鍚嶇О',
+          id: 4,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 330,
+          width: false,
+          prop: 'description',
+          label: '鐐规鎻忚堪',
+          id: 5,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        // {
+        //   minWidth: false,
+        //   width: 110,
+        //   prop: 'isscan',
+        //   label: '閫夋嫨鎵爜',
+        //   id: 6,
+        //   show: true,
+        //   fixed: false,
+        //   sortable: true
+        // },
+        // {
+        //   minWidth: false,
+        //   width: 110,
+        //   prop: 'cycle',
+        //   label: '鐐规鍛ㄦ湡',
+        //   id: 7,
+        //   show: true,
+        //   fixed: false,
+        //   sortable: true
+        // },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'lm_user',
+          label: '鍒涘缓浜哄憳',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 160,
+          prop: 'lm_date',
+          label: '鍒涘缓鏃堕棿',
+          id: 9,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+
+      dialogVisible: false,
+      dialogForm: {
+        id: '',
+        checkitemcode: '', // 璁惧鐐规閮ㄤ綅缂栫爜
+        checkitemname: '', // 璁惧鐐规閮ㄤ綅鍚嶇О
+        checkitemdescr: '', // 璁惧鐐规閮ㄤ綅瑕佹眰
+        operType: '' // 鎿嶄綔绫诲瀷
+      },
+      operation: '',
+      dialogFormRules: {
+        checkitemcode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        checkitemname: [
+          { required: true, message: '璇疯緭鍏ラ儴浣嶅悕绉�', trigger: ['blur', 'change'] }
+        ]
+      },
+
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '10',
+      shows: false
+
+    }
+  },
+
+  created() {
+    this.getMouldCheckItemSearch()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+      this.$refs.tableDataRef.doLayout()
+    },
+    async getMouldCheckItemSearch() {
+      const res = await MouldCheckItemSearch(this.form)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getMouldCheckItemSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getMouldCheckItemSearch()
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.checkitemcode = ''
+      this.form.checkitemname = ''
+      this.form.checkdescr = ''
+      this.getMouldCheckItemSearch()
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 淇敼鎸夐挳
+    edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      this.$nextTick(() => {
+        this.dialogForm.id = row.id
+        this.dialogForm.checkitemcode = row.code
+        this.dialogForm.checkitemname = row.name
+        this.dialogForm.checkitemdescr = row.description
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        DeleteMouldCheckItem({ checkitemcode: row.code }).then(res => {
+          if (res.code === '200') {
+            this.$message.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getMouldCheckItemSearch()
+          }
+        })
+      }).catch(() => {
+        this.$message.info('宸插彇娑堝垹闄�')
+      })
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.id = ''
+      this.dialogForm.checkitemcode = ''
+      this.dialogForm.checkitemname = ''
+      this.dialogForm.checkitemdescr = ''
+      this.dialogForm.cycle = 'D'
+      this.dialogForm.isqrcode = 'N'
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          this.$store.state.app.buttonIsDisabled = true
+          const data = {
+            id: this.dialogForm.id,
+            checkitemcode: this.dialogForm.checkitemcode,
+            checkitemname: this.dialogForm.checkitemname,
+            checkitemdescr: this.dialogForm.checkitemdescr,
+            opertype: this.operation === 'add' ? 'Add' : 'Update'
+          }
+          AddUpdateMouldCheckItem(data).then(res => {
+            if (res.code === '200') {
+              this.dialogVisible = false
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.getMouldCheckItemSearch()
+              this.$store.state.app.buttonIsDisabled = false
+            } else {
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 240
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    }
+  }
+}
+</script>
+
diff --git a/src/views/mouldManager/mouldCheckRecord.vue b/src/views/mouldManager/mouldCheckRecord.vue
new file mode 100644
index 0000000..97d5e4e
--- /dev/null
+++ b/src/views/mouldManager/mouldCheckRecord.vue
@@ -0,0 +1,488 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="妯″叿缂栫爜" style=" display: flex;">
+              <el-input v-model="form.mouldcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="妯″叿鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.mouldname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="瑙勬牸鍨嬪彿" style=" display: flex;">
+              <el-input v-model="form.mouldspec" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item label="鐐规鏍囧噯缂栫爜" style=" display: flex;">
+              <el-input v-model="form.stanedcode" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鐐规鏍囧噯鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.stanedname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鐐规浜哄憳" style=" display: flex;">
+              <el-input v-model="form.checkuser" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item
+              v-show="isExpandForm"
+              style="display: flex;align-items: center"
+              label="鐐规鏃堕棿"
+            >
+              <el-date-picker
+                v-model="form.checkdate"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+              <!--              font-size: 14px!important;-->
+              <!--              :picker-options="expireTimeOption"-->
+
+            </el-form-item>
+
+            <el-form-item v-show="isExpandForm" label="鐐规缁撴灉" style=" display: flex;">
+              <el-select v-model="form.checkrequest" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in checkrequestArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :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
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="djwo"
+            label="鐐规鍗曞彿"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="mould_code"
+            label="妯″叿缂栫爜"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="mould_name"
+            label="妯″叿鍚嶇О"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="mould_spec"
+            label="浜у搧瑙勬牸"
+            show-tooltip-when-overflow
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.mould_spec">{{ row.mould_spec }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="stanedcode"
+            label="鐐规鏍囧噯缂栫爜"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="stanedname"
+            label="鐐规鏍囧噯鍚嶇О"
+            sortable="custom"
+          />
+
+          <el-table-column
+            prop="chk_user"
+            label="鐐规浜哄憳"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="chk_result"
+            label="鐐规缁撴灉"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <el-tag v-if="row.chk_result==='OK'" size="small" type="success">鍚堟牸</el-tag>
+              <el-tag v-if="row.chk_result==='NG'" size="small" type="danger">寮傚父</el-tag>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="chk_date"
+            label="鐐规鏃堕棿"
+            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="{color:$store.state.settings.theme}"
+                    style="cursor: pointer;margin-right: 15px"
+                    @click="edit(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="getMouldCheckTakeSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      title="鏄庣粏"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div class="elTableDiv" style="margin-top: 0">
+        <el-table
+          :data="tableDataDialog"
+          :height="500+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:500+'px'}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <el-table-column
+            prop="seq"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="itemcode"
+            label="閮ㄤ綅缂栫爜"
+          />
+          <el-table-column
+            prop="itemname"
+            label="閮ㄤ綅鍚嶇О"
+          />
+          <el-table-column
+            prop="result"
+            label="鐐规缁撴灉"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.result==='OK'" style="display: flex;align-items: center">
+                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                姝e父
+              </div>
+              <div v-if="row.result==='NG'" style="display: flex;align-items: center">
+                <i class="el-icon-info" style="margin-right: 2px" />
+                寮傚父
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="chk_value"
+            label="鏁板��"
+          >
+            <template slot-scope="{row}">
+              {{ row.chk_value ? row.chk_value : '/' }}
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            prop="remark"-->
+          <!--            label="澶囨敞"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--          />-->
+        </el-table>
+      </div>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import { MouldCheckSubTakeSearch, MouldCheckTakeOutExcel, MouldCheckTakeSearch } from '@/api/MouldManager'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        mouldcode: '',
+        mouldname: '',
+        mouldspec: '',
+        stanedcode: '',
+        stanedname: '',
+        checkuser: '',
+        checkrequest: '',
+        checkdate: '',
+        prop: 'chk_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      checkrequestArr: [
+        { code: 'OK', name: '鍚堟牸' },
+        { code: 'NG', name: '寮傚父' }
+      ],
+      total: 10,
+      tableData: [],
+      dialogVisible: false,
+      tableDataDialog: []
+
+    }
+  },
+
+  created() {
+    this.getMouldCheckTakeSearch()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    async getMouldCheckTakeSearch() {
+      let tempDate = this.form.checkdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        mouldcode: this.form.mouldcode,
+        mouldname: this.form.mouldname,
+        mouldspec: this.form.mouldspec,
+        stanedcode: this.form.stanedcode,
+        stanedname: this.form.stanedname,
+        checkuser: this.form.checkuser,
+        checkrequest: this.form.checkrequest,
+        checkdate: tempDate,
+        prop: this.form.prop,
+        order: this.form.order,
+        page: this.form.page,
+        rows: this.form.rows
+
+      }
+      console.log(data, 1)
+      const res = await MouldCheckTakeSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getMouldCheckTakeSearch()
+    },
+    async download() {
+      let tempDate = this.form.checkdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        mouldcode: this.form.mouldcode,
+        mouldname: this.form.mouldname,
+        mouldspec: this.form.mouldspec,
+        stanedcode: this.form.stanedcode,
+        stanedname: this.form.stanedname,
+        checkuser: this.form.checkuser,
+        checkrequest: this.form.checkrequest,
+        checkdate: tempDate
+      }
+
+      const { data: res } = await MouldCheckTakeOutExcel(data)
+      window.location.href = res
+    },
+    // 鏌ヨ
+    search() {
+      this.getMouldCheckTakeSearch()
+    },
+
+    // 閲嶇疆
+    reset() {
+      this.form.mouldcode = ''
+      this.form.mouldname = ''
+      this.form.mouldspec = ''
+      this.form.stanedcode = ''
+      this.form.stanedname = ''
+      this.form.checkuser = ''
+      this.form.checkrequest = ''
+      this.form.checkdate = ''
+      this.getMouldCheckTakeSearch()
+    },
+
+    // 淇敼鎸夐挳
+    async edit(row) {
+      this.dialogVisible = true
+
+      const { data: res } = await MouldCheckSubTakeSearch({ id: row.id })
+      this.tableDataDialog = res
+
+      // this.$nextTick(() => {
+      //   this.dialogForm.OrgCode = row.org_code
+      //   this.dialogForm.OrgName = row.org_name
+      //   this.dialogForm.SupUnit = row.parent_id
+      // })
+    },
+
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.tableDataDialog = []
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::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;
+}
+
+::v-deep .el-progress-bar__innerText {
+  display: none !important;
+}
+</style>
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/mouldManager/mouldCheckStand.vue b/src/views/mouldManager/mouldCheckStand.vue
new file mode 100644
index 0000000..a560f00
--- /dev/null
+++ b/src/views/mouldManager/mouldCheckStand.vue
@@ -0,0 +1,713 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=13_1')">瀵煎叆</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="鏍囧噯缂栫爜" style=" display: flex;">
+              <el-input v-model="form.checkstandcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鏍囧噯鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.checkstandname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鏍囧噯鎻忚堪" style=" display: flex;">
+              <el-input v-model="form.checkstandescr" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+
+        <div
+          class="bodyTopFormExpand"
+          style="height:5px"
+        />
+      </div>
+
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <el-table
+          ref="tableDataRef"
+          :key="tableTimeStampKey"
+          :data="tableData"
+          :height="tableHeight+'px'"
+          border
+          class="tableFixed"
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:tableHeight+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+
+          <el-table-column
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :key="item.id"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+              <div v-else-if="item.prop==='is_checkmould'">
+                <i
+                  v-if="row[item.prop]==='Y'"
+                  :style="{color:$store.state.settings.theme}"
+                  class="el-icon-share"
+                  style="cursor: pointer"
+                  @click="connectClick(row)"
+                />
+                <i
+                  v-if="row[item.prop]==='N'"
+                  class="el-icon-share"
+                  style="color: rgb(180 ,181, 185);cursor:pointer;"
+                  @click="connectClick(row)"
+                />
+              </div>
+              <div v-else>{{ row[item.prop] }}</div>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鎿嶄綔"
+            fixed="right"
+            width="120"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top">
+                  <i
+                    :style="{color:$store.state.settings.theme}"
+                    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 :style="{color:$store.state.settings.theme}" 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="getDeviceCheckStandArdSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'缂栬緫'"
+      :visible.sync="dialogVisible"
+      width="1100px"
+      :close-on-click-modal="false"
+      top="8vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div style="margin: 0 30px;">
+        <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="80px">
+          <el-divider content-position="left">妯″叿鐐规鏍囧噯淇℃伅</el-divider>
+
+          <el-form-item label="鏍囧噯缂栫爜" prop="code">
+            <el-input v-model="dialogForm.code" :disabled="operation!=='add'" style="width: 200px" />
+          </el-form-item>
+          <el-form-item label="鏍囧噯鍚嶇О" prop="name">
+            <el-input v-model="dialogForm.name" style="width: 200px" />
+          </el-form-item>
+          <el-form-item label="鏍囧噯鎻忚堪" prop="description">
+            <el-input v-model="dialogForm.description" type="textarea" style="width: 200px" />
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-divider content-position="left">鎸囧畾鐐规椤逛俊鎭�</el-divider>
+      <div style="display: flex;align-items: center">
+        <!--        <div style="font-weight: bolder">鐐规椤归�夋嫨锛�</div>-->
+        <el-drag-select
+          v-model="checkSelectedValue"
+          style="width:940px;"
+          multiple
+          placeholder="璇烽�夋嫨鐩稿搴旀寚瀹氶」"
+        >
+          <el-option
+            v-for="item in checkSelectArr"
+            :key="item.code"
+            :label="item.name"
+            :value="item.code"
+          />
+        </el-drag-select>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataDialogRef"
+          :data="tableDataDialog"
+          :height="(tableHeight-300)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:(tableHeight-300)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+        >
+          <el-table-column
+            type="index"
+            width="50"
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="code"
+            width="150"
+            label="鐐规閮ㄤ綅缂栫爜"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="name"
+            label="鐐规閮ㄤ綅鍚嶇О"
+            width="150"
+            show-tooltip-when-overflow
+          />
+
+          <el-table-column
+            prop="description"
+            label="鐐规瑕佹眰"
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <el-input v-model="row.description" />
+            </template>
+          </el-table-column>
+
+        </el-table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <el-dialog
+      v-el-drag-dialog
+      title="鍏宠仈妯″叿"
+      :visible.sync="mouldDialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="8vh"
+      @closed="handleMouldClose"
+      @close="handleMouldClose"
+    >
+      <div>
+        <el-input
+          v-model="filterText"
+          placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�"
+        />
+        <el-tree
+          ref="tree"
+          class="filter-tree"
+          :data="tree"
+          :props="defaultProps"
+          show-checkbox
+          node-key="code"
+          style="margin-top:15px;height: 550px;overflow: auto"
+          default-expand-all
+          :filter-node-method="filterNode"
+        />
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="mouldDialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="mouldDialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import TableColumnSettings from '@/components/TableColumnSettings'
+import {
+  AddUpdateMouldCheckStandArd, CheckStanedAssociationMould,
+  DeleteMouldCheckStaned,
+  DeviceCheckStandArdSearch, SaveCheckStanedAssociationMould,
+  ViewMouldCheckStanedSearch
+} from '@/api/MouldManager'
+import ElDragSelect from '@/components/DragSelect'
+import { MouldCheckItemSelect } from '@/api/GeneralBasicData'
+import arrayToTree from 'array-to-tree'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, TableColumnSettings, ElDragSelect
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        checkstandcode: '', // 鏍囧噯缂栫爜
+        checkstandname: '', // 鏍囧噯鍚嶇О
+        checkstandescr: '', // 鐐规绠℃帶
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      checkcontrArr: [
+        { code: 'Y', name: '鏄�' },
+        { code: 'N', name: '鍚�' }
+      ],
+      cycleArr: [
+        { code: 'D', name: '鏃�' }
+      ],
+      total: 10,
+      tableData: [],
+      tableColumnSettingsArray: [
+        { minWidth: false, width: 55, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: false, width: 55, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'code',
+          label: '鏍囧噯缂栫爜',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'name',
+          label: '鏍囧噯鍚嶇О',
+          id: 4,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 330,
+          width: false,
+          prop: 'description',
+          label: '鏍囧噯鎻忚堪',
+          id: 5,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'is_checkmould',
+          label: '鍏宠仈妯″叿',
+          id: 6,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        // {
+        //   minWidth: false,
+        //   width: 110,
+        //   prop: 'is_checkeqp',
+        //   label: '鍏宠仈璁惧',
+        //   id: 7,
+        //   show: true,
+        //   fixed: false,
+        //   sortable: true
+        // },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'lm_user',
+          label: '鍒涘缓浜哄憳',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 160,
+          prop: 'lm_date',
+          label: '鍒涘缓鏃堕棿',
+          id: 9,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+
+      dialogVisible: false,
+      dialogForm: {
+        code: '',
+        name: '',
+        description: ''
+      },
+      operation: '',
+      dialogFormRules: {
+        code: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        name: [
+          { required: true, message: '璇疯緭鍏ユ爣鍑嗗悕绉�', trigger: ['blur', 'change'] }
+        ]
+
+      },
+      tableDataDialog: [], // 琛ㄦ牸鏁版嵁
+
+      checkSelectedValue: [],
+      checkSelectArr: [],
+
+      mouldDialogVisible: false,
+      tree: [
+        {
+          code: '-1',
+          name: '鍏ㄩ儴'
+        }
+      ],
+      filterText: '',
+      defaultProps: {
+        children: 'children',
+        label: 'name'
+      },
+      checkstand_code: ''
+
+    }
+  },
+  watch: {
+    filterText(val) {
+      this.$refs.tree.filter(val)
+    },
+    'checkSelectedValue': {
+      handler: function(val) {
+        const arr = JSON.parse(JSON.stringify(this.tableDataDialog))
+        const arrCheckcode = arr.map(i => i.code)
+        this.tableDataDialog = []
+        val.forEach(i => {
+          this.tableDataDialog.push(
+            {
+              code: i,
+              name: this.checkSelectArr.find(j => j.code === i).name,
+              description: arrCheckcode.includes(i) ? arr.find(j => j.code === i).description : this.checkSelectArr.find(j => j.code === i).description
+            }
+          )
+        })
+      }
+    }
+  },
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+
+      this.$refs.tableDataRef.doLayout()
+    },
+    handleRequest() {
+      this.getDeviceCheckStandArdSearch().then(res => {
+        if (res.code === '200') {
+          this.getMouldCheckItemSelect()
+        }
+      })
+    },
+    async getDeviceCheckStandArdSearch() {
+      const res = await DeviceCheckStandArdSearch(this.form)
+      this.tableData = res.data
+      this.total = res.count
+      return { code: res.code }
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getDeviceCheckStandArdSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getDeviceCheckStandArdSearch()
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.checkstandcode = ''
+      this.form.checkstandname = ''
+      this.form.checkstandescr = ''
+      this.getDeviceCheckStandArdSearch()
+    },
+
+    async getMouldCheckItemSelect() {
+      const { data: res } = await MouldCheckItemSelect()
+      this.checkSelectArr = res
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+      this.$nextTick(() => {
+        this.$refs.tableDataDialogRef.doLayout()
+      })
+    },
+    // 淇敼鎸夐挳
+    edit(operation, row) {
+      this.operation = operation
+      this.getViewDeviceCheckStanedSearch(row.code)
+      this.dialogVisible = true
+      this.$nextTick(() => {
+        this.$refs.tableDataDialogRef.doLayout()
+      })
+    },
+    // 淇敼鍓嶈姹傛帴鍙�
+    async getViewDeviceCheckStanedSearch(checkstand_code) {
+      const { data: res } = await ViewMouldCheckStanedSearch({ checkstand_code })
+      this.tableDataDialog = res.data
+      this.checkSelectedValue = res.data.map(i => i.code)
+
+      this.dialogForm.code = res.code
+      this.dialogForm.name = res.name
+      this.dialogForm.description = res.description
+
+      this.tableDataDialog.forEach(item => {
+        item.description = item.chkdesc
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        DeleteMouldCheckStaned({ checkstand_code: row.code }).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getDeviceCheckStandArdSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.code = ''
+      this.dialogForm.name = ''
+      this.dialogForm.description = ''
+      this.tableDataDialog = []
+      this.checkSelectedValue = []
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          if (this.tableDataDialog.length === 0) {
+            return this.$message.info('鐐规椤逛俊鎭笉鑳戒负绌猴紒')
+          }
+
+          const Data = []
+          this.tableDataDialog.forEach((i, index) => {
+            Data.push({
+              checkitem_seq: index + 1,
+              checkitem_code: i.code,
+              checkitem_name: i.name,
+              checkitem_descr: i.description,
+              cycle: '',
+              isscan: ''
+            })
+          })
+          const data = {
+            'code': this.dialogForm.code,
+            'name': this.dialogForm.name,
+            'description': this.dialogForm.description,
+            'Data': Data
+          }
+
+          this.$store.state.app.buttonIsDisabled = true
+          AddUpdateMouldCheckStandArd(data, this.operation === 'add' ? 'Add' : 'Update').then(res => {
+            if (res.code === '200') {
+              this.dialogVisible = false
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.getDeviceCheckStandArdSearch()
+              // this.getMouldCheckItemSelect()
+              this.$store.state.app.buttonIsDisabled = false
+            } else {
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+
+    // 鍏宠仈妯″叿鐐瑰嚮
+    async connectClick(row) {
+      const { data: res } = await CheckStanedAssociationMould({ checkstand_code: row.code })
+      this.checkstand_code = row.code
+
+      const keySelected = []
+      res.forEach(i => {
+        i.parentid = '-1'
+        i.name = i.code + ' / ' + i.name
+
+        if (i.flag === 'Y') {
+          keySelected.push(i.code)
+        }
+      })
+      this.tree = arrayToTree(this.tree.concat(res), {
+        parentProperty: 'parentid',
+        customID: 'code',
+        childrenProperty: 'children'
+      })
+      this.mouldDialogVisible = true
+      this.$nextTick(() => {
+        this.$refs.tree.setCheckedKeys(keySelected)
+      })
+    },
+    filterNode(value, data) {
+      if (!value) return true
+      return data.name.indexOf(value) !== -1
+    },
+    handleMouldClose() {
+      this.tree = [
+        {
+          code: '-1',
+          name: '鍏ㄩ儴'
+        }
+      ]
+    },
+    mouldDialogVisibleCancel() {
+      this.mouldDialogVisible = false
+    },
+    mouldDialogVisibleConfirm() {
+      const treeKey = this.$refs.tree.getCheckedKeys()
+      const arr = []
+      this.tree[0].children.forEach(i => {
+        // i.flag = treeKey.includes(i.code) ? 'Y' : 'N'
+        if (treeKey.includes(i.code)) {
+          arr.push({
+            code: i.code,
+            name: i.name.split('/')[1].trim()
+          })
+        }
+      })
+
+      this.$store.state.app.buttonIsDisabled = true
+      SaveCheckStanedAssociationMould(arr, this.checkstand_code).then(res => {
+        if (res.code === '200') {
+          this.$notify.success('缁戝畾鎴愬姛锛�')
+          this.mouldDialogVisible = false
+          this.getDeviceCheckStandArdSearch()
+          this.$store.state.app.buttonIsDisabled = false
+        } else {
+          this.$store.state.app.buttonIsDisabled = false
+          this.$notify.error('缁戝畾澶辫触锛�')
+        }
+      })
+    },
+
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 205
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+
+  }
+}
+</script>
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+</style>
diff --git a/src/views/mouldManager/mouldCirculateRecord.vue b/src/views/mouldManager/mouldCirculateRecord.vue
new file mode 100644
index 0000000..2fec019
--- /dev/null
+++ b/src/views/mouldManager/mouldCirculateRecord.vue
@@ -0,0 +1,476 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="妯″叿缂栫爜" style=" display: flex;">
+              <el-input v-model="form.mouldcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="妯″叿鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.mouldname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="瑙勬牸鍨嬪彿" style=" display: flex;">
+              <el-input v-model="form.mouldspec" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+
+            <el-form-item label="鎿嶄綔绫诲瀷" style=" display: flex;">
+              <el-select v-model="form.type" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in typeArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+
+            <el-form-item v-show="isExpandForm" label="鎿嶄綔浜哄憳" style=" display: flex;">
+              <el-input v-model="form.operuser" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item
+              v-show="isExpandForm"
+              style="display: flex;align-items: center"
+              label="鎿嶄綔鏃堕棿"
+            >
+              <el-date-picker
+                v-model="form.operdate"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+              <!--              font-size: 14px!important;-->
+              <!--              :picker-options="expireTimeOption"-->
+
+            </el-form-item>
+
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :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
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+
+          <el-table-column
+            prop="mould_code"
+            label="妯″叿缂栫爜"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="mould_name"
+            label="妯″叿鍚嶇О"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="mould_spec"
+            label="浜у搧瑙勬牸"
+            show-tooltip-when-overflow
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.mould_spec">{{ row.mould_spec }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="type"
+            label="鎿嶄綔绫诲瀷"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="description"
+            label="鍊熻繕鎻忚堪"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              {{ row.description?row.description:'/' }}
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="lm_user"
+            label="鎿嶄綔浜�"
+            sortable="custom"
+          />
+
+          <el-table-column
+            prop="lm_date"
+            label="鎿嶄綔鏃堕棿"
+            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="{color:$store.state.settings.theme}"-->
+          <!--                    style="cursor: pointer;margin-right: 15px"-->
+          <!--                    @click="edit(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="getMouldUpDownMachinesSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      title="鏄庣粏"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div class="elTableDiv" style="margin-top: 0">
+        <el-table
+          :data="tableDataDialog"
+          :height="500+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:500+'px'}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <el-table-column
+            prop="seq"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="itemcode"
+            label="閮ㄤ綅缂栫爜"
+          />
+          <el-table-column
+            prop="itemname"
+            label="閮ㄤ綅鍚嶇О"
+          />
+          <el-table-column
+            prop="result"
+            label="鐐规缁撴灉"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.result==='OK'" style="display: flex;align-items: center">
+                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                姝e父
+              </div>
+              <div v-if="row.result==='NG'" style="display: flex;align-items: center">
+                <i class="el-icon-info" style="margin-right: 2px" />
+                寮傚父
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="chk_value"
+            label="鏁板��"
+          >
+            <template slot-scope="{row}">
+              {{ row.chk_value ? row.chk_value : '/' }}
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            prop="remark"-->
+          <!--            label="澶囨敞"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--          />-->
+        </el-table>
+      </div>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import {
+  MouldCheckSubTakeSearch,
+  MouldCheckTakeOutExcel, MouldCirculateMachinesSearch,
+  MouldCirculateMachinesOutExcel,
+  MouldUpDownMachinesSearch
+} from '@/api/MouldManager'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        mouldcode: '',
+        mouldname: '',
+        mouldspec: '',
+
+        stanedname: '',
+        operuser: '',
+        type: '',
+        operdate: '',
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      typeArr: [
+        { code: 'UP', name: '涓婃満' },
+        { code: 'DOWN', name: '涓嬫満' }
+      ],
+      total: 10,
+      tableData: [],
+      dialogVisible: false,
+      tableDataDialog: []
+
+    }
+  },
+
+  created() {
+    this.getMouldUpDownMachinesSearch()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    async getMouldUpDownMachinesSearch() {
+      let tempDate = this.form.operdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        mouldcode: this.form.mouldcode,
+        mouldname: this.form.mouldname,
+        mouldspec: this.form.mouldspec,
+
+        operuser: this.form.operuser,
+        type: this.form.type,
+        operdate: tempDate,
+        prop: this.form.prop,
+        order: this.form.order,
+        page: this.form.page,
+        rows: this.form.rows
+
+      }
+      console.log(data, 1)
+      const res = await MouldCirculateMachinesSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getMouldUpDownMachinesSearch()
+    },
+    async download() {
+      let tempDate = this.form.operdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        mouldcode: this.form.mouldcode,
+        mouldname: this.form.mouldname,
+        mouldspec: this.form.mouldspec,
+
+        operuser: this.form.operuser,
+        type: this.form.type,
+        operdate: tempDate
+      }
+
+      const { data: res } = await MouldCirculateMachinesOutExcel(data)
+      window.location.href = res
+    },
+    // 鏌ヨ
+    search() {
+      this.getMouldUpDownMachinesSearch()
+    },
+
+    // 閲嶇疆
+    reset() {
+      this.form.mouldcode = ''
+      this.form.mouldname = ''
+      this.form.mouldspec = ''
+
+      this.form.operuser = ''
+      this.form.type = ''
+      this.form.operdate = ''
+      this.getMouldUpDownMachinesSearch()
+    },
+
+    // 淇敼鎸夐挳
+    async edit(row) {
+      this.dialogVisible = true
+
+      const { data: res } = await MouldCheckSubTakeSearch({ id: row.id })
+      this.tableDataDialog = res
+
+      // this.$nextTick(() => {
+      //   this.dialogForm.OrgCode = row.org_code
+      //   this.dialogForm.OrgName = row.org_name
+      //   this.dialogForm.SupUnit = row.parent_id
+      // })
+    },
+
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.tableDataDialog = []
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::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;
+}
+
+::v-deep .el-progress-bar__innerText {
+  display: none !important;
+}
+</style>
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/mouldManager/mouldList.vue b/src/views/mouldManager/mouldList.vue
new file mode 100644
index 0000000..862ffc5
--- /dev/null
+++ b/src/views/mouldManager/mouldList.vue
@@ -0,0 +1,982 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <el-button
+          v-waves
+          type="success"
+          icon="el-icon-download"
+          @click="$router.push('./../systemSetting/dataImport?fileCode=12')"
+        >瀵煎叆
+        </el-button>
+        <!--        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>-->
+
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="宸ュ崟鐘舵��" style=" display: flex;">
+              <el-select v-model="form.mouldstaus" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in mouldstausArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="浣跨敤鐘舵��" style=" display: flex;">
+              <el-select v-model="form.usestatus" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in onstateArr"
+                  :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.mouldcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="妯″叿鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.mouldname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="瑙勬牸鍨嬪彿" style=" display: flex;">
+              <el-input v-model="form.mouldspec" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+
+            <el-form-item v-show="isExpandForm" label="瑙勬牸鍨嬪彿" style=" display: flex;">
+              <el-input v-model="form.createuser" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+
+            <el-form-item v-show="isExpandForm" label="鍗曟嵁鏃ユ湡" style="display: flex;align-items: center">
+              <el-date-picker
+                v-model="form.createdate"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :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
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="status"
+            label="妯″叿鐘舵��"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <el-tag v-if="row.status==='Y'" size="small" type="success">姝e父</el-tag>
+              <el-tag v-if="row.status==='N'" size="small" type="danger">鏁呴殰</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="usestatus"
+            label="浣跨敤鐘舵��"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              {{ row.usestatus?onstateArr.find(i => parseFloat(i.code) === parseFloat(row.usestatus)).name:'/' }}
+              <!--              {{ onstateArr.find(i => parseFloat(i.code) === parseFloat(row.usestatus)).name }}-->
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="code"
+            label="妯″叿缂栧彿"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="name"
+            label="妯″叿鍚嶇О"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="spec"
+            label="瑙勬牸鍨嬪彿"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              {{ row.spec ? row.spec : '/' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="warehousename"
+            label="浠撳簱鍚嶇О"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              {{ row.warehousename ? row.warehousename : '/' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="location_name"
+            label="搴撲綅鍚嶇О"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              {{ row.location_name ? row.location_name : '/' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="is_part"
+            label="浜у搧鍏宠仈"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <!--              <el-tag v-if="row.is_part==='Y'" size="small" type="success">鏄�</el-tag>-->
+              <!--              <el-tag v-if="row.is_part==='N'" size="small" type="danger">鍚�</el-tag>-->
+              <i
+                v-if="row.is_part==='Y'"
+                :style="{color:$store.state.settings.theme}"
+                class="el-icon-share"
+                style="cursor: pointer"
+                @click="connectClick(row)"
+              />
+              <i
+                v-if="row.is_part==='N'"
+                class="el-icon-share"
+                style="color: rgb(180 ,181, 185);cursor:pointer;"
+                @click="connectClick(row)"
+              />
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="surp_life"
+            label="棰勮瀵垮懡(娆�)"
+            width="125"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="serlife"
+            label="浣跨敤瀵垮懡(娆�)"
+            width="125"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="resi_life"
+            label="鍓╀綑瀵垮懡(娆�)"
+            width="125"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="username"
+            label="鍒涘缓浜哄憳"
+            sortable="custom"
+          />
+
+          <el-table-column
+            prop="lm_date"
+            label="鍒涘缓鏃堕棿"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.lm_date">{{ row.lm_date.substring(0, 11) }}</div>
+              <div v-else>/</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-edit-outline"
+                    :style="{color:$store.state.settings.theme}"
+                    @click="edit(row)"
+                  />
+                </el-tooltip>
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                  <i class="el-icon-delete" :style="{color:$store.state.settings.theme}" @click="del(row)" />
+                </el-tooltip>
+                <el-tooltip class="item" effect="dark" content="灞ュ巻" placement="top">
+                  <i class="el-icon-view" :style="{color:$store.state.settings.theme}" style="cursor: pointer" @click="view(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="getMouldMangerSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':(operation==='edit'?'缂栬緫':'浜у搧鍏宠仈')"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      :top="operation!=='connect'? '7vh':'15vh'"
+      class="dialogFormClass"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+
+      <el-form
+        v-if="operation!=='connect'"
+        ref="dialogForm"
+        class=""
+        inline
+        :rules="dialogFormRules"
+        :model="dialogForm"
+        label-width="110px"
+      >
+        <el-divider content-position="left">鍩烘湰淇℃伅</el-divider>
+        <el-form-item label="妯″叿缂栫爜" prop="mouldcode">
+          <el-input v-model="dialogForm.mouldcode" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="妯″叿鍚嶇О" prop="mouldname">
+          <el-input v-model="dialogForm.mouldname" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="瑙勬牸鍨嬪彿">
+          <el-input v-model="dialogForm.mouldspec" style="width: 200px" />
+        </el-form-item>
+
+        <el-form-item required label="妯″叿鐘舵��">
+          <el-radio-group v-model="dialogForm.status">
+            <el-radio label="Y">姝e父</el-radio>
+            <el-radio label="N">鏁呴殰</el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item v-if="dialogForm.opertype==='Add'" prop="warehousecode" label="鎵�灞炰粨搴�">
+          <el-select
+            v-model="dialogForm.warehousecode"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            filterable
+            :popper-append-to-body="false"
+            @change="warehousecodeChange"
+          >
+            <el-option
+              v-for="item in wareHouseArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item v-if="dialogForm.opertype==='Add'" prop="location_code" label="鎵�灞炲簱浣�">
+          <el-select
+            v-model="dialogForm.location_code"
+            style="width:200px"
+            :disabled="dialogForm.warehousecode===''"
+            placeholder="璇烽�夋嫨"
+            filterable
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in locationArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="棰勮瀵垮懡(娆�)">
+          <el-input v-model="dialogForm.surplife" oninput="value=value.replace(/[^0-9]/g,'')" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="鍓╀綑瀵垮懡(娆�)">
+          <el-input v-model="dialogForm.resilife" oninput="value=value.replace(/[^0-9]/g,'')" style="width: 200px" />
+        </el-form-item>
+
+      </el-form>
+      <el-divider v-if="operation!=='connect'" content-position="left">鍏宠仈浜у搧</el-divider>
+
+      <el-input
+        v-model="filterText"
+        placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�"
+      />
+      <div style="height: 300px;overflow:auto;margin-top: 25px;">
+        <el-tree
+          ref="tree"
+          class="filter-tree"
+          :data="Inventory"
+          :props="defaultProps"
+          show-checkbox
+          node-key="code"
+          default-expand-all
+          :filter-node-method="filterNode"
+        />
+
+      </div>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <el-dialog
+      v-el-drag-dialog
+      title="灞ュ巻鏌ョ湅"
+      :visible.sync="dialogVisibleResume"
+      width="1000px"
+      :close-on-click-modal="false"
+      top="7vh"
+      class="dialogFormClass"
+      @closed="handleCloseResume"
+    >
+      <div style="display: flex;justify-content: center;font-size: 18px;font-weight: bolder">妯″叿鍦ㄧ嚎淇℃伅鏌ヨ</div>
+      <el-descriptions class="margin-top" title=" " :column="3" size="size" border>
+        <!--        <template slot="extra">-->
+        <!--          <el-button type="primary" size="small">鎿嶄綔</el-button>-->
+        <!--        </template>-->
+        <el-descriptions-item>
+          <template slot="label">
+            <!--            <i class="el-icon-user" />-->
+            妯″叿缂栫爜
+          </template>
+          {{ formResume.mouldcode }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label">
+            妯″叿鍚嶇О
+          </template>
+          {{ formResume.mouldname }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label">
+            瑙勬牸鍨嬪彿
+          </template>
+          {{ formResume.mouldspec||'/' }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label">
+            妯″叿鐘舵��
+          </template>
+          <!--          {{ formResume.status ==='Y'?'姝e父':'寮傚父' }}-->
+          <el-tag v-if="formResume.status==='Y'" size="small" type="success">姝e父</el-tag>
+          <el-tag v-if="formResume.status==='N'" size="small" type="danger">鏁呴殰</el-tag>
+
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label">
+            浣跨敤鐘舵��
+          </template>
+          <!--          {{ formResume.usestatus }}-->
+          {{ formResume.usestatus?onstateArr.find(i => parseFloat(i.code) === parseFloat(formResume.usestatus)).name:'/' }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label">
+            棰勮瀵垮懡(娆�)
+          </template>
+          {{ formResume.surp_life }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label">
+            鍓╀綑瀵垮懡(娆�)
+          </template>
+          {{ formResume.serlife }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label">
+            鏌ョ湅浜哄憳
+          </template>
+          {{ formResume.username }}
+        </el-descriptions-item>
+        <el-descriptions-item>
+          <template slot="label">
+            鏌ョ湅鏃堕棿
+          </template>
+          {{ formResume.lm_date }}
+        </el-descriptions-item>
+      </el-descriptions>
+
+      <div style="display: flex;justify-content: center;font-size: 18px;font-weight: bolder;margin: 20px 0">妯″叿娴佽浆璁板綍</div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef2"
+          class="tableFixed"
+          :data="tableResume"
+          height="370px"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:'370px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+        >
+          <el-table-column
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="opertype"
+            label="鎿嶄綔绫诲瀷"
+          />
+
+          <el-table-column
+            prop="operusername"
+            label="鎿嶄綔浜哄憳"
+          />
+
+          <el-table-column
+            prop="operdate"
+            label="鎿嶄綔鏃堕棿"
+          />
+          <el-table-column
+            prop="opertype"
+            label="缁撴灉/瀵硅薄"
+          />
+
+        </el-table>
+      </div>
+      <!--鍒嗛〉-->
+      <pagination
+        :total="totalResume"
+        :page.sync="formResume.page"
+        :limit.sync="formResume.rows"
+        align="right"
+        layout="total,prev, pager, next,sizes"
+        popper-class="select_bottom"
+        @pagination="getMoldResumeSearch"
+      />
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleResume=false">杩� 鍥�</el-button>
+          <!--          <el-button-->
+          <!--            v-waves-->
+          <!--            type="primary"-->
+          <!--            :loading="$store.state.app.buttonIsDisabled"-->
+          <!--            :disabled="$store.state.app.buttonIsDisabled"-->
+          <!--            @click="dialogVisibleConfirm"-->
+          <!--          >纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime, handleDatetime2, validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import {
+  ProductionScheduleReportExcelSearch,
+  ProductionScheduleReportSearch
+} from '@/api/ReportManager'
+import { AddUpdateMouldManger, DeleteMouldManger, MoldResumeSearch, MouldMangerSearch } from '@/api/MouldManager'
+import { InventoryTreePermissions, WareHouse, WareHouseSelectLocation } from '@/api/GeneralBasicData'
+import arrayToTree from 'array-to-tree'
+import { TCunstomerDelete } from '@/api/basicSettings'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        mouldstaus: '', // 妯″叿鐘舵��
+        usestatus: '', // 浣跨敤鐘舵��
+        mouldcode: '', // 妯″叿缂栫爜
+        mouldname: '', // 妯″叿鍚嶇О
+        mouldspec: '', // 妯″叿瑙勬牸鍨嬪彿
+
+        createuser: '', // 鍒涘缓浜哄憳
+        createdate: '', // 鍗曟嵁鏃ユ湡
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+
+      mouldstausArr: [
+        { code: 'Y', name: '姝e父' },
+        { code: 'N', name: '鏁呴殰' }
+      ],
+      onstateArr: [
+        { code: 0, name: '鍦ㄥ簱' },
+        { code: 1, name: '鍑哄簱' },
+        { code: 2, name: '涓婃満' },
+        { code: 3, name: '涓嬫満' },
+        { code: 4, name: '寰呯淮淇�' },
+        { code: 5, name: '宸茬淮淇�' },
+        { code: 6, name: '宸查獙璇�' },
+        { code: 7, name: '澶栧��' },
+        { code: 8, name: '褰掕繕' }
+      ],
+
+      total: 10,
+      tableData: [],
+
+      operation: '',
+      dialogVisible: false,
+      dialogForm: {
+        mouldcode: '',
+        mouldname: '',
+        mouldspec: '',
+        warehousecode: '', // 浠撳簱缂栫爜
+        location_code: '', // 搴撲綅缂栫爜
+        surplife: '',
+        resilife: '',
+        status: 'Y',
+        mouldpart: '',
+        opertype: ''
+      },
+      dialogFormRules: {
+        mouldcode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        mouldname: [
+          { required: true, message: '璇疯緭鍏ユā鍏峰悕绉�', trigger: ['blur', 'change'] }
+        ],
+        warehousecode: [
+          { required: true, message: '璇疯緭鍏ラ�夋嫨浠撳簱淇℃伅', trigger: ['blur', 'change'] }
+        ],
+        location_code: [
+          { required: true, message: '璇疯緭鍏ラ�夋嫨搴撲綅淇℃伅', trigger: ['blur', 'change'] }
+        ]
+      },
+      filterText: '',
+      defaultProps: {
+        children: 'children',
+        label: 'name'
+      },
+
+      Inventory: [
+        // { code: '-1',
+        //   name: '鍏ㄩ儴'
+        // }
+      ],
+
+      wareHouseArr: [], // 浠撳簱鏁扮粍
+      locationArr: [], // 搴撲綅鏁扮粍
+
+      dialogVisibleResume: false,
+      formResume: {
+        mouldcode: '',
+        page: 1,
+        rows: 20
+      },
+      tableResume: [],
+      totalResume: 10
+
+    }
+  },
+  watch: {
+    filterText(val) {
+      this.$refs.tree.filter(val)
+    }
+  },
+  created() {
+    this.getMouldMangerSearch()
+
+    this.getInventoryTreePermissions()
+    this.getWareHouse()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    async getInventoryTreePermissions() {
+      const res = await InventoryTreePermissions()
+      res.data.forEach(i => {
+        i.name = i.code + ' ' + i.name
+      })
+
+      this.Inventory = arrayToTree(res.data, {
+        parentProperty: 'parentid',
+        customID: 'code',
+        childrenProperty: 'children'
+      })
+    },
+    async getWareHouse() {
+      const { data: res } = await WareHouse()
+      this.wareHouseArr = res
+    },
+    async getMouldMangerSearch() {
+      let tempDate = this.form.createdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+      const data = {
+        mouldstaus: this.form.mouldstaus,
+        mouldcode: this.form.mouldcode,
+        wkshopcode: this.form.wkshopcode,
+        mouldname: this.form.mouldname,
+        mouldspec: this.form.mouldspec,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        createdate: tempDate,
+        prop: this.form.prop,
+        order: this.form.order,
+        page: this.form.page,
+        rows: this.form.rows
+      }
+
+      const res = await MouldMangerSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+    },
+
+    // 瀵煎嚭
+    async download() {
+      let tempDate = this.form.createdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+      const data = {
+        mouldstaus: this.form.mouldstaus,
+        mouldcode: this.form.mouldcode,
+        wkshopcode: this.form.wkshopcode,
+        mouldname: this.form.mouldname,
+        mouldspec: this.form.mouldspec,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        createdate: tempDate
+      }
+
+      const res = await ProductionScheduleReportExcelSearch(data)
+      // console.log(res)
+      window.location.href = res.data
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getMouldMangerSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getMouldMangerSearch()
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.mouldstaus = ''
+      this.form.usestatus = ''
+      this.form.mouldcode = ''
+      this.form.mouldname = ''
+
+      this.form.mouldspec = ''
+      this.form.createuser = ''
+      this.form.createdate = ''
+      this.getMouldMangerSearch()
+    },
+    async  warehousecodeChange(val) {
+      const { data: res } = await WareHouseSelectLocation({ warhousecode: val })
+      this.locationArr = res
+    },
+    add() {
+      this.operation = 'add'
+      this.dialogForm.opertype = 'Add'
+      this.dialogVisible = true
+    },
+    edit(row) {
+      this.operation = 'edit'
+      this.dialogVisible = true
+      this.dialogForm.opertype = 'Update'
+
+      this.$nextTick(() => {
+        this.dialogForm.mouldcode = row.code
+        this.dialogForm.mouldname = row.name
+        this.dialogForm.mouldspec = row.spec
+        this.dialogForm.warehousecode = row.warehousecode
+        this.dialogForm.location_code = row.location_code
+        this.dialogForm.surplife = row.surp_life
+        this.dialogForm.resilife = row.resi_life
+        this.dialogForm.status = row.status
+        this.dialogForm.mouldpart = row.partcode ? row.partcode.split(',') : []
+        this.$refs.tree.setCheckedKeys(this.dialogForm.mouldpart)
+      })
+    },
+    connectClick(row) {
+      this.operation = 'connect'
+      this.dialogVisible = true
+      this.dialogForm.opertype = 'Update'
+
+      this.$nextTick(() => {
+        this.dialogForm.mouldcode = row.code
+        this.dialogForm.mouldname = row.name
+        this.dialogForm.mouldspec = row.spec
+        // this.dialogForm.warehousecode = row.warehousecode
+        this.dialogForm.surplife = row.surp_life
+        this.dialogForm.resilife = row.resi_life
+        this.dialogForm.status = row.status
+        this.dialogForm.mouldpart = row.partcode ? row.partcode.split(',') : []
+        this.$refs.tree.setCheckedKeys(this.dialogForm.mouldpart)
+      })
+    },
+    del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        DeleteMouldManger({ mouldcode: row.code }).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            this.getMouldMangerSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+
+    // 灞ュ巻
+    async view(row) {
+      this.formResume.mouldcode = row.code
+      this.formResume.mouldname = row.name
+      this.formResume.mouldspec = row.spec
+      this.formResume.username = localStorage.getItem('username')
+      this.formResume.surp_life = row.surp_life
+      this.formResume.serlife = row.serlife
+      this.formResume.lm_date = handleDatetime2(new Date())
+      this.formResume.status = row.status
+      this.formResume.usestatus = row.usestatus
+
+      await this.getMoldResumeSearch()
+      this.dialogVisibleResume = true
+      this.$nextTick(() => {
+        this.$refs.tableDataRef2.doLayout()
+      })
+    },
+    async getMoldResumeSearch() {
+      const data = {
+        mouldcode: this.formResume.mouldcode,
+        createdate: '',
+        page: this.formResume.page,
+        rows: this.formResume.rows,
+        prop: 'operdate',
+        order: 'desc'
+      }
+      const res = await MoldResumeSearch(data)
+
+      if (res.code === '200') {
+        this.tableResume = res.data
+        this.totalResume = res.count
+      }
+    },
+
+    handleCloseResume() {
+      this.tableResume = []
+    },
+
+    handleClose() {
+      this.dialogForm = {
+        mouldcode: '',
+        mouldname: '',
+        mouldspec: '',
+        warehousecode: '',
+        location_code: '',
+        surplife: '',
+        resilife: '',
+        status: 'Y',
+        mouldpart: '',
+        opertype: ''
+      }
+      if (this.operation !== 'connect') {
+        this.$refs.dialogForm.clearValidate()
+      }
+    },
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    dialogVisibleConfirm() {
+      if (this.operation !== 'connect') {
+        this.$refs.dialogForm.validate(valid => {
+          if (valid) {
+            const checkData = this.$refs.tree.getCheckedNodes()
+            this.dialogForm.mouldpart = []
+            checkData.forEach(item => {
+              if (!Object.keys(item).includes('children')) {
+                this.dialogForm.mouldpart.push(item.code)
+              }
+            })
+            // if (this.dialogForm.mouldpart.length === 0) {
+            //   return this.$message.info('鍏宠仈浜у搧涓嶈兘涓虹┖锛�')
+            // }
+            this.$store.state.app.buttonIsDisabled = true
+            AddUpdateMouldManger(this.dialogForm).then(res => {
+              if (res.code === '200') {
+                this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+                this.$refs.tree.setCheckedKeys([])
+
+                this.dialogVisible = false
+                this.$store.state.app.buttonIsDisabled = false
+                this.getMouldMangerSearch()
+              } else {
+                this.$store.state.app.buttonIsDisabled = false
+                this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+              }
+            })
+          }
+        })
+      } else {
+        const checkData = this.$refs.tree.getCheckedNodes()
+        this.dialogForm.mouldpart = []
+        checkData.forEach(item => {
+          if (!Object.keys(item).includes('children')) {
+            this.dialogForm.mouldpart.push(item.code)
+          }
+        })
+        this.$store.state.app.buttonIsDisabled = true
+        AddUpdateMouldManger(this.dialogForm).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍏宠仈鎴愬姛锛�')
+            this.$refs.tree.setCheckedKeys([])
+            this.dialogVisible = false
+            this.$store.state.app.buttonIsDisabled = false
+            this.getMouldMangerSearch()
+          } else {
+            this.$store.state.app.buttonIsDisabled = false
+            this.$notify.error('鍏宠仈澶辫触锛�')
+          }
+        })
+      }
+    },
+    filterNode(value, data) {
+      if (!value) return true
+      return data.name.indexOf(value) !== -1
+    },
+
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+
+}
+</script>
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::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;
+}
+
+::v-deep .el-progress-bar__innerText {
+  display: none !important;
+}
+
+.dialogFormClass ::v-deep .el-form-item {
+  margin-bottom: 0;
+}
+</style>
diff --git a/src/views/mouldManager/mouldMaintain.vue b/src/views/mouldManager/mouldMaintain.vue
new file mode 100644
index 0000000..3ece798
--- /dev/null
+++ b/src/views/mouldManager/mouldMaintain.vue
@@ -0,0 +1,453 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=14')">瀵煎叆</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="閮ㄤ綅缂栫爜" style=" display: flex;">
+              <el-input v-model="form.maiitemcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="閮ㄤ綅鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.maiitemname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="淇濆吇鎻忚堪" style=" display: flex;">
+              <el-input v-model="form.checkdescr" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+          style="height:5px"
+        >
+          <!--          <svg-icon-->
+          <!--            v-show="mouseHoverType==='mouseout'"-->
+          <!--            style="cursor: pointer"-->
+          <!--            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"-->
+          <!--            @mouseenter="mouseHoverType=$event.type"-->
+          <!--          />-->
+          <!--          <svg-icon-->
+          <!--            v-show="mouseHoverType==='mouseenter'"-->
+          <!--            style="cursor: pointer"-->
+          <!--            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"-->
+          <!--            @click="isExpandForm=!isExpandForm"-->
+          <!--            @mouseout="mouseHoverType=$event.type"-->
+          <!--          />-->
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <el-table
+          ref="tableDataRef"
+          :key="tableTimeStampKey"
+          :data="tableData"
+          :height="isExpandForm?tableHeight:(tableHeight+40)+'px'"
+          border
+          class="tableFixed"
+          :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
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :key="item.id"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+              <div v-else>{{ row[item.prop] }}</div>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鎿嶄綔"
+            fixed="right"
+            width="120"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top">
+                  <i :style="{color:$store.state.settings.theme}" 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 :style="{color:$store.state.settings.theme}" 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="getMouldMaiItemSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-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="maiitemcode">
+          <el-input v-model="dialogForm.maiitemcode" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="閮ㄤ綅鍚嶇О" prop="maiitemname">
+          <el-input v-model="dialogForm.maiitemname" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="淇濆吇鎻忚堪" prop="maidescr">
+          <el-input v-model="dialogForm.maidescr" type="textarea" style="width: 200px" />
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--瀵煎叆缁勪欢-->
+    <import-picker
+      ref="importPickerFunc"
+      class="importPickerClass"
+      :shows.sync="shows"
+      :title="title_value"
+      :colos="colos"
+      :code="code"
+    />
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import ImportPicker from '@/components/ImportPicker'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import TableColumnSettings from '@/components/TableColumnSettings'
+import {
+  AddUpdateMouldMaiItem,
+  DeleteMouldMaiItem,
+  MouldMaiItemSearch
+} from '@/api/MouldManager'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, ImportPicker, TableColumnSettings
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        maiitemcode: '', // 閮ㄤ綅缂栫爜
+        maiitemname: '', // 閮ㄤ綅鍚嶇О
+        checkdescr: '', // 淇濆吇鎻忚堪
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+
+      total: 10,
+      tableData: [],
+      tableColumnSettingsArray: [
+        { minWidth: false, width: 55, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: false, width: 55, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'code',
+          label: '閮ㄤ綅缂栫爜',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'name',
+          label: '閮ㄤ綅鍚嶇О',
+          id: 4,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 330,
+          width: false,
+          prop: 'description',
+          label: '淇濆吇鎻忚堪',
+          id: 5,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        // {
+        //   minWidth: false,
+        //   width: 110,
+        //   prop: 'isscan',
+        //   label: '閫夋嫨鎵爜',
+        //   id: 6,
+        //   show: true,
+        //   fixed: false,
+        //   sortable: true
+        // },
+        // {
+        //   minWidth: false,
+        //   width: 110,
+        //   prop: 'cycle',
+        //   label: '鐐规鍛ㄦ湡',
+        //   id: 7,
+        //   show: true,
+        //   fixed: false,
+        //   sortable: true
+        // },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'lm_user',
+          label: '鍒涘缓浜哄憳',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 160,
+          prop: 'lm_date',
+          label: '鍒涘缓鏃堕棿',
+          id: 9,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+
+      dialogVisible: false,
+      dialogForm: {
+        id: '',
+        maiitemcode: '', // 璁惧鐐规閮ㄤ綅缂栫爜
+        maiitemname: '', // 璁惧鐐规閮ㄤ綅鍚嶇О
+        maidescr: '', // 璁惧鐐规閮ㄤ綅瑕佹眰
+        operType: '' // 鎿嶄綔绫诲瀷
+      },
+      operation: '',
+      dialogFormRules: {
+        maiitemcode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        maiitemname: [
+          { required: true, message: '璇疯緭鍏ラ儴浣嶅悕绉�', trigger: ['blur', 'change'] }
+        ]
+      },
+
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '10',
+      shows: false
+
+    }
+  },
+
+  created() {
+    this.getMouldMaiItemSearch()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+      this.$refs.tableDataRef.doLayout()
+    },
+    async getMouldMaiItemSearch() {
+      const res = await MouldMaiItemSearch(this.form)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getMouldMaiItemSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getMouldMaiItemSearch()
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.maiitemcode = ''
+      this.form.maiitemname = ''
+      this.form.checkdescr = ''
+      this.getMouldMaiItemSearch()
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 淇敼鎸夐挳
+    edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      this.$nextTick(() => {
+        this.dialogForm.id = row.id
+        this.dialogForm.maiitemcode = row.code
+        this.dialogForm.maiitemname = row.name
+        this.dialogForm.maidescr = row.description
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        DeleteMouldMaiItem({ maiitemcode: row.code }).then(res => {
+          if (res.code === '200') {
+            this.$message.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getMouldMaiItemSearch()
+          }
+        })
+      }).catch(() => {
+        this.$message.info('宸插彇娑堝垹闄�')
+      })
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.id = ''
+      this.dialogForm.maiitemcode = ''
+      this.dialogForm.maiitemname = ''
+      this.dialogForm.maidescr = ''
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          this.$store.state.app.buttonIsDisabled = true
+          const data = {
+            id: this.dialogForm.id,
+            maiitemcode: this.dialogForm.maiitemcode,
+            maiitemname: this.dialogForm.maiitemname,
+            maiitemdescr: this.dialogForm.maidescr,
+            opertype: this.operation === 'add' ? 'Add' : 'Update'
+          }
+          // console.log(JSON.stringify(data), 1)
+          AddUpdateMouldMaiItem(data).then(res => {
+            if (res.code === '200') {
+              this.dialogVisible = false
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.getMouldMaiItemSearch()
+              this.$store.state.app.buttonIsDisabled = false
+            } else {
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 240
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    }
+  }
+}
+</script>
+
diff --git a/src/views/mouldManager/mouldMaintainRecord.vue b/src/views/mouldManager/mouldMaintainRecord.vue
new file mode 100644
index 0000000..ab63629
--- /dev/null
+++ b/src/views/mouldManager/mouldMaintainRecord.vue
@@ -0,0 +1,492 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="妯″叿缂栫爜" style=" display: flex;">
+              <el-input v-model="form.mouldcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="妯″叿鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.mouldname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="瑙勬牸鍨嬪彿" style=" display: flex;">
+              <el-input v-model="form.mouldspec" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item label="淇濆吇鏍囧噯缂栫爜" style=" display: flex;">
+              <el-input v-model="form.stanedcode" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="淇濆吇鏍囧噯鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.stanedname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="淇濆吇浜哄憳" style=" display: flex;">
+              <el-input v-model="form.repairuser" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item
+              v-show="isExpandForm"
+              style="display: flex;align-items: center"
+              label="淇濆吇鏃堕棿"
+            >
+              <el-date-picker
+                v-model="form.repairdate"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+              <!--              font-size: 14px!important;-->
+              <!--              :picker-options="expireTimeOption"-->
+
+            </el-form-item>
+
+            <el-form-item v-show="isExpandForm" label="淇濆吇缁撴灉" style=" display: flex;">
+              <el-select v-model="form.repairresult" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in checkrequestArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :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
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="bywo"
+            label="淇濆吇鍗曞彿"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="mould_code"
+            label="妯″叿缂栫爜"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="mould_name"
+            label="妯″叿鍚嶇О"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="mould_spec"
+            label="浜у搧瑙勬牸"
+            show-tooltip-when-overflow
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.mould_spec">{{ row.mould_spec }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="stanedcode"
+            label="鐐规鏍囧噯缂栫爜"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="stanedname"
+            label="鐐规鏍囧噯鍚嶇О"
+            sortable="custom"
+          />
+
+          <el-table-column
+            prop="maint_user"
+            label="鐐规浜哄憳"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="maint_result"
+            label="鐐规缁撴灉"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <el-tag v-if="row.maint_result==='OK'" size="small" type="success">鍚堟牸</el-tag>
+              <el-tag v-if="row.maint_result==='NG'" size="small" type="danger">寮傚父</el-tag>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="maint_date"
+            label="鐐规鏃堕棿"
+            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="{color:$store.state.settings.theme}"
+                    style="cursor: pointer;margin-right: 15px"
+                    @click="edit(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="getMouldRepairTakeSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      title="鏄庣粏"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div class="elTableDiv" style="margin-top: 0">
+        <el-table
+          :data="tableDataDialog"
+          :height="500+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:500+'px'}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <el-table-column
+            prop="seq"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="itemcode"
+            label="閮ㄤ綅缂栫爜"
+          />
+          <el-table-column
+            prop="itemname"
+            label="閮ㄤ綅鍚嶇О"
+          />
+          <el-table-column
+            prop="result"
+            label="鐐规缁撴灉"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.result==='OK'" style="display: flex;align-items: center">
+                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                姝e父
+              </div>
+              <div v-if="row.result==='NG'" style="display: flex;align-items: center">
+                <i class="el-icon-info" style="margin-right: 2px" />
+                寮傚父
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="chk_value"
+            label="鏁板��"
+          >
+            <template slot-scope="{row}">
+              {{ row.chk_value ? row.chk_value : '/' }}
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            prop="remark"-->
+          <!--            label="澶囨敞"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--          />-->
+        </el-table>
+      </div>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import {
+  MouldRepairSubTakeSearch,
+  MouldRepairTakeOutExcel,
+  MouldRepairTakeSearch
+} from '@/api/MouldManager'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        mouldcode: '',
+        mouldname: '',
+        mouldspec: '',
+        stanedcode: '',
+        stanedname: '',
+        repairuser: '',
+        repairresult: '',
+        repairdate: '',
+        prop: 'maint_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      checkrequestArr: [
+        { code: 'OK', name: '鍚堟牸' },
+        { code: 'NG', name: '寮傚父' }
+      ],
+      total: 10,
+      tableData: [],
+      dialogVisible: false,
+      tableDataDialog: []
+
+    }
+  },
+
+  created() {
+    this.getMouldRepairTakeSearch()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    async getMouldRepairTakeSearch() {
+      let tempDate = this.form.repairdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        mouldcode: this.form.mouldcode,
+        mouldname: this.form.mouldname,
+        mouldspec: this.form.mouldspec,
+        stanedcode: this.form.stanedcode,
+        stanedname: this.form.stanedname,
+        repairuser: this.form.repairuser,
+        repairresult: this.form.repairresult,
+        repairdate: tempDate,
+        prop: this.form.prop,
+        order: this.form.order,
+        page: this.form.page,
+        rows: this.form.rows
+
+      }
+      console.log(data, 1)
+      const res = await MouldRepairTakeSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getMouldRepairTakeSearch()
+    },
+    async download() {
+      let tempDate = this.form.repairdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        mouldcode: this.form.mouldcode,
+        mouldname: this.form.mouldname,
+        mouldspec: this.form.mouldspec,
+        stanedcode: this.form.stanedcode,
+        stanedname: this.form.stanedname,
+        repairuser: this.form.repairuser,
+        repairresult: this.form.repairresult,
+        repairdate: tempDate
+      }
+
+      const { data: res } = await MouldRepairTakeOutExcel(data)
+      window.location.href = res
+    },
+    // 鏌ヨ
+    search() {
+      this.getMouldRepairTakeSearch()
+    },
+
+    // 閲嶇疆
+    reset() {
+      this.form.mouldcode = ''
+      this.form.mouldname = ''
+      this.form.mouldspec = ''
+      this.form.stanedcode = ''
+      this.form.stanedname = ''
+      this.form.repairuser = ''
+      this.form.repairresult = ''
+      this.form.repairdate = ''
+      this.getMouldRepairTakeSearch()
+    },
+
+    // 淇敼鎸夐挳
+    async edit(row) {
+      this.dialogVisible = true
+
+      const { data: res } = await MouldRepairSubTakeSearch({ id: row.id })
+      this.tableDataDialog = res
+
+      // this.$nextTick(() => {
+      //   this.dialogForm.OrgCode = row.org_code
+      //   this.dialogForm.OrgName = row.org_name
+      //   this.dialogForm.SupUnit = row.parent_id
+      // })
+    },
+
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.tableDataDialog = []
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::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;
+}
+
+::v-deep .el-progress-bar__innerText {
+  display: none !important;
+}
+</style>
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/mouldManager/mouldMaintainStand.vue b/src/views/mouldManager/mouldMaintainStand.vue
new file mode 100644
index 0000000..6c98e14
--- /dev/null
+++ b/src/views/mouldManager/mouldMaintainStand.vue
@@ -0,0 +1,713 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <el-button
+          v-waves
+          type="success"
+          icon="el-icon-download"
+          @click="$router.push('./../systemSetting/dataImport?fileCode=14_1')"
+        >瀵煎叆
+        </el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="鏍囧噯缂栫爜" style=" display: flex;">
+              <el-input v-model="form.repairstandcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鏍囧噯鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.repairstandname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鏍囧噯鎻忚堪" style=" display: flex;">
+              <el-input v-model="form.repairstandescr" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+
+        <div
+          class="bodyTopFormExpand"
+          style="height:5px"
+        />
+      </div>
+
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <el-table
+          ref="tableDataRef"
+          :key="tableTimeStampKey"
+          :data="tableData"
+          :height="tableHeight+'px'"
+          border
+          class="tableFixed"
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:tableHeight+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+
+          <el-table-column
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :key="item.id"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+              <div v-else-if="item.prop==='is_repairmould'">
+                <i
+                  v-if="row[item.prop]==='Y'"
+                  :style="{color:$store.state.settings.theme}"
+                  class="el-icon-share"
+                  style="cursor: pointer"
+                  @click="connectClick(row)"
+                />
+                <i
+                  v-if="row[item.prop]==='N'"
+                  class="el-icon-share"
+                  style="color: rgb(180 ,181, 185);cursor:pointer;"
+                  @click="connectClick(row)"
+                />
+              </div>
+              <div v-else>{{ row[item.prop] }}</div>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鎿嶄綔"
+            fixed="right"
+            width="120"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top">
+                  <i
+                    :style="{color:$store.state.settings.theme}"
+                    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 :style="{color:$store.state.settings.theme}" 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="getMouldRepairStandArdSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'缂栬緫'"
+      :visible.sync="dialogVisible"
+      width="1100px"
+      :close-on-click-modal="false"
+      top="8vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div style="margin: 0 30px;">
+        <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="80px">
+          <el-divider content-position="left">妯″叿淇濆吇鏍囧噯淇℃伅</el-divider>
+
+          <el-form-item label="鏍囧噯缂栫爜" prop="code">
+            <el-input v-model="dialogForm.code" :disabled="operation!=='add'" style="width: 200px" />
+          </el-form-item>
+          <el-form-item label="鏍囧噯鍚嶇О" prop="name">
+            <el-input v-model="dialogForm.name" style="width: 200px" />
+          </el-form-item>
+          <el-form-item label="鏍囧噯鎻忚堪" prop="description">
+            <el-input v-model="dialogForm.description" type="textarea" style="width: 200px" />
+          </el-form-item>
+        </el-form>
+      </div>
+      <el-divider content-position="left">鎸囧畾淇濆吇椤逛俊鎭�</el-divider>
+      <div style="display: flex;align-items: center">
+        <!--        <div style="font-weight: bolder">鐐规椤归�夋嫨锛�</div>-->
+        <el-drag-select
+          v-model="checkSelectedValue"
+          style="width:940px;"
+          multiple
+          placeholder="璇烽�夋嫨鐩稿搴旀寚瀹氶」"
+        >
+          <el-option
+            v-for="item in checkSelectArr"
+            :key="item.code"
+            :label="item.name"
+            :value="item.code"
+          />
+        </el-drag-select>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataDialogRef"
+          :data="tableDataDialog"
+          :height="(tableHeight-300)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:(tableHeight-300)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+        >
+          <el-table-column
+            type="index"
+            width="50"
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="code"
+            width="150"
+            label="鐐规閮ㄤ綅缂栫爜"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="name"
+            label="鐐规閮ㄤ綅鍚嶇О"
+            width="150"
+            show-tooltip-when-overflow
+          />
+
+          <el-table-column
+            prop="description"
+            label="鐐规瑕佹眰"
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <el-input v-model="row.description" />
+            </template>
+          </el-table-column>
+
+        </el-table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <el-dialog
+      v-el-drag-dialog
+      title="鍏宠仈妯″叿"
+      :visible.sync="mouldDialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="8vh"
+      @closed="handleMouldClose"
+      @close="handleMouldClose"
+    >
+      <div>
+        <el-input
+          v-model="filterText"
+          placeholder="杈撳叆鍏抽敭瀛楄繘琛岃繃婊�"
+        />
+        <el-tree
+          ref="tree"
+          class="filter-tree"
+          :data="tree"
+          :props="defaultProps"
+          show-checkbox
+          node-key="code"
+          style="margin-top:15px;height: 550px;overflow: auto"
+          default-expand-all
+          :filter-node-method="filterNode"
+        />
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="mouldDialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="mouldDialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import TableColumnSettings from '@/components/TableColumnSettings'
+import {
+  AddUpdateMouldRepairStandArd,
+  DeleteMouldRepairStaned,
+  MouldRepairStandArdSearch,
+  RepairStanedAssociationMould,
+  SaveRepairStanedAssociationMould,
+  ViewMouldRepairStanedSearch
+} from '@/api/MouldManager'
+import ElDragSelect from '@/components/DragSelect'
+import { MouldRepairItemSelect } from '@/api/GeneralBasicData'
+import arrayToTree from 'array-to-tree'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, TableColumnSettings, ElDragSelect
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        repairstandcode: '', // 鏍囧噯缂栫爜
+        repairstandname: '', // 鏍囧噯鍚嶇О
+        repairstandescr: '', // 鐐规绠℃帶
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      checkcontrArr: [
+        { code: 'Y', name: '鏄�' },
+        { code: 'N', name: '鍚�' }
+      ],
+      cycleArr: [
+        { code: 'D', name: '鏃�' }
+      ],
+      total: 10,
+      tableData: [],
+      tableColumnSettingsArray: [
+        { minWidth: false, width: 55, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: false, width: 55, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'code',
+          label: '鏍囧噯缂栫爜',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'name',
+          label: '鏍囧噯鍚嶇О',
+          id: 4,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 330,
+          width: false,
+          prop: 'description',
+          label: '鏍囧噯鎻忚堪',
+          id: 5,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'is_repairmould',
+          label: '鍏宠仈妯″叿',
+          id: 6,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        // {
+        //   minWidth: false,
+        //   width: 110,
+        //   prop: 'is_checkeqp',
+        //   label: '鍏宠仈璁惧',
+        //   id: 7,
+        //   show: true,
+        //   fixed: false,
+        //   sortable: true
+        // },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'lm_user',
+          label: '鍒涘缓浜哄憳',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 160,
+          prop: 'lm_date',
+          label: '鍒涘缓鏃堕棿',
+          id: 9,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+
+      dialogVisible: false,
+      dialogForm: {
+        code: '',
+        name: '',
+        description: ''
+      },
+      operation: '',
+      dialogFormRules: {
+        code: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        name: [
+          { required: true, message: '璇疯緭鍏ユ爣鍑嗗悕绉�', trigger: ['blur', 'change'] }
+        ]
+
+      },
+      tableDataDialog: [], // 琛ㄦ牸鏁版嵁
+
+      checkSelectedValue: [],
+      checkSelectArr: [],
+
+      mouldDialogVisible: false,
+      tree: [
+        {
+          code: '-1',
+          name: '鍏ㄩ儴'
+        }
+      ],
+      filterText: '',
+      defaultProps: {
+        children: 'children',
+        label: 'name'
+      },
+      repairstand_code: ''
+
+    }
+  },
+  watch: {
+    filterText(val) {
+      this.$refs.tree.filter(val)
+    },
+    'checkSelectedValue': {
+      handler: function(val) {
+        const arr = JSON.parse(JSON.stringify(this.tableDataDialog))
+        const arrCheckcode = arr.map(i => i.code)
+        this.tableDataDialog = []
+        val.forEach(i => {
+          this.tableDataDialog.push(
+            {
+              code: i,
+              name: this.checkSelectArr.find(j => j.code === i).name,
+              description: arrCheckcode.includes(i) ? arr.find(j => j.code === i).description : this.checkSelectArr.find(j => j.code === i).description
+            }
+          )
+        })
+      }
+    }
+  },
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+
+      this.$refs.tableDataRef.doLayout()
+    },
+    handleRequest() {
+      this.getMouldRepairStandArdSearch().then(res => {
+        if (res.code === '200') {
+          this.getMouldRepairItemSelect()
+        }
+      })
+    },
+    async getMouldRepairStandArdSearch() {
+      const res = await MouldRepairStandArdSearch(this.form)
+      this.tableData = res.data
+      this.total = res.count
+      return { code: res.code }
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getMouldRepairStandArdSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getMouldRepairStandArdSearch()
+    },
+
+    // 閲嶇疆
+    reset() {
+      this.form.repairstandcode = ''
+      this.form.repairstandname = ''
+      this.form.repairstandescr = ''
+      this.getMouldRepairStandArdSearch()
+    },
+
+    async getMouldRepairItemSelect() {
+      const { data: res } = await MouldRepairItemSelect()
+      this.checkSelectArr = res
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+      this.$nextTick(() => {
+        this.$refs.tableDataDialogRef.doLayout()
+      })
+    },
+    // 淇敼鎸夐挳
+    edit(operation, row) {
+      this.operation = operation
+      this.getViewMouldRepairStanedSearch(row.code)
+      this.dialogVisible = true
+      this.$nextTick(() => {
+        this.$refs.tableDataDialogRef.doLayout()
+      })
+    },
+    // 淇敼鍓嶈姹傛帴鍙�
+    async getViewMouldRepairStanedSearch(repairstand_code) {
+      const { data: res } = await ViewMouldRepairStanedSearch({ repairstand_code })
+      this.tableDataDialog = res.data
+      this.checkSelectedValue = res.data.map(i => i.code)
+
+      this.dialogForm.code = res.code
+      this.dialogForm.name = res.name
+      this.dialogForm.description = res.description
+
+      this.tableDataDialog.forEach(item => {
+        item.description = item.chkdesc
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        DeleteMouldRepairStaned({ repairstand_code: row.code }).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getMouldRepairStandArdSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.code = ''
+      this.dialogForm.name = ''
+      this.dialogForm.description = ''
+      this.tableDataDialog = []
+      this.checkSelectedValue = []
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          if (this.tableDataDialog.length === 0) {
+            return this.$message.info('淇濆吇椤逛俊鎭笉鑳戒负绌猴紒')
+          }
+
+          const Data = []
+          this.tableDataDialog.forEach((i, index) => {
+            Data.push({
+              repairitem_seq: index + 1,
+              repairitem_code: i.code,
+              repairitem_name: i.name,
+              repairitem_descr: i.description
+              // cycle: '',
+              // isscan: ''
+            })
+          })
+          const data = {
+            'code': this.dialogForm.code,
+            'name': this.dialogForm.name,
+            'description': this.dialogForm.description,
+            'Data': Data
+          }
+
+          this.$store.state.app.buttonIsDisabled = true
+          AddUpdateMouldRepairStandArd(data, this.operation === 'add' ? 'Add' : 'Update').then(res => {
+            if (res.code === '200') {
+              this.dialogVisible = false
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.getMouldRepairStandArdSearch()
+              this.$store.state.app.buttonIsDisabled = false
+            } else {
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+
+    // 鍏宠仈妯″叿鐐瑰嚮
+    async connectClick(row) {
+      const { data: res } = await RepairStanedAssociationMould({ repairstand_code: row.code })
+      this.repairstand_code = row.code
+
+      const keySelected = []
+      res.forEach(i => {
+        i.parentid = '-1'
+        i.name = i.code + ' / ' + i.name
+
+        if (i.flag === 'Y') {
+          keySelected.push(i.code)
+        }
+      })
+      this.tree = arrayToTree(this.tree.concat(res), {
+        parentProperty: 'parentid',
+        customID: 'code',
+        childrenProperty: 'children'
+      })
+      this.mouldDialogVisible = true
+      this.$nextTick(() => {
+        this.$refs.tree.setCheckedKeys(keySelected)
+      })
+    },
+    filterNode(value, data) {
+      if (!value) return true
+      return data.name.indexOf(value) !== -1
+    },
+    handleMouldClose() {
+      this.tree = [
+        {
+          code: '-1',
+          name: '鍏ㄩ儴'
+        }
+      ]
+    },
+    mouldDialogVisibleCancel() {
+      this.mouldDialogVisible = false
+    },
+    mouldDialogVisibleConfirm() {
+      const treeKey = this.$refs.tree.getCheckedKeys()
+      const arr = []
+      this.tree[0].children.forEach(i => {
+        // i.flag = treeKey.includes(i.code) ? 'Y' : 'N'
+        if (treeKey.includes(i.code)) {
+          arr.push({
+            code: i.code,
+            name: i.name.split('/')[1].trim()
+          })
+        }
+      })
+
+      this.$store.state.app.buttonIsDisabled = true
+      SaveRepairStanedAssociationMould(arr, this.repairstand_code).then(res => {
+        if (res.code === '200') {
+          this.$notify.success('缁戝畾鎴愬姛锛�')
+          this.mouldDialogVisible = false
+          this.getMouldRepairStandArdSearch()
+          this.$store.state.app.buttonIsDisabled = false
+        } else {
+          this.$store.state.app.buttonIsDisabled = false
+          this.$notify.error('缁戝畾澶辫触锛�')
+        }
+      })
+    },
+
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 205
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+
+  }
+}
+</script>
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+</style>
diff --git a/src/views/mouldManager/mouldOutInRecord.vue b/src/views/mouldManager/mouldOutInRecord.vue
new file mode 100644
index 0000000..6d03f99
--- /dev/null
+++ b/src/views/mouldManager/mouldOutInRecord.vue
@@ -0,0 +1,496 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="妯″叿缂栫爜" style=" display: flex;">
+              <el-input v-model="form.mouldcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="妯″叿鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.mouldname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="瑙勬牸鍨嬪彿" style=" display: flex;">
+              <el-input v-model="form.mouldspec" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+
+            <el-form-item label="鎿嶄綔绫诲瀷" style=" display: flex;">
+              <el-select v-model="form.type" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in typeArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+
+            <el-form-item v-show="isExpandForm" label="浠撳簱缂栫爜" style=" display: flex;">
+              <el-input v-model="form.warehousecode" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="搴撲綅缂栫爜" style=" display: flex;">
+              <el-input v-model="form.locationcode" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎿嶄綔浜哄憳" style=" display: flex;">
+              <el-input v-model="form.operuser" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item
+              v-show="isExpandForm"
+              style="display: flex;align-items: center"
+              label="鎿嶄綔鏃堕棿"
+            >
+              <el-date-picker
+                v-model="form.operdate"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+              <!--              font-size: 14px!important;-->
+              <!--              :picker-options="expireTimeOption"-->
+
+            </el-form-item>
+
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :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
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+
+          <el-table-column
+            prop="mould_code"
+            label="妯″叿缂栫爜"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="mould_name"
+            label="妯″叿鍚嶇О"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="mould_spec"
+            label="浜у搧瑙勬牸"
+            show-tooltip-when-overflow
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.mould_spec">{{ row.mould_spec }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="type"
+            label="鎿嶄綔绫诲瀷"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="warehouse_code"
+            label="浠撳簱缂栫爜"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="warehouse_name"
+            label="浠撳簱鍚嶇О"
+            sortable="custom"
+          />
+
+          <el-table-column
+            prop="location_code"
+            label="搴撲綅缂栫爜"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="location_name"
+            label="搴撲綅鍚嶇О"
+            sortable="custom"
+          />
+
+          <el-table-column
+            prop="lm_user"
+            label="鎿嶄綔浜�"
+            sortable="custom"
+          />
+
+          <el-table-column
+            prop="lm_date"
+            label="鎿嶄綔鏃堕棿"
+            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="{color:$store.state.settings.theme}"-->
+          <!--                    style="cursor: pointer;margin-right: 15px"-->
+          <!--                    @click="edit(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="getMouldInOutMachinesSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      title="鏄庣粏"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div class="elTableDiv" style="margin-top: 0">
+        <el-table
+          :data="tableDataDialog"
+          :height="500+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:500+'px'}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <el-table-column
+            prop="seq"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="itemcode"
+            label="閮ㄤ綅缂栫爜"
+          />
+          <el-table-column
+            prop="itemname"
+            label="閮ㄤ綅鍚嶇О"
+          />
+          <el-table-column
+            prop="result"
+            label="鐐规缁撴灉"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.result==='OK'" style="display: flex;align-items: center">
+                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                姝e父
+              </div>
+              <div v-if="row.result==='NG'" style="display: flex;align-items: center">
+                <i class="el-icon-info" style="margin-right: 2px" />
+                寮傚父
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="chk_value"
+            label="鏁板��"
+          >
+            <template slot-scope="{row}">
+              {{ row.chk_value ? row.chk_value : '/' }}
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            prop="remark"-->
+          <!--            label="澶囨敞"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--          />-->
+        </el-table>
+      </div>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import {
+  MouldCheckSubTakeSearch,
+  MouldCheckTakeOutExcel,
+  MouldInOutMachinesOutExcel,
+  MouldInOutMachinesSearch
+} from '@/api/MouldManager'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        mouldcode: '',
+        mouldname: '',
+        mouldspec: '',
+        warehousecode: '',
+        operuser: '',
+        locationcode: '',
+        type: '',
+        operdate: '',
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      typeArr: [
+        { code: 'IN', name: '鍏ュ簱' },
+        { code: 'OUT', name: '鍑哄簱' }
+      ],
+      total: 10,
+      tableData: [],
+      dialogVisible: false,
+      tableDataDialog: []
+
+    }
+  },
+
+  created() {
+    this.getMouldInOutMachinesSearch()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    async getMouldInOutMachinesSearch() {
+      let tempDate = this.form.operdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        mouldcode: this.form.mouldcode,
+        mouldname: this.form.mouldname,
+        mouldspec: this.form.mouldspec,
+        warehousecode: this.form.warehousecode,
+        locationcode: this.form.locationcode,
+        type: this.form.type,
+        operuser: this.form.operuser,
+        operdate: tempDate,
+        prop: this.form.prop,
+        order: this.form.order,
+        page: this.form.page,
+        rows: this.form.rows
+      }
+      // console.log(data, 1)
+      const res = await MouldInOutMachinesSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getMouldInOutMachinesSearch()
+    },
+    async download() {
+      let tempDate = this.form.operdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        mouldcode: this.form.mouldcode,
+        mouldname: this.form.mouldname,
+        mouldspec: this.form.mouldspec,
+        warehousecode: this.form.warehousecode,
+        operuser: this.form.operuser,
+        locationcode: this.form.locationcode,
+        type: this.form.type,
+        operdate: tempDate
+      }
+
+      const { data: res } = await MouldInOutMachinesOutExcel(data)
+      window.location.href = res
+    },
+    // 鏌ヨ
+    search() {
+      this.getMouldInOutMachinesSearch()
+    },
+
+    // 閲嶇疆
+    reset() {
+      this.form.mouldcode = ''
+      this.form.mouldname = ''
+      this.form.mouldspec = ''
+      this.form.warehousecode = ''
+      this.form.locationcode = ''
+      this.form.type = ''
+      this.form.operuser = ''
+      this.form.operdate = ''
+      this.getMouldInOutMachinesSearch()
+    },
+
+    // 淇敼鎸夐挳
+    async edit(row) {
+      this.dialogVisible = true
+
+      const { data: res } = await MouldCheckSubTakeSearch({ id: row.id })
+      this.tableDataDialog = res
+
+      // this.$nextTick(() => {
+      //   this.dialogForm.OrgCode = row.org_code
+      //   this.dialogForm.OrgName = row.org_name
+      //   this.dialogForm.SupUnit = row.parent_id
+      // })
+    },
+
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.tableDataDialog = []
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::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;
+}
+
+::v-deep .el-progress-bar__innerText {
+  display: none !important;
+}
+</style>
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/mouldManager/mouldRepairRecord.vue b/src/views/mouldManager/mouldRepairRecord.vue
new file mode 100644
index 0000000..2ae6510
--- /dev/null
+++ b/src/views/mouldManager/mouldRepairRecord.vue
@@ -0,0 +1,728 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+
+            <el-form-item label="妯″叿缂栫爜" style=" display: flex;">
+              <el-input v-model="form.mouldcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="妯″叿鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.mouldname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鐢熶骇杞﹂棿" style=" display: flex;">
+              <el-input v-model="form.mouldspec" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+
+            <el-form-item label="鎶ヤ慨浜哄憳" style=" display: flex;">
+              <el-input v-model="form.reportuser" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="缁翠慨浜哄憳" style=" display: flex;">
+              <el-input v-model="form.repairuser" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="楠岃瘉浜哄憳" style=" display: flex;">
+              <el-input v-model="form.vrifcatuser" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎶ヤ慨鏃堕棿" style=" display: flex;align-items: center">
+              <el-date-picker
+                v-model="form.reportdate"
+                type="daterange"
+                :clearable="false"
+                class="timeMini"
+                range-separator="~"
+                start-placeholder="寮�濮嬫棩鏈�"
+                style="width: 200px;display: flex;line-height: 34px ;height: 34px ;"
+                end-placeholder="缁撴潫鏃ユ湡"
+                size="mini"
+              />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="缁翠慨鏃堕棿" style=" display: flex;align-items: center">
+              <el-date-picker
+                v-model="form.repairdate"
+                type="daterange"
+                :clearable="false"
+                class="timeMini"
+                range-separator="~"
+                start-placeholder="寮�濮嬫棩鏈�"
+                style="width: 200px;display: flex;line-height: 34px ;height: 34px ;"
+                end-placeholder="缁撴潫鏃ユ湡"
+                size="mini"
+              />
+            </el-form-item>
+            <el-form-item
+              v-show="isExpandForm"
+              label="楠岃瘉鏃堕棿"
+              style=" display: flex;align-items: center"
+            >
+              <el-date-picker
+                v-model="form.vrifcatdate"
+                type="daterange"
+                :clearable="false"
+                class="timeMini"
+                range-separator="~"
+                start-placeholder="寮�濮嬫棩鏈�"
+                style="width: 200px;display: flex;line-height: 34px ;height: 34px ;"
+                end-placeholder="缁撴潫鏃ユ湡"
+                size="mini"
+              />
+            </el-form-item>
+          </div>
+          <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}">
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <!--        :key="tableTimeStampKey"-->
+
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :data="tableData"
+          :height="isExpandForm?tableHeight:(tableHeight+80)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <!--          :key="item.id"-->
+
+          <el-table-column
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+              <div v-else-if="item.prop==='verify_result'">
+                <div v-if="row[item.prop]==='閫氳繃'" style="display: flex;align-items: center">
+                  <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                  閫氳繃
+                </div>
+                <div v-if="row[item.prop]==='涓嶉�氳繃'" style="display: flex;align-items: center">
+                  <i class="el-icon-info" style="margin-right: 2px" />
+                  涓嶉�氳繃
+                </div>
+              </div>
+              <div v-else>{{ row[item.prop] }}</div>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鏄庣粏"
+            width="120"
+            fixed="right"
+          >
+            <template slot-scope="{row}">
+              <i
+                class="el-icon-tickets"
+                :style="{color:$store.state.settings.theme}"
+                style="cursor: pointer;margin-right: 15px"
+                @click="edit('edit',row)"
+              />
+            </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="getMouldUpdateSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      title="缁翠慨鏄庣粏"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="7vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div style="font-size:16px;">
+        <div style="margin-bottom: 20px">
+          <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 妯″叿鎶ヤ慨淇℃伅锛�
+        </div>
+        <div style="display: flex;flex-direction: column;margin-left: 40px">
+          <div style="margin-bottom: 10px">鏁呴殰鏉ユ簮锛歿{ dialogData1.faultsource }}</div>
+          <div style="margin-bottom: 10px">鏁呴殰鎻忚堪锛歿{ dialogData1.faultdescr }}</div>
+          <div v-if="dialogData1.faultimage" style="display: flex;margin-bottom: 10px">鏁呴殰鍥剧墖锛�
+            <div v-for="item in dialogData1.faultimage">
+              <img
+                style="width: 90px;margin-right: 10px;border-radius: 10px"
+                :src="baseUrl+item.img1url"
+                alt=""
+                @click="handlePictureCardPreview(baseUrl+item.img1url,'妯″叿鎶ヤ慨/鏁呴殰鍥剧墖')"
+              >
+            </div>
+          </div>
+        </div>
+        <div style="margin-bottom: 20px">
+          <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 妯″叿缁翠慨淇℃伅锛�
+        </div>
+        <div style="display: flex;flex-direction: column;margin-left: 40px">
+          <div style="margin-bottom: 10px">鏁呴殰鎻忚堪锛歿{ dialogData2.faultdescr }}</div>
+          <div v-if="dialogData2.repairimage" style="display: flex;margin-bottom: 10px">鏁呴殰鍥剧墖锛�
+
+            <div v-for="item in dialogData2.repairimage" v-if="item.img1url!==''">
+              <img
+                style="width: 90px;margin-right: 10px;border-radius: 10px"
+                :src="baseUrl+item.img1url"
+                alt=""
+                @click="handlePictureCardPreview(baseUrl+item.img1url,'妯″叿缁翠慨/鏁呴殰鍥剧墖')"
+              >
+            </div>
+          </div>
+          <div style="margin-bottom: 10px">鍋滄満缁翠慨锛歿{ dialogData2.isstoprepair === 'N' ? '鍚�' : '鏄�' }}</div>
+          <div v-if="dialogData2.repaircontent" style="margin-bottom: 10px">缁翠慨鍐呭锛歿{ dialogData2.repaircontent }}</div>
+          <!--          <div v-if="dialogData2.repairpart" style="margin-bottom: 10px">鏇存崲澶囦欢锛歿{ dialogData2.repairpart }}</div>-->
+          <!--          <div v-if="dialogData2.repairimage" style="display: flex;margin-bottom: 10px">澶囦欢鍥剧墖锛�-->
+          <!--            <div v-for="item in dialogData2.repairimage" v-if="item.img2url!==''">-->
+          <!--              <img-->
+          <!--                style="width: 100px;margin-right: 10px"-->
+          <!--                :src="baseUrl+item.img2url"-->
+          <!--                alt=""-->
+          <!--                @click="handlePictureCardPreview(baseUrl+item.img2url,'妯″叿缁翠慨/澶囦欢鍥剧墖')"-->
+          <!--              >-->
+          <!--            </div>-->
+          <!--          </div>-->
+        </div>
+        <div style="margin-bottom: 20px">
+          <i class="el-icon-s-operation" :style="{color:$store.state.settings.theme}" /> 妯″叿缁翠慨楠岃瘉淇℃伅锛�
+        </div>
+        <div style="display: flex;flex-direction: column;margin-left: 40px">
+          <div style="margin-bottom: 10px;display: flex;">楠岃瘉缁撴灉锛�
+
+            <i
+              v-if="isResult==='閫氳繃'"
+              class="el-icon-success"
+              :style="{color:$store.state.settings.theme}"
+              style="margin-right: 2px"
+            />
+            <i v-if="isResult==='涓嶉�氳繃'" class="el-icon-info" style="margin-right: 2px" />
+
+            {{ isResult }}
+          </div>
+
+        </div>
+      </div>
+      <!--      鍥剧墖棰勮瀵硅瘽妗�-->
+      <el-dialog
+        title="鍥剧墖棰勮"
+        :visible.sync="pictureVisible"
+        width="800px"
+        top="7vh"
+        append-to-body
+        @close="pictureHandleClose"
+      >
+        <div style="font-size: 16px;margin-bottom: 10px">
+          <i class="el-icon-s-comment" :style="{color:$store.state.settings.theme}" /> {{ pictureName }}
+        </div>
+        <div style="display: flex;justify-content: center">
+          <img :key="pictureUrl" width="50%" :src="pictureUrl" alt="">
+        </div>
+
+        <el-tooltip class="item" effect="light" content="涓婁竴寮�" placement="top">
+          <div
+            v-if="pictureUrlAll.findIndex(item => item.url === pictureUrl)!==0"
+            style="position: absolute;top: 48%;left: 3.5%;"
+          ><i
+            :style="{color:$store.state.settings.theme}"
+            style="cursor: pointer;font-size: 20px"
+            class="el-icon-d-arrow-left"
+            @click="arrowLeftClick(pictureUrl,pictureName)"
+          /></div>
+        </el-tooltip>
+        <el-tooltip class="item" effect="light" content="涓嬩竴寮�" placement="top">
+          <div
+            v-if="pictureUrlAll.findIndex(item => item.url === pictureUrl)!==pictureUrlAll.length-1"
+            style="position: absolute;top: 48%;right: 3.5%;"
+          >
+            <i
+              :style="{color:$store.state.settings.theme}"
+              style="cursor: pointer;font-size: 20px"
+              class="el-icon-d-arrow-right"
+              @click="arrowRightClick(pictureUrl,pictureName)"
+            /></div>
+        </el-tooltip>
+        <span slot="footer" class="dialog-footer">
+          <div class="footerButton">
+            <el-button v-waves @click="pictureVisible=false">杩� 鍥�</el-button>
+          </div>
+        </span>
+      </el-dialog>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">杩� 鍥�</el-button>
+          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime } from '@/utils/global'
+// import { DeviceUpdateOutExcel, MouldUpdateSearch, DeviceUpdateSubSearch } from '@/api/deviceManager'
+// import { ShopSearch } from '@/api/kanbanManager'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import TableColumnSettings from '@/components/TableColumnSettings'
+import { MouldUpdateSearch, MouldUpdateSubSearch } from '@/api/MouldManager'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, TableColumnSettings
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        mouldspec: '', // 瑙勬牸鍨嬪彿
+        mouldcode: '', // 妯″叿缂栫爜
+        mouldname: '', // 妯″叿鍚嶇О
+        reportuser: '', // 鎶ヤ慨浜哄憳
+        repairuser: '', // 缁翠慨浜哄憳
+        vrifcatuser: '', // 楠岃瘉浜哄憳
+        reportdate: '', // 鎶ヤ慨鏃堕棿
+        repairdate: '', // 缁翠慨鏃堕棿
+        vrifcatdate: '', // 楠岃瘉鏃堕棿
+        prop: 'repair_code', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      wkshopSelectArr: [],
+      total: 10,
+      tableData: [],
+
+      tableColumnSettingsArray: [
+        // { minWidth: false, width: 55, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: false, width: 55, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'repair_code',
+          label: '缁翠慨鍗曞彿',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'mould_code',
+          label: '妯″叿缂栫爜',
+          id: 4,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'mould_name',
+          label: '妯″叿鍚嶇О',
+          id: 5,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 110,
+          width: false,
+          prop: 'mould_spec',
+          label: '瑙勬牸鍨嬪彿',
+          id: 6,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 110,
+          prop: 'request_person',
+          label: '鎶ヤ慨浜�',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 160,
+          prop: 'request_date',
+          label: '淇濅慨鏃堕棿',
+          id: 9,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'repair_person',
+          label: '缁翠慨浜�',
+          id: 10,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 160,
+          prop: 'repair_date',
+          label: '缁翠慨瀹屾垚鏃堕棿',
+          id: 11,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 110,
+          prop: 'cycleDate',
+          label: '缁翠慨鏃堕暱',
+          id: 12,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: false,
+          width: 110,
+          prop: 'verify_person',
+          label: '楠岃瘉浜�',
+          id: 13,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 160,
+          prop: 'verify_date',
+          label: '楠岃瘉鏃堕棿',
+          id: 14,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'verify_result',
+          label: '楠岃瘉缁撴灉',
+          id: 15,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+
+      dialogVisible: false,
+      dialogData1: {},
+      dialogData2: {},
+      isResult: '', // 楠岃瘉缁撴灉
+      operation: '',
+
+      baseUrl: '', // 鍥剧墖棰勮鍦板潃鍓嶇紑
+
+      pictureVisible: false, // 鍥剧墖棰勮瀵硅瘽妗�
+      pictureUrl: '', // 鍥剧墖棰勮Url
+      pictureName: '', // 鍥剧墖棰勮鍚嶇О
+      pictureUrlAll: [], // 鍥剧墖棰勮鍦板潃鐨勬墍鏈塙rl
+
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '4',
+      shows: false
+
+    }
+  },
+
+  created() {
+    this.getMouldUpdateSearch()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+
+    this.baseUrl = process.env.VUE_APP_BASE_API_FILE
+  },
+  methods: {
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+
+      this.$refs.tableDataRef.doLayout()
+    },
+
+    async getMouldUpdateSearch() {
+      let reportdate = this.form.reportdate
+      if (reportdate.length > 0) {
+        reportdate = handleDatetime(reportdate[0]) + '~' + handleDatetime(reportdate[1])
+      }
+      let repairdate = this.form.repairdate
+      if (repairdate.length > 0) {
+        repairdate = handleDatetime(repairdate[0]) + '~' + handleDatetime(repairdate[1])
+      }
+      let vrifcatdate = this.form.vrifcatdate
+      if (vrifcatdate.length > 0) {
+        vrifcatdate = handleDatetime(vrifcatdate[0]) + '~' + handleDatetime(vrifcatdate[1])
+      }
+      const data = {
+        mouldspec: this.form.mouldspec, // 瑙勬牸鍨嬪彿
+        mouldcode: this.form.mouldcode, // 妯″叿缂栫爜
+        mouldname: this.form.mouldname, // 妯″叿鍚嶇О
+        reportuser: this.form.reportuser, // 鎶ヤ慨浜哄憳
+        repairuser: this.form.repairuser, // 缁翠慨浜哄憳
+        vrifcatuser: this.form.vrifcatuser, // 楠岃瘉浜哄憳
+        reportdate, // 鎶ヤ慨鏃堕棿
+        repairdate, // 缁翠慨鏃堕棿
+        vrifcatdate, // 楠岃瘉鏃堕棿
+        prop: 'repair_code', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      }
+
+      const res = await MouldUpdateSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+      return { code: res.code }
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getMouldUpdateSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getMouldUpdateSearch()
+    },
+
+    // 閲嶇疆
+    reset() {
+      this.form.mouldspec = ''
+      this.form.mouldcode = ''
+      this.form.mouldname = ''
+      this.form.reportuser = ''
+      this.form.repairuser = ''
+      this.form.vrifcatuser = ''
+      this.form.reportdate = ''
+      this.form.repairdate = ''
+      this.form.vrifcatdate = ''
+      this.getMouldUpdateSearch()
+    },
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      const { data: res } = await MouldUpdateSubSearch({ repair_code: row.repair_code })
+      this.dialogData1 = res.data1
+      this.dialogData2 = res.data2
+      this.isResult = row.verify_result
+
+      // 妯″叿鎶ヤ慨鍥剧墖闆嗗悎
+      if (this.dialogData1.faultimage) {
+        this.dialogData1.faultimage.forEach(item => {
+          this.pictureUrlAll.push(
+            { url: this.baseUrl + item.img1url, name: '妯″叿鎶ヤ慨/鏁呴殰鍥剧墖' }
+          )
+        })
+      }
+      // 妯″叿缁翠慨鍥剧墖闆嗗悎
+      if (this.dialogData2.repairimage) {
+        this.dialogData2.repairimage.forEach(item => {
+          this.pictureUrlAll.push(
+            {
+              url: item.img1url ? this.baseUrl + item.img1url : this.baseUrl + item.img2url,
+              name: item.img1url ? '妯″叿缁翠慨/鏁呴殰鍥剧墖' : '妯″叿缁翠慨/澶囦欢鍥剧墖'
+            }
+          )
+        })
+      }
+    },
+    handlePictureCardPreview(url, name) {
+      this.pictureVisible = true
+      this.pictureUrl = url
+      this.pictureName = name
+    },
+    arrowLeftClick(pictureUrl, pictureName) {
+      this.pictureUrlAll.forEach((item, index) => {
+        if (item.url === pictureUrl) {
+          this.pictureUrl = this.pictureUrlAll[index - 1].url
+          this.pictureName = this.pictureUrlAll[index - 1].name
+        }
+      })
+    },
+    arrowRightClick(pictureUrl, pictureName) {
+      this.pictureUrlAll.forEach((item, index) => {
+        if (item.url === pictureUrl) {
+          this.pictureUrl = this.pictureUrlAll[index + 1].url
+          this.pictureName = this.pictureUrlAll[index + 1].name
+        }
+      })
+    },
+    pictureHandleClose() {
+      this.pictureUrl = ''
+      this.pictureName = ''
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogData1 = {}
+      this.dialogData2 = {}
+      this.isResult = ''
+      this.pictureUrlAll = []
+    },
+    async download() {
+      let reportdate = this.form.reportdate
+      if (reportdate.length > 0) {
+        reportdate = handleDatetime(reportdate[0]) + '~' + handleDatetime(reportdate[1])
+      }
+      let repairdate = this.form.repairdate
+      if (repairdate.length > 0) {
+        repairdate = handleDatetime(repairdate[0]) + '~' + handleDatetime(repairdate[1])
+      }
+      let vrifcatdate = this.form.vrifcatdate
+      if (vrifcatdate.length > 0) {
+        vrifcatdate = handleDatetime(vrifcatdate[0]) + '~' + handleDatetime(vrifcatdate[1])
+      }
+      const data = {
+        mouldspec: this.form.mouldspec, // 瑙勬牸鍨嬪彿
+        mouldcode: this.form.mouldcode, // 妯″叿缂栫爜
+        mouldname: this.form.mouldname, // 妯″叿鍚嶇О
+        reportuser: this.form.reportuser, // 鎶ヤ慨浜哄憳
+        repairuser: this.form.repairuser, // 缁翠慨浜哄憳
+        vrifcatuser: this.form.vrifcatuser, // 楠岃瘉浜哄憳
+        reportdate, // 鎶ヤ慨鏃堕棿
+        repairdate, // 缁翠慨鏃堕棿
+        vrifcatdate // 楠岃瘉鏃堕棿
+      }
+      const { data: res } = await DeviceUpdateOutExcel(data)
+      window.location.href = res
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 295
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::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;
+}
+
+::v-deep .el-progress-bar__innerText {
+  display: none !important;
+}
+</style>
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/mouldManager/mouldUpDownRecord.vue b/src/views/mouldManager/mouldUpDownRecord.vue
new file mode 100644
index 0000000..479a653
--- /dev/null
+++ b/src/views/mouldManager/mouldUpDownRecord.vue
@@ -0,0 +1,500 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="妯″叿缂栫爜" style=" display: flex;">
+              <el-input v-model="form.mouldcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="妯″叿鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.mouldname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="瑙勬牸鍨嬪彿" style=" display: flex;">
+              <el-input v-model="form.mouldspec" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+
+            <el-form-item label="鎿嶄綔绫诲瀷" style=" display: flex;">
+              <el-select v-model="form.type" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in typeArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+
+            <el-form-item v-show="isExpandForm" label="璁惧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.devicecode" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎿嶄綔浜哄憳" style=" display: flex;">
+              <el-input v-model="form.operuser" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item
+              v-show="isExpandForm"
+              style="display: flex;align-items: center"
+              label="鎿嶄綔鏃堕棿"
+            >
+              <el-date-picker
+                v-model="form.operdate"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+              <!--              font-size: 14px!important;-->
+              <!--              :picker-options="expireTimeOption"-->
+
+            </el-form-item>
+
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :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
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+
+          <el-table-column
+            prop="mould_code"
+            label="妯″叿缂栫爜"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="mould_name"
+            label="妯″叿鍚嶇О"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="mould_spec"
+            label="浜у搧瑙勬牸"
+            show-tooltip-when-overflow
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.mould_spec">{{ row.mould_spec }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="type"
+            label="鎿嶄綔绫诲瀷"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="usecount_life"
+            label="鍓╀綑瀵垮懡"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              {{ row.usecount_life?row.usecount_life:'/' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="eqp_code"
+            label="璁惧缂栫爜"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="eqp_name"
+            label="璁惧鍚嶇О"
+            sortable="custom"
+          />
+
+          <el-table-column
+            prop="lm_user"
+            label="鎿嶄綔浜�"
+            sortable="custom"
+          />
+          <!--          <el-table-column-->
+          <!--            prop="chk_result"-->
+          <!--            label="鐐规缁撴灉"-->
+          <!--            sortable="custom"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <el-tag v-if="row.chk_result==='OK'" size="small" type="success">鍚堟牸</el-tag>-->
+          <!--              <el-tag v-if="row.chk_result==='NG'" size="small" type="danger">寮傚父</el-tag>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+
+          <el-table-column
+            prop="lm_date"
+            label="鎿嶄綔鏃堕棿"
+            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="{color:$store.state.settings.theme}"-->
+          <!--                    style="cursor: pointer;margin-right: 15px"-->
+          <!--                    @click="edit(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="getMouldUpDownMachinesSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      title="鏄庣粏"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div class="elTableDiv" style="margin-top: 0">
+        <el-table
+          :data="tableDataDialog"
+          :height="500+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:500+'px'}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <el-table-column
+            prop="seq"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="itemcode"
+            label="閮ㄤ綅缂栫爜"
+          />
+          <el-table-column
+            prop="itemname"
+            label="閮ㄤ綅鍚嶇О"
+          />
+          <el-table-column
+            prop="result"
+            label="鐐规缁撴灉"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.result==='OK'" style="display: flex;align-items: center">
+                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                姝e父
+              </div>
+              <div v-if="row.result==='NG'" style="display: flex;align-items: center">
+                <i class="el-icon-info" style="margin-right: 2px" />
+                寮傚父
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="chk_value"
+            label="鏁板��"
+          >
+            <template slot-scope="{row}">
+              {{ row.chk_value ? row.chk_value : '/' }}
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            prop="remark"-->
+          <!--            label="澶囨敞"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--          />-->
+        </el-table>
+      </div>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import {
+  MouldCheckSubTakeSearch,
+  MouldCheckTakeOutExcel,
+  MouldUpDownMachinesOutExcel,
+  MouldUpDownMachinesSearch
+} from '@/api/MouldManager'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        mouldcode: '',
+        mouldname: '',
+        mouldspec: '',
+        devicecode: '',
+        stanedname: '',
+        operuser: '',
+        type: '',
+        operdate: '',
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      typeArr: [
+        { code: 'UP', name: '涓婃満' },
+        { code: 'DOWN', name: '涓嬫満' }
+      ],
+      total: 10,
+      tableData: [],
+      dialogVisible: false,
+      tableDataDialog: []
+
+    }
+  },
+
+  created() {
+    this.getMouldUpDownMachinesSearch()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    async getMouldUpDownMachinesSearch() {
+      let tempDate = this.form.operdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        mouldcode: this.form.mouldcode,
+        mouldname: this.form.mouldname,
+        mouldspec: this.form.mouldspec,
+        devicecode: this.form.devicecode,
+        operuser: this.form.operuser,
+        type: this.form.type,
+        operdate: tempDate,
+        prop: this.form.prop,
+        order: this.form.order,
+        page: this.form.page,
+        rows: this.form.rows
+
+      }
+      console.log(data, 1)
+      const res = await MouldUpDownMachinesSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getMouldUpDownMachinesSearch()
+    },
+    async download() {
+      let tempDate = this.form.operdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        mouldcode: this.form.mouldcode,
+        mouldname: this.form.mouldname,
+        mouldspec: this.form.mouldspec,
+        devicecode: this.form.devicecode,
+        stanedname: this.form.stanedname,
+        operuser: this.form.operuser,
+        type: this.form.type,
+        operdate: tempDate
+      }
+
+      const { data: res } = await MouldUpDownMachinesOutExcel(data)
+      window.location.href = res
+    },
+    // 鏌ヨ
+    search() {
+      this.getMouldUpDownMachinesSearch()
+    },
+
+    // 閲嶇疆
+    reset() {
+      this.form.mouldcode = ''
+      this.form.mouldname = ''
+      this.form.mouldspec = ''
+      this.form.devicecode = ''
+      this.form.operuser = ''
+      this.form.type = ''
+      this.form.operdate = ''
+      this.getMouldUpDownMachinesSearch()
+    },
+
+    // 淇敼鎸夐挳
+    async edit(row) {
+      this.dialogVisible = true
+
+      const { data: res } = await MouldCheckSubTakeSearch({ id: row.id })
+      this.tableDataDialog = res
+
+      // this.$nextTick(() => {
+      //   this.dialogForm.OrgCode = row.org_code
+      //   this.dialogForm.OrgName = row.org_name
+      //   this.dialogForm.SupUnit = row.parent_id
+      // })
+    },
+
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.tableDataDialog = []
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::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;
+}
+
+::v-deep .el-progress-bar__innerText {
+  display: none !important;
+}
+</style>
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/produce/reportCorrect.vue b/src/views/produce/reportCorrect.vue
index 1e5626a..7df5531 100644
--- a/src/views/produce/reportCorrect.vue
+++ b/src/views/produce/reportCorrect.vue
@@ -1,11 +1,772 @@
-<template />
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+
+      <div class="bodyTopFormGroup" style="margin-top: 10px;">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">
+              <el-select
+                v-model="form.wkshopcode"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in wkshopcodeArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="宸ュ崟缂栫爜" style=" display: flex;">
+              <el-input v-model="form.wo_code" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.partnumber" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="浜у搧鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.partname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="浜у搧瑙勬牸" style=" display: flex;">
+              <el-input v-model="form.partspec" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+
+            <el-form-item v-show="isExpandForm" label="鎶ュ伐浜哄憳" style=" display: flex;">
+              <el-input v-model="form.reportuser" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎶ュ伐鏃堕棿" style=" display: flex;">
+              <el-date-picker
+                v-model="form.reportdate"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="getMesOrderStepVerifySearch">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :data="tableData"
+          :height="isExpandForm?tableHeight:(tableHeight+40)+'px'"
+          border
+          row-class-name="custom-row"
+          :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"-->
+          <!--            :reserve-selection="true"-->
+          <!--            fixed-->
+          <!--          />-->
+          <el-table-column
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="wo_code"
+            label="鎶ュ伐宸ュ崟"
+            sortable="custom"
+            min-width="160"
+            show-overflow-tooltip
+          />
+          <el-table-column
+            prop="partnumber"
+            label="浜у搧缂栫爜"
+            show-overflow-tooltip
+            sortable="custom"
+            min-width="110"
+          />
+          <el-table-column
+            prop="partname"
+            label="浜у搧鍚嶇О"
+            sortable="custom"
+            show-overflow-tooltip
+            min-width="110"
+          />
+          <el-table-column
+            prop="wkshp_name"
+            label="杞﹂棿鍚嶇О"
+            sortable="custom"
+            show-overflow-tooltip
+            min-width="110"
+          />
+          <el-table-column
+            prop="task_qty"
+            label="浠诲姟鏁伴噺"
+            sortable="custom"
+            show-overflow-tooltip
+            min-width="110"
+          />
+          <!--          <el-table-column-->
+          <!--            prop="wkshp_name"-->
+          <!--            label="杞﹂棿鍚嶇О"-->
+          <!--            show-overflow-tooltip-->
+          <!--            sortable="custom"-->
+          <!--            min-width="110"-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="eqp_name"-->
+          <!--            label="璁惧鍚嶇О"-->
+          <!--            sortable="custom"-->
+          <!--            show-overflow-tooltip-->
+          <!--            min-width="110"-->
+          <!--          />-->
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+            show-overflow-tooltip
+            sortable="custom"
+            min-width="110"
+          />
+          <!--          <el-table-column-->
+          <!--            prop="step_price"-->
+          <!--            label="宸ュ簭鍗曚环"-->
+          <!--            show-overflow-tooltip-->
+          <!--            sortable="custom"-->
+          <!--            min-width="110"-->
+          <!--          />-->
+          <el-table-column
+            prop="steptype"
+            label="宸ュ簭绫诲瀷"
+            show-overflow-tooltip
+            sortable="custom"
+            min-width="110"
+          >
+            <template slot-scope="{row}">
+              {{ row.steptype === 'Z' ? '鑷埗' : '澶栧崗' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wx_name"
+            label="渚涘簲鍟�"
+            show-overflow-tooltip
+            sortable="custom"
+            min-width="110"
+          >
+            <template slot-scope="{row}">
+              {{ row.wx_name ? row.wx_name : '/' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="usergroup_name"
+            label="鎶ュ伐鐝粍"
+            show-overflow-tooltip
+            min-width="110"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              {{ row.usergroup_name ? row.usergroup_name : '/' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="username"
+            label="鎶ュ伐浜哄憳"
+            show-overflow-tooltip
+            min-width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="report_qty"
+            label="鍚堟牸鏁伴噺"
+            show-overflow-tooltip
+            sortable="custom"
+            min-width="110"
+          />
+          <el-table-column
+            prop="ng_qty"
+            label="涓嶈壇鏁伴噺"
+            show-overflow-tooltip
+            min-width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="laborbad_qty"
+            label="宸ュ簾鏁伴噺"
+            min-width="110"
+            show-overflow-tooltip
+            sortable="custom"
+          />
+          <el-table-column
+            prop="materielbad_qty"
+            label="鏂欏簾鏁伴噺"
+            show-overflow-tooltip
+            min-width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="report_date"
+            label="鎶ュ伐鏃堕棿"
+            min-width="160"
+            show-overflow-tooltip
+            sortable="custom"
+          />
+          <el-table-column
+            label="鎿嶄綔"
+            width="100"
+            fixed="right"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-button
+                  type="text"
+                  style="cursor: pointer;font-size: 14px"
+                  @click="reportAdjust(row)"
+                >鎶ュ伐璋冩暣
+                </el-button>
+
+              </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,jumper"
+        popper-class="select_bottom"
+        @pagination="getMesOrderStepVerifySearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      title="鎶ュ伐璋冩暣"
+      :visible.sync="dialogVisible"
+      width="1080px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="80px">
+        <el-divider content-position="left">宸ュ崟淇℃伅</el-divider>
+
+        <el-form-item label="宸ュ崟缂栧彿" class="dialogFormItem">
+          <div style="width: 200px;">
+            {{ dialogForm.wo_code }}
+          </div>
+          <!--          <el-input v-model="dialogForm.postcode" style="width: 200px" />-->
+        </el-form-item>
+        <el-form-item label="浜у搧缂栫爜" class="dialogFormItem">
+          <div style="width: 200px;">
+            {{ dialogForm.partnumber }}
+          </div>
+          <!--          <el-input v-model="dialogForm.postname" style="width: 200px" />-->
+        </el-form-item>
+        <el-form-item label="浜у搧鍚嶇О" class="dialogFormItem">
+          <div style="width: 200px;">
+            {{ dialogForm.partname }}
+          </div>
+        </el-form-item>
+        <el-form-item label="浜у搧瑙勬牸" class="dialogFormItem">
+          <div style="width: 200px;">
+            {{ dialogForm.partspec ? dialogForm.partspec : '/' }}
+          </div>
+        </el-form-item>
+        <el-form-item label="鐢熶骇宸ュ簭" class="dialogFormItem">
+          <div style="width: 200px;">
+            {{ dialogForm.step_name }}
+          </div>
+        </el-form-item>
+        <el-form-item label="宸ュ簭鍗曚环" class="dialogFormItem">
+          <div style="width: 200px;">
+            {{ dialogForm.unprice ? dialogForm.unprice : '/' }}
+          </div>
+        </el-form-item>
+        <el-form-item v-if="dialogForm.flw_type==='Z'" label="鎶ュ伐鐝粍" class="dialogFormItem">
+          <div style="width: 200px;" class="ellipsis">
+            {{ dialogForm.usergroup_name ? dialogForm.usergroup_name : '/' }}
+          </div>
+        </el-form-item>
+        <el-form-item v-if="dialogForm.flw_type!=='Z'" label="渚涘簲鍟�" class="dialogFormItem">
+          <div style="width: 200px;" class="ellipsis">
+            {{ dialogForm.wx_name }}
+          </div>
+        </el-form-item>
+        <el-form-item label="鎶ュ伐浜哄憳" class="dialogFormItem">
+          <div style="width: 200px;" class="ellipsis">
+            {{ dialogForm.username }}
+          </div>
+        </el-form-item>
+        <el-form-item :label="dialogForm.flw_type==='Z'?'鍚堟牸鏁伴噺':'鏀舵枡鏁伴噺'" prop="report_qty" class="dialogFormItem">
+          <el-input
+            v-model="dialogForm.report_qty"
+            oninput="value=value.replace(/[^0-9]/g,'')"
+            style="width: 200px"
+          />
+        </el-form-item>
+
+        <el-divider content-position="left">鎶ュ伐鎯呭喌</el-divider>
+
+        <el-table
+          ref="tableDataDialogRef"
+          key="tableDataDialogKey"
+          :data="tableDataDialog"
+          border
+          row-class-name="custom-row"
+          height="200"
+          style="width: 100%;margin-top: 15px;"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+        >
+          <el-table-column
+            type="index"
+            label="搴忓彿"
+            align="center"
+            width="50"
+          />
+          <el-table-column
+            prop="stepcode"
+            show-tooltip-when-overflow
+            label="缂洪櫡缂栫爜/鍚嶇О"
+            align="center"
+            min-width="400"
+          >
+            <template slot-scope="{row}">
+              <el-select
+                v-model="row.defect_code"
+                style="width: 100%"
+                placeholder="璇烽�夋嫨"
+                multiple
+                filterable
+              >
+                <!--                collapse-tags-->
+                <el-option
+                  v-for="item in defectArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="defect_qty"
+            label="涓嶈壇鏁伴噺"
+            align="center"
+          >
+            <template slot-scope="{row}">
+              <el-input
+                v-model="row.defect_qty"
+                placeholder="璇疯緭鍏ユ暟閲�"
+                oninput="value=value.replace(/[^0-9]/g,'')"
+                style="width: 100%"
+              />
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="laborbad_qty"
+            label="宸ュ簾鏁伴噺"
+            align="center"
+          >
+            <template slot-scope="{row}">
+              <el-input
+                v-model="row.laborbad_qty"
+                placeholder="璇疯緭鍏ユ暟閲�"
+                oninput="value=value.replace(/[^0-9]/g,'')"
+                style="width: 100%"
+              />
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="materielbad_qty"
+            label="鏂欏簾鏁伴噺"
+            align="center"
+          >
+            <template slot-scope="{row}">
+              <el-input
+                v-model="row.materielbad_qty"
+                placeholder="璇疯緭鍏ユ暟閲�"
+                oninput="value=value.replace(/[^0-9]/g,'')"
+                style="width: 100%"
+              />
+            </template>
+          </el-table-column>
+        </el-table>
+
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
 
 <script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import { DefectPermissions, PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
+import { MesOrderStepModelSearch, MesOrderStepUpdateSeave, MesOrderStepVerifySearch } from '@/api/WorkOrder'
+
 export default {
-  name: 'ReportCorrect'
+  name: 'Zzjg',
+  components: {
+    Pagination
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        wkshopcode: '',
+        wo_code: '', // 宸ュ崟缂栫爜
+        partnumber: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+        reportuser: '', // 鎶ュ伐浜哄憳
+        reportdate: '', // 鎶ュ伐鏃堕棿
+
+        prop: 'report_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      total: 10,
+      tableData: [],
+      wkshopcodeArr: [],
+      dialogVisible: false,
+      dialogForm: {
+        'id': '',
+        'sbid': '',
+        'wo_code': '',
+        'partnumber': '',
+        partname: '',
+        partspec: '',
+        usergroup_name: '',
+        username: '',
+        'task_qty': '',
+        'wkshp_code': '',
+        'eqp_code': '',
+        'step_seq': '',
+        'step_code': '',
+        'step_name': '',
+        'flw_type': '',
+        'first_choke': '',
+        'last_choke': '',
+        'unprice': '',
+        'groupcode': '',
+        'usercode': '',
+        'report_date': '',
+        'report_qty': '',
+        'report_dvalue': '',
+        wx_code: '',
+        wx_name: '',
+        children: []
+      },
+      tableDataDialog: [],
+
+      defectArr: [], // 涓嶈壇缂洪櫡
+
+      dialogFormRules: {
+        report_qty: [
+          { required: true, message: '璇疯緭鍏ュ悎鏍兼暟閲�', trigger: ['blur', 'change'] }
+        ]
+      }
+
+    }
+  },
+  created() {
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+
+    this.getMesOrderStepVerifySearch()
+    this.getDefectPermissions()
+    this.getPrentOrganizationNoCompany()
+  },
+  methods: {
+    async getPrentOrganizationNoCompany() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopcodeArr = res
+    },
+    async getDefectPermissions() {
+      const { data: res3 } = await DefectPermissions() // 缂洪櫡
+      this.defectArr = res3
+    },
+    // 鎶ュ伐璋冩暣鍒楄〃鏌ヨ
+    async getMesOrderStepVerifySearch() {
+      let tempDate = this.form.reportdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        wo_code: this.form.wo_code,
+        partnumber: this.form.partnumber,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        reportuser: this.form.reportuser,
+        reportdate: tempDate,
+
+        prop: this.form.prop, // 鎺掑簭瀛楁
+        order: this.form.order, // 鎺掑簭瀛楁
+        page: this.form.page, // 绗嚑椤�
+        rows: this.form.rows // 姣忛〉澶氬皯鏉�
+      }
+      const res = await MesOrderStepVerifySearch(data)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getMesOrderStepVerifySearch()
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.wkshopcode = ''
+      this.form.wo_code = ''
+      this.form.partnumber = ''
+      this.form.partname = ''
+      this.form.partspec = ''
+      this.form.reportuser = ''
+      this.form.reportdate = ''
+      this.getMesOrderStepVerifySearch()
+    },
+
+    // 鎶ュ伐璋冩暣
+    async reportAdjust(row) {
+      const data = {
+        wo_code: row.wo_code,
+        step_code: row.step_code,
+        step_type: row.steptype,
+        isbott: row.first_choke,
+        isend: row.last_choke,
+        id: row.id,
+        sbid: row.sbid
+      }
+      const res = await MesOrderStepModelSearch(data)
+      if (res.code === '200') {
+        this.dialogForm.id = row.id
+        this.dialogForm.sbid = row.sbid
+        this.dialogForm.wo_code = row.wo_code
+        this.dialogForm.partnumber = row.partnumber
+        this.dialogForm.partname = row.partname
+        this.dialogForm.partspec = row.partspec
+        this.dialogForm.task_qty = row.task_qty
+        this.dialogForm.wkshp_code = row.wkshp_code
+        this.dialogForm.eqp_code = row.eqp_code
+        this.dialogForm.step_seq = row.step_seq
+        this.dialogForm.step_code = row.step_code
+        this.dialogForm.step_name = row.stepname
+        this.dialogForm.flw_type = row.steptype
+        this.dialogForm.first_choke = row.first_choke
+        this.dialogForm.last_choke = row.last_choke
+        this.dialogForm.unprice = row.step_price
+        this.dialogForm.groupcode = row.usergroup_code
+        this.dialogForm.usercode = row.usercode
+        this.dialogForm.usergroup_name = row.usergroup_name
+        this.dialogForm.username = row.username
+        this.dialogForm.report_date = row.report_date
+        this.dialogForm.report_qty = row.report_qty
+        this.dialogForm.report_qty2 = row.report_qty // old鍊�
+
+        this.dialogForm.wx_code = row.wx_code
+        this.dialogForm.wx_name = row.wx_name
+
+        if (res.data.length > 0) {
+          res.data.forEach(i => {
+            i.defect_code = i.defect_code.split(',')
+            i.defect_qty2 = i.defect_qty
+            i.laborbad_qty2 = i.laborbad_qty
+            i.materielbad_qty2 = i.materielbad_qty
+          })
+        }
+        this.tableDataDialog = res.data
+
+        this.dialogVisible = true
+      }
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.tableDataDialog = []
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    async dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(async valid => {
+        if (valid) {
+          const children = []
+
+          this.tableDataDialog.forEach(i => {
+            children.push({
+              ng_id: i.id,
+              ng_sbid: i.record_id,
+              ng_qty: parseFloat(i.defect_qty),
+              ng_dvalue: parseFloat(i.defect_qty) - parseFloat(i.defect_qty2),
+              laborbad_qty: parseFloat(i.laborbad_qty),
+              laborbad_dvalue: parseFloat(i.laborbad_qty) - parseFloat(i.laborbad_qty2),
+              materielbad_qty: parseFloat(i.materielbad_qty),
+              materielbad_dvalue: parseFloat(i.materielbad_qty) - parseFloat(i.materielbad_qty2),
+              bad_money: 0,
+              badmoney_dvalue: 0
+            })
+          })
+          const data = {
+            'id': this.dialogForm.id,
+            'sbid': this.dialogForm.sbid,
+            'wo_code': this.dialogForm.wo_code,
+            'partnumber': this.dialogForm.partnumber,
+            'task_qty': this.dialogForm.task_qty,
+            'wkshp_code': this.dialogForm.wkshp_code,
+            'eqp_code': this.dialogForm.eqp_code,
+            'step_seq': this.dialogForm.step_seq,
+            'step_code': this.dialogForm.step_code,
+            'flw_type': this.dialogForm.flw_type,
+            'first_choke': this.dialogForm.first_choke,
+            'last_choke': this.dialogForm.last_choke,
+            'unprice': this.dialogForm.unprice,
+            'groupcode': this.dialogForm.groupcode,
+            'usercode': this.dialogForm.usercode,
+            wxcode: this.dialogForm.wx_code,
+            'report_date': this.dialogForm.report_date,
+            'report_qty': parseFloat(this.dialogForm.report_qty),
+            'report_dvalue': parseFloat(this.dialogForm.report_qty) - parseFloat(this.dialogForm.report_qty2),
+            children
+          }
+          // console.log(JSON.stringify(data), 12)
+          // console.log(JSON.parse(JSON.stringify(data)), 12)
+          this.$store.state.app.buttonIsDisabled = true
+          const res = await MesOrderStepUpdateSeave([data])
+          if (res.code === '200') {
+            this.$notify.success('璋冩暣鎴愬姛锛�')
+            await this.getMesOrderStepVerifySearch()
+            this.$store.state.app.buttonIsDisabled = false
+            this.dialogVisible = false
+          } else {
+            this.$store.state.app.buttonIsDisabled = false
+            this.$notify.error('璋冩暣澶辫触锛�')
+          }
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 205
+        this.$refs.tableDataRef.doLayout()
+      })
+    }
+  }
 }
 </script>
 
-<style scoped>
+<style scoped lang="scss">
+.dialogFormItem {
+  margin: 0 10px 0 0;
+}
+
+::v-deep .el-dialog .el-divider__text {
+  font-weight: bolder !important;
+}
+
+::v-deep .el-dialog .el-form-item__label {
+  font-weight: lighter !important;
+}
+
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::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;
+}
 
 </style>
diff --git a/src/views/produce/reportVerify.vue b/src/views/produce/reportVerify.vue
index 81b99d2..2ccbeb3 100644
--- a/src/views/produce/reportVerify.vue
+++ b/src/views/produce/reportVerify.vue
@@ -1,11 +1,530 @@
-<template />
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-circle-check" @click="reportAdjust()">鎶ュ伐瀹℃牳</el-button>
+        <!--        <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=2')">瀵煎叆</el-button>-->
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="瀹℃牳鐘舵��" style=" display: flex;">
+              <el-select
+                v-model="form.reviewstatus"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in reviewstatusArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">
+              <el-select
+                v-model="form.wkshopcode"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in wkshopcodeArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="宸ュ崟缂栫爜" style=" display: flex;">
+              <el-input v-model="form.wo_code" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.partnumber" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="浜у搧鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.partname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <!--            <el-form-item v-show="isExpandForm" label="浜у搧瑙勬牸" style=" display: flex;">-->
+            <!--              <el-input v-model="form.partspec" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+            <!--            </el-form-item>-->
+
+            <el-form-item v-show="isExpandForm" label="宸ュ簭鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.stepname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+
+            <el-form-item v-show="isExpandForm" label="鎶ュ伐浜哄憳" style=" display: flex;">
+              <el-input v-model="form.reportuser" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎶ュ伐鏃堕棿" style=" display: flex;">
+              <el-date-picker
+                v-model="form.reportdate"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="getMesOrderStepReportVerifySearch">鏌ヨ
+            </el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :data="tableData"
+          :height="isExpandForm?tableHeight:(tableHeight+40)+'px'"
+          border
+          row-class-name="custom-row"
+          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+40)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column
+            type="selection"
+            width="50"
+            :selectable="selected"
+            fixed
+          />
+          <el-table-column
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="verify"
+            label="鏄惁宸插鏍�"
+            sortable="custom"
+            width="120"
+            show-overflow-tooltip
+          >
+            <template slot-scope="{row}">
+              <el-tag v-if="row.verify==='Y'" size="small" type="success">宸插鏍�</el-tag>
+              <el-tag v-if="row.verify==='N'" size="small" type="danger">鏈鏍�</el-tag>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wo_code"
+            label="鎶ュ伐宸ュ崟"
+            sortable="custom"
+            min-width="160"
+            show-overflow-tooltip
+          />
+          <el-table-column
+            prop="partnumber"
+            label="浜у搧缂栫爜"
+            show-overflow-tooltip
+            sortable="custom"
+            min-width="110"
+          />
+          <el-table-column
+            prop="partname"
+            label="浜у搧鍚嶇О"
+            sortable="custom"
+            show-overflow-tooltip
+            min-width="110"
+          />
+          <el-table-column
+            prop="wkshp_name"
+            label="杞﹂棿鍚嶇О"
+            sortable="custom"
+            show-overflow-tooltip
+            min-width="110"
+          />
+          <el-table-column
+            prop="task_qty"
+            label="浠诲姟鏁伴噺"
+            sortable="custom"
+            show-overflow-tooltip
+            min-width="110"
+          />
+          <!--          <el-table-column-->
+          <!--            prop="wkshp_name"-->
+          <!--            label="杞﹂棿鍚嶇О"-->
+          <!--            show-overflow-tooltip-->
+          <!--            sortable="custom"-->
+          <!--            min-width="110"-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="eqp_name"-->
+          <!--            label="璁惧鍚嶇О"-->
+          <!--            sortable="custom"-->
+          <!--            show-overflow-tooltip-->
+          <!--            min-width="110"-->
+          <!--          />-->
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+            show-overflow-tooltip
+            sortable="custom"
+            min-width="110"
+          />
+          <!--          <el-table-column-->
+          <!--            prop="step_price"-->
+          <!--            label="宸ュ簭鍗曚环"-->
+          <!--            show-overflow-tooltip-->
+          <!--            sortable="custom"-->
+          <!--            min-width="110"-->
+          <!--          />-->
+          <el-table-column
+            prop="steptype"
+            label="宸ュ簭绫诲瀷"
+            show-overflow-tooltip
+            sortable="custom"
+            min-width="110"
+          >
+            <template slot-scope="{row}">
+              {{ row.steptype === 'Z' ? '鑷埗' : '澶栧崗' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wx_name"
+            label="渚涘簲鍟�"
+            show-overflow-tooltip
+            sortable="custom"
+            min-width="110"
+          >
+            <template slot-scope="{row}">
+              {{ row.wx_name ? row.wx_name : '/' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="usergroup_name"
+            label="鎶ュ伐鐝粍"
+            show-overflow-tooltip
+            min-width="110"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              {{ row.usergroup_name ? row.usergroup_name : '/' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="username"
+            label="鎶ュ伐浜哄憳"
+            show-overflow-tooltip
+            min-width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="report_qty"
+            label="鍚堟牸鏁伴噺"
+            show-overflow-tooltip
+            sortable="custom"
+            min-width="110"
+          />
+          <el-table-column
+            prop="ng_qty"
+            label="涓嶈壇鏁伴噺"
+            show-overflow-tooltip
+            min-width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="laborbad_qty"
+            label="宸ュ簾鏁伴噺"
+            min-width="110"
+            show-overflow-tooltip
+            sortable="custom"
+          />
+          <el-table-column
+            prop="materielbad_qty"
+            label="鏂欏簾鏁伴噺"
+            show-overflow-tooltip
+            min-width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="report_date"
+            label="鎶ュ伐鏃堕棿"
+            min-width="160"
+            show-overflow-tooltip
+            sortable="custom"
+          />
+          <el-table-column
+            label="鎿嶄綔"
+            width="100"
+            fixed="right"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-button
+                  type="text"
+                  style="cursor: pointer;font-size: 14px"
+                  @click="reportAdjust(row)"
+                >鎶ュ伐瀹℃牳
+                </el-button>
+
+              </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,jumper"
+        popper-class="select_bottom"
+        @pagination="getMesOrderStepReportVerifySearch"
+      />
+    </div>
+
+  </div>
+</template>
 
 <script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import { MesOrderDistribution, MesOrderStepReportVerifySearch, MesOrderStepReportVerifySeave } from '@/api/WorkOrder'
+import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
+
 export default {
-  name: 'ReportVerify'
+  name: 'Zzjg',
+  components: {
+    Pagination
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        wkshopcode: '',
+        wo_code: '', // 宸ュ崟缂栫爜
+        partnumber: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+
+        stepname: '', // 宸ュ簭鍚嶇О
+        reportuser: '', // 鎶ュ伐浜哄憳
+        reportdate: '', // 鎶ュ伐鏃堕棿
+
+        reviewstatus: '', // 瀹℃牳鐘舵��
+
+        prop: 'report_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      total: 10,
+      tableData: [],
+      wkshopcodeArr: [],
+
+      multipleSelection: [],
+      reviewstatusArr: [
+        { code: 'Y', name: '宸插鏍�' },
+        { code: 'N', name: '鏈鏍�' }
+      ]
+
+    }
+  },
+  created() {
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+
+    this.getMesOrderStepReportVerifySearch()
+    this.getPrentOrganizationNoCompany()
+  },
+  methods: {
+    async getPrentOrganizationNoCompany() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopcodeArr = res
+    },
+    // 鎶ュ伐璋冩暣鍒楄〃鏌ヨ
+    async getMesOrderStepReportVerifySearch() {
+      let tempDate = this.form.reportdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        wo_code: this.form.wo_code,
+        reviewstatus: this.form.reviewstatus,
+        partnumber: this.form.partnumber,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        reportuser: this.form.reportuser,
+        stepname: this.form.stepname,
+        reportdate: tempDate,
+
+        prop: this.form.prop, // 鎺掑簭瀛楁
+        order: this.form.order, // 鎺掑簭瀛楁
+        page: this.form.page, // 绗嚑椤�
+        rows: this.form.rows // 姣忛〉澶氬皯鏉�
+      }
+      const res = await MesOrderStepReportVerifySearch(data)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getMesOrderStepReportVerifySearch()
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.wkshopcode = ''
+      this.form.wo_code = ''
+      this.form.partnumber = ''
+      this.form.partname = ''
+      this.form.partspec = ''
+      this.form.stepname = ''
+      this.form.reportuser = ''
+      this.form.reportdate = ''
+      this.form.reviewstatus = ''
+      this.getMesOrderStepReportVerifySearch()
+    },
+
+    // 鎶ュ伐瀹℃牳
+    async reportAdjust(row) {
+      if (row && row.verify === 'Y') {
+        return this.$message.info('姝ゅ伐鍗曞凡瀹℃牳锛�')
+      }
+      this.$confirm('鏄惁纭瀹℃牳?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        if (row) {
+          this.multipleSelection = [row]
+        }
+        const data = {
+          zdata: [],
+          wdata: []
+        }
+        this.multipleSelection.forEach(i => {
+          if (i.steptype === 'Z') {
+            data.zdata.push(i.id)
+          } else {
+            data.wdata.push(i.id)
+          }
+        })
+        MesOrderStepReportVerifySeave(data).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('瀹℃牳鎴愬姛锛�')
+            this.getMesOrderStepReportVerifySearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝鏍革紒')
+      })
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val
+    },
+    selected(row) {
+      return row.verify === 'N'
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+        this.$refs.tableDataRef.doLayout()
+      })
+    }
+  }
 }
 </script>
 
-<style scoped>
+<style scoped lang="scss">
+.dialogFormItem {
+  margin: 0 10px 0 0;
+}
+
+::v-deep .el-dialog .el-divider__text {
+  font-weight: bolder !important;
+}
+
+::v-deep .el-dialog .el-form-item__label {
+  font-weight: lighter !important;
+}
+
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::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;
+}
 
 </style>
diff --git a/src/views/produce/stepReport.vue b/src/views/produce/stepReport.vue
index 42bbb50..b48169f 100644
--- a/src/views/produce/stepReport.vue
+++ b/src/views/produce/stepReport.vue
@@ -1,11 +1,1517 @@
-<template />
+<template>
+  <div>
+    <div class="body" style="padding-top: 10px;" :style="{height:mainHeight+'px'}">
+
+      <div style="position: absolute;right:36px;z-index: 2;top: 13px">
+        <el-button
+          v-if="activeName==='鐢熶骇鍒楄〃'&&tableData.length>0"
+          v-waves
+          icon="el-icon-thumb"
+          type="primary"
+          :disabled="radioSelected===''"
+          @click="report()"
+        >鎶ュ伐
+        </el-button>
+        <el-button
+          v-if="activeName==='澶栧崗鍙戞枡'&&tableData.length>0"
+          v-waves
+          type="primary"
+          icon="el-icon-thumb"
+          :disabled="radioSelected===''"
+          @click="sendOut()"
+        >鍙戞枡
+        </el-button>
+        <el-button
+          v-if="activeName==='澶栧崗鏀舵枡'&&tableData.length>0"
+          v-waves
+          type="primary"
+          icon="el-icon-thumb"
+          :disabled="radioSelected===''"
+          @click="takeIn()"
+        >鏀舵枡
+        </el-button>
+        <el-button
+          v-if="activeName==='涓嶈壇寰呭鐞�'&&tableData.length>0"
+          v-waves
+          type="primary"
+          icon="el-icon-thumb"
+          :disabled="radioSelected===''"
+          @click="handleBad()"
+        >澶勭悊
+        </el-button>
+      </div>
+
+      <div v-if="form.wocode" style="position: absolute;left: 460px;z-index: 2;top: 23px;font-weight: bolder">
+        褰撳墠宸ュ崟鍙蜂负锛歿{ form.wocode }}
+      </div>
+
+      <el-tabs
+        ref="elTabs"
+        v-model="activeName"
+        type="border-card"
+        @tab-click="tabClick"
+      >
+
+        <el-tab-pane
+          v-for="item in elTabsArr"
+          :key="item.code"
+          :label="item.name"
+          :name="item.name"
+        >
+
+          <div class="bodyTopFormGroup">
+            <el-form
+              ref="form"
+              :model="form"
+              label-width="100px"
+              inline
+              style="display: flex;"
+            >
+              <div class="elForm">
+
+                <el-form-item label="宸ュ崟鍙�" style=" display: flex;">
+                  <el-input
+                    v-model="workOrderCurrentValue"
+                    :name="'produceCode'+item.code"
+                    placeholder="璇锋壂鎻忔垨杈撳叆"
+                    style="width: 300px"
+
+                    @keyup.enter.native="val=>enterNative(val,'produceCode' + item.code)"
+                  />
+                </el-form-item>
+                <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
+                  <el-input
+                    v-model="form.partcode"
+                    placeholder="璇疯緭鍏�"
+                    style="width: 200px"
+
+                    @keyup.enter.native="val=>enterNative(val,'produceCode' + item.code)"
+                  />
+                </el-form-item>
+                <el-form-item label="浜у搧鍚嶇О" style=" display: flex;">
+                  <el-input
+                    v-model="form.partname"
+                    placeholder="璇疯緭鍏�"
+
+                    style="width: 200px"
+                    @keyup.enter.native="val=>enterNative(val,'produceCode' + item.code)"
+                  />
+                </el-form-item>
+                <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">
+                  <el-select
+                    v-model="form.wkshopcode"
+                    filterable
+                    :popper-append-to-body="false"
+                    style="width: 200px"
+
+                    placeholder="璇烽�夋嫨"
+                  >
+                    <el-option
+                      v-for="item in wkshopcodeArr"
+                      :key="item.torg_code"
+                      :label="item.torg_name"
+                      :value="item.torg_code"
+                    />
+                  </el-select>
+                </el-form-item>
+
+                <!--                <el-form-item label="瑙勬牸鍨嬪彿" style=" display: flex;">-->
+                <!--                  <el-input v-model="form.partspec" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+                <!--                </el-form-item>-->
+
+              </div>
+              <div
+                class="bodySearchReset"
+                :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+              >
+                <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+                <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+              </div>
+            </el-form>
+            <div
+              class="bodyTopFormExpand"
+              style="height:5px"
+            >
+              <!--          <svg-icon-->
+              <!--            v-show="mouseHoverType==='mouseout'"-->
+              <!--            style="cursor: pointer"-->
+              <!--            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"-->
+              <!--            @mouseenter="mouseHoverType=$event.type"-->
+              <!--          />-->
+              <!--          <svg-icon-->
+              <!--            v-show="mouseHoverType==='mouseenter'"-->
+              <!--            style="cursor: pointer"-->
+              <!--            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"-->
+              <!--            @click="isExpandForm=!isExpandForm"-->
+              <!--            @mouseout="mouseHoverType=$event.type"-->
+              <!--          />-->
+            </div>
+          </div>
+
+          <div class="elTableDiv">
+            <el-table
+              ref="tableDataRef"
+              :key="'tableDataRef'+item.code"
+              class="tableFixed"
+              :data="tableData"
+              :height="tableHeight+50"
+              border
+              row-class-name="custom-row"
+              :style="{width: 100+'%',height:tableHeight+'px'}"
+              highlight-current-row
+              :header-cell-style="headerCellStyle()"
+              :cell-style="cellStyle()"
+              @sort-change="sortChange"
+              @row-click="rowClick"
+            >
+              <el-table-column
+                width="50"
+                fixed
+              >
+                <template slot-scope="{row}">
+                  <el-radio
+                    v-model="radioSelected"
+                    :label="row.id"
+                    style="color: transparent;padding-left: 10px;"
+                  />
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="rowNum"
+                width="50"
+                label="搴忓彿"
+                fixed
+              />
+              <el-table-column
+                v-if="activeName!=='涓嶈壇寰呭鐞�'"
+                prop="status"
+                show-tooltip-when-overflow
+                label="鐘舵��"
+                sortable="custom"
+                width="80"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.status==='NEW'">鏂拌鍗�</div>
+                  <div v-if="row.status==='ALLO'">宸叉淳鍙�</div>
+                  <div v-if="row.status==='START'">寮�宸�</div>
+                  <div v-if="row.status==='CLOSED'">瀹屽伐</div>
+                  <div v-if="row.status==='NOSCHED'">寰呮帓绋�</div>
+                  <div v-if="row.status==='SCHED'">宸叉帓绋�</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="wo_code"
+                label="宸ュ崟鍙�"
+                min-width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partcode"
+                label="浜у搧缂栫爜"
+                min-width="110"
+                sortable="custom"
+                show-tooltip-when-overflow
+              />
+              <el-table-column
+                prop="partname"
+                min-width="110"
+                show-tooltip-when-overflow
+                label="浜у搧鍚嶇О"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partspec"
+                min-width="110"
+                show-tooltip-when-overflow
+                label="瑙勬牸鍨嬪彿"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  {{ row.partspec ? row.partspec : '/' }}
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="wkshp_name"
+                min-width="110"
+                show-tooltip-when-overflow
+                label="杞﹂棿鍚嶇О"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="stepname"
+                label="宸ュ簭鍚嶇О"
+                show-tooltip-when-overflow
+                width="120"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="plan_qty"
+                label="浠诲姟鏁伴噺"
+                width="110"
+                sortable="custom"
+                show-tooltip-when-overflow
+              />
+              <el-table-column
+                v-if="activeName==='澶栧崗鍙戞枡'||activeName==='澶栧崗鏀舵枡'"
+                prop="fqty"
+                show-tooltip-when-overflow
+                label="宸插彂鏂欐暟閲�"
+                sortable="custom"
+                width="120"
+              />
+              <el-table-column
+                prop="good_qty"
+                show-tooltip-when-overflow
+                :label="activeName==='澶栧崗鍙戞枡'||activeName==='澶栧崗鏀舵枡'?'宸叉敹鏂欐暟閲�':'鍚堟牸鏁伴噺'"
+                sortable="custom"
+                width="120"
+              />
+              <el-table-column
+                prop="ng_qty"
+                label="涓嶈壇鏁伴噺"
+                show-tooltip-when-overflow
+                width="120"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="laborbad_qty"
+                label="宸ュ簾鏁伴噺"
+                width="120"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="materielbad_qty"
+                label="鏂欏簾鏁伴噺"
+                width="120"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+
+              <el-table-column
+                label="鎿嶄綔"
+                width="120"
+                fixed="right"
+              >
+                <template slot-scope="{row}">
+                  <div class="operationClass">
+                    <el-button v-if="activeName==='鐢熶骇鍒楄〃'" v-waves icon="el-icon-thumb" type="text" @click="report(row)">
+                      鎶ュ伐
+                    </el-button>
+                    <el-button
+                      v-if="activeName==='澶栧崗鍙戞枡'"
+                      v-waves
+                      icon="el-icon-thumb"
+                      type="text"
+                      @click="sendOut(row)"
+                    >鍙戞枡
+                    </el-button>
+                    <el-button v-if="activeName==='澶栧崗鏀舵枡'" v-waves icon="el-icon-thumb" type="text" @click="takeIn(row)">
+                      鏀舵枡
+                    </el-button>
+                    <el-button
+                      v-if="activeName==='涓嶈壇寰呭鐞�'"
+                      v-waves
+                      icon="el-icon-thumb"
+                      type="text"
+                      @click="handleBad(row)"
+                    >澶勭悊
+                    </el-button>
+                  </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="search"
+          />
+        </el-tab-pane>
+
+      </el-tabs>
+
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="dialogTitle"
+      :visible.sync="dialogVisible"
+      width="1160px"
+      :close-on-click-modal="false"
+      :top="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'? '6vh':'15vh'"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px">
+        <!--        <el-divider v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'||activeName==='涓嶈壇寰呭鐞�'" content-position="left">鍩烘湰淇℃伅</el-divider>-->
+        <el-divider v-if="activeName==='鐢熶骇鍒楄〃'" content-position="left">鎶ュ伐淇℃伅</el-divider>
+        <el-divider v-if="activeName==='澶栧崗鏀舵枡'" content-position="left">鏀舵枡淇℃伅</el-divider>
+        <el-divider v-if="activeName==='涓嶈壇寰呭鐞�'" content-position="left">寰呭鐞嗕俊鎭�</el-divider>
+        <el-form-item label="宸ュ崟缂栧彿" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.wo_code }}</div>
+        </el-form-item>
+        <el-form-item label="浜у搧缂栫爜" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.partnumber }}</div>
+        </el-form-item>
+        <el-form-item label="浜у搧鍚嶇О" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.partname }}</div>
+        </el-form-item>
+        <el-form-item label="瑙勬牸鍨嬪彿" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.partspec ? dialogForm.partspec : '/' }}</div>
+        </el-form-item>
+        <el-form-item label="褰撳墠宸ュ簭" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.stepname }}</div>
+        </el-form-item>
+        <el-form-item label="涓嬮亾宸ュ簭" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.nextstepname ? dialogForm.nextstepname : '/' }}</div>
+        </el-form-item>
+        <el-form-item label="浠诲姟鏁伴噺" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.planqty }}</div>
+        </el-form-item>
+
+        <el-form-item v-if="activeName==='涓嶈壇寰呭鐞�'" label="鍚堟牸鏁伴噺" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.noreportqty }}</div>
+        </el-form-item>
+        <el-form-item v-if="activeName==='涓嶈壇寰呭鐞�'" label="涓嶈壇鏁伴噺" class="dialogFormItem">
+          <div class="dialogFormItemDiv">{{ dialogForm.noputqty }}</div>
+        </el-form-item>
+
+        <el-form-item
+          v-if="activeName!=='涓嶈壇寰呭鐞�'"
+          :label="activeName==='鐢熶骇鍒楄〃'? '鏈姤/宸叉姤':(activeName==='澶栧崗鍙戞枡'?'鏈彂/宸插彂':'鏈敹/宸叉敹')"
+          class="dialogFormItem"
+        >
+          <div class="dialogFormItemDiv">{{ dialogForm.noreportqty + '/' + dialogForm.reportqty }}</div>
+        </el-form-item>
+
+        <el-form-item v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'" label="涓嶈壇鏁伴噺" class="dialogFormItem">
+          <div class="dialogFormItemDiv" style="color:red;">{{ dialogForm.noputqty }}</div>
+        </el-form-item>
+
+        <el-form-item v-if="activeName==='鐢熶骇鍒楄〃'" label="鎶ュ伐璁惧" class="dialogFormItem">
+          <el-select
+            v-model="dialogForm.eqpcode"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            filterable
+            clearable
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in eqpArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item v-if="activeName==='鐢熶骇鍒楄〃'" label="璁′欢鏂瑰紡" class="dialogFormItem">
+          <el-radio-group
+            v-model="dialogForm.reckway"
+            style="width: 200px;"
+            @change="reckwayChange"
+          >
+            <el-radio label="person">涓汉</el-radio>
+            <el-radio label="group">鐝粍</el-radio>
+          </el-radio-group>
+        </el-form-item>
+
+        <el-form-item
+          v-if="activeName==='鐢熶骇鍒楄〃'"
+          :prop="dialogForm.reckway==='group'?'usergroupcode':''"
+          label="鎶ュ伐鐝粍"
+          class="dialogFormItem"
+        >
+          <el-select
+            v-model="dialogForm.usergroupcode"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            filterable
+            :disabled="dialogForm.reckway!=='group'"
+            :popper-append-to-body="false"
+            @change="usergroupChange"
+          >
+            <el-option
+              v-for="item in usergroupArr"
+              :key="item.usergroupcode"
+              :label="item.usergroupname"
+              :value="item.usergroupcode"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item v-if="activeName==='鐢熶骇鍒楄〃'" prop="reportuser" label="鎶ュ伐浜哄憳" class="dialogFormItem">
+          <el-select
+            v-model="dialogForm.reportuser"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            filterable
+            multiple
+            collapse-tags
+            :multiple-limit="dialogForm.reckway==='group'?0:1"
+            :disabled="dialogForm.reckway==='group'&&dialogForm.usergroupcode===''"
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in reportuserArr"
+              :key="item.usercode"
+              :label="item.username"
+              :value="item.usercode"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item v-if="activeName==='鐢熶骇鍒楄〃'" prop="startqty" label="鍚堟牸鏁伴噺" class="dialogFormItem">
+          <el-input v-model="dialogForm.startqty" oninput="value=value.replace(/[^\d]/g,'')" style="width: 200px" />
+        </el-form-item>
+
+        <el-form-item v-if="activeName==='澶栧崗鍙戞枡'||activeName==='澶栧崗鏀舵枡'" prop="wxcode" label="澶栧崗渚涙柟" class="dialogFormItem">
+          <el-select
+            v-model="dialogForm.wxcode"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            filterable
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in wxArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item v-if="activeName==='澶栧崗鍙戞枡'" prop="outuser" label="鍙戞枡浜哄憳" class="dialogFormItem">
+          <el-select
+            v-model="dialogForm.outuser"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            filterable
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in reportuserArr"
+              :key="item.usercode"
+              :label="item.username"
+              :value="item.usercode"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item v-if="activeName==='澶栧崗鍙戞枡'" prop="fqty" label="鍙戞枡鏁伴噺" class="dialogFormItem">
+          <el-input v-model="dialogForm.fqty" oninput="value=value.replace(/[^\d]/g,'')" style="width: 200px" />
+        </el-form-item>
+
+        <el-form-item v-if="activeName==='澶栧崗鏀舵枡'" prop="inuser" label="鏀舵枡浜哄憳" class="dialogFormItem">
+          <el-select
+            v-model="dialogForm.inuser"
+            style="width:200px"
+            placeholder="璇烽�夋嫨"
+            filterable
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in reportuserArr"
+              :key="item.usercode"
+              :label="item.username"
+              :value="item.usercode"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item v-if="activeName==='澶栧崗鏀舵枡'" prop="sqty" label="鏀舵枡鏁伴噺" class="dialogFormItem">
+          <el-input v-model="dialogForm.sqty" oninput="value=value.replace(/[^\d]/g,'')" style="width: 200px" />
+        </el-form-item>
+
+        <el-divider v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'" content-position="left">涓嶈壇鏄庣粏淇℃伅</el-divider>
+        <el-button
+          v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'"
+          v-waves
+          type="primary"
+          icon="el-icon-circle-plus-outline"
+          @click="addDefect"
+        >鏂板
+        </el-button>
+        <el-table
+          v-if="activeName==='鐢熶骇鍒楄〃'||activeName==='澶栧崗鏀舵枡'"
+          ref="defectTableDataRef"
+          key="defectTableDataKey"
+          :data="defectTableData"
+          border
+          row-class-name="custom-row"
+          height="200"
+          style="width: 100%;margin-top: 15px;"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+        >
+          <el-table-column
+            type="index"
+            label="搴忓彿"
+            align="center"
+            width="50"
+          />
+          <el-table-column
+            prop="stepcode"
+            label="缂洪櫡缂栫爜/鍚嶇О"
+            align="center"
+            min-width="450"
+          >
+            <template slot-scope="{row}">
+              <el-select
+                v-model="row.code"
+                style="width: 100%"
+                placeholder="璇烽�夋嫨"
+                multiple
+                filterable
+              >
+                <!--                collapse-tags-->
+                <el-option
+                  v-for="item in defectArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            prop="badqty"
+            label="涓嶈壇鏁伴噺"
+            align="center"
+          >
+            <template slot-scope="{row}">
+              <el-input
+                v-model="row.badqty"
+                placeholder="璇疯緭鍏ユ暟閲�"
+                oninput="value=value.replace(/[^0-9]/g,'')"
+                style="width: 100%"
+                @click.stop=""
+                @change="badqtyChange"
+              />
+            </template>
+          </el-table-column>
+          <el-table-column
+            label="鎿嶄綔"
+            width="50"
+            align="center"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                  <i
+                    class="el-icon-delete"
+                    :style="{color:$store.state.settings.theme}"
+                    style="margin-left: 7px;"
+                    @click="defectDel(row)"
+                  />
+                </el-tooltip>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+
+        <el-divider v-if="activeName==='澶栧崗鏀舵枡'" content-position="left">鍙敹鏂欎緵搴斿晢</el-divider>
+        <div
+          v-for="(item,index) in dialogForm.list"
+          v-if="item.fqty>0"
+          :key="item.name"
+          style="display: flex;line-height: 26px;height: 26px;margin-left:30px;align-items: center"
+        >
+          <div
+            style="color: #fff;width: 22px;height: 22px;display: flex;justify-content: center;align-items: center;border-radius: 50%"
+            :style="{backgroundColor:$store.state.settings.theme}"
+          >{{ index + 1 }}
+          </div>
+          <div style="margin-left:30px;width: 160px;" class="ellipsis">
+            {{ item.tp }}
+          </div>
+          <div style="margin-left:30px;">
+            鍙敹鏁伴噺锛歿{ item.acceptQty }}
+          </div>
+        </div>
+
+        <el-divider v-if="activeName==='涓嶈壇寰呭鐞�'" content-position="left">涓嶈壇淇℃伅鏄庣粏</el-divider>
+        <el-table
+          v-if="activeName==='涓嶈壇寰呭鐞�'"
+          ref="badTableDataDataRef"
+          key="badTableDataDataKey"
+          :data="badTableData"
+          border
+          row-class-name="custom-row"
+          height="300"
+          style="width: 100%;margin-top: 15px;"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+        >
+          <el-table-column
+            type="index"
+            label="搴忓彿"
+            align="center"
+            width="50"
+          />
+          <!--          <el-table-column-->
+          <!--            prop="step_code"-->
+          <!--            label="宸ュ簭缂栫爜"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            align="center"-->
+          <!--          />-->
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+            show-tooltip-when-overflow
+            align="center"
+          />
+          <el-table-column
+            prop="plan_qty"
+            label="浠诲姟鏁伴噺"
+            show-tooltip-when-overflow
+            align="center"
+          />
+          <el-table-column
+            prop="report_qty"
+            label="鍚堟牸鏁伴噺"
+            show-tooltip-when-overflow
+            align="center"
+          />
+          <el-table-column
+            prop="ng_qty"
+            label="涓嶈壇鏁伴噺"
+            show-tooltip-when-overflow
+            align="center"
+          />
+          <el-table-column
+            prop="defect_name"
+            label="涓嶈壇鍘熷洜"
+            show-tooltip-when-overflow
+            align="center"
+          />
+          <el-table-column
+            prop="repair_qty"
+            label="缁翠慨鍚堟牸鏁伴噺"
+            align="center"
+          >
+            <template slot-scope="{row}">
+              <el-input
+                v-model="row.repair_qty"
+                placeholder="璇疯緭鍏ユ暟閲�"
+                oninput="value=value.replace(/[^0-9]/g,'')"
+                style="width: 100%"
+                @click.stop=""
+              />
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="laborbad_qty"
+            label="宸ュ簾鏁伴噺"
+            align="center"
+          >
+            <template slot-scope="{row}">
+              <el-input
+                v-model="row.laborbad_qty"
+                placeholder="璇疯緭鍏ユ暟閲�"
+                oninput="value=value.replace(/[^0-9]/g,'')"
+                style="width: 100%"
+                @click.stop=""
+              />
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="materielbad_qty"
+            label="鏂欏簾鏁伴噺"
+            align="center"
+          >
+            <template slot-scope="{row}">
+              <el-input
+                v-model="row.materielbad_qty"
+                placeholder="璇疯緭鍏ユ暟閲�"
+                oninput="value=value.replace(/[^0-9]/g,'')"
+                style="width: 100%"
+                @click.stop=""
+              />
+            </template>
+          </el-table-column>
+
+          <!--          <el-table-column-->
+          <!--            prop="badqty"-->
+          <!--            label="涓嶈壇鏁伴噺"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            align="center"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <el-input-->
+          <!--                v-model="row.badqty"-->
+          <!--                placeholder="璇疯緭鍏ユ暟閲�"-->
+          <!--                oninput="value=value.replace(/[^0-9]/g,'')"-->
+          <!--                style="width: 100%"-->
+          <!--                @click.stop=""-->
+          <!--                @change="badqtyChange"-->
+          <!--              />-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+
+          <!--          <el-table-column-->
+          <!--            label="鎿嶄綔"-->
+          <!--            width="50"-->
+          <!--            align="center"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div class="operationClass">-->
+          <!--                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">-->
+          <!--                  <i-->
+          <!--                    class="el-icon-delete"-->
+          <!--                    :style="{color:$store.state.settings.theme}"-->
+          <!--                    style="margin-left: 7px;"-->
+          <!--                    @click="defectDel(row)"-->
+          <!--                  />-->
+          <!--                </el-tooltip>-->
+          <!--              </div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+
+        </el-table>
+      </el-form>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
 
 <script>
+import Pagination from '@/components/Pagination'
+import $ from 'jquery'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import {
+  EditOrderNgStepSeave,
+  MesOrderNgStepSearch,
+  MesOrderNgSubStepSearch,
+  MesOrderStepSearch, MesOrderStepStart,
+  MesOrderWxStepSearch, SavaMesOrderStepIn, SavaMesOrderStepOut, SavaMesOrderStepReport
+} from '@/api/WorkOrder'
+import {
+  CustomerPermissions,
+  DefectPermissions,
+  EqpPermissions,
+  GroupsPermissions,
+  GroupsPersonPermissions,
+  PersonPermissions, PrentOrganizationNoCompany
+} from '@/api/GeneralBasicData'
+import { nanoid } from 'nanoid'
+import { LabelBarCode } from '@/api/systemSetting'
+import { getCookie } from '@/utils/auth'
+
 export default {
-  name: 'StepReport'
+  name: 'SCKBG',
+  components: {
+    Pagination
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        wkshopcode: '',
+        wocode: '', // 宸ュ崟鍙�
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      wkshopcodeArr: [],
+      total: 10,
+      tableData: [],
+      activeName: '鐢熶骇鍒楄〃',
+      elTabsArr: [
+        { code: 'ZZ', name: '鐢熶骇鍒楄〃' },
+        { code: 'OUT', name: '澶栧崗鍙戞枡' },
+        { code: 'IN', name: '澶栧崗鏀舵枡' },
+        { code: 'BAD', name: '涓嶈壇寰呭鐞�' }
+      ],
+
+      radioSelected: '', // 澶氶�夋閫変腑鍊�
+
+      dialogVisible: false,
+      dialogTitle: '', // 瀵硅瘽妗嗗皬鏍囬
+
+      dialogForm: {
+        'wo_code': '',
+        'partnumber': '',
+        'partname': '',
+        'partspec': '',
+        'seq': '',
+        'stepcode': '',
+        'stepname': '',
+        'stepprice': '', // 宸ュ簭鍗曚环
+        'nextstepcode': '',
+        'nextstepname': '',
+        'nextstepprice': '',
+        'stepdesc': '',
+        'planqty': 0,
+        'startqty': 0, //
+        'noreportqty': 0, // 鏈姤鏁伴噺
+        'reportqty': 0, // 宸叉姤鏁伴噺
+        'noputqty': 0, // 涓嶈壇鏁伴噺
+        'wkshopcode': '',
+        'wkshopname': '',
+        'eqpcode': '',
+        'eqpname': '',
+
+        remarks: '', // 澶囨敞
+        inbarcode: '', // 鍏ュ簱鏉$爜
+        defectlist: '', // 涓嶈壇姹囨��
+        reckway: 'person', // 璁′欢鏂瑰紡(鐝粍:group銆佷釜浜�:person)
+        usergroupcode: '', // 鐝粍缂栫爜
+        reportuser: [], // 鎶ュ伐浜哄憳
+
+        wxcode: '',
+        outuser: '',
+        fqty: '',
+        inuser: '',
+        sqty: '',
+        list: ''
+
+      },
+      dialogFormRules: {
+        eqpcode: [
+          { required: true, message: '璇烽�夋嫨鎶ュ伐璁惧', trigger: ['blur', 'change'] }
+        ],
+        usergroupcode: [
+          { required: true, message: '璇烽�夋嫨鎶ュ伐鐝粍', trigger: ['blur', 'change'] }
+        ],
+        reportuser: [
+          { required: true, message: '璇烽�夋嫨鎶ュ伐浜哄憳', trigger: ['blur', 'change'] }
+        ],
+        startqty: [
+          { required: true, message: '璇疯緭鍏ュ悎鏍兼暟閲�', trigger: ['blur', 'change'] }
+        ],
+        wxcode: [
+          { required: true, message: '璇烽�夋嫨澶栧崗渚涙柟', trigger: ['blur', 'change'] }
+        ],
+        outuser: [
+          { required: true, message: '璇烽�夋嫨鍙戞枡浜哄憳', trigger: ['blur', 'change'] }
+        ],
+        inuser: [
+          { required: true, message: '璇烽�夋嫨鏀舵枡浜哄憳', trigger: ['blur', 'change'] }
+        ],
+        fqty: [
+          { required: true, message: '璇疯緭鍏ュ彂鏂欐暟閲�', trigger: ['blur', 'change'] }
+        ],
+        sqty: [
+          { required: true, message: '璇疯緭鍏ユ敹鏂欐暟閲�', trigger: ['blur', 'change'] }
+        ]
+
+      },
+      reckwayArr: [// 鎶ュ伐绫诲瀷
+        { code: 'group', name: '鐝粍' },
+        { code: 'person', name: '涓汉' }
+      ],
+      reportuserArr: [], // 鎶ュ伐浜哄憳
+      usergroupArr: [], // 鎶ュ伐鐝粍
+      eqpArr: [], // 鎶ュ伐璁惧
+      defectArr: [], // 涓嶈壇缂洪櫡
+      wxArr: [], // 寰�鏉ュ崟浣嶄笅鎷�
+
+      defectTableData: [],
+      badTableData: [],
+      workOrderCurrentValue: ''
+
+    }
+  },
+  created() {
+
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+
+    this.tabClick()
+
+    this.getAllSelectArr()
+  },
+  methods: {
+    async getAllSelectArr() {
+      const { data: res1 } = await GroupsPermissions()// 鐝粍
+      this.usergroupArr = res1
+
+      const { data: res2 } = await PersonPermissions() // 浜哄憳
+      this.reportuserArr = res2
+
+      const { data: res3 } = await DefectPermissions() // 缂洪櫡
+      this.defectArr = res3
+
+      const { data: res4 } = await EqpPermissions() // 璁惧
+      this.eqpArr = res4
+
+      const { data: res5 } = await CustomerPermissions() // 寰�鏉ュ崟浣�
+      this.wxArr = res5
+
+      const { data: res6 } = await PrentOrganizationNoCompany()// 鏃犲叕鍙哥殑缁勭粐涓嬫媺
+      this.wkshopcodeArr = res6
+    },
+    tabClick() {
+      let belong
+      switch (this.activeName) {
+        case '鐢熶骇鍒楄〃':
+          belong = 'produceCodeZZ'
+          this.dialogTitle = '鎶ュ伐'
+          break
+        case '澶栧崗鍙戞枡':
+          belong = 'produceCodeOUT'
+          this.dialogTitle = '鍙戞枡'
+          break
+        case '澶栧崗鏀舵枡':
+          belong = 'produceCodeIN'
+          this.dialogTitle = '鏀舵枡'
+          break
+        case '涓嶈壇寰呭鐞�':
+          belong = 'produceCodeBAD'
+          this.dialogTitle = '涓嶈壇澶勭悊'
+          break
+      }
+      this.enterNative(this.form.wocode, belong)
+
+      this.radioSelected = ''
+    },
+    enterNative(val, belong) {
+      if (belong === 'produceCodeZZ') {
+        this.$nextTick(() => {
+          $('input[name=\'produceCodeZZ\']')[0].focus()
+        })
+      }
+      if (belong === 'produceCodeOUT') {
+        this.$nextTick(() => {
+          $('input[name=\'produceCodeOUT\']')[0].focus()
+        })
+      }
+      if (belong === 'produceCodeIN') {
+        this.$nextTick(() => {
+          $('input[name=\'produceCodeIN\']')[0].focus()
+        })
+      }
+      if (belong === 'produceCodeBAD') {
+        this.$nextTick(() => {
+          $('input[name=\'produceCodeBAD\']')[0].focus()
+        })
+      }
+      this.search()
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.search()
+    },
+    // 鏌ヨ
+    async search() {
+      this.form.wocode = this.workOrderCurrentValue
+      this.workOrderCurrentValue = ''
+      if (this.activeName === '鐢熶骇鍒楄〃') {
+        const res = await MesOrderStepSearch(this.form)
+        this.tableData = res.data
+        this.total = res.count
+      }
+      if (this.activeName === '澶栧崗鍙戞枡' || this.activeName === '澶栧崗鏀舵枡') {
+        const res = await MesOrderWxStepSearch(this.form)
+        this.tableData = res.data
+        this.total = res.count
+      }
+
+      if (this.activeName === '涓嶈壇寰呭鐞�') {
+        const res = await MesOrderNgStepSearch(this.form)
+        this.tableData = res.data
+        this.total = res.count
+      }
+    },
+    // 鎶ュ伐
+    report(row) {
+      if (row) {
+        this.getMesOrderStepStart('ZZ', '', row.wo_code, row.stepcode)
+      } else {
+        const temp = this.tableData.find(i => i.id === this.radioSelected)
+        this.getMesOrderStepStart('ZZ', '', temp.wo_code, temp.stepcode)
+      }
+    },
+    // 鍙戞枡
+    sendOut(row) {
+      if (row) {
+        this.getMesOrderStepStart('WX', 'OUT', row.wo_code, row.stepcode)
+      } else {
+        const temp = this.tableData.find(i => i.id === this.radioSelected)
+        this.getMesOrderStepStart('WX', 'OUT', temp.wo_code, temp.stepcode)
+      }
+    },
+    // 鏀舵枡
+    takeIn(row) {
+      if (row) {
+        this.getMesOrderStepStart('WX', 'IN', row.wo_code, row.stepcode)
+      } else {
+        const temp = this.tableData.find(i => i.id === this.radioSelected)
+        this.getMesOrderStepStart('WX', 'IN', temp.wo_code, temp.stepcode)
+      }
+    },
+    // 涓嶈壇澶勭悊    鐢熶骇寮�鎶ュ伐鎵爜鑾峰彇宸ュ崟瀵瑰簲宸ュ簭浠诲姟(涓嶈壇鏄庣粏)
+    async handleBad(row) {
+      const data = {
+        wocode: row ? row.wo_code : this.tableData.find(i => i.id === this.radioSelected).wo_code,
+        stepcode: row ? row.stepcode : this.tableData.find(i => i.id === this.radioSelected).stepcode
+      }
+      let res = await MesOrderNgSubStepSearch(data)
+      if (res.code === '200') {
+        res = res.data
+        this.dialogForm.wo_code = res.data1.wo_code
+        this.dialogForm.partnumber = res.data1.partnumber
+        this.dialogForm.partname = res.data1.partname
+        this.dialogForm.partspec = res.data1.partspec
+        this.dialogForm.seq = res.data1.seq
+        this.dialogForm.stepcode = res.data1.stepcode
+        this.dialogForm.stepname = res.data1.stepname
+        this.dialogForm.stepprice = res.data1.stepprice
+        this.dialogForm.nextstepcode = res.data1.nextstepcode
+        this.dialogForm.nextstepname = res.data1.nextstepname
+        this.dialogForm.nextstepprice = res.data1.nextstepprice
+        this.dialogForm.stepdesc = res.data1.stepdesc
+        this.dialogForm.planqty = res.data1.planqty
+        this.dialogForm.startqty = res.data1.startqty
+        this.dialogForm.noreportqty = res.data1.noreportqty // 鍚堟牸鏁伴噺
+        this.dialogForm.reportqty = res.data1.reportqty
+        this.dialogForm.noputqty = res.data1.noputqty // 涓嶈壇鏁伴噺
+        this.dialogForm.wkshopcode = res.data1.wkshopcode
+        this.dialogForm.wkshopname = res.data1.wkshopname
+        this.dialogForm.eqpcode = res.data1.eqpcode
+        this.dialogForm.eqpname = res.data1.eqpname
+
+        res.data2.forEach(item => {
+          item.repair_qty = 0
+          item.laborbad_qty = 0
+          item.materielbad_qty = 0
+        })
+
+        this.badTableData = res.data2
+
+        this.dialogVisible = true
+      }
+    },
+    // 鐢熶骇寮�鎶ュ伐锛氭姤宸�/澶栧崗(鍙戞枡/鏀舵枡)鏃舵潯浠跺垽鏂強鏁版嵁杩斿洖鎺ュ彛
+    async getMesOrderStepStart(OperType, SelectType, wocode, stepcode) {
+      const data = {
+        OperType, SelectType, wocode, stepcode
+      }
+      let res = await MesOrderStepStart(data)
+      if (res.code === '200') {
+        res = res.data
+        this.dialogForm.wo_code = res.wo_code
+        this.dialogForm.partnumber = res.partnumber
+        this.dialogForm.partname = res.partname
+        this.dialogForm.partspec = res.partspec
+        this.dialogForm.seq = res.seq
+        this.dialogForm.stepcode = res.stepcode
+        this.dialogForm.stepname = res.stepname
+        this.dialogForm.stepprice = res.stepprice
+        this.dialogForm.nextstepcode = res.nextstepcode
+        this.dialogForm.nextstepname = res.nextstepname
+        this.dialogForm.nextstepprice = res.nextstepprice
+        this.dialogForm.stepdesc = res.stepdesc
+        this.dialogForm.planqty = res.planqty
+        this.dialogForm.startqty = res.startqty
+        this.dialogForm.noreportqty = res.noreportqty// 鏈姤鏁伴噺
+        this.dialogForm.reportqty = res.reportqty // 宸叉姤鏁伴噺
+        this.dialogForm.noputqty = res.noputqty
+        this.dialogForm.wkshopcode = res.wkshopcode
+        this.dialogForm.wkshopname = res.wkshopname
+        this.dialogForm.eqpcode = res.eqpcode
+        this.dialogForm.eqpname = res.eqpname
+
+        if (this.activeName === '澶栧崗鏀舵枡') {
+          this.dialogForm.list = []
+          res.list.forEach(i => {
+            i.acceptQty = parseFloat(i.fqty) - parseFloat(i.sqty) - parseFloat(i.ng_qty) - parseFloat(i.laborbad_qty) - parseFloat(i.materielbad_qty)
+            if (i.acceptQty > 0) {
+              this.dialogForm.list.push(i)
+            }
+          })
+        }
+
+        // this.dialogForm.list = res.list
+
+        this.dialogVisible = true
+      }
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm = {
+        'wo_code': '',
+        'partnumber': '',
+        'partname': '',
+        'partspec': '',
+        'seq': '',
+        'stepcode': '',
+        'stepname': '',
+        'stepprice': '', // 宸ュ簭鍗曚环
+        'nextstepcode': '',
+        'nextstepname': '',
+        'nextstepprice': '',
+        'stepdesc': '',
+        'planqty': 0,
+        'startqty': 0, //
+        'noreportqty': 0, // 鏈姤鏁伴噺
+        'reportqty': 0, // 宸叉姤鏁伴噺
+        'noputqty': 0, // 涓嶈壇鏁伴噺
+        'wkshopcode': '',
+        'wkshopname': '',
+        'eqpcode': '',
+        'eqpname': '',
+
+        wxcode: '',
+        outuser: '',
+        fqty: '',
+        inuser: '',
+        sqty: '',
+        list: '',
+
+        remarks: '', // 澶囨敞
+        inbarcode: '', // 鍏ュ簱鏉$爜
+        defectlist: '', // 涓嶈壇姹囨��
+        reckway: 'person', // 璁′欢鏂瑰紡(鐝粍:group銆佷釜浜�:person)
+        usergroupcode: '', // 鐝粍缂栫爜
+        reportuser: [] // 鎶ュ伐浜哄憳
+
+      }
+
+      this.defectTableData = []
+      this.badTableData = []
+
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+      this.tabClick()
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(async valid => {
+        if (valid) {
+          if (this.activeName === '鐢熶骇鍒楄〃') {
+            if (this.defectTableData.find(i => i.code.length === 0)) {
+              return this.$message.info('缂洪櫡缂栫爜/鍚嶇О涓嶈兘涓虹┖锛�')
+            }
+            if (this.defectTableData.find(i => i.badqty.toString().trim() === '' || parseFloat(i.badqty) === 0)) {
+              return this.$message.info('涓嶈壇鏁伴噺涓嶈兘涓虹┖鎴栦负闆讹紒')
+            }
+
+            if (parseFloat(this.dialogForm.noreportqty) < parseFloat(this.dialogForm.startqty) + parseFloat(this.dialogForm.noputqty)) {
+              return this.$message.info('鍚堟牸鏁伴噺鍔犱笉鑹暟閲忎笉鑳藉ぇ浜庝簡鏈姤鏁伴噺!')
+            }
+            let inbarcode = ''
+            if (this.tableData.find(i => i.id === this.radioSelected).isend === 'Y') {
+              const data1 = {
+                rightcode: getCookie('ruleCode'),
+                partcode: this.dialogForm.partnumber,
+                qty: this.dialogForm.startqty,
+                onelabqty: this.dialogForm.startqty
+              }
+
+              const res1 = await LabelBarCode(data1)
+              inbarcode = res1.data[0].labcode
+            }
+
+            const defectlist = []
+            this.defectTableData.forEach(i => {
+              defectlist.push({
+                defect_code: i.code.join(','),
+                badqty: i.badqty
+              })
+            })
+            const data = {
+              mesordercode: this.dialogForm.wo_code,
+              partcode: this.dialogForm.partnumber,
+              stepseq: this.dialogForm.seq,
+              stepcode: this.dialogForm.stepcode,
+              stepprice: this.dialogForm.stepprice,
+              eqpcode: this.dialogForm.eqpcode,
+              inbarcode,
+              reckway: this.dialogForm.reckway,
+              usergroupcode: this.dialogForm.usergroupcode,
+              reportuser: this.dialogForm.reportuser.join(','),
+              taskqty: this.dialogForm.planqty,
+              // startqty: this.dialogForm.startqty,
+              // reportqty: this.dialogForm.reportqty,
+
+              startqty: this.dialogForm.startqty,
+              reportqty: this.dialogForm.startqty, // 鎶ュ伐鏁伴噺
+
+              defectlist,
+              remarks: ''
+            }
+            // console.log(JSON.parse(JSON.stringify(this.defectTableData)))
+            // console.log(JSON.parse(JSON.stringify(data)))
+
+            this.$store.state.app.buttonIsDisabled = true
+            const res = await SavaMesOrderStepReport(data)
+            if (res.code === '200') {
+              this.$notify.success('鎶ュ伐鎴愬姛锛�')
+              // await this.search()
+              await this.tabClick()
+              this.$store.state.app.buttonIsDisabled = false
+              this.dialogVisible = false
+            } else {
+              this.$store.state.app.buttonIsDisabled = false
+              this.$notify.error('鎶ュ伐澶辫触锛�')
+            }
+          }
+
+          if (this.activeName === '澶栧崗鍙戞枡') {
+            if (parseFloat(this.dialogForm.fqty) < 1) {
+              return this.$message.info('鍙戞枡鏁伴噺涓嶈兘涓洪浂锛�')
+            }
+            if (parseFloat(this.dialogForm.fqty) > parseFloat(this.dialogForm.noreportqty)) {
+              return this.$message.info('鍙戞枡鏁伴噺涓嶈兘澶т簬鏈彂鏁伴噺!')
+            }
+            const data = {
+              mesordercode: this.dialogForm.wo_code,
+              partcode: this.dialogForm.partnumber,
+              stepseq: this.dialogForm.seq,
+              stepcode: this.dialogForm.stepcode,
+
+              wxcode: this.dialogForm.wxcode,
+              outuser: this.dialogForm.outuser,
+              taskqty: this.dialogForm.planqty,
+              fqty: this.dialogForm.fqty
+            }
+            // console.log(JSON.stringify(data))
+
+            this.$store.state.app.buttonIsDisabled = true
+            const res = await SavaMesOrderStepOut(data)
+            if (res.code === '200') {
+              this.$notify.success('鍙戞枡鎴愬姛锛�')
+              // await this.search()
+              await this.tabClick()
+              this.$store.state.app.buttonIsDisabled = false
+              this.dialogVisible = false
+            } else {
+              this.$store.state.app.buttonIsDisabled = false
+              this.$notify.error('鍙戞枡澶辫触锛�')
+            }
+          }
+
+          if (this.activeName === '澶栧崗鏀舵枡') {
+            if (this.defectTableData.find(i => i.code.length === 0)) {
+              return this.$message.info('缂洪櫡缂栫爜/鍚嶇О涓嶈兘涓虹┖锛�')
+            }
+            if (this.defectTableData.find(i => i.badqty.toString().trim() === '' || parseFloat(i.badqty) === 0)) {
+              return this.$message.info('涓嶈壇鏁伴噺涓嶈兘涓虹┖鎴栦负闆讹紒')
+            }
+
+            if (parseFloat(this.dialogForm.noreportqty) < parseFloat(this.dialogForm.sqty) + parseFloat(this.dialogForm.noputqty)) {
+              return this.$message.info('鏀舵枡鏁伴噺鍔犱笉鑹暟閲忎笉鑳藉ぇ浜庝簡鍙敹鏁伴噺!')
+            }
+
+            if (this.dialogForm.list.find(i => i.Name === this.dialogForm.wxcode)) {
+              if (this.dialogForm.list.find(i => i.Name === this.dialogForm.wxcode).acceptQty < parseFloat(this.dialogForm.sqty) + parseFloat(this.dialogForm.noputqty)) {
+                return this.$message.info('鏀舵枡鏁伴噺鍔犱笉鑹暟閲忎笉鑳藉ぇ浜庤渚涘簲鍟嗗彲鏀舵暟閲�!')
+              }
+            } else {
+              return this.$message.info('姝や緵搴斿晢鏃犲彲鏀舵暟閲�!')
+            }
+
+            let inbarcode = ''
+            if (this.tableData.find(i => i.id === this.radioSelected).isend === 'Y') {
+              const data1 = {
+                rightcode: getCookie('ruleCode'),
+                partcode: this.dialogForm.partnumber,
+                qty: this.dialogForm.startqty,
+                onelabqty: this.dialogForm.startqty
+              }
+
+              const res1 = await LabelBarCode(data1)
+              inbarcode = res1.data[0].labcode
+            }
+            const defectlist = []
+            this.defectTableData.forEach(i => {
+              defectlist.push({
+                defect_code: i.code.join(','),
+                badqty: i.badqty
+              })
+            })
+
+            const data = {
+              mesordercode: this.dialogForm.wo_code,
+              partcode: this.dialogForm.partnumber,
+              stepseq: this.dialogForm.seq,
+              stepcode: this.dialogForm.stepcode,
+
+              wxcode: this.dialogForm.wxcode,
+              inbarcode,
+              inuser: this.dialogForm.inuser,
+              taskqty: this.dialogForm.planqty,
+              sqty: this.dialogForm.sqty,
+              defectlist,
+              remarks: ''
+            }
+            // console.log(JSON.parse(JSON.stringify(data)), 1)
+            this.$store.state.app.buttonIsDisabled = true
+            const res = await SavaMesOrderStepIn(data)
+            if (res.code === '200') {
+              this.$notify.success('鏀舵枡鎴愬姛锛�')
+              // await this.search()
+              await this.tabClick()
+              this.$store.state.app.buttonIsDisabled = false
+              this.dialogVisible = false
+            } else {
+              this.$store.state.app.buttonIsDisabled = false
+              this.$notify.error('鏀舵枡澶辫触锛�')
+            }
+          }
+
+          if (this.activeName === '涓嶈壇寰呭鐞�') {
+            let flag = false
+            this.badTableData.forEach(i => {
+              if (parseFloat(i.repair_qty) + parseFloat(i.laborbad_qty) + parseFloat(i.materielbad_qty) > parseFloat(i.ng_qty)) {
+                flag = true
+              }
+            })
+            if (flag) {
+              return this.$message.info('缁翠慨鍚堟牸鏁伴噺+宸ュ簾鏁伴噺+鏂欏簾鏁伴噺涓嶈兘澶т簬涓嶈壇鏁伴噺锛�')
+            }
+            this.$store.state.app.buttonIsDisabled = true
+            const res = await EditOrderNgStepSeave({ Data: this.badTableData })
+            if (res.code === '200') {
+              this.$notify.success('鎻愪氦鎴愬姛锛�')
+              // await this.search()
+              await this.tabClick()
+              this.$store.state.app.buttonIsDisabled = false
+              this.dialogVisible = false
+            } else {
+              this.$store.state.app.buttonIsDisabled = false
+              this.$notify.error('鎻愪氦澶辫触锛�')
+            }
+          }
+        }
+      })
+    },
+    // 缂洪櫡鏂板
+    addDefect() {
+      if (this.defectTableData.find(i => i.code.length === 0)) {
+        return this.$message.info('缂洪櫡缂栫爜/鍚嶇О涓嶈兘涓虹┖锛�')
+      }
+      if (this.defectTableData.find(i => i.badqty.toString().trim() === '' || parseFloat(i.badqty) === 0)) {
+        return this.$message.info('涓嶈壇鏁伴噺涓嶈兘涓虹┖鎴栦负闆讹紒')
+      }
+
+      this.defectTableData.push({
+        uuid: nanoid(), code: [], badqty: ''
+      })
+    },
+    // 缂洪櫡鍒犻櫎
+    defectDel(row) {
+      this.defectTableData = this.defectTableData.filter(i => i.uuid !== row.uuid)
+
+      this.dialogForm.noputqty = 0
+      this.defectTableData.forEach(i => {
+        this.dialogForm.noputqty += parseFloat(i.badqty)
+      })
+    },
+    badqtyChange(val) {
+      this.dialogForm.noputqty = 0
+      this.defectTableData.forEach(i => {
+        this.dialogForm.noputqty += parseFloat(i.badqty)
+      })
+    },
+    reckwayChange(val) {
+      // console.log(val)
+      this.dialogForm.usergroupcode = ''
+      this.dialogForm.reportuser = []
+    },
+    async usergroupChange(val) {
+      const { data: res } = await GroupsPersonPermissions({ groupcode: val })
+      this.dialogForm.reportuser = res[0].usercode_list ? res[0].usercode_list.split(',') : []
+    },
+    rowClick(row, event, column) {
+      this.radioSelected = row.id
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 275
+        // this.$refs.tableDataRef.doLayout()
+      })
+    },
+    reset() {
+      this.form.wkshopcode = ''
+      this.form.wocode = ''
+      this.form.workOrderCurrentValue = ''
+      this.form.partcode = ''
+      this.form.partname = ''
+      this.form.partspec = ''
+      this.search()
+    },
+
+    headerCellStyle() {
+      return this.$headerCellStyle
+    },
+    cellStyle() {
+      return this.$cellStyle
+    }
+  }
 }
 </script>
+<style lang="scss" scoped>
 
-<style scoped>
+::v-deep .elTableDiv .el-radio__label {
+  display: none !important;
+}
+
+.dialogFormItem {
+  margin: 0 10px 0 0;
+}
+
+.dialogFormItemDiv {
+  width: 200px;
+}
+
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::v-deep .el-dialog .el-form-item__label {
+  font-weight: lighter !important;
+}
+
+::v-deep .el-dialog .el-divider__text {
+  font-weight: bolder !important;
+}
 
 </style>
diff --git a/src/views/qualityManager/defectDefine.vue b/src/views/qualityManager/defectDefine.vue
index e69de29..7fd9cf4 100644
--- a/src/views/qualityManager/defectDefine.vue
+++ b/src/views/qualityManager/defectDefine.vue
@@ -0,0 +1,356 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <el-button
+          v-waves
+          type="success"
+          icon="el-icon-download"
+          @click="$router.push('./../systemSetting/dataImport?fileCode=18')"
+        >瀵煎叆
+        </el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="缂洪櫡缂栫爜" style=" display: flex;">
+              <el-input v-model="form.defectcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="缂洪櫡鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.defectname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="getDedectSearch">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+          style="height:5px"
+        >
+          <!--          <svg-icon-->
+          <!--            v-show="mouseHoverType==='mouseout'"-->
+          <!--            style="cursor: pointer"-->
+          <!--            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"-->
+          <!--            @mouseenter="mouseHoverType=$event.type"-->
+          <!--          />-->
+          <!--          <svg-icon-->
+          <!--            v-show="mouseHoverType==='mouseenter'"-->
+          <!--            style="cursor: pointer"-->
+          <!--            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"-->
+          <!--            @click="isExpandForm=!isExpandForm"-->
+          <!--            @mouseout="mouseHoverType=$event.type"-->
+          <!--          />-->
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :data="tableData"
+          :height="tableHeight+'px'"
+          border
+          row-class-name="custom-row"
+          :style="{width: 100+'%',height:tableHeight+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <el-table-column
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="code"
+            label="缂洪櫡缂栫爜"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="name"
+            label="缂洪櫡鍚嶇О"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="description"
+            label="鎻忚堪"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              {{ row.description ? row.description : '/' }}
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="lm_user"
+            label="鍒涘缓浜哄憳"
+            sortable="custom"
+          />
+          <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
+                    v-if="row.leve!==0"
+                    class="el-icon-edit-outline"
+                    :style="{color:$store.state.settings.theme}"
+                    @click="edit('edit',row)"
+                  />
+                </el-tooltip>
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                  <i
+                    v-if="row.leve!==0"
+                    class="el-icon-delete"
+                    :style="{color:$store.state.settings.theme}"
+                    @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,jumper"
+        popper-class="select_bottom"
+        @pagination="getDedectSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-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="defectcode">
+          <el-input v-model="dialogForm.defectcode" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="缂洪櫡鍚嶇О" prop="defectname">
+          <el-input v-model="dialogForm.defectname" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="鎻忚堪">
+          <el-input
+            v-model="dialogForm.defectdescr"
+            type="textarea"
+            style="width: 200px"
+          />
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import {
+  AddUpdateOrganization, AddUpdatePost,
+  DeleteOrganization, DeletePost, PostData,
+  PrentOrganization,
+  STorgData
+} from '@/api/basicSettings'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import { AddUpdateDedect, DedectSearch, DeleteDedect } from '@/api/QualityManagement'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        defectcode: '', // 缁勭粐鏋舵瀯缂栫爜
+        defectname: '', // 缁勭粐鏋舵瀯鍚嶇О
+        defectdescr: '',
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      total: 10,
+      tableData: [],
+      dialogVisible: false,
+      dialogForm: {
+        defectcode: '', // 缁勭粐缂栫爜
+        defectname: '', // 缁勭粐鍚嶇О
+        defectdescr: '', // 鎻忚堪
+        OperType: ''
+      },
+      operation: '',
+      dialogFormRules: {
+        defectcode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        defectname: [
+          { required: true, message: '璇疯緭鍏ョ己闄峰悕绉�', trigger: ['blur', 'change'] }
+        ]
+      }
+
+    }
+  },
+  created() {
+    this.getDedectSearch()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    // 缁勭粐鏋舵瀯澶у垪琛ㄦ煡璇�
+    async getDedectSearch() {
+      const res = await DedectSearch(this.form)
+      this.tableData = res.data
+      this.total = res.count
+    },
+
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getDedectSearch()
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.defectcode = ''
+      this.form.defectname = ''
+      this.getDedectSearch()
+    },
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+      this.dialogForm.OperType = 'Add'
+    },
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+      this.dialogForm.OperType = 'Update'
+
+      this.$nextTick(() => {
+        this.dialogForm.defectcode = row.code
+        this.dialogForm.defectname = row.name
+        this.dialogForm.defectdescr = row.description
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        DeleteDedect({ defectcode: row.code }).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getDedectSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.defectcode = ''
+      this.dialogForm.defectname = ''
+      this.dialogForm.defectdescr = ''
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          this.$store.state.app.buttonIsDisabled = true
+          AddUpdateDedect(this.dialogForm).then(res => {
+            if (res.code === '200') {
+              this.$notify.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.dialogVisible = false
+              this.$store.state.app.buttonIsDisabled = false
+              this.getDedectSearch()
+            } else {
+              this.$store.state.app.buttonIsDisabled = false
+              this.$notify.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 200
+        this.$refs.tableDataRef.doLayout()
+      })
+    }
+  }
+}
+</script>
diff --git a/src/views/qualityManager/processCheck.vue b/src/views/qualityManager/processCheck.vue
index e69de29..dbe4e3a 100644
--- a/src/views/qualityManager/processCheck.vue
+++ b/src/views/qualityManager/processCheck.vue
@@ -0,0 +1,802 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}" style="background-color: #eaecef">
+
+      <div
+        style="background-color: #f8f8fa;margin: 10px 0;
+         overflow-y:auto;overflow-x: hidden;
+        display: flex;flex-direction: column"
+        :style="{height:mainHeight+'px'}"
+      >
+        <div class="content1">
+          <div>
+            <i class="el-icon-s-operation" style="font-size: 14px" :style="{color:$store.state.settings.theme}" />
+          </div>
+          <div class="title">
+            鎵弿淇℃伅
+          </div>
+        </div>
+
+        <div class="content2">
+          <el-form :inline="true" label-width="80px">
+            <el-form-item label="妫�楠岀被鍨�">
+              <el-select
+                v-model="form.checktype"
+                style="width: 160px;"
+                placeholder="璇烽�夋嫨"
+                filterable
+              >
+                <el-option
+                  v-for="item in checktypeArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="鎵爜鏉$爜">
+              <el-input
+                v-model="form.orderstepqrcode"
+                name="GXproduceCode"
+                style="width: 250px"
+                placeholder="璇锋壂鐮佸伐鍗曞伐搴忕爜"
+                @keyup.enter.native="enterNative"
+              />
+            </el-form-item>
+          </el-form>
+        </div>
+
+        <div class="content1">
+          <div>
+            <i class="el-icon-s-operation" style="font-size: 14px" :style="{color:$store.state.settings.theme}" />
+          </div>
+          <div class="title">
+            宸ュ崟淇℃伅
+          </div>
+        </div>
+        <div class="content2" style="width: 60%;margin-left: 30px;">
+          <div class="orderMsg">鍗曟嵁缂栧彿锛歿{ form.wocode }}</div>
+          <div class="orderMsg">鐗╂枡缂栫爜锛歿{ form.partcode }}</div>
+          <div class="orderMsg">鐗╂枡鍚嶇О锛歿{ form.partname }}</div>
+        </div>
+        <div class="content2" style="width: 60%;margin-left: 30px;">
+          <div class="orderMsg">鐗╂枡瑙勬牸锛歿{ form.partspec }}</div>
+          <div class="orderMsg">宸ュ簭缂栫爜锛歿{ form.stepcode }}</div>
+          <div class="orderMsg">宸ュ簭鍚嶇О锛歿{ form.stepname }}</div>
+        </div>
+
+        <div class="content1">
+          <div>
+            <i class="el-icon-s-operation" style="font-size: 14px" :style="{color:$store.state.settings.theme}" />
+          </div>
+          <div class="title">
+            璐ㄦ鏂规
+          </div>
+        </div>
+        <div class="content2" style="width: 60%;margin-left: 30px;">
+          <div class="orderMsg">鏂规鍚嶇О锛歿{ form.checkstandname }}</div>
+          <div class="orderMsg">鎶芥牱鏂瑰紡锛歿{
+            form.sampmethod === 'FIXED' ? '鍥烘椂鎶芥' : form.sampmethod === 'SCARE' ? '姣斾緥鎶芥' : ''
+          }}
+          </div>
+        </div>
+        <div class="content2" style="width: 60%;margin-left: 30px;">
+          <div class="orderMsg">鎶ュ伐鏁伴噺锛歿{ form.good_qty }}</div>
+          <div class="orderMsg">鏍锋湰鏁伴噺锛�
+            <el-input-number
+              v-if="form.good_qty"
+              v-model="form.sampscare"
+              :max="form.good_qty"
+              :min="1"
+              size="medium"
+              @change="numberChange"
+            />
+          </div>
+        </div>
+
+        <div
+          v-if="checkItemArr.length>0"
+          class="content1"
+        >
+          <div>
+            <i class="el-icon-s-operation" style="font-size: 14px" :style="{color:$store.state.settings.theme}" />
+          </div>
+          <div class="title">
+            妫�楠岄」鐩�
+          </div>
+        </div>
+        <div
+          v-if="form.sampscare!==1&&checkItemArr.length>0"
+          class="content2"
+          style="width: 60%;"
+        >
+          <el-link :underline="false" :disabled="!(stepActive>0)" style="width: 60px;margin-top: 5px" @click="pre">涓婁竴浠�
+          </el-link>
+          <el-steps :active="stepActive" style="width: 70%;margin:0 10px;" finish-status="success">
+            <el-step v-for="item in form.sampscare" :key="item" title="" />
+          </el-steps>
+          <el-link
+            :underline="false"
+            :disabled="!(stepActive < form.sampscare-1)"
+            style="width: 60px;margin-top: 5px"
+            @click="next"
+          >涓嬩竴浠�
+          </el-link>
+        </div>
+
+        <div
+          class="content2"
+          style="flex-direction: column;justify-content:flex-start;width: 480px;margin-top: 10px;"
+        >
+
+          <div
+            v-for="(item,index) in checkItemArr"
+            v-if="stepActive+1===item.checkNumber"
+            :key="item.code+(stepActive+1).toString()"
+            :style="{borderBottom:(index+1)%checkItemArr.map(i=>i.checkNumber===1).filter(i=>i).length!==0?`1px solid rgba(48,49,51,0.2)`:''}"
+            class="checkItem"
+          >
+
+            <div style="display: flex;justify-content: space-between;align-items: center">
+              <div style="display: flex;width: 300px;">
+                <div class="serialNumber">{{ item.stepcheckitem_seq }}</div>
+                <div style="display: flex;align-items: center">{{ item.name }}</div>
+              </div>
+
+              <div v-show="item.numberjudge==='N'" style="width: 150px;display: flex;padding-left: 20px">
+                <el-button
+                  type="primary"
+                  size="mini"
+                  :plain="!item.check_result"
+                  @click="checkResultClick('OK',item)"
+                >鍚堟牸
+                </el-button>
+                <el-button
+                  type="warning"
+                  size="mini"
+                  :plain="item.check_result"
+                  @click="checkResultClick('NG',item)"
+                >涓嶅悎鏍�
+                </el-button>
+              </div>
+              <div v-show="item.numberjudge!=='N'" style="width: 150px;" />
+            </div>
+
+            <div style="display: flex;margin-bottom: 5px">
+              <div style="display: flex;flex-direction: column">
+                <div v-if="item.standvalue" class="itemTitle">鏍囧噯鍊�</div>
+                <div v-if="item.uppervalue" class="itemTitle">涓婇檺鍊�</div>
+                <div v-if="item.lowervalue" class="itemTitle">涓嬮檺鍊�</div>
+                <div v-if="item.stepcheckitem_desc" class="itemTitle">鎻忚堪</div>
+                <div v-if="item.numberjudge!=='N'" class="itemTitle">瀹炴祴鍊�
+                  <el-input
+                    v-model="item.real_value"
+                    size="mini"
+                    oninput="value=value.replace(/[^0-9]/g,'')"
+                    style="width: 100px;margin-left: 5px"
+                    @input="val=>inputChange(val,item)"
+                  />
+                </div>
+              </div>
+              <div style="display: flex;flex-direction: column">
+                <div v-if="item.standvalue" class="itemContent">{{ item.standvalue }}</div>
+                <div v-if="item.uppervalue" class="itemContent">{{ item.uppervalue }}</div>
+                <div v-if="item.lowervalue" class="itemContent">{{ item.lowervalue }}</div>
+                <div v-if="item.stepcheckitem_desc" class="itemContent">{{ item.stepcheckitem_desc }}</div>
+
+                <div v-show="item.numberjudge!=='N'" class="itemContent" style="width: 150px;display: flex">
+                  <el-button
+                    type="primary"
+                    size="mini"
+                    :disabled="item.required==='Y'&&!item.real_value"
+                    :plain="!item.check_result"
+                    @click="checkResultClick('OK',item)"
+                  >鍚堟牸
+                  </el-button>
+                  <el-button
+                    type="warning"
+                    size="mini"
+                    :disabled="item.required==='Y'&&!item.real_value"
+                    :plain="item.check_result"
+                    @click="checkResultClick('NG',item)"
+                  >
+                    涓嶅悎鏍�
+                  </el-button>
+                </div>
+              </div>
+            </div>
+
+          </div>
+
+        </div>
+
+        <div
+          v-if="checkItemArr.filter(i=>i.check_result!=='').length===checkItemArr.length&&checkItemArr.length>0"
+          class="content1"
+        >
+          <div>
+            <i class="el-icon-s-operation" style="font-size: 14px" :style="{color:$store.state.settings.theme}" />
+          </div>
+          <div class="title">
+            妫�楠岀粨鏋�
+          </div>
+        </div>
+
+        <div
+          v-if="checkItemArr.filter(i=>i.check_result!=='').length===checkItemArr.length&&checkItemArr.length>0"
+          class="content2"
+          style="width: 60%;margin-left: 30px;"
+        >
+          <div class="orderMsg2">鏍锋湰鏁伴噺锛歿{ form.sampscare }}</div>
+          <div class="orderMsg2">鍚堟牸鏁伴噺锛歿{ form.goodqty }}</div>
+          <div class="orderMsg2">涓嶅悎鏍兼暟閲忥細{{ form.ngqty }}</div>
+
+          <div style="width: 290px;display: flex;align-items: center" class="resultButton">
+            <div style="width: 70px;">鍒ゅ畾缁撴灉锛�</div>
+            <el-button type="primary" size="medium" :plain="!check_result" @click="check_result=true">鍚堟牸</el-button>
+            <el-button type="warning" size="medium" :plain="check_result" @click="check_result=false">涓嶅悎鏍�</el-button>
+          </div>
+        </div>
+
+        <div
+          v-if="checkItemArr.filter(i=>i.check_result!=='').length===checkItemArr.length&&checkItemArr.length>0"
+          class="content2   submitButton"
+          style="margin-top: 10px;margin-bottom: 10px;"
+        >
+          <el-button
+            v-waves
+            type="primary"
+            @click="submitButton"
+          >鎻愪氦
+          </el-button>
+        </div>
+
+      </div>
+
+    </div>
+  </div>
+</template>
+
+<script>
+import waves from '@/directive/waves'
+import $ from 'jquery'
+import { MesOrderStepCheckItemList, MesOrderStepCheckSearch, SaveMesOrderStepCheckItem } from '@/api/QualityManagement'
+import { getCookie } from '@/utils/auth'
+
+export default {
+  name: 'Zzjg',
+
+  directives: { waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+
+      form: {
+        orderstepqrcode: '', // 鎵弿宸ュ簭浜岀淮鐮佷俊鎭�
+        checktype: 'FirstCheck',
+
+        wocode: '',
+        partcode: '',
+        partname: '',
+        partspec: '',
+        stepcode: '',
+        stepname: '',
+        checkstandcode: '',
+        checkstandname: '',
+        check_type: '',
+        sampmethod: '', // FIXED(鍥烘椂鎶芥)  SCARE(姣斾緥鎶芥)
+        sampscare: '',
+        qualitystatus: '',
+        good_qty: '', // 鎸囩殑鎶ュ伐鏁伴噺
+        sampleqty: '',
+        goodqty: '', // 鍚堟牸鏁伴噺
+        ngqty: '', // 涓嶈壇鏁伴噺
+        // checkitemcont: [],
+
+        username: getCookie('admin')
+
+      },
+      checktypeArr: [
+        { code: 'FirstCheck', name: '棣栨' },
+        { code: 'PatroCheck', name: '宸℃' },
+        { code: 'EndCheck', name: '瀹屽伐妫�' }
+      ],
+      stepActive: 0, // 褰撳墠澶勪簬绗嚑浠�
+
+      checkItemArr: [],
+      check_result: ''
+
+    }
+  },
+
+  watch: {
+    'checkItemArr': {
+      deep: true, // 娣卞害鐩戝惉鏃�  鐩戝惉鍒板睘鎬�              褰撲笉涓烘繁搴︾洃鍚椂锛屽彲鐩戝惉闀垮害
+      handler: function(val) {
+        // do something with the new and old value of myArray
+        this.form.goodqty = 0
+        for (var i = 0; i < this.form.sampscare; i++) {
+          const flag = this.checkItemArr.filter(j => j.checkNumber === i + 1).every(j => j.check_result)
+          if (flag) {
+            this.form.goodqty++
+          }
+        }
+        this.form.ngqty = this.form.sampscare - this.form.goodqty
+      }
+    }
+  },
+
+  created() {
+
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+
+    this.getFocus()
+  },
+  methods: {
+    // 鑾峰彇鑱氱劍
+    getFocus() {
+      this.$nextTick(() => {
+        $('input[name=\'GXproduceCode\']')[0].focus()
+      })
+    },
+    async enterNative() {
+      const data = {
+        orderstepqrcode: this.form.orderstepqrcode,
+        checktype: this.form.checktype,
+        stu_torgcode: getCookie('stu_torgcode')
+      }
+      const { data: res } = await MesOrderStepCheckSearch(data)
+      this.form.wocode = res.labcont[0].wo_code
+      this.form.partcode = res.labcont[0].partcode
+      this.form.partname = res.labcont[0].partname
+      this.form.partspec = res.labcont[0].partspec ? res.labcont[0].partspec : '/'
+      this.form.stepcode = res.labcont[0].stepcode
+      this.form.stepname = res.labcont[0].stepname
+      this.form.good_qty = res.labcont[0].good_qty
+
+      this.form.checkstandcode = res.chekstand[0].checkstandcode
+      this.form.checkstandname = res.chekstand[0].checkstandname
+      this.form.sampmethod = res.chekstand[0].sampmethod
+
+      this.form.sampscare = res.chekstand[0].sampmethod === 'FIXED' ? res.chekstand[0].sampscare
+        : res.labcont[0].good_qty * res.chekstand[0].sampscare / 100
+      this.form.sampscare = this.form.sampscare <= this.form.good_qty ? this.form.sampscare : this.form.good_qty
+
+      await this.getMesOrderStepCheckItemList()
+    },
+    async getMesOrderStepCheckItemList() {
+      const { data: res } = await MesOrderStepCheckItemList({ checkstandcode: this.form.checkstandcode })
+      // this.checkItemArr = res
+      this.checkItemArr = []
+      for (let i = 0; i < this.form.sampscare; i++) {
+        res.forEach(j => {
+          this.checkItemArr.push({
+            checkNumber: i + 1,
+            stepcheckitem_seq: j.stepcheckitem_seq,
+            name: j.name,
+            code: j.code,
+            standvalue: j.standvalue,
+            lowervalue: j.lowervalue,
+            uppervalue: j.uppervalue,
+
+            unit: j.unit,
+            stepcheckitem_desc: j.stepcheckitem_desc,
+            required: j.required, // 鏄惁蹇呭~
+            numberjudge: j.numberjudge, // 鏁板�煎垽鏂�
+            real_value: '',
+            check_result: j.numberjudge === 'Y' ? '' : true
+          })
+        })
+      }
+
+      if (this.checkItemArr.every(i => i.check_result)) {
+        this.check_result = true
+      } else {
+        this.check_result = ''
+      }
+    },
+
+    numberChange(currentValue, oldValue) {
+      const t = this.checkItemArr.filter(i => i.checkNumber === 1)
+
+      // 浠舵暟鍙樺皯鏃舵墽琛�
+      if (currentValue < this.checkItemArr.length / t.length) {
+        this.checkItemArr.reverse()
+        this.checkItemArr.splice(0, t.length * (oldValue - currentValue))
+        this.checkItemArr.reverse()
+
+        this.stepActive = currentValue - 1
+      }
+      // 浠舵暟鍙樺鏃舵墽琛�
+      if (currentValue > this.checkItemArr.length / t.length) {
+        for (let i = currentValue; i > oldValue; i--) {
+          t.forEach(j => {
+            this.checkItemArr.push({
+              checkNumber: i,
+              name: j.name,
+              code: j.code,
+              standvalue: j.standvalue,
+              lowervalue: j.lowervalue,
+              uppervalue: j.uppervalue,
+              stepcheckitem_seq: j.stepcheckitem_seq,
+              unit: j.unit,
+              stepcheckitem_desc: j.stepcheckitem_desc,
+              required: j.required, // 鏄惁蹇呭~
+              numberjudge: j.numberjudge, // 鏁板�煎垽鏂�
+              real_value: '',
+              check_result: j.numberjudge === 'Y' ? '' : true
+            })
+          })
+        }
+        this.checkItemArr.sort((a, b) => a.checkNumber - b.checkNumber)
+      }
+    },
+
+    pre() {
+      if (this.stepActive > 0) {
+        this.stepActive--
+      }
+    },
+    next() {
+      if (this.stepActive < this.form.sampscare) {
+        this.stepActive++
+      }
+    },
+
+    inputChange(val, item) {
+      if (val !== '') {
+        if (item.numberjudge === 'Y') { // 濡傛灉闇�瑕佽繘琛屾暟鍊煎垽鏂�
+          if (item.uppervalue === '' && item.lowervalue === '') { // 涓婇檺鍊间负绌猴紝涓嬮檺鍊间负绌�
+            item.check_result = parseFloat(val) === parseFloat(item.standvalue)
+          }
+
+          if (item.uppervalue !== '' && item.lowervalue !== '') { // 涓婇檺鍊间笉涓虹┖锛屼笅闄愬�间笉涓虹┖
+            item.check_result = parseFloat(val) >= parseFloat(item.lowervalue) && parseFloat(val) <=
+              parseFloat(item.uppervalue)
+          }
+
+          if (item.uppervalue !== '' && item.lowervalue === '') { // 涓婇檺鍊间笉涓虹┖锛屼笅闄愬�间负绌�
+            item.check_result = parseFloat(val) <= parseFloat(item.uppervalue)
+          }
+
+          if (item.uppervalue === '' && item.lowervalue !== '') { // 涓婇檺鍊间负绌猴紝涓嬮檺鍊间笉涓虹┖
+            item.check_result = parseFloat(val) >= parseFloat(item.lowervalue)
+          }
+        }
+      }
+
+      if (val === '') {
+        item.check_result = ''
+      }
+
+      this.check_result = !!this.checkItemArr.every(i => i.check_result)
+    },
+
+    checkResultClick(val, item) {
+      item.check_result = val === 'OK'
+
+      if (this.checkItemArr.filter(i => i.check_result !== '').length === this.checkItemArr.length) {
+        this.check_result = !!this.checkItemArr.every(i => i.check_result)
+      }
+    },
+
+    submitButton() {
+      this.$confirm('鏄惁纭鎻愪氦?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        const checkitemcont = []
+        this.checkItemArr.forEach((i, index) => {
+          checkitemcont.push({
+            checknum: i.checkNumber + '/' + this.checkItemArr.length / this
+              .checkItemArr.filter(j => j.checkNumber === 1).length,
+            checkiem_seq: i.stepcheckitem_seq,
+            checkitem_code: i.code,
+            checkitem_name: i.name,
+            check_value: i.real_value ? i.real_value : '',
+            check_result: i.check_result ? 'OK' : 'NG',
+            checkitem_descr: ''
+          })
+        })
+
+        const data = {
+          stu_torgcode: getCookie('stu_torgcode'),
+          wocode: this.form.wocode,
+          partcode: this.form.partcode,
+          stepcode: this.form.stepcode,
+          checkstandcode: this.form.checkstandcode,
+          check_type: this.form.checktype,
+          sampmethod: this.form.sampmethod,
+          qualitystatus: this.check_result ? 'OK' : 'NG',
+          good_qty: this.form.good_qty,
+          sampleqty: this.form.sampscare,
+          goodqty: this.form.goodqty,
+          ngqty: this.form.ngqty,
+          admin: this.form.username,
+          checkitemcont
+        }
+
+        SaveMesOrderStepCheckItem(data).then(res => {
+          if (res.code === '200') {
+            this.form.orderstepqrcode = ''
+
+            this.form.wocode = ''
+            this.form.partcode = ''
+            this.form.partname = ''
+            this.form.partspec = ''
+            this.form.stepcode = ''
+            this.form.stepname = ''
+            this.form.checkstandcode = ''
+            this.form.checkstandname = ''
+            this.form.check_type = ''
+            this.form.sampmethod = ''// FIXED(鍥烘椂鎶芥)  SCARE(姣斾緥鎶芥)
+            this.form.sampscare = ''
+            this.form.qualitystatus = ''
+            this.form.good_qty = '' // 鎸囩殑鎶ュ伐鏁伴噺
+            this.form.sampleqty = ''
+            this.form.goodqty = '' // 鍚堟牸鏁伴噺
+            this.form.ngqty = '' // 涓嶈壇鏁伴噺
+            this.stepActive = 0
+            this.checkItemArr = []
+            this.check_result = ''
+            this.$message.success('妫�楠屾垚鍔燂紒')
+            this.getFocus()
+          }
+        })
+      })
+    },
+
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
+
+<!--鍏叡椤甸潰鏍峰紡-->
+<style lang="scss" scoped>
+$main_color: #42b983;
+::v-deep .el-button--text {
+  font-size: 14px;
+  cursor: pointer;
+}
+
+.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--warning, .el-button--default, .el-button--info {
+  //height: 34px;
+  //display: flex;
+  //align-items: center;
+  //padding: 0 15px;
+  width: 58px;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.submitButton {
+  ::v-deep .el-button--primary {
+    width: 160px;
+    letter-spacing: 10px;
+    padding-left: 25px;
+    font-size: 18px;
+    //display: flex;
+    //justify-content: center;
+    //align-items: center;
+  }
+}
+
+.resultButton {
+  ::v-deep .el-button--primary {
+    width: 100px;
+    letter-spacing: 4px;
+    padding-left: 22px;
+  }
+
+  ::v-deep .el-button--warning {
+    width: 100px;
+    letter-spacing: 4px;
+    padding-left: 22px;
+  }
+}
+
+::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;
+  //font-size: 16px;
+}
+
+.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;
+}
+
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.tableFixed {
+  ::v-deep .el-table__fixed-right {
+    height: 100% !important;
+  }
+
+  ::v-deep .el-table__fixed {
+    height: 100% !important;
+  }
+}
+</style>
+
+<style lang="scss" scoped>
+.content1 {
+  display: flex;
+  align-items: center;
+  margin: 10px 0 0 10px;
+
+  .title {
+    font-size: 14px;
+    font-weight: bold;
+    margin-left: 5px;
+  }
+}
+
+.content2 {
+  margin: 10px 0 0 20px;
+  display: flex;
+  font-size: 14px;
+  width: 100%;
+  align-items: center;
+}
+
+.orderMsg {
+  width: 33.33%;
+  display: flex;
+  align-items: center;
+}
+
+::v-deep .el-input-number--medium {
+  line-height: 32px;
+  width: 120px;
+}
+
+.checkItem {
+  display: flex;
+  justify-content: space-between;
+  min-height: 36px;
+
+  align-items: center;
+  flex-direction: column;
+  margin-top: 5px;
+}
+
+.serialNumber {
+  width: 20px;
+  height: 20px;
+  border-radius: 50%;
+  background-color: #42B983;
+  color: #fff;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  margin-right: 10px;
+}
+
+.itemTitle {
+  width: 300px;
+  padding-left: 40px;
+  height: 26px;
+  color: #909399;
+  display: flex;
+  align-items: center;
+
+  ::v-deep .el-input--mini {
+    line-height: 24px;
+    height: 24px;
+  }
+
+  ::v-deep .el-input__inner {
+    line-height: 24px;
+    height: 24px;
+  }
+}
+
+.itemContent {
+  width: 150px;
+  height: 26px;
+  padding-left: 20px;
+  display: flex;
+  align-items: center;
+
+}
+
+.orderMsg2 {
+  width: 200px;
+}
+</style>
+
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/qualityManager/processCheckItem.vue b/src/views/qualityManager/processCheckItem.vue
index e69de29..916913c 100644
--- a/src/views/qualityManager/processCheckItem.vue
+++ b/src/views/qualityManager/processCheckItem.vue
@@ -0,0 +1,406 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+
+      <div class="bodyTopButtonGroup">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+        <!--        <el-button v-waves type="primary" icon="el-icon-upload2" @click="upload">瀵煎叆</el-button>-->
+      </div>
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex"
+        >
+          <div class="elForm">
+            <el-form-item label="椤圭洰缂栫爜" style=" display: flex;">
+              <el-input v-model="form.itemcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="椤圭洰鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.itemname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="椤圭洰鎻忚堪" style=" display: flex;">
+              <el-input v-model="form.itemdescr" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+          </div>
+          <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}">
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        />
+      </div>
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <el-table
+          ref="tableDataRef"
+          :key="tableTimeStampKey"
+          class="tableFixed"
+          :data="tableData"
+          :height="tableHeight+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:tableHeight+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+
+          <el-table-column
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :key="item.id"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+              <div v-else>{{ row[item.prop] }}</div>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鎿嶄綔"
+            fixed="right"
+            width="120"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top">
+                  <i :style="{color:$store.state.settings.theme}" 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 :style="{color:$store.state.settings.theme}" 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,jumper"
+        popper-class="select_bottom"
+        @pagination="getStepCheckItemSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-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="checkitemcode">
+          <el-input v-model="dialogForm.checkitemcode" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="椤圭洰鍚嶇О" prop="checkitemname">
+          <el-input v-model="dialogForm.checkitemname" style="width: 200px" />
+        </el-form-item>
+
+        <el-form-item label="椤圭洰鎻忚堪" prop="checkitemdescr">
+          <el-input v-model="dialogForm.checkitemdescr" type="textarea" style="width: 200px" />
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { AddUpdateStepCheckItem, DeleteStepCheckItem, StepCheckItemSearch } from '@/api/QualityManagement'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import TableColumnSettings from '@/components/TableColumnSettings'
+import { PrentOrganization } from '@/api/GeneralBasicData'
+
+export default {
+  name: 'ProcessCheckItem',
+  components: {
+    Pagination, TableColumnSettings
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        itemcode: '', // 椤圭洰浠g爜
+        itemname: '', // 椤圭洰鍚嶇О
+        itemdescr: '', // 椤圭洰鎻忚堪
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      total: 10,
+      tableData: [],
+      tableColumnSettingsArray: [
+        // { minWidth: 50, width: false, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: 25, width: 50, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'code',
+          label: '鏍囧噯浠g爜',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'name',
+          label: '鏍囧噯鍚嶇О',
+          id: 4,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'org_code',
+          label: '鎵�灞炶溅闂寸紪鐮�',
+          id: 5,
+          show: false,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 110,
+          width: false,
+          prop: 'org_name',
+          label: '鎵�灞炶溅闂�',
+          id: 6,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 330,
+          width: false,
+          prop: 'descr',
+          label: '鏍囧噯鎻忚堪',
+          id: 7,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'lm_user',
+          label: '鍒涘缓浜哄憳',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'lm_date',
+          label: '鍒涘缓鏃堕棿',
+          id: 9,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+
+      dialogVisible: false,
+      dialogForm: {
+        checkitemcode: '', // 宸ュ簭妫�楠岄」鐩紪鐮�
+        checkitemname: '', // 宸ュ簭妫�楠岄」鐩悕绉�
+        checkitemdescr: '' // 宸ュ簭妫�楠岄」鐩弿杩�
+      },
+      operation: '',
+      dialogFormRules: {
+        checkitemcode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        checkitemname: [
+          { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
+        ],
+        workshopcode: [
+          { required: true, message: '璇烽�夋嫨鎵�灞炶溅闂�', trigger: ['blur', 'change'] }
+        ]
+      }
+    }
+  },
+  created() {
+    this.getStepCheckItemSearch()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+      this.$refs.tableDataRef.doLayout()
+    },
+    async getStepCheckItemSearch() {
+      const res = await StepCheckItemSearch(this.form)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getStepCheckItemSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getStepCheckItemSearch()
+    },
+    upload() {
+
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.itemcode = ''
+      this.form.itemname = ''
+      this.form.itemdescr = ''
+      this.getStepCheckItemSearch()
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 淇敼鎸夐挳
+    edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      this.$nextTick(() => {
+        this.dialogForm.checkitemcode = row.code
+        this.dialogForm.checkitemname = row.name
+        this.dialogForm.workshopcode = row.org_code
+        this.dialogForm.checkitemdescr = row.descr
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        DeleteStepCheckItem({ checkitemcode: row.code }).then(res => {
+          if (res.code === '200') {
+            this.$message.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getStepCheckItemSearch()
+          }
+        })
+      }).catch(() => {
+        this.$message.info('宸插彇娑堝垹闄�')
+      })
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm.checkitemcode = ''
+      this.dialogForm.checkitemname = ''
+      this.dialogForm.checkitemdescr = ''
+      this.dialogForm.workshopcode = ''
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          this.$store.state.app.buttonIsDisabled = true
+          const data = {
+            checkitemcode: this.dialogForm.checkitemcode,
+            checkitemname: this.dialogForm.checkitemname,
+            checkitemdescr: this.dialogForm.checkitemdescr,
+            wkshopcode: this.dialogForm.workshopcode,
+            OperType: this.operation === 'add' ? 'Add' : 'Update'
+          }
+          AddUpdateStepCheckItem(data).then(res => {
+            if (res.code === '200') {
+              this.dialogVisible = false
+              this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.getStepCheckItemSearch()
+              this.$store.state.app.buttonIsDisabled = false
+            } else {
+              this.$message.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 195
+        this.$refs.tableDataRef.doLayout()
+        // if (window.innerHeight < 769) {
+        //   this.tableHeight = this.tableHeight - 50
+        // }
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
diff --git a/src/views/qualityManager/processCheckRecord.vue b/src/views/qualityManager/processCheckRecord.vue
index 1be8c89..76aacc5 100644
--- a/src/views/qualityManager/processCheckRecord.vue
+++ b/src/views/qualityManager/processCheckRecord.vue
@@ -1,11 +1,731 @@
-<template />
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+        <!--        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>-->
+        <!--        <el-button v-waves icon="el-icon-download" @click="upload">瀵煎叆</el-button>-->
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="宸ュ崟缂栧彿" style=" display: flex;">
+              <el-input v-model="form.wocode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.partcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="浜у搧鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.partname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="瑙勬牸鍨嬪彿" style=" display: flex;">
+              <el-input v-model="form.partapec" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="宸ュ簭鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.stepname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <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 v-show="isExpandForm" label="妫�楠岀被鍨�" style=" display: flex;">
+              <el-select v-model="form.checktype" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in checktypeArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <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"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}">
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <el-table
+          :key="tableTimeStampKey"
+          ref="tableDataRef"
+          class="tableFixed"
+          :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
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :key="item.id"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+              <div v-else-if="item.prop==='check_type'">
+                {{ checktypeArr.find(i=>i.code===row[item.prop]).name }}
+              </div>
+              <div v-else-if="item.prop==='check_result'">
+                <div v-if="row.check_result==='NG'">
+                  <i class="el-icon-info" style="margin-right: 2px" />
+                  涓嶈壇
+                </div>
+                <div v-if="row.check_result==='OK'">
+                  <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />
+                  鍚堟牸
+                </div>
+              </div>
+              <div v-else>{{ row[item.prop] }}</div>
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            label="鎿嶄綔"
+            fixed="right"
+            width="120"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <!--                <el-button v-waves type="text" @click="check(row)">鏌ョ湅</el-button>-->
+                <!--                <el-button v-waves type="text" @click="del(row)">鍒犻櫎</el-button>-->
+
+                <el-tooltip class="item" effect="dark" content="鏌ョ湅" placement="top">
+                  <i
+                    class="el-icon-view"
+                    :style="{color:$store.state.settings.theme}"
+                    style="cursor: pointer;margin-right: 15px;"
+                    @click="check(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="prev, pager, next,sizes,jumper"
+        popper-class="select_bottom"
+        @pagination="getStepCheckTableSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      title="宸ュ簭妫�楠屾槑缁�"
+      :visible.sync="dialogVisible"
+      width="900px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef2"
+          :data="tableDataDialog"
+          :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"
+        >
+          <!--          <el-table-column-->
+          <!--            type="selection"-->
+          <!--            width="50"-->
+          <!--            fixed-->
+          <!--          />-->
+          <el-table-column
+            type="index"
+            width="50"
+            label="搴忓彿"
+            fixed
+          />
+
+          <!--          <el-table-column-->
+          <!--            prop="checkitem_code"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            label="妫�楠岄」鐩紪鍙�"-->
+          <!--            width="120"-->
+          <!--          />-->
+          <el-table-column
+            prop="checkitem_name"
+            label="妫�楠岄」鐩悕绉�"
+            fixed
+            show-tooltip-when-overflow
+          />
+          <!--          <el-table-column-->
+          <!--            prop="checkitem_descr"-->
+          <!--            label="妫�楠岄」鐩弿杩�"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--          />-->
+          <el-table-column
+            prop="standvalue"
+            label="鏍囧噯瑕佹眰"
+            fixed
+            min-width="120"
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <!--        ~褰撲笁涓�奸兘鏈�    -->
+              <div v-if="row.standvalue&&row.uppervalue&&row.lowervalue">{{ row.standvalue }}({{
+                row.lowervalue
+              }}~{{ row.uppervalue }})
+              </div>
+              <!--            ~褰撳彧鏈夋爣鍑嗗�煎拰涓婇檺鍊兼椂  -->
+              <div v-else-if="row.standvalue&&row.uppervalue">{{ row.standvalue }}(~{{ row.uppervalue }})</div>
+              <!--            ~褰撳彧鏈夋爣鍑嗗�煎拰涓嬮檺鍊兼椂-->
+              <div v-else-if="row.standvalue&&row.lowervalue">{{ row.standvalue }}({{ row.lowervalue }}~)</div>
+
+              <!--            ~褰撳彧鏈変笂闄愬�煎拰涓嬮檺鍊兼椂-->
+              <div v-else-if="row.uppervalue&&row.lowervalue">({{ row.lowervalue }}~{{ row.uppervalue }})</div>
+              <!--            ~褰撳彧鏈夋爣鍑嗗�兼椂     -->
+              <div v-else-if="row.standvalue">{{ row.standvalue }}</div>
+              <!--            ~褰撳彧鏈変笂闄愬�兼椂       -->
+              <div v-else-if="row.uppervalue">(~{{ row.uppervalue }})</div>
+              <!--            ~褰撳彧鏈変笅闄愬�兼椂      -->
+              <div v-else-if="row.lowervalue">({{ row.lowervalue }}~)</div>
+
+              <div v-else>/</div>
+
+            </template>
+          </el-table-column>
+
+          <el-table-column
+            v-for="(item,index) in dialogTableArrayCol"
+            :key="item"
+            :prop="(index+1)+'/'+ dialogTableNumberCol"
+            :label="'绗�'+(index+1)+'浠�'"
+            show-tooltip-when-overflow
+            min-width="100"
+          >
+            <template slot-scope="{row}">
+              <div style="display: flex;align-items: center">
+                <i
+                  :class="row.check_result==='OK'?'el-icon-success':'el-icon-error'"
+                  :style="{color:row.check_result==='OK'?$store.state.settings.theme:'red'}"
+                  style="margin-right: 2px"
+                />
+                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}
+              </div>
+
+              <!--            &lt;!&ndash;        ~褰撲笁涓�奸兘鏈�    &ndash;&gt;-->
+              <!--            <div v-if="row.standvalue&&row.uppervalue&&row.lowervalue&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])>=parseFloat(row.lowervalue)&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])<=parseFloat(row.uppervalue)">-->
+              <!--              &lt;!&ndash;            <div v-if="row[(index + 1) + '/' + dialogTableNumberCol]>=row.lowervalue&&row[(index + 1) + '/' + dialogTableNumberCol]<=row.uppervalue">&ndash;&gt;-->
+              <!--              <div style="display: flex;align-items: center">-->
+              <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
+              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
+              <!--              </div>-->
+              <!--            </div>-->
+
+              <!--            &lt;!&ndash;            ~褰撳彧鏈夋爣鍑嗗�煎拰涓婇檺鍊兼椂  &ndash;&gt;-->
+              <!--            <div v-else-if="row.standvalue&&row.uppervalue&&row.lowervalue===''&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])<=parseFloat(row.uppervalue)">-->
+              <!--              <div style="display: flex;align-items: center">-->
+              <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
+              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
+              <!--              </div>-->
+              <!--            </div>-->
+              <!--            &lt;!&ndash;            ~褰撳彧鏈夋爣鍑嗗�煎拰涓嬮檺鍊兼椂&ndash;&gt;-->
+              <!--            <div v-else-if="row.standvalue&&row.lowervalue&&row.uppervalue===''&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])>=parseFloat(row.lowervalue)">-->
+              <!--              <div style="display: flex;align-items: center">-->
+              <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
+              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
+              <!--              </div>-->
+              <!--            </div>-->
+
+              <!--            &lt;!&ndash;            ~褰撳彧鏈変笂闄愬�煎拰涓嬮檺鍊兼椂&ndash;&gt;-->
+              <!--            <div v-else-if="row.uppervalue&&row.lowervalue&&row.standvalue===''&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])>=parseFloat(row.lowervalue)&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])<=parseFloat(row.uppervalue)">-->
+              <!--              <div style="display: flex;align-items: center">-->
+              <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
+              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
+              <!--              </div>-->
+              <!--            </div>-->
+              <!--            &lt;!&ndash;            ~褰撳彧鏈夋爣鍑嗗�兼椂     &ndash;&gt;-->
+              <!--            <div v-else-if="row.standvalue&&row.uppervalue===''&&row.lowervalue===''&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])===parseFloat(row.standvalue)">-->
+              <!--              <div style="display: flex;align-items: center">-->
+              <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
+              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
+              <!--              </div>-->
+              <!--            </div>-->
+              <!--            &lt;!&ndash;            ~褰撳彧鏈変笂闄愬�兼椂       &ndash;&gt;-->
+              <!--            <div v-else-if="row.uppervalue&&row.lowervalue===''&&row.standvalue===''&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])<=parseFloat(row.uppervalue)">-->
+              <!--              <div style="display: flex;align-items: center">-->
+              <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
+              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
+              <!--              </div>-->
+              <!--            </div>-->
+
+              <!--            &lt;!&ndash;            ~褰撳彧鏈変笅闄愬�兼椂      &ndash;&gt;-->
+              <!--            <div v-else-if="row.lowervalue&& row.uppervalue===''&&row.standvalue===''&&parseFloat(row[(index + 1) + '/' + dialogTableNumberCol])>=parseFloat(row.lowervalue)">-->
+              <!--              <div style="display: flex;align-items: center">-->
+              <!--                <i class="el-icon-success" :style="{color:$store.state.settings.theme}" style="margin-right: 2px" />-->
+              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
+              <!--              </div></div>-->
+
+              <!--            <div v-else>-->
+              <!--              <div style="display: flex;align-items: center">-->
+              <!--                <i class="el-icon-error" style="color: red;margin-right: 2px" />-->
+              <!--                {{ row[(index + 1) + '/' + dialogTableNumberCol] }}-->
+              <!--              </div>-->
+              <!--            </div>-->
+
+            </template>
+          </el-table-column>
+        </el-table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <!--          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>-->
+          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+          <el-button v-waves @click="dialogVisibleBack">杩� 鍥�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--瀵煎叆缁勪欢-->
+    <import-picker
+      ref="importPickerFunc"
+      class="importPickerClass"
+      :shows.sync="shows"
+      :title="title_value"
+      :colos="colos"
+      :code="code"
+    />
+
+  </div>
+</template>
 
 <script>
+import Pagination from '@/components/Pagination'
+import { AddUpdateOrganization, DeleteOrganization } from '@/api/basicSettings'
+import { getCookie } from '@/utils/auth'
+import ImportPicker from '@/components/ImportPicker'
+import { StepCheckTableOutExcel, StepCheckTableSearch, StepCheckTableSubSearch } from '@/api/QualityManagement'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import TableColumnSettings from '@/components/TableColumnSettings'
+
+const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
-  name: 'ProcessCheckRecord'
+  name: 'Zzjg',
+  components: {
+    Pagination, ImportPicker, TableColumnSettings
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        wocode: '', // 宸ュ崟缂栧彿
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partapec: '', // 浜у搧瑙勬牸
+        stepname: '', // 宸ュ簭鍚嶇О
+        standname: '', // 鏍囧噯鍚嶇О
+        checktype: '', // 妫�楠岀被鍨�
+        checkresult: '', // 妫�楠岀被鍨�
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      checktypeArr: [
+        { code: 'InCheck', name: '鍏ュ巶妫�楠�' },
+        { code: 'OutCheck', name: '鍑哄巶妫�楠�' },
+        { code: 'FirstCheck', name: '棣栨' },
+        { code: 'PatroCheck', name: '宸℃' },
+        { code: 'EndCheck', name: '瀹屽伐妫�' }
+      ],
+      checkresultArr: [
+        { code: 'OK', name: '鍚堟牸' },
+        { code: 'NG', name: '涓嶈壇' }
+      ],
+
+      total: 10,
+      tableData: [],
+      tableColumnSettingsArray: [
+        { minWidth: 50, width: false, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: 25, width: 50, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 160,
+          width: false,
+          prop: 'wo_code',
+          label: '宸ュ崟缂栧彿',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'partcode',
+          label: '浜у搧缂栫爜',
+          id: 4,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'partname',
+          label: '浜у搧鍚嶇О',
+          id: 5,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 110,
+          width: false,
+          prop: 'partspec',
+          label: '浜у搧瑙勬牸',
+          id: 6,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 110,
+          width: false,
+          prop: 'step_code',
+          label: '宸ュ簭缂栫爜',
+          id: 7,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 110,
+          width: false,
+          prop: 'stepname',
+          label: '宸ュ簭鍚嶇О',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 110,
+          width: false,
+          prop: 'checkstaned_code',
+          label: '鏍囧噯缂栫爜',
+          id: 9,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 110,
+          width: false,
+          prop: 'checkstaned_name',
+          label: '鏍囧噯鍚嶇О',
+          id: 10,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 110,
+          width: false,
+          prop: 'check_type',
+          label: '妫�楠岀被鍨�',
+          id: 11,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 110,
+          width: false,
+          prop: 'check_result',
+          label: '妫�楠岀粨鏋�',
+          id: 12,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 110,
+          width: false,
+          prop: 'check_descr',
+          label: '妫�楠屽娉�',
+          id: 13,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 110,
+          width: false,
+          prop: 'check_qty',
+          label: '妫�楠屾暟閲�',
+          id: 14,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'lm_user',
+          label: '妫�楠屼汉鍛�',
+          id: 15,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 160,
+          width: false,
+          prop: 'lm_date',
+          label: '妫�楠屾椂闂�',
+          id: 16,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+      dialogVisible: false,
+      tableDataDialog: [],
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '4',
+      shows: false,
+      dialogTableNumberCol: 0, // 瀵硅瘽妗嗗姩鎬佺殑鍒楁暟
+      dialogTableArrayCol: []// 瀵硅瘽妗嗗姩鎬佺殑鏁扮粍
+
+    }
+  },
+  watch: {
+    shows() {
+      if (!this.shows) {
+        this.getStepCheckTableSearch()
+      }
+    }
+  },
+  created() {
+    this.getStepCheckTableSearch()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+      this.$refs.tableDataRef.doLayout()
+    },
+    async getStepCheckTableSearch() {
+      const res = await StepCheckTableSearch(this.form)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getStepCheckTableSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getStepCheckTableSearch()
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.wocode = '', // 宸ュ崟缂栧彿
+      this.form.partcode = '', // 浜у搧缂栫爜
+      this.form.partname = '', // 浜у搧鍚嶇О
+      this.form.partapec = '', // 浜у搧瑙勬牸
+      this.form.stepname = '', // 宸ュ簭鍚嶇О
+      this.form.standname = '', // 鏍囧噯鍚嶇О
+      this.form.checktype = '', // 妫�楠岀被鍨�
+      this.form.checkresult = '', // 妫�楠岀被鍨�
+      this.getStepCheckTableSearch()
+    },
+
+    async check(row) {
+      // this.operation = operation
+
+      this.dialogVisible = true
+      console.log(row, 1)
+      const res = await StepCheckTableSubSearch({ id: row.id })
+      this.tableDataDialog = res.data
+
+      this.tableDataDialog.forEach((item, index) => {
+        for (const it in item) {
+          if (it.indexOf('/') !== -1) {
+            const i = it.split('/')[1]
+            this.dialogTableNumberCol = i
+          }
+        }
+      })
+
+      this.dialogTableArrayCol = []
+      for (let i = 0; i < this.dialogTableNumberCol; i++) {
+        this.dialogTableArrayCol.push(i)
+      }
+
+      this.$nextTick(() => {
+        this.$refs.tableDataRef2.doLayout()
+      })
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 淇敼鎸夐挳
+    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.getStepCheckTableSearch()
+          }
+        })
+      }).catch(() => {
+        this.$message.info('宸插彇娑堝垹闄�')
+      })
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.tableDataDialog = []
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    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 => {
+            if (res.code === '200') {
+              this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.dialogVisible = false
+              this.getStepCheckTableSearch()
+            } else {
+              this.$message.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 250
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    },
+    async  download() {
+      const { data: res } = await StepCheckTableOutExcel(this.form)
+      window.location.href = res
+    },
+    dialogVisibleBack() {
+      this.dialogVisible = false
+    }
+  }
 }
 </script>
-
-<style scoped>
-
-</style>
diff --git a/src/views/qualityManager/qualityPlaning.vue b/src/views/qualityManager/qualityPlaning.vue
index a08b4e3..c217f53 100644
--- a/src/views/qualityManager/qualityPlaning.vue
+++ b/src/views/qualityManager/qualityPlaning.vue
@@ -1,11 +1,1295 @@
-<template />
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="璐ㄦ鏂规缂栫爜" style=" display: flex;">
+              <el-input v-model="form.qualityinsptcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="璐ㄦ鏂规鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.qualityinsptname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="鏈夋晥鐘舵��" style=" display: flex;">
+              <el-select v-model="form.status" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in whetherOrNot"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="璐ㄦ绫诲瀷" style=" display: flex;">
+              <el-select v-model="form.checktype" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in checktypeArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎶芥牱鏂瑰紡" style=" display: flex;">
+              <el-select v-model="form.sampltype" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in sampltypeArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="閫傜敤瀵硅薄" style=" display: flex;">
+              <el-select v-model="form.suitobject" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in suitobjectArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <!--        <TableColumnSettings-->
+        <!--          :list1="tableColumnSettingsArray"-->
+        <!--          @tableColumnUpdate="tableColumnUpdate"-->
+        <!--        />-->
+        <el-table
+          :key="tableTimeStampKey"
+          ref="tableDataRef"
+          class="tableFixed"
+          :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-->
+          <!--            prop="RowNum"-->
+          <!--            width="50"-->
+          <!--            fixed-->
+          <!--            label="搴忓彿"-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="code"-->
+          <!--            label="璐ㄦ鏂规缂栫爜"-->
+          <!--            sortable="custom"-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="name"-->
+          <!--            label="璐ㄦ鏂规鍚嶇О"-->
+          <!--            sortable="custom"-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="status"-->
+          <!--            label="鏈夋晥鐘舵��"-->
+          <!--            sortable="custom"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div v-if="row.status==='Y'"><i-->
+          <!--                class="el-icon-success"-->
+          <!--                :style="{color:$store.state.settings.theme}"-->
+          <!--                style="margin-right:5px"-->
+          <!--              />鏄�-->
+          <!--              </div>-->
+          <!--              <div v-else-if="row.status==='N'"><i class="el-icon-info" style="margin-right: 5px" />鍚�</div>-->
+          <!--              <div v-else>/</div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <!--          <el-table-column-->
+          <!--            prop="checktype"-->
+          <!--            label="璐ㄦ绫诲瀷"-->
+          <!--            sortable="custom"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div v-if="row.checktype">{{ checktypeArr.find(i => i.code === row.checktype).name }}</div>-->
+          <!--              <div v-else>/</div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <!--          <el-table-column-->
+          <!--            prop="sampmethod"-->
+          <!--            label="鎶芥牱鏂瑰紡"-->
+          <!--            sortable="custom"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div v-if="row.sampmethod">{{ sampltypeArr.find(i => i.code === row.sampmethod).name }}</div>-->
+          <!--              <div v-else>/</div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <!--          <el-table-column-->
+          <!--            prop="suitobject"-->
+          <!--            label="閫傜敤瀵硅薄"-->
+          <!--            sortable="custom"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div v-if="row.suitobject">{{ suitobjectArr.find(i => i.code === row.suitobject).name }}</div>-->
+          <!--              <div v-else>/</div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+
+          <!--          <el-table-column-->
+          <!--            prop="username"-->
+          <!--            label="鍒涘缓浜哄憳"-->
+          <!--            sortable="custom"-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="lm_date"-->
+          <!--            label="鍒涘缓鏃堕棿"-->
+          <!--            width="160"-->
+          <!--            sortable="custom"-->
+          <!--          />-->
+
+          <el-table-column
+            v-for="item in tableColumnSettingsArray"
+            v-if="item.show"
+            :key="item.id"
+            :sortable="item.sortable"
+            :prop="item.prop"
+            :min-width="item.minWidth"
+            :label="item.label"
+            :width="item.width"
+            show-tooltip-when-overflow
+            :fixed="item.fixed?(item.fixed==='left'?'left':'right'):false"
+          >
+            <template slot-scope="{row}">
+              <div v-if="!row[item.prop]">/</div>
+              <div v-else-if="item.prop==='checktype'">
+                {{ checktypeArr.find(i => i.code === row[item.prop]).name }}
+              </div>
+              <div v-else-if="item.prop==='sampmethod'">
+                {{ sampltypeArr.find(i => i.code === row[item.prop]).name }}
+              </div>
+              <!--              閫傜敤瀵硅薄-->
+              <div v-else-if="item.prop==='suitobject'">
+                {{ suitobjectArr.find(i => i.code === row.suitobject).name }}
+              </div>
+              <div v-else-if="item.prop==='status'">
+                <div v-if="row.status==='Y'"><i
+                  class="el-icon-success"
+                  :style="{color:$store.state.settings.theme}"
+                  style="margin-right:5px"
+                />鏄�
+                </div>
+                <div v-else-if="row.status==='N'"><i class="el-icon-info" style="margin-right: 5px" />鍚�</div>
+                <div v-else>/</div>
+              </div>
+              <div v-else>{{ row[item.prop] }}</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-view"
+                    :style="{color:$store.state.settings.theme}"
+                    style="margin-right:15px;cursor: pointer;"
+                    @click="check('check',row)"
+                  />
+                </el-tooltip>
+                <el-tooltip class="item" effect="dark" content="缂栬緫" placement="top">
+                  <i
+                    class="el-icon-edit-outline"
+                    :style="{color:$store.state.settings.theme}"
+                    @click="edit('edit',row)"
+                  />
+                </el-tooltip>
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                  <i class="el-icon-delete" :style="{color:$store.state.settings.theme}" @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="getQualityInspectionSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':operation==='check'?'鏌ョ湅':'缂栬緫'"
+      :visible.sync="dialogVisible"
+      width="1260px"
+      :close-on-click-modal="false"
+      top="5vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+
+      <!--      <div>-->
+      <!--        <i class="el-icon-s-comment" :style="{color:$store.state.settings.theme}" style="margin: -20px 10px 20px 0" />鍩虹璧勬枡锛�-->
+      <!--      </div>-->
+      <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="110px">
+        <el-form-item label="璐ㄦ鏂规缂栫爜" prop="qualityinsptcode">
+          <el-input v-model="dialogForm.qualityinsptcode" :disabled="operation!=='add'" style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="璐ㄦ鏂规鍚嶇О" prop="qualityinsptname">
+          <el-input v-model="dialogForm.qualityinsptname" style="width: 200px" />
+        </el-form-item>
+        <br>
+        <el-form-item prop="status" label="鏈夋晥鐘舵��">
+          <el-select
+            v-model="dialogForm.status"
+            style="width: 200px"
+            placeholder="璇烽�夋嫨"
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in whetherOrNot"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+        <br>
+        <el-form-item prop="checktype" label="璐ㄦ绫诲瀷">
+          <el-radio-group v-model="dialogForm.checktype">
+            <!--            <el-radio label="InCheck">鍏ュ巶妫�楠�</el-radio>-->
+            <!--            <el-radio label="OutCheck">鍑哄巶妫�楠�</el-radio>-->
+            <el-radio label="FirstCheck">棣栨妫�楠�</el-radio>
+            <el-radio label="PatroCheck">宸℃</el-radio>
+            <el-radio label="EndCheck">瀹屽伐妫�</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <br>
+        <el-form-item prop="sampmethod" label="鎶芥牱鏂瑰紡">
+          <el-radio-group v-model="dialogForm.sampmethod" style="width: 200px;">
+            <el-radio label="FIXED">鍥烘椂鎶芥</el-radio>
+            <el-radio label="SCARE">姣斾緥鎶芥</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item v-if="dialogForm.sampmethod==='FIXED'" label="鏍锋湰鏁伴噺" prop="sampnum">
+          <el-input v-model="dialogForm.sampnum" oninput="value=value.replace(/[^0-9]/g,'')" style="width: 200px" />
+        </el-form-item>
+        <el-form-item v-if="dialogForm.sampmethod==='SCARE'" label="鎶芥姣斾緥" prop="sampscale">
+          <el-input v-model="dialogForm.sampscale" oninput="value=value.replace(/[^0-9.]/g,'')" style="width: 180px" />
+          %
+        </el-form-item>
+        <br>
+        <el-form-item prop="suitobject" label="閫傜敤瀵硅薄">
+          <el-radio-group v-model="dialogForm.suitobject" style="width: 200px;" @change="suitobjectChange">
+            <el-radio label="PY">鐗╂枡绫诲埆</el-radio>
+            <el-radio label="P">鐗╂枡</el-radio>
+          </el-radio-group>
+        </el-form-item>
+        <el-form-item
+          prop="suitpart"
+          :label="dialogForm.suitobject==='P'?'閫傜敤鐗╂枡':'閫傜敤鐗╂枡绫诲埆'"
+        >
+          <el-select
+            v-model="dialogForm.suitpart"
+            style="width: 200px"
+            multiple
+            filterable
+            collapse-tags
+            placeholder="璇烽�夋嫨"
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in PartSelectArr"
+              v-if="dialogForm.suitobject==='P'"
+              :key="item.partcode"
+              :label="item.partcode +' / '+ item.partname"
+              :value="item.partcode"
+            />
+            <el-option
+              v-for="item in StockTypeSelectArr"
+              v-if="dialogForm.suitobject==='PY'"
+              :key="item.code"
+              :label="item.code+' / '+item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </el-form-item>
+        <br>
+        <el-form-item
+          label="宸ュ簭鍚嶇О"
+          prop="stepcode"
+        >
+          <el-select
+            v-model="dialogForm.stepcode"
+            style="width: 200px"
+            filterable
+            placeholder="璇烽�夋嫨"
+            :popper-append-to-body="false"
+          >
+            <el-option
+              v-for="item in StepSelectArr"
+              :key="item.stepcode"
+              :label="item.stepname"
+              :value="item.stepcode"
+            />
+          </el-select>
+        </el-form-item>
+
+        <el-form-item label="妫�楠屾柟妗堟弿杩�">
+          <el-input v-model="dialogForm.descr" type="textarea" :autosize="{ minRows: 2 }" />
+        </el-form-item>
+      </el-form>
+
+      <div style="display: flex;align-items: center;margin-bottom: 10px;">
+        <div>
+          <i
+            class="el-icon-s-operation"
+            :style="{color:$store.state.settings.theme}"
+            style="margin:0 10px 0 0px;"
+          />
+        </div>
+        <div>璐ㄦ鍒楄〃锛�</div>
+        <el-button
+          v-if="operation!=='check'"
+          v-waves
+          type="primary"
+          style="margin-left: 20px;"
+          icon="el-icon-circle-plus-outline"
+          @click="addZjlb"
+        >鏂板
+        </el-button>
+      </div>
+
+      <el-table
+        ref="tableDataRef2"
+        class="tableFixed"
+        :data="checkitem"
+        height="250"
+        style="height:250px"
+        border
+        :row-class-name="tableRowClassName"
+        highlight-current-row
+        :header-cell-style="this.$headerCellStyle"
+        :cell-style="this.$cellStyle"
+      >
+        <el-table-column
+          type="index"
+          width="50"
+          fixed
+          label="搴忓彿"
+        />
+        <!--        <el-table-column-->
+        <!--          prop="jyxmbm"-->
+        <!--          width="105"-->
+        <!--          label="妫�楠岄」鐩紪鐮�"-->
+        <!--        >-->
+        <!--          <template slot-scope="{row}">-->
+        <!--            <el-select-->
+        <!--              v-if="row.isVisible===1"-->
+        <!--              v-model="row.jyxmbm"-->
+        <!--              filterable-->
+        <!--              placeholder="璇烽�夋嫨"-->
+        <!--              @change="val=>tableChange(val,row)"-->
+        <!--            >-->
+        <!--              <el-option-->
+        <!--                v-for="item in PartSelectArr"-->
+        <!--                :key="item.partname"-->
+        <!--                :label="item.partcode"-->
+        <!--                :value="item.partname"-->
+        <!--              />-->
+        <!--            </el-select>-->
+        <!--            <div v-if="row.isVisible===0">{{ row.jyxmbm }}</div>-->
+        <!--          </template>-->
+        <!--        </el-table-column>-->
+        <!--        <el-table-column-->
+        <!--          prop="jyxmmc"-->
+        <!--          width="105"-->
+        <!--          label="妫�楠岄」鐩悕绉�"-->
+        <!--        >-->
+        <!--          <template slot-scope="{row}">-->
+        <!--            <el-select-->
+        <!--              v-if="row.isVisible===1"-->
+        <!--              v-model="row.jyxmmc"-->
+        <!--              filterable-->
+        <!--              placeholder="璇烽�夋嫨"-->
+        <!--              @change="val=>tableChange(val,row)"-->
+        <!--            >-->
+        <!--              <el-option-->
+        <!--                v-for="item in PartSelectArr"-->
+        <!--                :key="item.partname"-->
+        <!--                :label="item.partcode"-->
+        <!--                :value="item.partname"-->
+        <!--              />-->
+        <!--            </el-select>-->
+        <!--            <div v-if="row.isVisible===0">{{ row.jyxmmc }}</div>-->
+        <!--          </template>-->
+        <!--        </el-table-column>-->
+
+        <el-table-column
+          prop="stepcheckitem_code"
+          width="250"
+          label="妫�楠岄」鐩� / 缂栫爜"
+        >
+          <template slot-scope="{row}">
+            <el-select
+              v-if="row.isVisible===1"
+              v-model="row.stepcheckitem_code"
+              filterable
+              placeholder="璇烽�夋嫨"
+              style="width: 100%;"
+            >
+              <!--              @change="val=>tableChange(val,row)"-->
+              <el-option
+                v-for="item in CheckItemSelectArr"
+                :key="item.code"
+                :label="item.name"
+                :value="item.code"
+              />
+            </el-select>
+            <div v-else>{{
+              CheckItemSelectAllArr.find(i => i.code === row.stepcheckitem_code).name
+            }}
+            </div>
+          </template>
+        </el-table-column>
+
+        <el-table-column
+          prop="required"
+          width="85"
+          label="鏄惁蹇呭~"
+        >
+          <template slot-scope="{row}">
+            <el-select
+              v-if="row.isVisible===1"
+              v-model="row.required"
+              filterable
+              placeholder="璇烽�夋嫨"
+            >
+              <el-option
+                v-for="item in whetherOrNot"
+                :key="item.code"
+                :label="item.name"
+                :value="item.code"
+              />
+            </el-select>
+            <div v-else>{{ row.required === 'Y' ? '鏄�' : '鍚�' }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="numberjudge"
+          width="85"
+          label="鏁板�煎垽瀹�"
+        >
+          <template slot-scope="{row}">
+            <el-select
+              v-if="row.isVisible===1"
+              v-model="row.numberjudge"
+              filterable
+              placeholder="璇烽�夋嫨"
+              @change="val=>szpdChange(val,row)"
+            >
+              <el-option
+                v-for="item in whetherOrNot"
+                :key="item.code"
+                :label="item.name"
+                :value="item.code"
+              />
+            </el-select>
+            <div v-else>{{ row.numberjudge === 'Y' ? '鏄�' : '鍚�' }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="unit"
+          label="鍗曚綅"
+        >
+          <template slot-scope="{row}">
+            <!--            <el-select-->
+            <!--              v-if="row.isVisible===1"-->
+            <!--              v-model="row.unit"-->
+            <!--              filterable-->
+            <!--              :disabled="row.numberjudge==='N'"-->
+            <!--              placeholder="璇烽�夋嫨"-->
+            <!--            >-->
+            <!--              <el-option-->
+            <!--                v-for="item in UomSelectArr"-->
+            <!--                :key="item.code"-->
+            <!--                :label="item.name"-->
+            <!--                :value="item.code"-->
+            <!--              />-->
+            <!--            </el-select>-->
+            <!--            <div v-if="row.isVisible===0">{{-->
+            <!--                row.numberjudge === 'Y' ? UomSelectArr.find(i => i.code === row.unit).name : '/'-->
+            <!--              }}-->
+            <!--            </div>-->
+            <el-input
+              v-if="row.isVisible===1"
+              v-model="row.unit"
+              placeholder="璇烽�夋嫨"
+              :disabled="row.numberjudge==='N'"
+            />
+            <div v-else>{{ row.unit ? row.unit : '/' }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="decimalnum"
+          width="85"
+          label="灏忔暟浣嶆暟"
+        >
+          <template slot-scope="{row}">
+            <!--            <el-select-->
+            <!--              v-if="row.isVisible===1"-->
+            <!--              v-model="row.decimalnum"-->
+            <!--              filterable-->
+            <!--              placeholder="璇烽�夋嫨"-->
+            <!--            >-->
+            <!--              <el-option-->
+            <!--                v-for="item in PartSelectArr"-->
+            <!--                :key="item.partname"-->
+            <!--                :label="item.partcode"-->
+            <!--                :value="item.partname"-->
+            <!--              />-->
+            <!--            </el-select>-->
+            <el-input
+              v-if="row.isVisible===1"
+              v-model="row.decimalnum"
+              :disabled="row.numberjudge==='N'"
+              oninput="value=value.replace(/[^0-9]/g,'')"
+              placeholder="璇疯緭鍏�"
+            />
+            <div v-else>{{ row.numberjudge === 'Y' ? row.decimalnum : '/' }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="standvalue"
+          label="鏍囧噯鍊�"
+        >
+          <template slot-scope="{row}">
+            <el-input
+              v-if="row.isVisible===1"
+              v-model="row.standvalue"
+              :disabled="row.numberjudge==='N'"
+              oninput="value=value.replace(/[^0-9.]/g,'')"
+              placeholder="璇疯緭鍏�"
+            />
+            <div v-else>{{ row.standvalue ? row.standvalue : '/' }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="uppervalue"
+          label="涓婇檺鍊�"
+        >
+          <template slot-scope="{row}">
+            <el-input
+              v-if="row.isVisible===1"
+              v-model="row.uppervalue"
+              :disabled="row.numberjudge==='N'"
+              oninput="value=value.replace(/[^0-9.]/g,'')"
+              placeholder="璇疯緭鍏�"
+            />
+            <div v-else>{{ row.uppervalue ? row.uppervalue : '/' }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="lowervalue"
+          label="涓嬮檺鍊�"
+        >
+          <template slot-scope="{row}">
+            <el-input
+              v-if="row.isVisible===1"
+              v-model="row.lowervalue"
+              :disabled="row.numberjudge==='N'"
+              oninput="value=value.replace(/[^0-9.]/g,'')"
+              placeholder="璇疯緭鍏�"
+            />
+            <div v-else>{{ row.lowervalue ? row.lowervalue : '/' }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="stepcheckitem_desc"
+          label="鎻忚堪"
+          show-tooltip-when-overflow
+        >
+          <template slot-scope="{row}">
+            <el-input
+              v-if="row.isVisible===1"
+              v-model="row.stepcheckitem_desc"
+              placeholder="璇疯緭鍏�"
+            />
+            <div v-else>{{ row.stepcheckitem_desc ? row.stepcheckitem_desc : '/' }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column
+          v-if="operation!=='check'"
+          label="鎿嶄綔"
+          width="120"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <div class="operationClass">
+              <el-button v-if="row.isVisible===1" v-waves type="text" @click="saveZjlbRow(row)">纭</el-button>
+              <el-button v-if="row.isVisible===1&&isCancel" v-waves type="text" @click="cancelZjlbRow(row)">鍙栨秷
+              </el-button>
+              <el-button v-if="row.isVisible!==1" v-waves type="text" @click="editZjlbRow(row)">缂栬緫</el-button>
+              <el-button v-if="row.isVisible!==1" v-waves type="text" @click="delZjlbRow(row)">鍒犻櫎</el-button>
+            </div>
+          </template>
+        </el-table-column>
+      </el-table>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-if="operation!=='check'" v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-if="operation!=='check'"
+            v-waves
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            type="primary"
+            @click="dialogVisibleConfirm"
+          >淇� 瀛�</el-button>
+          <el-button v-if="operation==='check'" v-waves @click="dialogVisibleCancel">杩� 鍥�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
 
 <script>
+import Pagination from '@/components/Pagination'
+import { validateCode } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import {
+  QualityInspectionAddEditSave,
+  QualityInspectionDelete,
+  QualityInspectionSearch, QualityInspectionSeeEdit, QualityStepCheckItemSelect
+} from '@/api/QualityManagement'
+import TableColumnSettings from '@/components/TableColumnSettings'
+import { PartSelect, TMaterielClassTree } from '@/api/ProductModel'
+import { StepData } from '@/api/GeneralBasicData'
+
 export default {
-  name: 'QualityPlaning'
+  name: 'Zzjg',
+  components: {
+    Pagination, TableColumnSettings
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        qualityinsptcode: '', // 璐ㄦ鏂规缂栫爜
+        qualityinsptname: '', // 璐ㄦ鏂规鍚嶇О
+        status: '', // 鏈夋晥鐘舵��
+        checktype: '', // 璐ㄦ绫诲瀷
+        sampltype: '', // 鎶芥牱鏂瑰紡
+        suitobject: '', // 閫傜敤瀵硅薄
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      checktypeArr: [
+        // { code: 'InCheck', name: '鍏ュ巶妫�楠�' },
+        // { code: 'OutCheck', name: '鍑哄巶妫�楠�' },
+        { code: 'FirstCheck', name: '棣栨' },
+        { code: 'PatroCheck', name: '宸℃' },
+        { code: 'EndCheck', name: '瀹屽伐妫�' }
+      ],
+      sampltypeArr: [
+        { code: 'FIXED', name: '鍥哄畾鎶芥' },
+        { code: 'SCARE', name: '姣斾緥鎶芥' }
+      ],
+      suitobjectArr: [
+        { code: 'P', name: '鐗╂枡' },
+        { code: 'PY', name: '鐗╂枡绫诲瀷' }
+      ],
+      total: 10,
+      tableData: [],
+      tableColumnSettingsArray: [
+        // { minWidth: 50, width: false, prop: 'id', label: 'id', id: 1, show: false, fixed: false, sortable: false }, // 闅愯棌鍒�  show: false闅愯棌锛宼rue鏄剧ず
+        { minWidth: 25, width: 50, prop: 'rowNum', label: '搴忓彿', id: 2, show: true, fixed: 'left', sortable: false }, // custom
+        {
+          minWidth: 130,
+          width: false,
+          prop: 'code',
+          label: '璐ㄦ鏂规缂栫爜',
+          id: 3,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 130,
+          width: false,
+          prop: 'name',
+          label: '璐ㄦ鏂规鍚嶇О',
+          id: 4,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'status',
+          label: '鏈夋晥鐘舵��',
+          id: 5,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 110,
+          width: false,
+          prop: 'checktype',
+          label: '璐ㄦ绫诲瀷',
+          id: 6,
+          show: true,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 110,
+          width: false,
+          prop: 'sampmethod',
+          label: '鎶芥牱鏂瑰紡',
+          id: 7,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+
+        {
+          minWidth: 110,
+          width: false,
+          prop: 'suitobject',
+          label: '閫傜敤瀵硅薄',
+          id: 8,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'stepcode',
+          label: '宸ュ簭缂栫爜',
+          id: 9,
+          show: false,
+          fixed: false,
+          sortable: true
+        }, {
+          minWidth: 110,
+          width: false,
+          prop: 'stepname',
+          label: '宸ュ簭鍚嶇О',
+          id: 10,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 110,
+          prop: 'username',
+          label: '鍒涘缓浜哄憳',
+          id: 11,
+          show: true,
+          fixed: false,
+          sortable: true
+        },
+        {
+          minWidth: false,
+          width: 160,
+          prop: 'lm_date',
+          label: '鍒涘缓鏃堕棿',
+          id: 12,
+          show: true,
+          fixed: false,
+          sortable: true
+        }
+      ],
+      tableTimeStampKey: new Date().getTime(), // 琛ㄦ牸key
+      dialogVisible: false,
+      dialogForm: {
+        qualityinsptcode: '', // 璐ㄦ鏂规缂栫爜
+        qualityinsptname: '', // 璐ㄦ鏂规鍚嶇О
+        status: 'Y', // 鏈夋晥鐘舵��
+        checktype: 'FirstCheck', // 妫�楠岀被鍨�
+        sampmethod: 'FIXED', // 鎶芥鏂瑰紡
+        sampnum: '', // 鏍锋湰鏁伴噺
+        sampscale: '', // 鎶芥姣斾緥
+        suitobject: 'P', // 閫傜敤瀵硅薄
+        suitpart: [], // 閫傜敤鐗╂枡
+        stepcode: '', // 宸ュ簭
+        descr: '' // /鎻忚堪
+      },
+      operation: '',
+      dialogFormRules: {
+        status: [
+          { required: true, message: '璇疯緭鍏ラ�夋嫨绫诲瀷', trigger: ['blur', 'change'] }
+        ],
+        qualityinsptcode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        qualityinsptname: [
+          { required: true, message: '璇疯緭鍏ヨ川妫�鏂规鍚嶇О', trigger: ['blur', 'change'] }
+        ],
+        checktype: [
+          { required: true, message: '璇烽�夋嫨璐ㄦ鏂瑰紡', trigger: ['blur', 'change'] }
+        ],
+        sampmethod: [
+          { required: true, message: '璇烽�夋嫨鎶芥牱鏂瑰紡', trigger: ['blur', 'change'] }
+        ],
+        sampnum: [
+          { required: true, message: '璇疯緭鍏ユ牱鏈暟閲�', trigger: ['blur', 'change'] }
+        ],
+        sampscale: [
+          { required: true, message: '璇疯緭鍏ユ娊妫�姣斾緥', trigger: ['blur', 'change'] }
+        ],
+        suitobject: [
+          { required: true, message: '璇烽�夋嫨閫傜敤瀵硅薄', trigger: ['blur', 'change'] }
+        ],
+        suitpart: [
+          { required: true, message: '璇烽�夋嫨鐗╂枡鎴栫墿鏂欑被鍒�', trigger: ['blur', 'change'] }
+        ],
+        stepcode: [
+          { required: true, message: '璇烽�夋嫨宸ュ簭鍚嶇О', trigger: ['blur', 'change'] }
+        ]
+      },
+      checkitem: [],
+
+      whetherOrNot: [ // 鏄垨鍚�
+        { code: 'Y', name: '鏄�' },
+        { code: 'N', name: '鍚�' }
+      ],
+
+      PartSelectArr: [], // 鐗╂枡涓嬫媺鏁扮粍
+      StockTypeSelectArr: [], // 鐗╂枡绫诲埆涓嬫媺鏁扮粍
+      UomSelectArr: [], // 鍗曚綅涓嬫媺鏁扮粍
+      CheckItemSelectAllArr: [], // 妫�楠岄」鐩�(鎵�鏈�)
+      CheckItemSelectArr: [], // 妫�楠岄」鐩�
+      StepSelectArr: [], // 宸ュ簭鍚嶇О涓嬫媺鎵�鏈�
+
+      isCancel: true// 鏄惁鍙彇娑�
+
+    }
+  },
+
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    tableColumnUpdate(val, isCopyTrue) {
+      if (isCopyTrue) {
+        this.tableColumnSettingsArray = val
+      }
+      this.tableTimeStampKey = new Date().getTime()
+      this.$refs.tableDataRef.doLayout()
+    },
+    handleRequest() {
+      this.getQualityInspectionSearch().then(res => {
+        if (res.code === '200') {
+          // this.getUomSelect()
+          this.getStepCheckItemSelect()
+          this.getPartSelect()
+          this.getStockTypeSelect()
+          this.getStepSelect()
+        }
+      })
+    },
+    async getStepSelect() {
+      const { data: res } = await StepData()
+      this.StepSelectArr = res
+    },
+    async getQualityInspectionSearch() {
+      const res = await QualityInspectionSearch(this.form)
+      this.tableData = res.data
+      this.total = res.count
+
+      return { code: res.code }
+    },
+
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getQualityInspectionSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getQualityInspectionSearch()
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.qualityinsptcode = ''
+      this.form.qualityinsptname = ''
+      this.form.status = ''
+      this.form.checktype = ''
+      this.form.sampltype = ''
+      this.form.suitobject = ''
+      this.getQualityInspectionSearch()
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 鏌ョ湅
+    async check(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      const { data: res } = await QualityInspectionSeeEdit({ qualityinsptcode: row.code })
+
+      this.$nextTick(() => {
+        this.dialogForm.qualityinsptcode = row.code
+        this.dialogForm.qualityinsptname = row.name
+        this.dialogForm.status = row.status
+        this.dialogForm.stepcode = row.stepcode
+        this.dialogForm.checktype = row.checktype
+        this.dialogForm.sampmethod = row.sampmethod
+        // this.dialogForm.sampscare =  row.sampscare
+        if (this.dialogForm.sampmethod === 'FIXED') {
+          this.dialogForm.sampnum = row.sampscare
+        } else {
+          this.dialogForm.sampscale = row.sampscare
+        }
+        this.dialogForm.suitobject = row.suitobject
+        this.dialogForm.suitpart = row.suitpart.split(',')
+        this.dialogForm.descr = row.descr
+        this.checkitem = res
+
+        this.$refs.tableDataRef2.doLayout()
+      })
+    },
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      const { data: res } = await QualityInspectionSeeEdit({ qualityinsptcode: row.code })
+
+      const tempCodeArr = []
+      res.forEach(i => {
+        let number = Math.random() * Math.random()// 浣滀负鍒犻櫎鏃剁殑鏍囪瘑绗�
+        number = number === 0 ? (10 + Math.random()) : number
+        i.number = number
+        i.isVisible = 0
+        tempCodeArr.push(i.stepcheckitem_code)
+      })
+
+      this.CheckItemSelectArr = []
+      this.CheckItemSelectAllArr.forEach(i => {
+        if (!tempCodeArr.includes(i.code)) {
+          this.CheckItemSelectArr.push(i)
+        }
+      })
+
+      this.$nextTick(() => {
+        this.dialogForm.qualityinsptcode = row.code
+        this.dialogForm.qualityinsptname = row.name
+        this.dialogForm.status = row.status
+        this.dialogForm.stepcode = row.stepcode
+        this.dialogForm.checktype = row.checktype
+        this.dialogForm.sampmethod = row.sampmethod
+        if (this.dialogForm.sampmethod === 'FIXED') {
+          this.dialogForm.sampnum = row.sampscare
+        } else {
+          this.dialogForm.sampscale = row.sampscare
+        }
+        this.dialogForm.suitobject = row.suitobject
+        this.dialogForm.suitpart = row.suitpart.split(',')
+        this.dialogForm.descr = row.descr
+        this.checkitem = res
+        // console.log(this.checkitem, 2)
+        this.$refs.tableDataRef2.doLayout()
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        QualityInspectionDelete({ qualityinsptcode: row.code }).then(res => {
+          if (res.code === '200') {
+            this.$message.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getQualityInspectionSearch()
+          }
+        })
+      }).catch(() => {
+        this.$message.info('宸插彇娑堝垹闄�')
+      })
+    },
+    // 鐗╂枡涓嬫媺
+    async getPartSelect() {
+      const { data: res } = await PartSelect()
+      this.PartSelectArr = res
+    },
+    // 鐗╂枡绫诲埆涓嬫媺
+    async getStockTypeSelect() {
+      const { data: res } = await TMaterielClassTree()
+      this.StockTypeSelectArr = res
+    },
+
+    // 閫傜敤瀵硅薄鍊兼敼鍙樻槸
+    suitobjectChange() {
+      this.dialogForm.suitpart = []
+    },
+    // 鑾峰彇妫�楠岄」鐩笅鎷夋帴鍙�
+    async getStepCheckItemSelect() {
+      const { data: res } = await QualityStepCheckItemSelect()
+
+      res.forEach(i => {
+        this.CheckItemSelectArr.push({
+          code: i.code,
+          name: i.name + ' / ' + i.code,
+          descr: i.descr
+        })
+      })
+      this.CheckItemSelectAllArr = JSON.parse(JSON.stringify(this.CheckItemSelectArr))
+    },
+    // 鏁板�煎垽瀹�
+    szpdChange(val, row) {
+      if (val === 'N') {
+        row.unit = ''
+        row.decimalnum = ''
+        row.standvalue = ''
+        row.uppervalue = ''
+        row.lowervalue = ''
+      }
+    },
+    // 琛ㄦ牸鍊兼敼鍙樻椂
+    tableChange(val, row) {
+      console.log(val, row)
+    },
+    // 璐ㄦ鍒楄〃  鏂板琛�
+    addZjlb() {
+      if (this.checkitem.find(i => i.isVisible === 1)) {
+        return this.$message.info('璇峰厛淇濆瓨褰撳墠琛屾暟鎹紒')
+      }
+
+      let number = Math.random() * Math.random()// 浣滀负鍒犻櫎鏃剁殑鏍囪瘑绗�
+      number = number === 0 ? (10 + Math.random()) : number
+
+      this.checkitem.push({
+        number,
+        isVisible: 1,
+        // jyxmbm: '',
+        // jyxmmc: '',
+        stepcheckitem_code: '', // 妫�楠岄」鐩紪鐮�
+        required: 'Y', // 鏄惁蹇呭~
+        numberjudge: 'Y', // 鏄惁鏁板�煎垽鏂�
+        unit: '', // 鍗曚綅
+        decimalnum: '', // 灏忔暟浣嶆暟
+        standvalue: '', // 鏍囧噯鍊�
+        uppervalue: '', // 涓婇檺鍊�
+        lowervalue: '', // 涓嬮檺鍊�
+        stepcheckitem_desc: ''// 妫�楠岄」鐩弿杩�
+      })
+    },
+    // 鍒犻櫎璐ㄦ鍒楄〃琛�
+    delZjlbRow(row) {
+      const t = this.CheckItemSelectAllArr.find(i => i.code === row.stepcheckitem_code)
+      this.CheckItemSelectArr.unshift(t)
+      this.checkitem = this.checkitem.filter(i => i.number !== row.number)
+    },
+    // 淇濆瓨琛�
+    saveZjlbRow(row) {
+      if (!row.stepcheckitem_code) {
+        return this.$message.info('妫�楠岄」鐩笉鑳戒负绌猴紒')
+      }
+      if (row.numberjudge === 'Y' && !row.unit) {
+        return this.$message.info('鍗曚綅涓嶈兘涓虹┖锛�')
+      }
+      if (row.numberjudge === 'Y' && !row.decimalnum) {
+        return this.$message.info('灏忔暟浣嶆暟涓嶈兘涓虹┖锛�')
+      }
+      if (row.numberjudge === 'Y') {
+        if (!row.standvalue && !row.uppervalue && !row.lowervalue) {
+          return this.$message.info('鏍囧噯鍊笺�佷笂闄愬�笺�佷笅闄愬�煎叾涓竴椤逛笉鑳戒负绌猴紒')
+        }
+      }
+      this.CheckItemSelectArr = this.CheckItemSelectArr.filter(i => i.code !== row.stepcheckitem_code)
+      row.isVisible = 0
+
+      this.isCancel = true
+    },
+    // 鍙栨秷琛�
+    cancelZjlbRow(row) {
+      this.checkitem = this.checkitem.filter(i => i.number !== row.number)
+    },
+    // 缂栬緫琛�
+    editZjlbRow(row) {
+      if (this.checkitem.find(i => i.isVisible === 1)) {
+        return this.$message.info('璇峰厛淇濆瓨褰撳墠琛屾暟鎹紒')
+      }
+      row.isVisible = 1
+      this.isCancel = false
+      const t = this.CheckItemSelectAllArr.find(i => i.code === row.stepcheckitem_code)
+      this.CheckItemSelectArr.unshift(t)
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm = {
+        qualityinsptcode: '',
+        qualityinsptname: '',
+        status: 'Y',
+        checktype: 'FirstCheck',
+        sampmethod: 'FIXED',
+        sampnum: '',
+        stepcode: '',
+        sampscale: '',
+        suitobject: 'P',
+        suitpart: [],
+        descr: ''
+      }
+
+      this.isCancel = true
+      this.checkitem = []
+      this.CheckItemSelectArr = JSON.parse(JSON.stringify(this.CheckItemSelectAllArr))
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          if (this.checkitem.length < 1) {
+            return this.$message.info('璐ㄦ鍒楄〃涓嶈兘涓虹┖锛�')
+          }
+
+          const checkitem = []
+          this.checkitem.forEach((item, index) => {
+            checkitem.push({
+              stepcheckitem_seq: index + 1,
+              stepcheckitem_code: item.stepcheckitem_code,
+              stepcheckitem_desc: item.stepcheckitem_desc,
+              required: item.required,
+              numberjudge: item.numberjudge,
+              unit: item.unit,
+              decimalnum: item.decimalnum,
+              standvalue: item.standvalue,
+              uppervalue: item.uppervalue,
+              lowervalue: item.lowervalue
+            })
+          })
+          const data = {
+            qualityinsptcode: this.dialogForm.qualityinsptcode,
+            qualityinsptname: this.dialogForm.qualityinsptname,
+            status: this.dialogForm.status,
+            stepcode: this.dialogForm.checktype === 'InCheck' || this.dialogForm.checktype === 'OutCheck' ? '' : this.dialogForm.stepcode,
+            checktype: this.dialogForm.checktype,
+            sampmethod: this.dialogForm.sampmethod,
+            sampscare: this.dialogForm.sampnum ? this.dialogForm.sampnum : this.dialogForm.sampscale,
+            suitobject: this.dialogForm.suitobject,
+            suitpart: this.dialogForm.suitpart.join(','),
+            type: this.operation === 'add' ? 'Add' : 'Update',
+            descr: this.dialogForm.descr,
+            checkitem
+          }
+
+          this.$store.state.app.buttonIsDisabled = true
+          QualityInspectionAddEditSave(data).then(res => {
+            if (res.code === '200') {
+              this.$message.success(this.operation === 'add' ? '淇濆瓨鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+              this.dialogVisible = false
+              this.getQualityInspectionSearch()
+              this.$store.state.app.buttonIsDisabled = false
+            } else {
+              this.$message.error(this.operation === 'add' ? '淇濆瓨澶辫触锛�' : '淇敼澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
 }
 </script>
 
-<style scoped>
-
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
 </style>
diff --git a/src/views/statistic/defectDetailList.vue b/src/views/statistic/defectDetailList.vue
new file mode 100644
index 0000000..18a7a12
--- /dev/null
+++ b/src/views/statistic/defectDetailList.vue
@@ -0,0 +1,595 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">
+              <el-select
+                v-model="form.wkshopcode"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in wkshopcodeArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="宸ュ崟缂栧彿" style=" display: flex;">
+              <el-input v-model="form.wocode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.partcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </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 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.stepname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="缂洪櫡浠g爜" style=" display: flex;">
+              <el-input v-model="form.defectcode" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="缂洪櫡鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.defectname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎶ュ伐浜哄憳" style=" display: flex;">
+              <el-input v-model="form.reportname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎶ュ伐鏃堕棿" style="display: flex;align-items: center">
+              <el-date-picker
+                v-model="form.reportdate"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+              <!--              font-size: 14px!important;-->
+              <!--              :picker-options="expireTimeOption"-->
+
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :data="tableData"
+          :height="isExpandForm?tableHeight:(tableHeight+80)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <el-table-column
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="wo_code"
+            label="宸ュ崟缂栧彿"
+            width="160"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+            width="160"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partname"
+            label="浜у搧鍚嶇О"
+            width="160"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partspec"
+            label="浜у搧瑙勬牸"
+            width="160"
+            show-tooltip-when-overflow
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.partspec">{{ row.partspec }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wkshp_name"
+            label="杞﹂棿鍚嶇О"
+            width="130"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="stepcode"
+            label="宸ュ簭缂栫爜"
+            width="110"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+            width="110"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="plan_qty"
+            label="浠诲姟鏁伴噺"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="defect_qty"
+            label="涓嶈壇鏁伴噺"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="defect_code"
+            label="缂洪櫡浠g爜"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="defect_name"
+            label="缂洪櫡鍚嶇О"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="style"
+            label="鎿嶄綔绫诲瀷"
+            width="110"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.style==='B'">鎶ュ伐</div>
+              <div v-if="row.style==='S'">鏀舵枡</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="lm_user"
+            label="鎿嶄綔浜哄憳"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="lm_date"
+            label="鎿嶄綔鏃堕棿"
+            width="160"
+            sortable="custom"
+          />
+
+        </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="getDefectDetailsReportSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'浜哄憳鏄庣粏'"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div style="height: 300px;width: 100%;background-color: aliceblue;padding:20px">
+        <el-tag
+          v-for="tag in tagArr"
+          :key="tag.name"
+          type="success"
+          style="margin-right: 15px;min-width: 80px;text-align: center"
+        >
+          {{ tag }}
+        </el-tag>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisible=false">杩� 鍥�</el-button>
+          <!--          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>-->
+          <!--          <el-button v-waves 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"
+    />
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { getCookie } from '@/utils/auth'
+import ImportPicker from '@/components/ImportPicker'
+import { handleDatetime, validateCode } from '@/utils/global'
+import {
+  DefectDetailsReportExcelSearch,
+  DefectDetailsReportSearch,
+  GroupSalaryReportSearchUser
+} from '@/api/ReportManager'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, ImportPicker
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        wkshopcode: '',
+        wocode: '', // 宸ュ崟缂栧彿
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 瑙勬牸鍨嬪彿
+        stepname: '', // 宸ュ簭鍚嶇О
+        defectcode: '', // 缂洪櫡浠g爜
+        defectname: '', // 缂洪櫡鍚嶇О
+        reportname: '', // 鎿嶄綔浜哄憳
+        reportdate: '', // 鎿嶄綔鏃堕棿
+        prop: 'partcode', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      // groupArr: [],
+      wkshopcodeArr: [],
+      total: 10,
+      tableData: [],
+      dialogVisible: false,
+      tagArr: [], //
+      dialogForm: {
+        OrgType: '',
+        OrgCode: '',
+        OrgName: '',
+        SupUnit: ''// 涓婄骇鍗曚綅
+      },
+      operation: '',
+      dialogFormRules: {
+        OrgType: [
+          { required: true, message: '璇疯緭鍏ラ�夋嫨绫诲瀷', trigger: ['blur', 'change'] }
+        ],
+        OrgCode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        OrgName: [
+          { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
+        ]
+
+      },
+
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '4',
+      shows: false
+
+    }
+  },
+  watch: {
+    shows() {
+      if (!this.shows) {
+        this.getDefectDetailsReportSearch()
+      }
+    }
+  },
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    handleRequest() {
+      this.getDefectDetailsReportSearch().then(res => {
+        if (res.code === '200') {
+          this.getPrentOrganizationNoCompany()
+        }
+      })
+    },
+    async getPrentOrganizationNoCompany() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopcodeArr = res
+    },
+    async getDefectDetailsReportSearch() {
+      let tempDate = this.form.reportdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        wocode: this.form.wocode,
+        partcode: this.form.partcode,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        stepname: this.form.stepname,
+        defectcode: this.form.defectcode,
+        defectname: this.form.defectname,
+        reportname: this.form.reportname,
+        reportdate: tempDate,
+        prop: this.form.prop,
+        order: this.form.order,
+        page: this.form.page,
+        rows: this.form.rows
+      }
+
+      const res = await DefectDetailsReportSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+
+      return { code: res.code }
+    },
+
+    // async getMesOrderStepReportSelectUserGroup() {
+    //   const { data: res } = await MesOrderStepReportSelectUserGroup()
+    //   this.groupArr = res
+    // },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getDefectDetailsReportSearch()
+    },
+    async download() {
+      let tempDate = this.form.reportdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        wocode: this.form.wocode,
+        partcode: this.form.partcode,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        stepname: this.form.stepname,
+        defectcode: this.form.defectcode,
+        defectname: this.form.defectname,
+        reportname: this.form.reportname,
+        reportdate: tempDate
+      }
+
+      const { data: res } = await DefectDetailsReportExcelSearch(data)
+      window.location.href = res
+    },
+    // 鏌ヨ
+    search() {
+      this.getDefectDetailsReportSearch()
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.wkshopcode = ''
+      this.form.wocode = ''
+      this.form.partcode = ''
+      this.form.partname = ''
+      this.form.partspec = ''
+      this.form.stepname = ''
+      this.form.defectcode = ''
+      this.form.defectname = ''
+      this.form.reportname = ''
+      this.form.reportdate = ''
+      this.getDefectDetailsReportSearch()
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      const res = await GroupSalaryReportSearchUser({ id: row.id })
+      this.tagArr = res.data.map(r => r.reportname)
+      // this.tagArr = ['妤兼潕淇�', '寮犱笁', '鏉庡洓']
+      // 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.getDefectDetailsReportSearch()
+      //     }
+      //   })
+      // }).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 => {
+          //   if (res.code === '200') {
+          //     this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+          //     this.dialogVisible = false
+          //     this.getDefectDetailsReportSearch()
+          //   } else {
+          //     this.$message.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+          //   }
+          // })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 295
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::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;
+}
+
+::v-deep .el-progress-bar__innerText{
+  display: none !important;
+}
+</style>
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/statistic/groupSalaryList.vue b/src/views/statistic/groupSalaryList.vue
new file mode 100644
index 0000000..9d61962
--- /dev/null
+++ b/src/views/statistic/groupSalaryList.vue
@@ -0,0 +1,897 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+
+        <!--        <div-->
+        <!--          style="color: red;margin: 10px 5px 0 0;"-->
+        <!--        >褰撳墠鎶ヨ〃鍙粺璁¤嚜鍒朵欢宸ュ簭-->
+        <!--        </div>-->
+
+        <!--                <div class="topRight" style="display: flex;align-items: center">-->
+        <!--                   <el-select-->
+        <!--                    v-model="form.rejectstepcode"-->
+        <!--                    style="width: 170px;"-->
+        <!--                    multiple-->
+        <!--                    placeholder="璇烽�夋嫨鍓旈櫎宸ュ簭"-->
+        <!--                    collapse-tags-->
+        <!--                    filterable-->
+        <!--                    clearable-->
+        <!--                    @change="getGroupSalaryReportSearch"-->
+        <!--                  >-->
+        <!--                    <el-option-->
+        <!--                      v-for="item in StepSelectArr"-->
+        <!--                      :key="item.stepcode"-->
+        <!--                      :label="item.stepname"-->
+        <!--                      :value="item.stepcode"-->
+        <!--                    />-->
+        <!--                  </el-select>-->
+        <!--                </div>-->
+
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">
+              <el-select
+                v-model="form.wkshopcode"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in wkshopcodeArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="宸ュ崟缂栧彿" style="display: flex;">
+              <el-input v-model="form.wocode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.partcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </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 v-show="isExpandForm" label="宸ュ簭鍚嶇О" style="display: flex;">
+              <el-input v-model="form.stepname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鐢熶骇鐝粍" style=" display: flex;">
+              <el-select v-model="form.groupcode" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in groupArr"
+                  :key="item.usergroupcode"
+                  :label="item.usergroupname"
+                  :value="item.usergroupcode"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎿嶄綔浜哄憳" style=" display: flex;">
+              <el-input v-model="form.username" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎿嶄綔鏃堕棿" style="display: flex;align-items: center">
+              <el-date-picker
+                v-model="form.operdate"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+              <!--              font-size: 14px!important;-->
+              <!--              :picker-options="expireTimeOption"-->
+
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+
+      </div>
+      <el-tabs type="border-card" style="margin-top: 10px" @tab-click="tabClick">
+        <el-tab-pane label="鏈亾宸ュ簭">
+          <div class="elTableDiv" style="margin: 0 auto 10px;">
+            <el-table
+              ref="tableDataRef"
+              class="tableFixed"
+              :data="tableData"
+              :height="isExpandForm?(tableHeight-70):(tableHeight-30)+'px'"
+              border
+              :summary-method="getSummaries"
+              show-summary
+              :row-class-name="tableRowClassName"
+              :style="{width: 100+'%',height:isExpandForm?(tableHeight-70):(tableHeight-30)+'px',}"
+              highlight-current-row
+              :header-cell-style="this.$headerCellStyle"
+              :cell-style="this.$cellStyle"
+              @sort-change="sortChange"
+            >
+              <el-table-column
+                prop="rowNum"
+                width="50"
+                fixed
+                label="搴忓彿"
+              />
+              <el-table-column
+                prop="wo_code"
+                label="宸ュ崟缂栧彿"
+                width="160"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partcode"
+                label="浜у搧缂栫爜"
+                width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partname"
+                label="浜у搧鍚嶇О"
+                width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partspec"
+                label="浜у搧瑙勬牸"
+                width="150"
+                show-tooltip-when-overflow
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.partspec">{{ row.partspec }}</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="wkshp_name"
+                label="鐢熶骇杞﹂棿"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="stepcode"
+                label="宸ュ簭缂栫爜"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="stepname"
+                label="宸ュ簭鍚嶇О"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="task_qty"
+                label="浠诲姟鏁伴噺"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="usergroupname"
+                label="鐢熶骇鐝粍"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.usergroupname">{{ row.usergroupname }}</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="good_qty"
+                label="鎶ュ伐鏁伴噺"
+                width="110"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="unprice"
+                label="宸ュ簭鍗曚环"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.unprice">{{ row.unprice }} 鍏�</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="usermoney"
+                label="璁′欢宸ヨ祫"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.usermoney">{{ row.usermoney }} 鍏�</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="lm_user"
+                label="鎿嶄綔浜�"
+                width="110"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="report_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-edit-outline" @click="edit('edit',row)" />-->
+                      <i
+                        class="el-icon-tickets"
+                        :style="{color:$store.state.settings.theme}"
+                        style="cursor: pointer;margin-right: 15px"
+                        @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>
+          </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="getGroupSalaryReportSearch"
+          />
+        </el-tab-pane>
+        <el-tab-pane label="閫愰亾宸ュ簭">
+          <div class="elTableDiv" style="margin: 0 auto 10px;">
+            <el-table
+              ref="tableDataRef2"
+              class="tableFixed"
+              :data="tableData2"
+              :height="isExpandForm?(tableHeight-70):(tableHeight-30)+'px'"
+              border
+              :summary-method="getSummaries"
+              show-summary
+              :row-class-name="tableRowClassName"
+              :style="{width: 100+'%',height:isExpandForm?(tableHeight-70):(tableHeight-30)+'px',}"
+              highlight-current-row
+              :header-cell-style="this.$headerCellStyle"
+              :cell-style="this.$cellStyle"
+              @sort-change="sortChange"
+            >
+              <el-table-column
+                prop="rowNum"
+                width="50"
+                fixed
+                label="搴忓彿"
+              />
+              <el-table-column
+                prop="wo_code"
+                label="宸ュ崟缂栧彿"
+                width="160"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partcode"
+                label="浜у搧缂栫爜"
+                width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partname"
+                label="浜у搧鍚嶇О"
+                width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partspec"
+                label="浜у搧瑙勬牸"
+                width="150"
+                show-tooltip-when-overflow
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.partspec">{{ row.partspec }}</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="wkshp_name"
+                label="鐢熶骇杞﹂棿"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="stepcode"
+                label="宸ュ簭缂栫爜"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="stepname"
+                label="宸ュ簭鍚嶇О"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="task_qty"
+                label="浠诲姟鏁伴噺"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="usergroupname"
+                label="鐢熶骇鐝粍"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.usergroupname">{{ row.usergroupname }}</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="good_qty"
+                label="鎶ュ伐鏁伴噺"
+                width="110"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="unprice"
+                label="宸ュ簭鍗曚环"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.unprice">{{ row.unprice }} 鍏�</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="usermoney"
+                label="璁′欢宸ヨ祫"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.usermoney">{{ row.usermoney }} 鍏�</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="lm_user"
+                label="鎿嶄綔浜�"
+                width="110"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="report_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-edit-outline" @click="edit('edit',row)" />-->
+                      <i
+                        class="el-icon-tickets"
+                        :style="{color:$store.state.settings.theme}"
+                        style="cursor: pointer;margin-right: 15px"
+                        @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>
+          </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="getGroupSalaryReportSearch"
+          />
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'浜哄憳鏄庣粏'"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div style="height: 300px;width: 100%;background-color: aliceblue;padding:20px">
+        <el-tag
+          v-for="tag in tagArr"
+          :key="tag.name"
+          type="success"
+          style="margin-right: 15px;min-width: 80px;text-align: center"
+          :style="{color:$store.state.settings.theme}"
+        >
+          {{ tag }}
+        </el-tag>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisible=false">杩� 鍥�</el-button>
+          <!--          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>-->
+          <!--          <el-button v-waves 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"
+    />
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { getCookie } from '@/utils/auth'
+import ImportPicker from '@/components/ImportPicker'
+import { handleDatetime, validateCode } from '@/utils/global'
+import {
+  GroupSalaryReportExcelSearch,
+  GroupSalaryReportSearch,
+  GroupSalaryReportSearchUser
+} from '@/api/ReportManager'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import { GroupsPermissions, PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, ImportPicker
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      StepSelectArr: [], // 鍓旈櫎宸ュ簭鏁扮粍
+      form: {
+        wkshopcode: '',
+        wocode: '', // 宸ュ崟缂栧彿
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 瑙勬牸鍨嬪彿
+        stepname: '', // 宸ュ簭鍚嶇О
+        groupcode: '', // 鐢熶骇鐝粍
+        username: '', // 鎿嶄綔浜哄憳
+        operdate: '', // 鎿嶄綔鏃堕棿
+        rejectstepcode: [], // 鍓旈櫎宸ュ簭(鍥哄畾钖祫宸ュ簭涓嶅弬涓庤绠�
+        compute: 'last', // 璁′欢鏂瑰紡  閫愰亾宸ュ簭锛歝ontin   鏈亾宸ュ簭锛歭ast
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      wkshopcodeArr: [],
+      groupArr: [],
+      total: 10,
+      tableData: [],
+      tableData2: [],
+      dialogVisible: false,
+      tagArr: [], //
+      dialogForm: {
+        OrgType: '',
+        OrgCode: '',
+        OrgName: '',
+        SupUnit: ''// 涓婄骇鍗曚綅
+      },
+      operation: '',
+      dialogFormRules: {
+        OrgType: [
+          { required: true, message: '璇疯緭鍏ラ�夋嫨绫诲瀷', trigger: ['blur', 'change'] }
+        ],
+        OrgCode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        OrgName: [
+          { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
+        ]
+
+      },
+
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '4',
+      shows: false
+
+    }
+  },
+  watch: {
+    shows() {
+      if (!this.shows) {
+        this.getGroupSalaryReportSearch()
+      }
+    }
+  },
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  // updated() {
+  //   this.$nextTick(() => {
+  //     this.$refs.tableDataRef.doLayout()
+  //     this.$refs.tableDataRef2.doLayout()
+  //   })
+  // },
+  methods: {
+    handleRequest() {
+      this.getGroupSalaryReportSearch().then(res => {
+        if (res.code === '200') {
+          this.getMesOrderStepReportSelectUserGroup()
+          this.getPrentOrganizationNoCompany()
+          // this.getStepSelect()
+        }
+      })
+    },
+    async getPrentOrganizationNoCompany() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopcodeArr = res
+    },
+    // 鑾峰彇宸ュ簭涓嬫媺鎺ュ彛
+    // async getStepSelect() {
+    //   const { data: res } = await StepSelect()
+    //   this.StepSelectArr = res
+    // },
+    getSummaries(param) {
+      const { columns, data } = param
+      const sums = []
+
+      columns.forEach((column, index) => {
+        if (index === 10) {
+          sums[index] = '鎬讳环'
+          return
+        }
+        const values = data.map(item => Number(item[column.property]))
+        if (column.property === 'usermoney') {
+          sums[index] = values.reduce((prev, curr) => {
+            const value = Number(curr)
+            if (!isNaN(value)) {
+              return Math.round(prev * 100) / 100 + Math.round(curr * 100) / 100
+            } else {
+              return Math.round(prev * 100) / 100
+            }
+          }, 0)
+          sums[index] += ' 鍏�'
+        } else {
+          // sums[index] = 'N/A'
+          sums[index] = ' '
+        }
+      })
+      this.$nextTick(() => {
+        this.$refs.tableDataRef.doLayout()
+        this.$refs.tableDataRef2.doLayout()
+      })
+
+      return sums
+    },
+    async getGroupSalaryReportSearch() {
+      let tempDate = this.form.operdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        wocode: this.form.wocode,
+        partcode: this.form.partcode,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        stepname: this.form.stepname,
+        groupcode: this.form.groupcode,
+        username: this.form.username,
+        operdate: tempDate,
+        rejectstepcode: this.form.rejectstepcode.join(','),
+        compute: this.form.compute,
+        prop: this.form.prop,
+        order: this.form.order,
+        page: this.form.page,
+        rows: this.form.rows
+
+      }
+      const res = await GroupSalaryReportSearch(data)
+      if (this.form.compute === 'last') {
+        this.tableData = res.data
+      }
+      if (this.form.compute === 'contin') {
+        this.tableData2 = res.data
+      }
+
+      this.total = res.count
+
+      return { code: res.code }
+    },
+
+    async getMesOrderStepReportSelectUserGroup() {
+      const { data: res } = await GroupsPermissions()
+      this.groupArr = res
+    },
+    tabClick(val) {
+      // console.log(val.label)
+      this.form.compute = val.label === '鏈亾宸ュ簭' ? 'last' : 'contin'
+      this.getGroupSalaryReportSearch()
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getGroupSalaryReportSearch()
+    },
+    async download() {
+      let tempDate = this.form.operdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        wocode: this.form.wocode,
+        partcode: this.form.partcode,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        stepname: this.form.stepname,
+        groupcode: this.form.groupcode,
+        username: this.form.username,
+        operdate: tempDate,
+        compute: this.form.compute
+      }
+
+      const { data: res } = await GroupSalaryReportExcelSearch(data)
+      window.location.href = res
+    },
+    // 鏌ヨ
+    search() {
+      this.getGroupSalaryReportSearch()
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.wkshopcode = ''
+      this.form.wocode = ''
+      this.form.partcode = ''
+      this.form.partname = ''
+      this.form.partspec = ''
+      this.form.stepname = ''
+      this.form.groupcode = ''
+      this.form.username = ''
+      this.form.operdate = ''
+      this.getGroupSalaryReportSearch()
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      const res = await GroupSalaryReportSearchUser({ id: row.id })
+      this.tagArr = res.data.map(r => r.username).join(',').split(',')
+      // this.tagArr = ['妤兼潕淇�', '寮犱笁', '鏉庡洓']
+      // 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.getGroupSalaryReportSearch()
+      //     }
+      //   })
+      // }).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 => {
+          //   if (res.code === '200') {
+          //     this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+          //     this.dialogVisible = false
+          //     this.getGroupSalaryReportSearch()
+          //   } else {
+          //     this.$message.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+          //   }
+          // })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+        this.$refs.tableDataRef.doLayout()
+        this.$refs.tableDataRef2.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::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;
+}
+
+::v-deep .el-progress-bar__innerText{
+  display: none !important;
+}
+</style>
+<style>
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/statistic/personSalaryList.vue b/src/views/statistic/personSalaryList.vue
new file mode 100644
index 0000000..d4aa68f
--- /dev/null
+++ b/src/views/statistic/personSalaryList.vue
@@ -0,0 +1,880 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+
+        <div
+          style="color: red;margin: 10px 5px 0 0;"
+        >褰撳墠鎶ヨ〃鍙粺璁¤嚜鍒朵欢宸ュ簭
+        </div>
+
+        <!--        <div class="topRight" style="display: flex;align-items: center">-->
+        <!--          &lt;!&ndash;          <div style="font-size: 14px;margin-right: 15px;color: #a7a7a7">鍓旈櫎宸ュ簭</div>&ndash;&gt;-->
+        <!--          <el-select-->
+        <!--            v-model="form.rejectstepcode"-->
+        <!--            style="width: 170px;"-->
+        <!--            multiple-->
+        <!--            placeholder="璇烽�夋嫨鍓旈櫎宸ュ簭"-->
+        <!--            collapse-tags-->
+        <!--            filterable-->
+        <!--            clearable-->
+        <!--            @change="getPeopleSalaryReportSearch"-->
+        <!--          >-->
+        <!--            <el-option-->
+        <!--              v-for="item in StepSelectArr"-->
+        <!--              :key="item.stepcode"-->
+        <!--              :label="item.stepname"-->
+        <!--              :value="item.stepcode"-->
+        <!--            />-->
+        <!--          </el-select>-->
+        <!--        </div>-->
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex; "
+        >
+          <div class="elForm">
+            <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">
+              <el-select
+                v-model="form.wkshopcode"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in wkshopcodeArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="宸ュ崟缂栧彿" style="display: flex;">
+              <el-input v-model="form.wocode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.partcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </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 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.stepname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <!--            <el-form-item v-show="isExpandForm" label="鐢熶骇鐝粍" style=" display: flex;">-->
+            <!--              <el-select v-model="form.groupcode" style="width: 200px" placeholder="璇烽�夋嫨">-->
+            <!--                <el-option-->
+            <!--                  v-for="item in groupArr"-->
+            <!--                  :key="item.group_code"-->
+            <!--                  :label="item.group_name"-->
+            <!--                  :value="item.group_code"-->
+            <!--                />-->
+            <!--              </el-select>-->
+            <!--            </el-form-item>-->
+            <el-form-item v-show="isExpandForm" label="鎶ュ伐浜哄憳" style=" display: flex;">
+              <el-input v-model="form.reportname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎶ュ伐鏃堕棿" style="display: flex;align-items: center">
+              <el-date-picker
+                v-model="form.reportdate"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+              <!--              font-size: 14px!important;-->
+              <!--              :picker-options="expireTimeOption"-->
+
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <el-tabs type="border-card" style="margin-top: 10px" @tab-click="tabClick">
+        <el-tab-pane label="鏈亾宸ュ簭">
+          <div class="elTableDiv" style="margin: 0 auto 10px;">
+            <el-table
+              ref="tableDataRef"
+              class="tableFixed"
+              :data="tableData"
+              :height="isExpandForm?(tableHeight-80):(tableHeight-40)+'px'"
+              border
+              :summary-method="getSummaries"
+              show-summary
+              :row-class-name="tableRowClassName"
+              :style="{width: 100+'%',height:isExpandForm?(tableHeight-80):(tableHeight-40)+'px',}"
+              highlight-current-row
+              :header-cell-style="this.$headerCellStyle"
+              :cell-style="this.$cellStyle"
+              @sort-change="sortChange"
+            >
+              <el-table-column
+                prop="rowNum"
+                width="50"
+                fixed
+                label="搴忓彿"
+              />
+              <el-table-column
+                prop="wo_code"
+                label="宸ュ崟缂栧彿"
+                width="160"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partcode"
+                label="浜у搧缂栫爜"
+                width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partname"
+                label="浜у搧鍚嶇О"
+                width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partspec"
+                label="浜у搧瑙勬牸"
+                width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.partspec">{{ row.partspec }}</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="wkshp_name"
+                label="杞﹂棿鍚嶇О"
+                width="130"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+
+              <el-table-column
+                prop="step_code"
+                label="宸ュ簭缂栫爜"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="stepname"
+                label="宸ュ簭鍚嶇О"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="task_qty"
+                label="浠诲姟鏁伴噺"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <!--              <el-table-column-->
+              <!--                prop="group_name"-->
+              <!--                label="鐢熶骇鐝粍"-->
+              <!--                width="110"-->
+              <!--                show-tooltip-when-overflow-->
+              <!--                sortable="custom"-->
+              <!--              >-->
+              <!--                <template slot-scope="{row}">-->
+              <!--                  <div v-if="row.group_name">{{ row.group_name }}</div>-->
+              <!--                  <div v-else>/</div>-->
+              <!--                </template>-->
+              <!--              </el-table-column>-->
+              <el-table-column
+                prop="report_qty"
+                label="鎶ュ伐鏁伴噺"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.report_qty">{{ row.report_qty }}</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="step_price"
+                label="宸ュ簭鍗曚环"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.step_price">{{ row.step_price }} 鍏�</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <!--              <el-table-column-->
+              <!--                prop="ratio"-->
+              <!--                label="鍒嗛厤姣斾緥"-->
+              <!--                width="110"-->
+              <!--                sortable="custom"-->
+              <!--              >-->
+              <!--                <template slot-scope="{row}">-->
+              <!--                  <div v-if="row.step_price">{{ row.ratio }} %</div>-->
+              <!--                  <div v-else>/</div>-->
+              <!--                </template>-->
+              <!--              </el-table-column>-->
+              <el-table-column
+                prop="moneys"
+                label="涓汉璁′欢宸ヨ祫"
+                width="130"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.moneys">{{ row.moneys }} 鍏�</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="username"
+                label="鎶ュ伐浜哄憳"
+                width="110"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="report_date"
+                label="鎶ュ伐鏃堕棿"
+                width="160"
+                sortable="custom"
+              />
+
+            </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="getPeopleSalaryReportSearch"
+          />
+        </el-tab-pane>
+        <el-tab-pane label="閫愰亾宸ュ簭">
+          <div class="elTableDiv" style="margin: 0 auto 10px;">
+            <el-table
+              ref="tableDataRef2"
+              class="tableFixed"
+              :data="tableData2"
+              :height="isExpandForm?(tableHeight-80):(tableHeight-40)+'px'"
+              border
+              :summary-method="getSummaries"
+              show-summary
+              :row-class-name="tableRowClassName"
+              :style="{width: 100+'%',height:isExpandForm?(tableHeight-80):(tableHeight-40)+'px',}"
+              highlight-current-row
+              :header-cell-style="this.$headerCellStyle"
+              :cell-style="this.$cellStyle"
+              @sort-change="sortChange"
+            >
+              <el-table-column
+                prop="rowNum"
+                width="50"
+                fixed
+                label="搴忓彿"
+              />
+              <el-table-column
+                prop="wo_code"
+                label="宸ュ崟缂栧彿"
+                width="160"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partcode"
+                label="浜у搧缂栫爜"
+                width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partname"
+                label="浜у搧鍚嶇О"
+                width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="partspec"
+                label="浜у搧瑙勬牸"
+                width="160"
+                show-tooltip-when-overflow
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.partspec">{{ row.partspec }}</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="wkshp_name"
+                label="杞﹂棿鍚嶇О"
+                width="130"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+
+              <el-table-column
+                prop="step_code"
+                label="宸ュ簭缂栫爜"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="stepname"
+                label="宸ュ簭鍚嶇О"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <el-table-column
+                prop="task_qty"
+                label="浠诲姟鏁伴噺"
+                width="110"
+                show-tooltip-when-overflow
+                sortable="custom"
+              />
+              <!--              <el-table-column-->
+              <!--                prop="group_name"-->
+              <!--                label="鐢熶骇鐝粍"-->
+              <!--                width="110"-->
+              <!--                show-tooltip-when-overflow-->
+              <!--                sortable="custom"-->
+              <!--              >-->
+              <!--                <template slot-scope="{row}">-->
+              <!--                  <div v-if="row.group_name">{{ row.group_name }}</div>-->
+              <!--                  <div v-else>/</div>-->
+              <!--                </template>-->
+              <!--              </el-table-column>-->
+              <el-table-column
+                prop="report_qty"
+                label="鎶ュ伐鏁伴噺"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.report_qty">{{ row.report_qty }}</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="step_price"
+                label="宸ュ簭鍗曚环"
+                width="110"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.step_price">{{ row.step_price }} 鍏�</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="moneys"
+                label="涓汉璁′欢宸ヨ祫"
+                width="130"
+                sortable="custom"
+              >
+                <template slot-scope="{row}">
+                  <div v-if="row.moneys">{{ row.moneys }} 鍏�</div>
+                  <div v-else>/</div>
+                </template>
+              </el-table-column>
+              <el-table-column
+                prop="username"
+                label="鎶ュ伐浜哄憳"
+                width="110"
+                sortable="custom"
+              />
+              <el-table-column
+                prop="report_date"
+                label="鎶ュ伐鏃堕棿"
+                width="160"
+                sortable="custom"
+              />
+
+            </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="getPeopleSalaryReportSearch"
+          />
+        </el-tab-pane>
+      </el-tabs>
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'浜哄憳鏄庣粏'"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div style="height: 300px;width: 100%;background-color: aliceblue;padding:20px">
+        <el-tag
+          v-for="tag in tagArr"
+          :key="tag.name"
+          type="success"
+          style="margin-right: 15px;min-width: 80px;text-align: center"
+        >
+          {{ tag }}
+        </el-tag>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisible=false">杩� 鍥�</el-button>
+          <!--          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>-->
+          <!--          <el-button v-waves 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"
+    />
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { getCookie } from '@/utils/auth'
+import ImportPicker from '@/components/ImportPicker'
+import { handleDatetime, validateCode } from '@/utils/global'
+import {
+  GroupSalaryReportSearchUser, PeopleSalaryReportExcelSearch, PeopleSalaryReportSearch
+} from '@/api/ReportManager'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, ImportPicker
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      StepSelectArr: [], // 鍓旈櫎宸ュ簭鏁扮粍
+      form: {
+        wkshopcode: '',
+        wocode: '', // 宸ュ崟缂栧彿
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 瑙勬牸鍨嬪彿
+        stepname: '', // 宸ュ簭鍚嶇О
+        groupcode: '', // 鐢熶骇鐝粍
+        reportname: '', // 鎿嶄綔浜哄憳
+        reportdate: '', // 鎿嶄綔鏃堕棿
+        rejectstepcode: [], // 鍓旈櫎宸ュ簭(鍥哄畾钖祫宸ュ簭涓嶅弬涓庤绠�
+        compute: 'last', // 璁′欢鏂瑰紡
+        prop: 'partcode', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      wkshopcodeArr: [],
+      groupArr: [],
+      total: 10,
+      tableData: [],
+      tableData2: [],
+      dialogVisible: false,
+      tagArr: [], //
+      dialogForm: {
+        OrgType: '',
+        OrgCode: '',
+        OrgName: '',
+        SupUnit: ''// 涓婄骇鍗曚綅
+      },
+      operation: '',
+      dialogFormRules: {
+        OrgType: [
+          { required: true, message: '璇疯緭鍏ラ�夋嫨绫诲瀷', trigger: ['blur', 'change'] }
+        ],
+        OrgCode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        OrgName: [
+          { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
+        ]
+
+      },
+
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '4',
+      shows: false
+
+    }
+  },
+  watch: {
+    shows() {
+      if (!this.shows) {
+        this.getPeopleSalaryReportSearch()
+      }
+    }
+  },
+  // updated() {
+  //   this.$nextTick(() => {
+  //     this.$refs.tableDataRef.doLayout()
+  //     this.$refs.tableDataRef2.doLayout()
+  //   })
+  // },
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    handleRequest() {
+      this.getPeopleSalaryReportSearch().then(res => {
+        if (res.code === '200') {
+          this.getPrentOrganizationNoCompany()
+
+          // this.getMesOrderStepReportSelectUserGroup()
+          // this.getStepSelect()
+        }
+      })
+    },
+    async getPrentOrganizationNoCompany() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopcodeArr = res
+    },
+    // 鑾峰彇宸ュ簭涓嬫媺鎺ュ彛
+    // async getStepSelect() {
+    //   const { data: res } = await StepSelect()
+    //   this.StepSelectArr = res
+    // },
+    getSummaries(param) {
+      const { columns, data } = param
+      const sums = []
+
+      const i = this.form.compute === 'last' ? 9 : 9
+
+      columns.forEach((column, index) => {
+        if (index === i) {
+          sums[index] = '鎬讳环'
+          return
+        }
+        const values = data.map(item => Number(item[column.property]))
+        if (column.property === 'moneys') {
+          sums[index] = values.reduce((prev, curr) => {
+            const value = Number(curr)
+            if (!isNaN(value)) {
+              // return prev + curr
+              return Math.round(prev * 100) / 100 + Math.round(curr * 100) / 100
+            } else {
+              return Math.round(prev * 100) / 100
+            }
+          }, 0)
+
+          sums[index] += ' 鍏�'
+        } else {
+          // sums[index] = 'N/A'
+          sums[index] = ' '
+        }
+      })
+
+      this.$nextTick(() => {
+        this.$refs.tableDataRef.doLayout()
+        this.$refs.tableDataRef2.doLayout()
+      })
+      // (Math.round(sums * 100) / 100).toS
+
+      // console.log(typeof sums)
+      // console.log(sums[11].split(' '))
+      return sums
+    },
+    async getPeopleSalaryReportSearch() {
+      let tempDate = this.form.reportdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        wocode: this.form.wocode,
+        partcode: this.form.partcode,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        stepname: this.form.stepname,
+        groupcode: this.form.groupcode,
+        compute: this.form.compute,
+        reportname: this.form.reportname,
+        rejectstepcode: this.form.rejectstepcode.join(','),
+        reportdate: tempDate,
+        prop: this.form.prop,
+        order: this.form.order,
+        page: this.form.page,
+        rows: this.form.rows
+
+      }
+
+      const res = await PeopleSalaryReportSearch(data)
+      if (this.form.compute === 'last') {
+        this.tableData = res.data
+      }
+      if (this.form.compute === 'contin') {
+        this.tableData2 = res.data
+      }
+      this.total = res.count
+
+      return { code: res.code }
+    },
+
+    // async getMesOrderStepReportSelectUserGroup() {
+    //   const { data: res } = await MesOrderStepReportSelectUserGroup()
+    //   this.groupArr = res
+    // },
+    tabClick(val) {
+      this.form.compute = val.label === '鏈亾宸ュ簭' ? 'last' : 'contin'
+      this.getPeopleSalaryReportSearch()
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getPeopleSalaryReportSearch()
+    },
+    async download() {
+      let tempDate = this.form.reportdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        wocode: this.form.wocode,
+        partcode: this.form.partcode,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        stepname: this.form.stepname,
+        groupcode: this.form.groupcode,
+        compute: this.form.compute,
+        reportname: this.form.reportname,
+        reportdate: tempDate
+      }
+
+      const { data: res } = await PeopleSalaryReportExcelSearch(data)
+      window.location.href = res
+    },
+    // 鏌ヨ
+    search() {
+      this.getPeopleSalaryReportSearch()
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.wkshopcode = ''
+      this.form.wocode = ''
+      this.form.partcode = ''
+      this.form.partname = ''
+      this.form.partspec = ''
+      this.form.stepname = ''
+      this.form.groupcode = ''
+      this.form.reportname = ''
+      this.form.reportdate = ''
+      this.getPeopleSalaryReportSearch()
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      const res = await GroupSalaryReportSearchUser({ id: row.id })
+      this.tagArr = res.data.map(r => r.reportname)
+      // this.tagArr = ['妤兼潕淇�', '寮犱笁', '鏉庡洓']
+      // 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.getPeopleSalaryReportSearch()
+      //     }
+      //   })
+      // }).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 => {
+          //   if (res.code === '200') {
+          //     this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+          //     this.dialogVisible = false
+          //     this.getPeopleSalaryReportSearch()
+          //   } else {
+          //     this.$message.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+          //   }
+          // })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 245
+        this.$refs.tableDataRef.doLayout()
+        this.$refs.tableDataRef2.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::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;
+}
+
+::v-deep .el-progress-bar__innerText {
+  display: none !important;
+}
+</style>
+<style>
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/statistic/repairDetailList.vue b/src/views/statistic/repairDetailList.vue
new file mode 100644
index 0000000..09c6421
--- /dev/null
+++ b/src/views/statistic/repairDetailList.vue
@@ -0,0 +1,614 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">
+              <el-select
+                v-model="form.wkshopcode"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in wkshopcodeArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="宸ュ崟缂栧彿" style=" display: flex;">
+              <el-input v-model="form.wocode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.partcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </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 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.stepname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎿嶄綔绫诲瀷" style=" display: flex;">
+              <!--              <el-input v-model="form.style" style="width: 200px" placeholder="璇疯緭鍏�" />-->
+              <el-select v-model="form.style" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in styleArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="缂洪櫡鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.defectname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎶ュ伐浜哄憳" style=" display: flex;">
+              <el-input v-model="form.repairname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎶ュ伐鏃堕棿" style="display: flex;align-items: center">
+              <el-date-picker
+                v-model="form.repairdate"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+              <!--              font-size: 14px!important;-->
+              <!--              :picker-options="expireTimeOption"-->
+
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :data="tableData"
+          :height="isExpandForm?tableHeight:(tableHeight+80)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+        >
+          <el-table-column
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="wo_code"
+            label="宸ュ崟缂栧彿"
+            width="160"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+            width="160"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partname"
+            label="浜у搧鍚嶇О"
+            width="160"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partspec"
+            label="浜у搧瑙勬牸"
+            width="120"
+            show-tooltip-when-overflow
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.partspec">{{ row.partspec }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wkshp_name"
+            label="杞﹂棿鍚嶇О"
+            width="130"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="stepcode"
+            label="宸ュ簭缂栫爜"
+            width="110"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+            width="110"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="style"
+            label="鎿嶄綔绫诲瀷"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="plan_qty"
+            label="浠诲姟鏁伴噺"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="repair_qty"
+            label="缁翠慨鏁伴噺"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="laborbad_qty"
+            label="宸ュ簾鏁伴噺"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="materielbad_qty"
+            label="鏂欏簾鏁伴噺"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="defect_code"
+            label="缂洪櫡浠g爜"
+            width="110"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="defect_name"
+            label="缂洪櫡鍚嶇О"
+            width="110"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="lm_user"
+            label="鎿嶄綔浜哄憳"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="lm_date"
+            label="鎿嶄綔鏃堕棿"
+            width="160"
+            sortable="custom"
+          />
+
+        </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="getMaintenanceDetailsReportSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'浜哄憳鏄庣粏'"
+      :visible.sync="dialogVisible"
+      width="800px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div style="height: 300px;width: 100%;background-color: aliceblue;padding:20px">
+        <el-tag
+          v-for="tag in tagArr"
+          :key="tag.name"
+          type="success"
+          style="margin-right: 15px;min-width: 80px;text-align: center"
+        >
+          {{ tag }}
+        </el-tag>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisible=false">杩� 鍥�</el-button>
+          <!--          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>-->
+          <!--          <el-button v-waves 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"
+    />
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { getCookie } from '@/utils/auth'
+import ImportPicker from '@/components/ImportPicker'
+import { handleDatetime, validateCode } from '@/utils/global'
+import {
+  GroupSalaryReportSearchUser, MaintenanceDetailsReportExcelSearch, MaintenanceDetailsReportSearch
+} from '@/api/ReportManager'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, ImportPicker
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        wkshopcode: '',
+        wocode: '', // 宸ュ崟缂栧彿
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 瑙勬牸鍨嬪彿
+        stepname: '', // 宸ュ簭鍚嶇О
+        style: '', // 鎿嶄綔绫诲瀷
+        defectname: '', // 缂洪櫡鍚嶇О
+        repairname: '', // 鎿嶄綔浜哄憳
+        repairdate: '', // 鎿嶄綔鏃堕棿
+        prop: 'partcode', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      styleArr: [
+        { code: 'B', name: '鎶ュ伐' },
+        { code: 'S', name: '鏀舵枡' }
+      ],
+      // groupArr: [],
+      wkshopcodeArr: [],
+      total: 10,
+      tableData: [],
+      dialogVisible: false,
+      tagArr: [], //
+      dialogForm: {
+        OrgType: '',
+        OrgCode: '',
+        OrgName: '',
+        SupUnit: ''// 涓婄骇鍗曚綅
+      },
+      operation: '',
+      dialogFormRules: {
+        OrgType: [
+          { required: true, message: '璇疯緭鍏ラ�夋嫨绫诲瀷', trigger: ['blur', 'change'] }
+        ],
+        OrgCode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        OrgName: [
+          { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
+        ]
+
+      },
+
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '4',
+      shows: false
+
+    }
+  },
+  watch: {
+    shows() {
+      if (!this.shows) {
+        this.getMaintenanceDetailsReportSearch()
+      }
+    }
+  },
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    handleRequest() {
+      this.getMaintenanceDetailsReportSearch().then(res => {
+        if (res.code === '200') {
+          this.getPrentOrganizationNoCompany()
+        }
+      })
+    },
+    async getPrentOrganizationNoCompany() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopcodeArr = res
+    },
+    async getMaintenanceDetailsReportSearch() {
+      let tempDate = this.form.repairdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        wocode: this.form.wocode,
+        partcode: this.form.partcode,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        stepname: this.form.stepname,
+        style: this.form.style,
+        defectname: this.form.defectname,
+        repairname: this.form.repairname,
+        repairdate: tempDate,
+        prop: this.form.prop,
+        order: this.form.order,
+        page: this.form.page,
+        rows: this.form.rows
+      }
+
+      const res = await MaintenanceDetailsReportSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+
+      return { code: res.code }
+    },
+
+    // async getMesOrderStepReportSelectUserGroup() {
+    //   const { data: res } = await MesOrderStepReportSelectUserGroup()
+    //   this.groupArr = res
+    // },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getMaintenanceDetailsReportSearch()
+    },
+    async download() {
+      let tempDate = this.form.repairdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        wocode: this.form.wocode,
+        partcode: this.form.partcode,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        stepname: this.form.stepname,
+        style: this.form.style,
+        defectname: this.form.defectname,
+        repairname: this.form.repairname,
+        repairdate: tempDate
+      }
+
+      const { data: res } = await MaintenanceDetailsReportExcelSearch(data)
+      window.location.href = res
+    },
+    // 鏌ヨ
+    search() {
+      this.getMaintenanceDetailsReportSearch()
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.wkshopcode = ''
+      this.form.wocode = ''
+      this.form.partcode = ''
+      this.form.partname = ''
+      this.form.partspec = ''
+      this.form.stepname = ''
+      this.form.style = ''
+      this.form.defectname = ''
+      this.form.repairname = ''
+      this.form.repairdate = ''
+      this.getMaintenanceDetailsReportSearch()
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+      this.dialogVisible = true
+
+      const res = await GroupSalaryReportSearchUser({ id: row.id })
+      this.tagArr = res.data.map(r => r.repairname)
+      // this.tagArr = ['妤兼潕淇�', '寮犱笁', '鏉庡洓']
+      // 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.getMaintenanceDetailsReportSearch()
+      //     }
+      //   })
+      // }).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 => {
+          //   if (res.code === '200') {
+          //     this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+          //     this.dialogVisible = false
+          //     this.getMaintenanceDetailsReportSearch()
+          //   } else {
+          //     this.$message.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+          //   }
+          // })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 295
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::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;
+}
+
+::v-deep .el-progress-bar__innerText{
+  display: none !important;
+}
+</style>
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/statistic/subcontractingOperation.vue b/src/views/statistic/subcontractingOperation.vue
new file mode 100644
index 0000000..1eec12e
--- /dev/null
+++ b/src/views/statistic/subcontractingOperation.vue
@@ -0,0 +1,644 @@
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">
+              <el-select
+                v-model="form.wkshopcode"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in wkshopcodeArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="宸ュ崟缂栧彿" style=" display: flex;">
+              <el-input v-model="form.wocode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.partcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </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 v-show="isExpandForm" label="宸ュ簭鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.stepname" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="渚涙柟鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.suppername" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鎿嶄綔绫诲瀷" style=" display: flex;">
+              <el-select v-model="form.type" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in typeArr"
+                  :key="item.code"
+                  :label="item.name"
+                  :value="item.code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item
+              v-show="isExpandForm"
+              style="display: flex;align-items: center"
+              :label="form.type==='F'?'鍙戞枡鏃堕棿':'鏀舵枡鏃堕棿'"
+            >
+              <el-date-picker
+                v-model="form.receivdate"
+                type="daterange"
+                :disabled="form.type===''"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+              <!--              font-size: 14px!important;-->
+              <!--              :picker-options="expireTimeOption"-->
+
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :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
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="wo_code"
+            label="宸ュ崟缂栧彿"
+            width="160"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+            width="160"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partname"
+            label="浜у搧鍚嶇О"
+            width="160"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partspec"
+            label="浜у搧瑙勬牸"
+            width="110"
+            show-tooltip-when-overflow
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.partspec">{{ row.partspec }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wkshp_name"
+            label="杞﹂棿鍚嶇О"
+            width="130"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="stepcode"
+            label="宸ュ簭缂栫爜"
+            width="110"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+            width="110"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="code"
+            label="澶栧崗渚涙柟缂栫爜"
+            width="129"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="name"
+            label="澶栧崗渚涙柟鍚嶇О"
+            width="240"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="style"
+            label="鎿嶄綔绫诲瀷"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="fqty"
+            label="鍙戞枡鏁伴噺"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="sqty"
+            label="鏀舵枡鏁伴噺"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="ng_qty"
+            label="涓嶈壇鏁伴噺"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="laborbad_qty"
+            label="宸ュ簾鏁伴噺"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="materielbad_qty"
+            label="鏂欏簾鏁伴噺"
+            width="110"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="out_person"
+            label="鍙戞枡浜�"
+            width="110"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.out_person">{{ row.out_person }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="out_time"
+            label="鍙戞枡鏃堕棿"
+            width="160"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.out_time">{{ row.out_time }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="in_person"
+            label="鏀舵枡浜�"
+            width="110"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.in_person">{{ row.in_person }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="in_time"
+            label="鏀舵枡鏃堕棿"
+            width="160"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.in_time">{{ row.in_time }}</div>
+              <div v-else>/</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-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>
+      </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="getOutSourceReportSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-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>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button v-waves 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"
+    />
+
+  </div>
+</template>
+
+<script>
+import Pagination from '@/components/Pagination'
+import { getCookie } from '@/utils/auth'
+import ImportPicker from '@/components/ImportPicker'
+import { handleDatetime, validateCode } from '@/utils/global'
+import { OutSourceReportExcelSearch, OutSourceReportSearch } from '@/api/ReportManager'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
+
+export default {
+  name: 'Zzjg',
+  components: {
+    Pagination, ImportPicker
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        wkshopcode: '',
+        wocode: '', // 宸ュ崟缂栧彿
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 瑙勬牸鍨嬪彿
+        stepname: '', // 宸ュ簭鍚嶇О
+        suppername: '', // 渚涙柟鍚嶇О
+        type: '', // 鎿嶄綔绫诲瀷
+        receivdate: '', // 鏀舵枡鏃堕棿
+        prop: 'out_time', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      typeArr: [
+        { code: 'F', name: '鍙戞枡' },
+        { code: 'S', name: '鏀舵枡' }
+      ],
+      wkshopcodeArr: [],
+      total: 10,
+      tableData: [],
+      dialogVisible: false,
+      dialogForm: {
+        OrgType: '',
+        OrgCode: '',
+        OrgName: '',
+        SupUnit: ''// 涓婄骇鍗曚綅
+      },
+      operation: '',
+      dialogFormRules: {
+        OrgType: [
+          { required: true, message: '璇疯緭鍏ラ�夋嫨绫诲瀷', trigger: ['blur', 'change'] }
+        ],
+        OrgCode: [
+          { required: true, validator: validateCode, trigger: ['blur', 'change'] }
+        ],
+        OrgName: [
+          { required: true, message: '璇疯緭鍏ュ悕绉�', trigger: ['blur', 'change'] }
+        ]
+
+      },
+
+      title_value: '鏁版嵁瀵煎叆 / 鐐规閮ㄤ綅',
+      code: '4',
+      shows: false
+
+    }
+  },
+  watch: {
+    shows() {
+      if (!this.shows) {
+        this.getOutSourceReportSearch()
+      }
+    }
+  },
+  created() {
+    this.getOutSourceReportSearch()
+    this.getPrentOrganizationNoCompany()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    async getPrentOrganizationNoCompany() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopcodeArr = res
+    },
+    async getOutSourceReportSearch() {
+      let tempDate = this.form.receivdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        wocode: this.form.wocode,
+        partcode: this.form.partcode,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        stepname: this.form.stepname,
+        suppername: this.form.suppername,
+        type: this.form.type,
+        receivdate: tempDate,
+        prop: this.form.prop,
+        order: this.form.order,
+        page: this.form.page,
+        rows: this.form.rows
+
+      }
+      // console.log(data, 1)
+      const res = await OutSourceReportSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getOutSourceReportSearch()
+    },
+    async download() {
+      let tempDate = this.form.receivdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        wocode: this.form.wocode,
+        partcode: this.form.partcode,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        stepname: this.form.stepname,
+        suppername: this.form.suppername,
+        type: this.form.type,
+        receivdate: tempDate
+      }
+
+      const { data: res } = await OutSourceReportExcelSearch(data)
+      window.location.href = res
+    },
+    // 鏌ヨ
+    search() {
+      this.getOutSourceReportSearch()
+    },
+    // 瀵煎叆鎸夐挳
+    upload() {
+      this.shows = true
+      this.$refs.importPickerFunc.newDataFunc()
+    },
+    colos() {
+      this.shows = false
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.wkshopcode = ''
+      this.form.wocode = ''
+      this.form.partcode = ''
+      this.form.partname = ''
+      this.form.partspec = ''
+      this.form.stepname = ''
+      this.form.suppername = ''
+      this.form.type = ''
+      this.form.receivdate = ''
+      this.getOutSourceReportSearch()
+    },
+
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 淇敼鎸夐挳
+    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.getOutSourceReportSearch()
+      //     }
+      //   })
+      // }).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 => {
+          //   if (res.code === '200') {
+          //     this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '淇敼鎴愬姛锛�')
+          //     this.dialogVisible = false
+          //     this.getOutSourceReportSearch()
+          //   } else {
+          //     this.$message.error(this.operation === 'add' ? '娣诲姞澶辫触锛�' : '淇敼澶辫触锛�')
+          //   }
+          // })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
+}
+</script>
+
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+::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;
+}
+
+::v-deep .el-progress-bar__innerText{
+  display: none !important;
+}
+</style>
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+</style>
diff --git a/src/views/statistic/workOrderProcess.vue b/src/views/statistic/workOrderProcess.vue
index 7d95aec..b517db9 100644
--- a/src/views/statistic/workOrderProcess.vue
+++ b/src/views/statistic/workOrderProcess.vue
@@ -1,11 +1,444 @@
-<template />
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button v-waves type="primary" icon="el-icon-download" @click="download">瀵煎嚭</el-button>
+        <!--        <el-button v-waves icon="el-icon-download" @click="upload">瀵煎叆</el-button>-->
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">
+              <el-select
+                v-model="form.wkshopcode"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in wkshopcodeArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="宸ュ崟鐘舵��" style=" display: flex;">
+              <el-select v-model="form.status" style="width: 200px" placeholder="璇烽�夋嫨">
+                <el-option
+                  v-for="item in statusArr"
+                  :key="item.value"
+                  :label="item.label"
+                  :value="item.value"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="宸ュ崟缂栧彿" style=" display: flex;">
+              <el-input v-model="form.wocode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+
+            <!--            <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">-->
+            <!--              <el-input v-model="form.wkshopname" placeholder="璇疯緭鍏�" style="width: 200px" />-->
+            <!--            </el-form-item>-->
+            <el-form-item label="浜у搧缂栫爜" style=" display: flex;">
+              <el-input v-model="form.partcode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="浜у搧鍚嶇О" style=" display: flex;">
+              <el-input v-model="form.partname" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="瑙勬牸鍨嬪彿" style=" display: flex;">
+              <el-input v-model="form.partspec" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" label="鍗曟嵁鏃ユ湡" style="display: flex;align-items: center">
+              <el-date-picker
+                v-model="form.lm_date"
+                type="daterange"
+                range-separator="~"
+                class="timeMini"
+                size="mini"
+                style="width: 200px;display: flex;line-height: 34px;height: 34px;"
+                :clearable="false"
+                start-placeholder="寮�濮嬫棩鏈�"
+                end-placeholder="缁撴潫鏃ユ湡"
+              />
+            </el-form-item>
+          </div>
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :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
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="lm_date"
+            label="鍗曟嵁鏃ユ湡"
+            width="105"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.lm_date">{{ row.lm_date.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="status"
+            label="宸ュ崟鐘舵��"
+            width="105"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="wo_code"
+            label="宸ュ崟缂栧彿"
+            width="155"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+            width="105"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partname"
+            label="浜у搧鍚嶇О"
+            width="155"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partpesc"
+            label="浜у搧瑙勬牸"
+            width="105"
+            show-tooltip-when-overflow
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.partpesc">{{ row.partpesc }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            prop="wkshp_code"-->
+          <!--            label="杞﹂棿缂栫爜"-->
+          <!--            width="130"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            sortable="custom"-->
+          <!--          />-->
+          <el-table-column
+            prop="wkshp_name"
+            label="杞﹂棿鍚嶇О"
+            width="130"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="plan_qty"
+            label="浠诲姟鏁伴噺"
+            width="105"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="concat_name"
+            label="鐢熶骇杩涘害"
+            min-width="521"
+            sortable="custom"
+          >
+            <!--            show-tooltip-when-overflow-->
+
+            <template slot-scope="{row}">
+              <div style="min-width: 900px;display: flex;overflow-x: auto;overflow-y: hidden">
+                <div
+                  v-for="item in row.concat_name.split(',')"
+                  :key="item+row.wo_code"
+                  style="display: flex;align-items: center;"
+                >
+                  <!--                  padding:0px 0px 10px 0px;-->
+
+                  <div style="position: relative;display: flex;flex-direction: column;width: 80px;text-align: center;align-items: center;margin-left:10px">
+                    <div style="width: 80px;" class="ellipsis">{{ item.split('/')[0] }}</div>
+                    <el-progress
+                      :text-inside="true"
+                      :stroke-width="20"
+                      color="#2FD04F"
+                      define-back-color="rgba(144,147,153,0.5)"
+                      :percentage="parseFloat((parseFloat(item.split('/')[1])*100/parseFloat(row.plan_qty)).toFixed(2))"
+                      style="width: 80px;margin: 0 2px"
+                    />
+
+                    <div style="position: absolute;top:22px;">{{ parseFloat(item.split('/')[1]) }}/{{ row.plan_qty }}</div>
+
+                  </div>
+
+                </div>
+              </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-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>
+      </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="getProductionScheduleReportSearch"
+      />
+    </div>
+
+  </div>
+</template>
 
 <script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import {
+  ProductionScheduleReportExcelSearch,
+  ProductionScheduleReportSearch
+} from '@/api/ReportManager'
+import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
+
 export default {
-  name: 'WorkOrderProcess'
+  name: 'Zzjg',
+  components: {
+    Pagination
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        status: '', // 宸ュ崟鐘舵��
+        wocode: '', // 宸ュ崟缂栧彿
+        wkshopcode: '', // 宸ヨ壓璺嚎缂栫爜
+        wkshopname: '', // 宸ヨ壓璺嚎鍚嶇О
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 瑙勬牸鍨嬪彿
+        lm_date: '', // 鍗曟嵁鏃ユ湡
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      statusArr: [
+        { label: '鏈紑濮�', value: 'NOSTART' },
+        { label: '鎵ц涓�', value: 'START' },
+        { label: '宸插畬鎴�', value: 'CLOSED' }
+      ],
+      wkshopcodeArr: [],
+
+      total: 10,
+      tableData: []
+
+    }
+  },
+
+  created() {
+    this.getProductionScheduleReportSearch()
+    this.getPrentOrganizationNoCompany()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    async getPrentOrganizationNoCompany() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopcodeArr = res
+    },
+    async getProductionScheduleReportSearch() {
+      let tempDate = this.form.lm_date
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+      const data = {
+        status: this.form.status,
+        wocode: this.form.wocode,
+        wkshopcode: this.form.wkshopcode,
+        wkshopname: this.form.wkshopname,
+        partcode: this.form.partcode,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        lm_date: tempDate,
+        prop: this.form.prop,
+        order: this.form.order,
+        page: this.form.page,
+        rows: this.form.rows
+      }
+
+      const res = await ProductionScheduleReportSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+    },
+
+    // 瀵煎嚭
+    async download() {
+      let tempDate = this.form.lm_date
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+      const data = {
+        status: this.form.status,
+        wocode: this.form.wocode,
+        wkshopcode: this.form.wkshopcode,
+        wkshopname: this.form.wkshopname,
+        partcode: this.form.partcode,
+        partname: this.form.partname,
+        partspec: this.form.partspec,
+        lm_date: tempDate
+      }
+
+      const res = await ProductionScheduleReportExcelSearch(data)
+      // console.log(res)
+      window.location.href = res.data
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getProductionScheduleReportSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getProductionScheduleReportSearch()
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.status = ''
+      this.form.wocode = ''
+      this.form.wkshopcode = ''
+      this.form.wkshopname = ''
+      this.form.partcode = ''
+      this.form.partname = ''
+      this.form.partspec = ''
+      this.form.lm_date = ''
+      this.getProductionScheduleReportSearch()
+    },
+
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 255
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
 }
 </script>
+<style scoped lang="scss">
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
 
-<style scoped>
+::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;
+}
+
+::v-deep .el-progress-bar__innerText{
+  display: none !important;
+}
 </style>
diff --git a/src/views/systemSetting/dataImport.vue b/src/views/systemSetting/dataImport.vue
new file mode 100644
index 0000000..c4c8aa5
--- /dev/null
+++ b/src/views/systemSetting/dataImport.vue
@@ -0,0 +1,2308 @@
+<template>
+  <div class="" :style="{height:mainHeight+'px'}">
+
+    <div style="display: flex;margin: 20px 10px;align-items: center">
+
+      <el-select
+        v-model="excelCode"
+        style="width:200px"
+        placeholder="璇烽�夋嫨妯℃澘鏂囦欢"
+        :popper-append-to-body="false"
+        clearable
+      >
+        <el-option
+          v-for="item in excelArr"
+          :key="item.FileCode"
+          :label="item.FileName"
+          :value="item.FileCode"
+        />
+      </el-select>
+
+      <el-button
+        type="primary"
+        style="margin-left: 20px"
+        :disabled="excelCode===''"
+        icon="el-icon-download"
+        waves
+        @click="getExcel"
+      >涓嬭浇妯℃澘
+      </el-button>
+
+      <upload-excel-component
+        :on-success="handleSuccess"
+        :before-upload="beforeUpload"
+        :disabled="excelCode===''"
+      />
+
+      <el-button
+        type="info"
+        style="margin-left: 20px"
+        :disabled="excelCode===''"
+        icon="el-icon-refresh"
+        waves
+        @click="reset"
+      >閲嶇疆
+      </el-button>
+
+      <el-button
+        type="warning"
+        style="margin-left: 20px"
+        icon="el-icon-circle-plus-outline"
+        :disabled="excelCode===''||tableData.length===0"
+        waves
+        @click="addRow"
+      >鏂板琛�
+      </el-button>
+
+      <el-button
+        type="success"
+        style="margin-left: 20px"
+        :disabled="excelCode===''||tableData.length===0"
+        icon="el-icon-thumb"
+        waves
+        @click="submit"
+      >鎻愪氦鏁版嵁
+      </el-button>
+    </div>
+
+    <div
+      v-if="sheetName.length>0"
+      style="margin: 10px"
+    >
+
+      <el-tabs v-model="activeName" type="border-card">
+        <el-tab-pane
+          v-for="(i,j) in sheetName"
+          :key="i+j"
+          :label="i"
+        >
+          <el-table
+            v-if="tableData[j].length>0"
+            :ref="'tableDataRef'+i"
+            :data="tableData[j]"
+            border
+            :height="(mainHeight-180)+'px'"
+            :header-cell-style="headerCellStyle"
+            :cell-style="cellStyle"
+            :style="{width: 100+'%',height:(mainHeight-180)+'px',zIndex:10}"
+            style="overflow-y: scroll;"
+            highlight-current-row
+          >
+
+            <el-table-column
+              label="搴忓彿"
+              width="55"
+              fixed
+              align="center"
+              :render-header="indexRender"
+            >
+              <template slot-scope="scope">
+                {{ scope.$index + 1 }}
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              v-for="item of tableHeader[j]"
+              :key="item"
+              :prop="item"
+              :label="item"
+              align="center"
+              :render-header="addRedStar"
+              min-width="220"
+            >
+              <template slot-scope="{row}">
+
+                <div
+                  v-if="item.indexOf('缂栧彿(鍞竴)')!==-1||
+                    item.indexOf('鐢ㄦ埛濮撳悕')!==-1||
+                    item.indexOf('瀵嗙爜')!==-1||
+                    item.indexOf('鎵嬫満鍙�')!==-1||
+                    item.indexOf('閭')!==-1||
+                    item.indexOf('鍚嶇О')!==-1||
+                    item.indexOf('鎻忚堪')!==-1||
+                    item.indexOf('涓婄骇缂栫爜')!==-1||
+                    item.indexOf('绫诲瀷缂栫爜')!==-1||
+                    item.indexOf('鑱旂郴浜�')!==-1||
+                    item.indexOf('鑱旂郴鏂瑰紡')!==-1||
+                    item.indexOf('鍦板潃')!==-1||
+                    item.indexOf('鎵�灞炰粨搴撶紪鐮�')!==-1||
+                    item.indexOf('涓婄骇搴撲綅缂栫爜')!==-1||
+                    item.indexOf('瑙勬牸鍨嬪彿')!==-1||
+                    item.indexOf('瀛樿揣鍒嗙被')!==-1||
+                    item.indexOf('浠撳簱缂栫爜')!==-1||
+                    item.indexOf('棰勮瀵垮懡')!==-1||
+                    item.indexOf('鍓╀綑瀵垮懡')!==-1||
+                    item.indexOf('妯″叿缂栫爜')!==-1||
+                    item.indexOf('浜у搧缂栫爜')!==-1||
+
+                    item.indexOf('鏍囧噯缂栧彿')!==-1||
+                    item.indexOf('椤瑰簭鍙�')!==-1||
+                    item.indexOf('椤硅姹�')!==-1||
+
+                    item.indexOf('璁¢噺鍗曚綅/缁勫悕绉�')!==-1||
+
+                    item.indexOf('淇濆吇閮ㄤ綅瑕佹眰')!==-1||
+                    item.indexOf('淇濆吇椤圭洰瑕佹眰')!==-1||
+                    item.indexOf('鐐规閮ㄤ綅瑕佹眰')!==-1||
+                    item.indexOf('鐐规椤圭洰瑕佹眰')!==-1||
+
+                    item.indexOf('浠撳簱缂栫爜')!==-1||
+                    item.indexOf('搴撲綅缂栫爜')!==-1
+                  "
+                >
+                  <el-input v-model="row[item]" placeholder="璇疯緭鍏�" />
+                </div>
+                <div v-else-if="item.indexOf('鐘舵��')!==-1">
+                  <el-select
+                    v-model="row[item]"
+                    placeholder="璇烽�夋嫨"
+                    filterable
+                    style="width:100%"
+                    clearable
+                  >
+                    <el-option
+                      v-for="item in statusArr"
+                      :key="item.code"
+                      :label="item.name"
+                      :value="item.code"
+                    />
+                  </el-select>
+                </div>
+                <div v-else-if="item.indexOf('璁¢噺鏂瑰紡')!==-1">
+                  <el-select
+                    v-model="row[item]"
+                    placeholder="璇烽�夋嫨"
+                    filterable
+                    style="width:100%"
+                    clearable
+                  >
+                    <el-option
+                      v-for="item in meterMethodArr"
+                      :key="item.code"
+                      :label="item.name"
+                      :value="item.code"
+                    />
+                  </el-select>
+                </div>
+                <div v-else-if="item.indexOf('宸ュ簭绫诲瀷')!==-1">
+                  <el-select
+                    v-model="row[item]"
+                    placeholder="璇烽�夋嫨"
+                    filterable
+                    style="width:100%"
+                    clearable
+                  >
+                    <el-option
+                      v-for="item in stepTypeArr"
+                      :key="item.code"
+                      :label="item.name"
+                      :value="item.code"
+                    />
+                  </el-select>
+                </div>
+                <div
+                  v-else-if="
+                    item.indexOf('鐐规绠℃帶')!==-1||
+                      item.indexOf('閫夋嫨鎵爜')!==-1||
+                      item.indexOf('鏄惁鎵爜')!==-1||
+                      item.indexOf('搴撲綅绠$悊')!==-1||
+                      item.indexOf('鏄惁澶栬喘')!==-1||
+                      item.indexOf('鏄惁閿�鍞�')!==-1||
+                      item.indexOf('鏄惁鑷埗')!==-1||
+                      item.indexOf('鏄惁鐢熶骇娑堣��')!==-1||
+                      item.indexOf('鏄惁濮斿')!==-1
+                  "
+                >
+                  <el-select
+                    v-model="row[item]"
+                    placeholder="璇烽�夋嫨"
+                    filterable
+                    style="width:100%"
+                    clearable
+                  >
+                    <el-option
+                      v-for="item in isYesOrNo"
+                      :key="item.code"
+                      :label="item.name"
+                      :value="item.code"
+                    />
+                  </el-select>
+                </div>
+                <div
+                  v-else-if="item.indexOf('鐐规鍛ㄦ湡')!==-1||
+                    item.indexOf('淇濆吇鍛ㄦ湡')!==-1"
+                >
+                  <el-select
+                    v-model="row[item]"
+                    style="width: 100%;"
+                    placeholder="璇烽�夋嫨"
+                  >
+
+                    <el-option
+                      v-for="item in cycleArr"
+                      :key="item.code"
+                      :label="item.name"
+                      :value="item.code"
+                    />
+                  </el-select>
+                </div>
+                <div v-else-if="item.indexOf('鎵�灞炲矖浣嶇紪鐮�')!==-1">
+                  <el-select
+                    v-model="row[item]"
+                    style="width: 100%;"
+                    placeholder="璇烽�夋嫨"
+                    multiple
+                    filterable
+                    collapse-tags
+                    clearable
+                  >
+
+                    <el-option
+                      v-for="item in postArr"
+                      :key="item.postcode"
+                      :label="item.postname"
+                      :value="item.postcode"
+                    />
+                  </el-select>
+                </div>
+                <div v-else-if="item.indexOf('鎵�灞炶鑹茬紪鐮�')!==-1">
+                  <el-select
+                    v-model="row[item]"
+                    style="width: 100%;"
+                    placeholder="璇烽�夋嫨"
+                    multiple
+                    filterable
+                    collapse-tags
+                    clearable
+                  >
+                    <el-option
+                      v-for="item in roleArr"
+                      :key="item.rolecode"
+                      :label="item.rolename"
+                      :value="item.rolecode"
+                    />
+                  </el-select>
+                </div>
+                <div v-else-if="item.indexOf('鎵�灞炵彮缁勭紪鐮�')!==-1">
+                  <el-select
+                    v-model="row[item]"
+                    style="width: 100%;"
+                    placeholder="璇烽�夋嫨"
+                    collapse-tags
+                    multiple
+                    filterable
+                    clearable
+                  >
+                    <el-option
+                      v-for="item in groupArr"
+                      :key="item.usergroupcode"
+                      :label="item.usergroupname"
+                      :value="item.usergroupcode"
+                    />
+                  </el-select>
+                </div>
+                <div v-else-if="item.indexOf('鎵�灞炵粍缁囩紪鐮�')!==-1">
+                  <el-cascader
+                    ref="cascader"
+                    v-model="row[item]"
+                    :options="orgOptions"
+                    filterable
+                    :props="defaultProps"
+                    :show-all-levels="false"
+                  />
+                </div>
+                <div v-else> {{ row[item] }}</div>
+              </template>
+            </el-table-column>
+
+            <el-table-column
+              label="鎿嶄綔"
+              width="55"
+              :render-header="operationRender"
+              fixed="right"
+            >
+              <template slot-scope="{row}">
+                <div class="operationClass" style="padding-left: 10px">
+                  <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                    <i
+                      class="el-icon-delete"
+                      :style="{color:$store.state.settings.theme}"
+                      @click="delRow(row)"
+                    />
+                  </el-tooltip>
+                </div>
+              </template>
+            </el-table-column>
+          </el-table>
+        </el-tab-pane>
+      </el-tabs>
+
+    </div>
+
+    <el-empty v-if="tableData.length===0" :image-size="500">
+      <el-button type="text">1.璇烽�夋嫨妯℃澘涓嬭浇</el-button>
+      <el-button type="text" style="margin-left: 0;">2.璇峰~鍐欐ā鏉挎暟鎹�</el-button>
+      <el-button type="text" style="margin-left: 0;">3.璇蜂笂浼犳枃浠舵彁浜�</el-button>
+    </el-empty>
+
+    <el-dialog
+      v-el-drag-dialog
+      title="澶辫触鍘熷洜"
+      :visible.sync="dialogVisible"
+      width="1300px"
+      :close-on-click-modal="false"
+      top="15vh"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <div class="">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :data="dialogTableData"
+          :height="400"
+          border
+          row-class-name="custom-row"
+          :style="{width: 100+'%',height: '400px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+        >
+          <el-table-column
+            type="index"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="ErrorField"
+            label="閿欒瀛楁"
+            width="200"
+            show-overflow-tooltip
+          />
+          <el-table-column
+            prop="ErrorCont"
+            show-overflow-tooltip
+            label="閿欒鍘熷洜"
+          />
+        </el-table>
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisible=false">杩� 鍥�</el-button>
+          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
+
+<script>
+import UploadExcelComponent from '@/components/UploadExcel/index.vue'
+import { DownLoadExcel, ExcelModelCheck, ExcelModelData } from '@/api/Excel'
+import { GroupsPermissions, PostPermissions, PrentOrganization, RolePermissions } from '@/api/GeneralBasicData'
+import { nanoid } from 'nanoid'
+import arrayToTree from 'array-to-tree'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+
+export default {
+  name: 'DataImport',
+  components: { UploadExcelComponent },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mainHeight: window.innerHeight - 85,
+
+      tableData: [],
+      tableHeader: [],
+      sheetName: [],
+
+      excelCode: '',
+      excelArr: [],
+
+      statusArr: [],
+      isYesOrNo: [
+        { code: '1', name: '鏄�' },
+        { code: '0', name: '鍚�' }
+      ],
+      stepTypeArr: [
+        { code: 'Z', name: '鑷埗' },
+        { code: 'W', name: '澶栧崗' }
+      ],
+      orgArr: [], // 缁勭粐
+      orgOptions: [],
+      defaultProps: {
+        checkStrictly: true,
+        expandTrigger: 'hover',
+        value: 'torg_code',
+        label: 'torg_name'
+      },
+      orgDefaultProps: {
+        multiple: true,
+        expandTrigger: 'hover',
+        value: 'torg_code',
+        label: 'torg_name'
+      },
+      postArr: [], // 宀椾綅
+      roleArr: [], // 瑙掕壊
+      groupArr: [], // 鐝粍
+
+      dialogVisible: false,
+      dialogTableData: [],
+
+      meterMethodArr: [
+        { code: 'S', name: '鍗曡閲�' },
+        { code: 'M', name: '澶氳閲�' }
+      ],
+
+      cycleArr: [
+        { code: '骞�', name: '骞�' },
+        { code: '瀛�', name: '瀛�' },
+        { code: '鏈�', name: '鏈�' },
+        { code: '鍛�', name: '鍛�' },
+        { code: '鏃�', name: '鏃�' }
+      ],
+
+      activeName: '0'// tab閫変腑鍊�
+
+    }
+  },
+  mounted() {
+    this.getExcelModelData()
+
+    this.getSelectArr()
+    window.addEventListener('resize', this.getHeight)
+  },
+  methods: { // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+
+        // this.$nextTick(() => {
+        //   this.$refs.tableDataRef.doLayout()
+        // })
+      })
+    },
+    async beforeUpload(file) {
+      const isLt1M = file.size / 1024 / 1024 < 1
+      if (isLt1M) {
+        return true
+      }
+
+      this.$message({
+        message: '璇蜂笉瑕佷笂浼犲ぇ浜�1鍏嗙殑鏂囦欢銆�',
+        type: 'warning'
+      })
+      return false
+    },
+    // excel鎴愬姛鍚庣殑鍥炶皟
+    async handleSuccess({ results, header, sheetName }) {
+      if (results[0].length === 0) {
+        return this.$message.info('琛ㄦ牸鏁版嵁涓嶈兘涓虹┖锛�')
+      }
+      this.tableData = results
+      this.tableHeader = header
+      this.sheetName = sheetName
+
+      this.activeName = '0'
+
+      // 浜哄憳绠$悊瀵煎叆鍒ゆ柇
+      if (this.sheetName.indexOf('浜哄憳绠$悊') !== -1) {
+        this.handlePersonListUploadTemplate(true)
+      }
+
+      if (this.sheetName.indexOf('瑙掕壊绠$悊') !== -1 || this.sheetName.indexOf('鐝粍绠$悊') !== -1 ||
+        this.sheetName.indexOf('宀椾綅绠$悊') !== -1
+      ) {
+        this.statusArr = [
+          { code: 'Y', name: '姝e父' },
+          { code: 'N', name: '鍋滅敤' }
+        ]
+        this.tableData[0].forEach(j => {
+          j['*鐘舵��'] = j['*鐘舵��'] ? this.statusArr.find(e => e.name === j['*鐘舵��']).code : ''
+          j.uuid = nanoid()
+        })
+      }
+
+      if (this.sheetName.indexOf('寰�鏉ュ崟浣�') !== -1) {
+        this.statusArr = [
+          { code: '0', name: '姝e父' },
+          { code: '1', name: '鍋滅敤' }
+        ]
+        this.tableData[0].forEach(j => {
+          j.uuid = nanoid()
+        })
+        this.tableData[1].forEach(j => {
+          j['*鐘舵��'] = j['*鐘舵��'] ? this.statusArr.find(e => e.name === j['*鐘舵��']).code : ''
+          j.uuid = nanoid()
+        })
+      }
+
+      if (this.sheetName.indexOf('浠撳簱璁剧疆') !== -1) {
+        this.statusArr = [
+          { code: '0', name: '姝e父' },
+          { code: '1', name: '鍋滅敤' }
+        ]
+        this.tableData[0].forEach(j => {
+          j['*鐘舵��'] = j['*鐘舵��'] ? this.statusArr.find(e => e.name === j['*鐘舵��']).code : ''
+          j['*搴撲綅绠$悊'] = j['*搴撲綅绠$悊'] ? this.isYesOrNo.find(e => e.name === j['*搴撲綅绠$悊']).code : ''
+          j.uuid = nanoid()
+        })
+      }
+
+      if (this.sheetName.indexOf('搴撲綅璁剧疆') !== -1) {
+        this.statusArr = [
+          { code: '0', name: '姝e父' },
+          { code: '1', name: '鍋滅敤' }
+        ]
+        this.tableData[0].forEach(j => {
+          j['*鐘舵��'] = j['*鐘舵��'] ? this.statusArr.find(e => e.name === j['*鐘舵��']).code : ''
+          j.uuid = nanoid()
+        })
+      }
+
+      if (this.sheetName.indexOf('瀛樿揣鍒嗙被') !== -1) {
+        this.statusArr = [
+          { code: '0', name: '姝e父' },
+          { code: '1', name: '鍋滅敤' }
+        ]
+        this.tableData[0].forEach(j => {
+          j.uuid = nanoid()
+        })
+        this.tableData[1].forEach(j => {
+          j['*鐘舵��'] = j['*鐘舵��'] ? this.statusArr.find(e => e.name === j['*鐘舵��']).code : ''
+          j['*璁¢噺鏂瑰紡'] = j['*璁¢噺鏂瑰紡'] ? this.meterMethodArr.find(e => e.name === j['*璁¢噺鏂瑰紡']).code : '0'
+          j['鏄惁澶栬喘'] = j['鏄惁澶栬喘'] ? this.isYesOrNo.find(e => e.name === j['鏄惁澶栬喘']).code : '0'
+          j['鏄惁閿�鍞�'] = j['鏄惁閿�鍞�'] ? this.isYesOrNo.find(e => e.name === j['鏄惁閿�鍞�']).code : '0'
+          j['鏄惁鑷埗'] = j['鏄惁鑷埗'] ? this.isYesOrNo.find(e => e.name === j['鏄惁鑷埗']).code : '0'
+          j['鏄惁鐢熶骇娑堣��'] = j['鏄惁鐢熶骇娑堣��'] ? this.isYesOrNo.find(e => e.name === j['鏄惁鐢熶骇娑堣��']).code : '0'
+          j['鏄惁濮斿'] = j['鏄惁濮斿'] ? this.isYesOrNo.find(e => e.name === j['鏄惁濮斿']).code : '0'
+          j.uuid = nanoid()
+        })
+      }
+      if (this.sheetName.indexOf('璁惧绫诲瀷') !== -1) {
+        this.statusArr = [
+          { code: 'Y', name: '姝e父' },
+          { code: 'N', name: '鍋滅敤' }
+        ]
+        const orgArr = this.orgArr.map(i => i.torg_code)
+
+        this.tableData[0].forEach(j => {
+          j.uuid = nanoid()
+        })
+        this.tableData[1].forEach(j => {
+          j['*鐘舵��'] = j['*鐘舵��'] ? this.statusArr.find(e => e.name === j['*鐘舵��']).code : ''
+          j['*鎵�灞炵粍缁囩紪鐮�'] = j['*鎵�灞炵粍缁囩紪鐮�'] ? (orgArr.includes(j['*鎵�灞炵粍缁囩紪鐮�']) ? this.findParent([], j['*鎵�灞炵粍缁囩紪鐮�'], this.orgOptions).reverse() : '') : ''
+          j.uuid = nanoid()
+        })
+      }
+
+      if (this.sheetName.indexOf('宸ュ簭璁剧疆') !== -1) {
+        this.statusArr = [
+          { code: 'Y', name: '姝e父' },
+          { code: 'N', name: '鍋滅敤' }
+        ]
+        this.tableData[0].forEach(j => {
+          j['*鐘舵��'] = j['*鐘舵��'] ? this.statusArr.find(e => e.name === j['*鐘舵��']).code : ''
+          j['*宸ュ簭绫诲瀷'] = j['*宸ュ簭绫诲瀷'] ? this.stepTypeArr.find(e => e.name === j['*宸ュ簭绫诲瀷']).code : ''
+          j.uuid = nanoid()
+        })
+      }
+
+      if (this.sheetName.indexOf('妯″叿娓呭崟') !== -1) {
+        this.statusArr = [
+          { code: 'Y', name: '姝e父' },
+          { code: 'N', name: '鏁呴殰' }
+        ]
+
+        this.tableData[0].forEach(j => {
+          j.uuid = nanoid()
+          j['*鐘舵��'] = j['*鐘舵��'] ? this.statusArr.find(e => e.name === j['*鐘舵��']).code : ''
+        })
+        this.tableData[1].forEach(j => {
+          j.uuid = nanoid()
+        })
+      }
+
+      if (this.sheetName.indexOf('妯″叿鐐规鏍囧噯') !== -1) {
+        this.tableData[0].forEach(j => {
+          j.uuid = nanoid()
+        })
+        this.tableData[1].forEach(j => {
+          j.uuid = nanoid()
+        })
+      }
+
+      if (this.sheetName.indexOf('璁惧鐐规椤圭洰') !== -1) {
+        this.isYesOrNo = [
+          { code: '鏄�', name: '鏄�' },
+          { code: '鍚�', name: '鍚�' }
+        ]
+        this.tableData[0].forEach(j => {
+          j.uuid = nanoid()
+          j['*鐐规鍛ㄦ湡'] = j['*鐐规鍛ㄦ湡'] ? this.cycleArr.find(e => e.name === j['*鐐规鍛ㄦ湡']).code : ''
+          j['*鏄惁鎵爜'] = j['*鏄惁鎵爜'] ? this.isYesOrNo.find(e => e.name === j['*鏄惁鎵爜']).code : ''
+        })
+      }
+
+      if (this.sheetName.indexOf('璁惧鐐规鏍囧噯') !== -1) {
+        this.isYesOrNo = [
+          { code: 'Y', name: 'Y' },
+          { code: 'N', name: 'N' }
+        ]
+        this.cycleArr = [
+          { code: '鏃�', name: '鏃�' }
+        ]
+
+        this.tableData[0].forEach(j => {
+          j.uuid = nanoid()
+        })
+        this.tableData[1].forEach(j => {
+          j.uuid = nanoid()
+        })
+      }
+
+      if (this.sheetName.indexOf('璁惧淇濆吇椤圭洰') !== -1) {
+        this.isYesOrNo = [
+          { code: 'Y', name: 'Y' },
+          { code: 'N', name: 'N' }
+        ]
+        this.cycleArr = [
+          { code: '骞�', name: '骞�' },
+          { code: '瀛�', name: '瀛�' },
+          { code: '鏈�', name: '鏈�' },
+          { code: '鍛�', name: '鍛�' }
+        ]
+        this.tableData[0].forEach(j => {
+          j.uuid = nanoid()
+          j['*鏄惁鎵爜'] = j['*鏄惁鎵爜'] ? this.isYesOrNo.find(e => e.name === j['*鏄惁鎵爜']).code : ''
+        })
+      }
+
+      if (this.sheetName.indexOf('璁惧淇濆吇鏍囧噯') !== -1) {
+        this.isYesOrNo = [
+          { code: 'Y', name: 'Y' },
+          { code: 'N', name: 'N' }
+        ]
+        this.cycleArr = [
+          { code: '骞�', name: '骞�' },
+          { code: '瀛�', name: '瀛�' },
+          { code: '鏈�', name: '鏈�' },
+          { code: '鍛�', name: '鍛�' }
+        ]
+        this.tableData[0].forEach(j => {
+          j.uuid = nanoid()
+        })
+        this.tableData[1].forEach(j => {
+          j.uuid = nanoid()
+        })
+      }
+
+      //
+    },
+    // 鎻愪氦
+    submit() {
+      this.$confirm('鏄惁纭鎻愪氦?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      })
+        .then(() => {
+          if (this.sheetName.indexOf('浜哄憳绠$悊') !== -1) {
+            const res = this.handlePersonListSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+
+          if (this.sheetName.indexOf('瑙掕壊绠$悊') !== -1) {
+            const res = this.handleRoleListSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+          if (this.sheetName.indexOf('鐝粍绠$悊') !== -1) {
+            const res = this.handleGroupListSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+          if (this.sheetName.indexOf('宀椾綅绠$悊') !== -1) {
+            const res = this.handlePostListSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+          if (this.sheetName.indexOf('寰�鏉ュ崟浣嶇被鍨�') !== -1 && this.sheetName.indexOf('寰�鏉ュ崟浣�') !== -1) {
+            const res = this.handleContactUnitListSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+
+          if (this.sheetName.indexOf('浠撳簱璁剧疆') !== -1) {
+            const res = this.handleWarehouseListSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+
+          if (this.sheetName.indexOf('搴撲綅璁剧疆') !== -1) {
+            const res = this.handleStorageListSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+          if (this.sheetName.indexOf('瀛樿揣鍒嗙被') !== -1) {
+            const res = this.handleInventoryListSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+          if (this.sheetName.indexOf('璁惧绫诲瀷') !== -1) {
+            const res = this.handleDeviceListSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+          if (this.sheetName.indexOf('宸ュ簭璁剧疆') !== -1) {
+            const res = this.handleProcessListSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+          if (this.sheetName.indexOf('缂洪櫡瀹氫箟') !== -1) {
+            const res = this.handleDefectDefineSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+
+          if (this.sheetName.indexOf('妯″叿娓呭崟') !== -1 && this.sheetName.indexOf('妯″叿鍏宠仈浜у搧') !== -1) {
+            const res = this.handleMouldListSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+
+          if (this.sheetName.indexOf('妯″叿鐐规椤圭洰') !== -1) {
+            const res = this.handleMouldCheckPosSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+
+          if (this.sheetName.indexOf('妯″叿鐐规鏍囧噯') !== -1) {
+            const res = this.handleMouldCheckStandSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+
+          if (this.sheetName.indexOf('妯″叿淇濆吇椤圭洰') !== -1) {
+            const res = this.handleMouldMaintainSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+
+          if (this.sheetName.indexOf('妯″叿淇濆吇鏍囧噯') !== -1) {
+            const res = this.handleMouldMaintainStandSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+
+          if (this.sheetName.indexOf('璁惧鐐规椤圭洰') !== -1) {
+            const res = this.handleCheckPositionSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+
+          if (this.sheetName.indexOf('璁惧鐐规鏍囧噯') !== -1) {
+            const res = this.handleCheckStandardSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+
+          if (this.sheetName.indexOf('璁惧淇濆吇椤圭洰') !== -1) {
+            const res = this.handleMaintainPositionSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+
+          if (this.sheetName.indexOf('璁惧淇濆吇鏍囧噯') !== -1) {
+            const res = this.handleMaintainStandardSubmitData()
+            if (res.code !== '200') {
+              return this.$message.info(res.message)
+            }
+          }
+
+          // 鏁版嵁鎻愪氦鍓嶅幓闄ょ┖鏍兼柟娉�
+          // this.tableDataTrim()
+
+          const data = {
+            fileCode: this.excelCode,
+            tableData: this.tableData
+          }
+          ExcelModelCheck(data).then(res => {
+            // 杩斿洖鐨刯son1銆乯son2銆乯son3   json1涓烘ā鏉挎牎楠屻�乯son2涓烘暟鎹牎楠屻�乯son3涓哄鍏ユ暟鎹簱鏍¢獙(鍙兘浼氭湁绯荤粺鎶ラ敊浜х敓)
+            if (res.json1.code !== '200' && res.json2 === null && res.json3 === null) {
+              this.$message.error(res.json1.message)
+            }
+            if (res.json1.code === '200' && res.json2 !== '200' && res.json3 === null) {
+              this.$message.error(res.json2.message)
+            }
+            if (res.json1.code === '200' && res.json2 === '200' && res.json3 !== '200') {
+              this.$message.error(res.json3.message)
+            }
+
+            if (res.json1.code === '300' && res.json2.code === '200' && res.json3.code === '300') { // 绯荤粺鎶ラ敊
+              return this.$message.error(res.json3.message)
+            }
+
+            if (res.json1.code === '200' && res.json2.code === '301' && res.json3 === null) {
+              this.dialogVisible = true
+              this.dialogTableData = res.json2.data
+            }
+
+            if (res.json1.code === '200' && res.json2.code === '200' && res.json3.code === '200') {
+              this.$notify.success('鏁版嵁鎻愪氦鎴愬姛!')
+              this.tableData = []
+              this.tableHeader = []
+              this.sheetName = []
+              this.excelCode = ''
+
+              return
+            }
+
+            if (this.sheetName.indexOf('浜哄憳绠$悊') !== -1) {
+              this.handlePersonListUploadTemplate(false)
+            }
+            if (this.sheetName.indexOf('璁惧绫诲瀷') !== -1) {
+              this.tableData[0].forEach(j => {
+                j.uuid = nanoid()
+              })
+              this.tableData[1].forEach(j => {
+                j['*鎵�灞炵粍缁囩紪鐮�'] = this.findParent([], j['*鎵�灞炵粍缁囩紪鐮�'], this.orgOptions).reverse()
+                j.uuid = nanoid()
+              })
+            }
+          })
+        })
+        .catch(e => {
+          console.log(e)
+          this.$notify.info('宸插彇娑堟彁浜わ紒')
+        })
+    },
+
+    // 澶勭悊浜哄憳绠$悊瀵煎叆妯℃澘
+    handlePersonListUploadTemplate(isFirstUpload) {
+      this.statusArr = [
+        { code: 'Y', name: '鍦ㄨ亴' },
+        { code: 'N', name: '绂昏亴' }
+      ]
+      const postArr = this.postArr.map(i => i.postcode)
+      const roleArr = this.roleArr.map(i => i.rolecode)
+      const groupArr = this.groupArr.map(i => i.usergroupcode)
+      const orgArr = this.orgArr.map(i => i.torg_code)
+
+      // this.sheetName.indexOf('浜哄憳绠$悊')
+      // 绗竴娆℃覆鏌�
+      if (isFirstUpload) {
+        this.tableData[0].forEach(j => {
+          j['鎵�灞炲矖浣嶇紪鐮�'] = j['鎵�灞炲矖浣嶇紪鐮�'] ? j['鎵�灞炲矖浣嶇紪鐮�'].split(',').filter(e => postArr.includes(e)) : []
+          j['鎵�灞炶鑹茬紪鐮�'] = j['鎵�灞炶鑹茬紪鐮�'] ? j['鎵�灞炶鑹茬紪鐮�'].split(',').filter(e => roleArr.includes(e)) : []
+          j['鎵�灞炵彮缁勭紪鐮�'] = j['鎵�灞炵彮缁勭紪鐮�'] ? j['鎵�灞炵彮缁勭紪鐮�'].split(',').filter(e => groupArr.includes(e)) : []
+          j['*鎵�灞炵粍缁囩紪鐮�'] = j['*鎵�灞炵粍缁囩紪鐮�'] ? (orgArr.includes(j['*鎵�灞炵粍缁囩紪鐮�']) ? this.findParent([], j['*鎵�灞炵粍缁囩紪鐮�'], this.orgOptions).reverse() : '') : ''
+          j['*鍦ㄨ亴鐘舵��'] = j['*鍦ㄨ亴鐘舵��'] ? this.statusArr.find(e => e.name === j['*鍦ㄨ亴鐘舵��']).code : 'Y'
+          j.uuid = nanoid()
+        })
+      }
+
+      // 闈炵涓�娆℃覆鏌�
+      if (!isFirstUpload) {
+        this.tableData[0].forEach(j => {
+          j.鎵�灞炲矖浣嶇紪鐮� = typeof j.鎵�灞炲矖浣嶇紪鐮� === 'string' ? j.鎵�灞炲矖浣嶇紪鐮�.split(',').filter(e => postArr.includes(e)) : []
+          j.鎵�灞炶鑹茬紪鐮� = typeof j.鎵�灞炶鑹茬紪鐮� === 'string' ? j.鎵�灞炶鑹茬紪鐮�.split(',').filter(e => roleArr.includes(e)) : []
+          j.鎵�灞炵彮缁勭紪鐮� = typeof j.鎵�灞炵彮缁勭紪鐮� === 'string' ? j.鎵�灞炵彮缁勭紪鐮�.split(',').filter(e => groupArr.includes(e)) : []
+          j['*鎵�灞炵粍缁囩紪鐮�'] = this.findParent([], j['*鎵�灞炵粍缁囩紪鐮�'], this.orgOptions).reverse()
+
+          j.uuid = nanoid()
+        })
+      }
+    },
+    // 澶勭悊浜哄憳绠$悊鎻愪氦鏁版嵁
+    handlePersonListSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*鐢ㄦ埛缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('缂栫爜涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*鐢ㄦ埛缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*鐢ㄦ埛缂栧彿(鍞竴)'
+        }
+
+        if (!j['*鐢ㄦ埛濮撳悕']) {
+          flag = false
+          msg = '*鐢ㄦ埛濮撳悕'
+        }
+        if (!j['*瀵嗙爜']) {
+          flag = false
+          msg = '*瀵嗙爜'
+        }
+        if (!j['*鍦ㄨ亴鐘舵��']) {
+          flag = false
+          msg = '*鍦ㄨ亴鐘舵��'
+        }
+        if (!j['*鎵�灞炵粍缁囩紪鐮�']) {
+          flag = false
+          msg = '*鎵�灞炵粍缁囩紪鐮�'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg + '涓嶈兘涓虹┖锛�' }
+      }
+      this.tableData[0].forEach(j => {
+        j['鎵�灞炲矖浣嶇紪鐮�'] = j['鎵�灞炲矖浣嶇紪鐮�'].join(',')
+        j['鎵�灞炵彮缁勭紪鐮�'] = j['鎵�灞炵彮缁勭紪鐮�'].join(',')
+        j['鎵�灞炶鑹茬紪鐮�'] = j['鎵�灞炶鑹茬紪鐮�'].join(',')
+        j['*鎵�灞炵粍缁囩紪鐮�'] = j['*鎵�灞炵粍缁囩紪鐮�'][j['*鎵�灞炵粍缁囩紪鐮�'].length - 1]
+      })
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊瑙掕壊绠$悊鎻愪氦鏁版嵁
+    handleRoleListSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*瑙掕壊缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('缂栫爜涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*瑙掕壊缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*瑙掕壊缂栧彿(鍞竴)'
+        }
+        if (!j['*瑙掕壊鍚嶇О']) {
+          flag = false
+          msg = '*瑙掕壊鍚嶇О'
+        }
+        if (!j['*鐘舵��']) {
+          flag = false
+          msg = '*鐘舵��'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg + '涓嶈兘涓虹┖锛�' }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊鐝粍绠$悊鎻愪氦鏁版嵁
+    handleGroupListSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*瑙掕壊缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('缂栫爜涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*鐝粍缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*鐝粍缂栧彿(鍞竴)'
+        }
+        if (!j['*鐝粍鍚嶇О']) {
+          flag = false
+          msg = '*鐝粍鍚嶇О'
+        }
+        if (!j['*鐘舵��']) {
+          flag = false
+          msg = '*鐘舵��'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg + '涓嶈兘涓虹┖锛�' }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊宀椾綅绠$悊鎻愪氦鏁版嵁
+    handlePostListSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*宀椾綅缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('缂栫爜涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*宀椾綅缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*宀椾綅缂栧彿(鍞竴)'
+        }
+        if (!j['*宀椾綅鍚嶇О']) {
+          flag = false
+          msg = '*宀椾綅鍚嶇О'
+        }
+        if (!j['*鐘舵��']) {
+          flag = false
+          msg = '*鐘舵��'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg + '涓嶈兘涓虹┖锛�' }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊寰�鏉ュ崟浣嶆彁浜ゆ暟鎹�
+    handleContactUnitListSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*寰�鏉ュ崟浣嶇被鍨嬬紪鍙�(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('寰�鏉ュ崟浣嶇被鍨嬬紪鍙蜂笉鑳介噸澶嶏紒')
+      }
+      if ([...new Set(this.tableData[1].map(i => i['*寰�鏉ュ崟浣嶇紪鍙�(鍞竴)']))].length !== this.tableData[1].length) {
+        return this.$message.info('寰�鏉ュ崟浣嶇紪鍙蜂笉鑳介噸澶嶏紒')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*寰�鏉ュ崟浣嶇被鍨嬬紪鍙�(鍞竴)']) {
+          flag = false
+          msg = '*寰�鏉ュ崟浣嶇被鍨嬬紪鍙�(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*寰�鏉ュ崟浣嶇被鍨嬪悕绉�']) {
+          flag = false
+          msg = '*寰�鏉ュ崟浣嶇被鍨嬪悕绉颁笉鑳戒负绌猴紒'
+        }
+        if (j['*寰�鏉ュ崟浣嶇被鍨嬬紪鍙�(鍞竴)'] === j['涓婄骇缂栫爜']) {
+          flag = false
+          msg = '*寰�鏉ュ崟浣嶇被鍨嬬紪鍙�(鍞竴)涓庝笂绾х紪鐮佷笉鑳界浉鍚岋紒'
+        }
+      })
+      this.tableData[1].forEach(j => {
+        if (!j['*寰�鏉ュ崟浣嶇紪鍙�(鍞竴)']) {
+          flag = false
+          msg = '*寰�鏉ュ崟浣嶇紪鍙�(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*寰�鏉ュ崟浣嶅悕绉�']) {
+          flag = false
+          msg = '*寰�鏉ュ崟浣嶅悕绉颁笉鑳戒负绌猴紒'
+        }
+        if (!j['*鐘舵��']) {
+          flag = false
+          msg = '*鐘舵�佷笉鑳戒负绌猴紒'
+        }
+        if (!j['*寰�鏉ュ崟浣嶇被鍨嬬紪鐮�']) {
+          flag = false
+          msg = '*寰�鏉ュ崟浣嶇被鍨嬬紪鐮佷笉鑳戒负绌猴紒'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+      this.tableData[1].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊浠撳簱璁剧疆鎻愪氦鏁版嵁
+    handleWarehouseListSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*浠撳簱缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('缂栫爜涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*浠撳簱缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*浠撳簱缂栧彿(鍞竴)'
+        }
+        if (!j['*浠撳簱鍚嶇О']) {
+          flag = false
+          msg = '*浠撳簱鍚嶇О'
+        }
+        if (!j['*鐘舵��']) {
+          flag = false
+          msg = '*鐘舵��'
+        }
+        if (!j['*搴撲綅绠$悊']) {
+          flag = false
+          msg = '*搴撲綅绠$悊'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg + '涓嶈兘涓虹┖锛�' }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊搴撲綅璁剧疆鎻愪氦鏁版嵁
+    handleStorageListSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*搴撲綅缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('缂栫爜涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*搴撲綅缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*搴撲綅缂栧彿(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*搴撲綅鍚嶇О']) {
+          flag = false
+          msg = '*搴撲綅鍚嶇О涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*鎵�灞炰粨搴撶紪鐮�']) {
+          flag = false
+          msg = '*鎵�灞炰粨搴撶紪鐮佷笉鑳戒负绌猴紒'
+        }
+        if (!j['*鐘舵��']) {
+          flag = false
+          msg = '*鐘舵�佷笉鑳戒负绌猴紒'
+        }
+        if (j['涓婄骇搴撲綅缂栫爜'] === j['*搴撲綅缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*搴撲綅缂栧彿(鍞竴)涓庝笂绾у簱浣嶇紪鐮佷笉鑳界浉鍚岋紒'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊瀛樿揣妗f鎻愪氦鏁版嵁
+    handleInventoryListSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*瀛樿揣鍒嗙被缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('瀛樿揣鍒嗙被缂栧彿涓嶈兘閲嶅锛�')
+      }
+      if ([...new Set(this.tableData[1].map(i => i['*瀛樿揣缂栧彿(鍞竴)']))].length !== this.tableData[1].length) {
+        return this.$message.info('瀛樿揣缂栧彿涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*瀛樿揣鍒嗙被缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*瀛樿揣鍒嗙被缂栧彿(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*瀛樿揣鍒嗙被鍚嶇О']) {
+          flag = false
+          msg = '*瀛樿揣鍒嗙被涓嶈兘涓虹┖锛�'
+        }
+        if (j['*瀛樿揣鍒嗙被缂栧彿(鍞竴)'] === j['涓婄骇缂栫爜']) {
+          flag = false
+          msg = '*瀛樿揣鍒嗙被缂栧彿(鍞竴)涓庝笂绾х紪鐮佷笉鑳界浉鍚岋紒'
+        }
+      })
+      this.tableData[1].forEach(j => {
+        if (!j['*瀛樿揣缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*瀛樿揣缂栧彿(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*瀛樿揣鍚嶇О']) {
+          flag = false
+          msg = '*瀛樿揣鍚嶇О涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*瀛樿揣鍒嗙被缂栫爜']) {
+          flag = false
+          msg = '*瀛樿揣鍒嗙被缂栫爜涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*鐘舵��']) {
+          flag = false
+          msg = '*鐘舵�佷笉鑳戒负绌猴紒'
+        }
+        if (!j['*璁¢噺鏂瑰紡']) {
+          flag = false
+          msg = '*璁¢噺鏂瑰紡涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*璁¢噺鍗曚綅/缁勫悕绉�']) {
+          flag = false
+          msg = '*璁¢噺鍗曚綅/缁勫悕绉颁笉鑳戒负绌猴紒'
+        }
+        if (!(j['鏄惁澶栬喘'] === '1' || j['鏄惁閿�鍞�'] === '1' || j['鏄惁鑷埗'] === '1' || j['鏄惁鐢熶骇娑堣��'] === '1' || j['鏄惁濮斿'] === '1')) {
+          flag = false
+          msg = '瀛樿揣灞炴�у繀椤昏閫夋嫨鍏朵竴锛�'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+      this.tableData[1].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊璁惧娓呭崟鎻愪氦鏁版嵁
+    handleDeviceListSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*璁惧绫诲瀷缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('璁惧绫诲瀷缂栧彿涓嶈兘閲嶅锛�')
+      }
+      if ([...new Set(this.tableData[1].map(i => i['*璁惧缂栧彿(鍞竴)']))].length !== this.tableData[1].length) {
+        return this.$message.info('璁惧缂栧彿涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*璁惧绫诲瀷缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*璁惧绫诲瀷缂栧彿(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*璁惧绫诲瀷鍚嶇О']) {
+          flag = false
+          msg = '*璁惧绫诲瀷鍚嶇О涓嶈兘涓虹┖锛�'
+        }
+      })
+      this.tableData[1].forEach(j => {
+        if (!j['*璁惧缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*璁惧缂栧彿(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*璁惧鍚嶇О']) {
+          flag = false
+          msg = '*璁惧鍚嶇О涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*鎵�灞炵粍缁囩紪鐮�']) {
+          flag = false
+          msg = '*鎵�灞炵粍缁囩紪鐮佷笉鑳戒负绌猴紒'
+        }
+        if (!j['*璁惧绫诲瀷缂栫爜']) {
+          flag = false
+          msg = '*璁惧绫诲瀷缂栫爜涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*鐘舵��']) {
+          flag = false
+          msg = '*鐘舵�佷笉鑳戒负绌猴紒'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg }
+      }
+
+      this.tableData[1].forEach(j => {
+        j['*鎵�灞炵粍缁囩紪鐮�'] = j['*鎵�灞炵粍缁囩紪鐮�'][j['*鎵�灞炵粍缁囩紪鐮�'].length - 1]
+      })
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+      this.tableData[1].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊宸ュ簭璁剧疆鎻愪氦鏁版嵁
+    handleProcessListSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*宸ュ簭缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('缂栫爜涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*宸ュ簭缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*宸ュ簭缂栧彿(鍞竴)'
+        }
+        if (!j['*宸ュ簭鍚嶇О']) {
+          flag = false
+          msg = '*宸ュ簭鍚嶇О'
+        }
+        if (!j['*宸ュ簭绫诲瀷']) {
+          flag = false
+          msg = '*宸ュ簭绫诲瀷'
+        }
+        if (!j['*鐘舵��']) {
+          flag = false
+          msg = '*鐘舵��'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg + '涓嶈兘涓虹┖锛�' }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊缂洪櫡瀹氫箟鎻愪氦鏁版嵁
+    handleDefectDefineSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*缂洪櫡缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('缂栫爜涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*缂洪櫡缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*缂洪櫡缂栧彿(鍞竴)'
+        }
+        if (!j['*缂洪櫡鍚嶇О']) {
+          flag = false
+          msg = '*缂洪櫡鍚嶇О'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg + '涓嶈兘涓虹┖锛�' }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊妯″叿娓呭崟鎻愪氦鏁版嵁
+    handleMouldListSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*妯″叿缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('妯″叿娓呭崟缂栧彿涓嶈兘閲嶅锛�')
+      }
+      // if ([...new Set(this.tableData[1].map(i => i['*寰�鏉ュ崟浣嶇紪鍙�(鍞竴)']))].length !== this.tableData[1].length) {
+      //   return this.$message.info('寰�鏉ュ崟浣嶇紪鍙蜂笉鑳介噸澶嶏紒')
+      // }
+      this.tableData[0].forEach(j => {
+        if (!j['*妯″叿缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*妯″叿缂栧彿(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*妯″叿鍚嶇О']) {
+          flag = false
+          msg = '*妯″叿鍚嶇О涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*鐘舵��']) {
+          flag = false
+          msg = '*鐘舵�佷笉鑳戒负绌猴紒'
+        }
+        if (!j['*浠撳簱缂栫爜']) {
+          flag = false
+          msg = '*浠撳簱缂栫爜涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*搴撲綅缂栫爜']) {
+          flag = false
+          msg = '*搴撲綅缂栫爜涓嶈兘涓虹┖锛�'
+        }
+      })
+      this.tableData[1].forEach(j => {
+        if (!j['妯″叿缂栫爜'] && j['浜у搧缂栫爜']) {
+          flag = false
+          msg = '妯″叿缂栫爜涓嶈兘涓虹┖锛�'
+        }
+        if (j['妯″叿缂栫爜'] && !j['浜у搧缂栫爜']) {
+          flag = false
+          msg = '浜у搧缂栫爜涓嶈兘涓虹┖锛�'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+      this.tableData[1].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊妯″叿鐐规椤圭洰鎻愪氦鏁版嵁
+    handleMouldCheckPosSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*鐐规椤圭洰缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('缂栫爜涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*鐐规椤圭洰缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*鐐规椤圭洰缂栧彿(鍞竴)'
+        }
+        if (!j['*鐐规椤圭洰鍚嶇О']) {
+          flag = false
+          msg = '*鐐规椤圭洰鍚嶇О'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg + '涓嶈兘涓虹┖锛�' }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊妯″叿鐐规鏍囧噯鎻愪氦鏁版嵁
+    handleMouldCheckStandSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*妯″叿鐐规鏍囧噯缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('鐐规鏍囧噯缂栧彿涓嶈兘閲嶅锛�')
+      }
+      if ([...new Set(this.tableData[1].map(i => i['*妯″叿鐐规鏍囧噯缂栧彿']))].length !== this.tableData[1].length) {
+        return this.$message.info('妯″叿鐐规鏍囧噯缂栧彿涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*妯″叿鐐规鏍囧噯缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*妯″叿鐐规鏍囧噯缂栧彿(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*妯″叿鐐规鏍囧噯鍚嶇О']) {
+          flag = false
+          msg = '*妯″叿鐐规鏍囧噯涓嶈兘涓虹┖锛�'
+        }
+      })
+      this.tableData[1].forEach(j => {
+        if (!j['*妯″叿鐐规鏍囧噯缂栧彿']) {
+          flag = false
+          msg = '*妯″叿鐐规鏍囧噯缂栧彿涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*鐐规椤瑰簭鍙�']) {
+          flag = false
+          msg = '*鐐规椤瑰簭鍙蜂笉鑳戒负绌猴紒'
+        }
+        if (!j['*妯″叿鐐规椤圭紪鍙�(鍞竴)']) {
+          flag = false
+          msg = '*妯″叿鐐规椤圭紪鍙�(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*妯″叿鐐规椤瑰悕绉�']) {
+          flag = false
+          msg = '*妯″叿鐐规椤瑰悕绉颁笉鑳戒负绌猴紒'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+      this.tableData[1].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊妯″叿淇濆吇椤圭洰鎻愪氦鏁版嵁
+    handleMouldMaintainSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*淇濆吇椤圭洰缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('缂栫爜涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*淇濆吇椤圭洰缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*淇濆吇椤圭洰缂栧彿(鍞竴)'
+        }
+        if (!j['*淇濆吇椤圭洰鍚嶇О']) {
+          flag = false
+          msg = '*淇濆吇椤圭洰鍚嶇О'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg + '涓嶈兘涓虹┖锛�' }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊妯″叿淇濆吇鏍囧噯鎻愪氦鏁版嵁
+    handleMouldMaintainStandSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*妯″叿淇濆吇鏍囧噯缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('淇濆吇鏍囧噯缂栧彿涓嶈兘閲嶅锛�')
+      }
+      if ([...new Set(this.tableData[1].map(i => i['*妯″叿淇濆吇鏍囧噯缂栧彿']))].length !== this.tableData[1].length) {
+        return this.$message.info('妯″叿淇濆吇鏍囧噯缂栧彿涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*妯″叿淇濆吇鏍囧噯缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*妯″叿淇濆吇鏍囧噯缂栧彿(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*妯″叿淇濆吇鏍囧噯鍚嶇О']) {
+          flag = false
+          msg = '*妯″叿淇濆吇鏍囧噯涓嶈兘涓虹┖锛�'
+        }
+      })
+      this.tableData[1].forEach(j => {
+        if (!j['*妯″叿淇濆吇鏍囧噯缂栧彿']) {
+          flag = false
+          msg = '*妯″叿淇濆吇鏍囧噯缂栧彿涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*淇濆吇椤瑰簭鍙�']) {
+          flag = false
+          msg = '*淇濆吇椤瑰簭鍙蜂笉鑳戒负绌猴紒'
+        }
+        if (!j['*妯″叿淇濆吇椤圭紪鍙�(鍞竴)']) {
+          flag = false
+          msg = '*妯″叿淇濆吇椤圭紪鍙�(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*妯″叿淇濆吇椤瑰悕绉�']) {
+          flag = false
+          msg = '*妯″叿淇濆吇椤瑰悕绉颁笉鑳戒负绌猴紒'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+      this.tableData[1].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊璁惧鐐规椤圭洰鎻愪氦鏁版嵁
+    handleCheckPositionSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*鐐规椤圭洰缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('缂栫爜涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*鐐规椤圭洰缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*鐐规椤圭洰缂栧彿(鍞竴)'
+        }
+        if (!j['*鐐规椤圭洰鍚嶇О']) {
+          flag = false
+          msg = '*鐐规椤圭洰鍚嶇О'
+        }
+        if (!j['*鐐规鍛ㄦ湡']) {
+          flag = false
+          msg = '*鐐规鍛ㄦ湡'
+        }
+        if (!j['*鏄惁鎵爜']) {
+          flag = false
+          msg = '*鏄惁鎵爜'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg + '涓嶈兘涓虹┖锛�' }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊璁惧鐐规鏍囧噯鎻愪氦鏁版嵁
+    handleCheckStandardSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*璁惧鐐规鏍囧噯缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('璁惧鐐规鏍囧噯缂栧彿涓嶈兘閲嶅锛�')
+      }
+      // if ([...new Set(this.tableData[1].map(i => i['*妯″叿淇濆吇鏍囧噯缂栧彿']))].length !== this.tableData[1].length) {
+      //   return this.$message.info('妯″叿淇濆吇鏍囧噯缂栧彿涓嶈兘閲嶅锛�')
+      // }
+      this.tableData[0].forEach(j => {
+        if (!j['*璁惧鐐规鏍囧噯缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*璁惧鐐规鏍囧噯缂栧彿(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*璁惧鐐规鏍囧噯鍚嶇О']) {
+          flag = false
+          msg = '*璁惧鐐规鏍囧噯鍚嶇О涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*鐐规绠℃帶']) {
+          flag = false
+          msg = '*鐐规绠℃帶涓嶈兘涓虹┖锛�'
+        }
+      })
+      this.tableData[1].forEach(j => {
+        if (!j['*鐐规椤瑰簭鍙�']) {
+          flag = false
+          msg = '*鐐规椤瑰簭鍙蜂笉鑳戒负绌猴紒'
+        }
+
+        if (!j['*璁惧鐐规鏍囧噯缂栧彿(M)']) {
+          flag = false
+          msg = '*璁惧鐐规鏍囧噯缂栧彿(M)涓嶈兘涓虹┖锛�'
+        }
+
+        if (!j['*璁惧鐐规閮ㄤ綅缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*璁惧鐐规閮ㄤ綅缂栧彿(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*璁惧鐐规閮ㄤ綅鍚嶇О']) {
+          flag = false
+          msg = '*璁惧鐐规閮ㄤ綅鍚嶇О涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*閫夋嫨鎵爜']) {
+          flag = false
+          msg = '*閫夋嫨鎵爜涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*鐐规鍛ㄦ湡']) {
+          flag = false
+          msg = '*鐐规鍛ㄦ湡涓嶈兘涓虹┖锛�'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+      this.tableData[1].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊璁惧淇濆吇椤圭洰鎻愪氦鏁版嵁
+    handleMaintainPositionSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*淇濆吇椤圭洰缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('缂栫爜涓嶈兘閲嶅锛�')
+      }
+      this.tableData[0].forEach(j => {
+        if (!j['*淇濆吇椤圭洰缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*淇濆吇椤圭洰缂栧彿(鍞竴)'
+        }
+        if (!j['*淇濆吇椤圭洰鍚嶇О']) {
+          flag = false
+          msg = '*淇濆吇椤圭洰鍚嶇О'
+        }
+        if (!j['*鏄惁鎵爜']) {
+          flag = false
+          msg = '*鏄惁鎵爜'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg + '涓嶈兘涓虹┖锛�' }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+    // 澶勭悊璁惧淇濆吇鏍囧噯鎻愪氦鏁版嵁
+    handleMaintainStandardSubmitData() {
+      let flag = true
+      let msg = ''
+      if ([...new Set(this.tableData[0].map(i => i['*璁惧淇濆吇鏍囧噯缂栧彿(鍞竴)']))].length !== this.tableData[0].length) {
+        return this.$message.info('璁惧淇濆吇鏍囧噯缂栧彿涓嶈兘閲嶅锛�')
+      }
+      // if ([...new Set(this.tableData[1].map(i => i['*妯″叿淇濆吇鏍囧噯缂栧彿']))].length !== this.tableData[1].length) {
+      //   return this.$message.info('妯″叿淇濆吇鏍囧噯缂栧彿涓嶈兘閲嶅锛�')
+      // }
+      this.tableData[0].forEach(j => {
+        if (!j['*璁惧淇濆吇鏍囧噯缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*璁惧淇濆吇鏍囧噯缂栧彿(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*璁惧淇濆吇鏍囧噯鍚嶇О']) {
+          flag = false
+          msg = '*璁惧淇濆吇鏍囧噯鍚嶇О涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*淇濆吇鍛ㄦ湡']) {
+          flag = false
+          msg = '*淇濆吇鍛ㄦ湡涓嶈兘涓虹┖锛�'
+        }
+      })
+      this.tableData[1].forEach(j => {
+        if (!j['*淇濆吇椤瑰簭鍙�']) {
+          flag = false
+          msg = '*鐐规椤瑰簭鍙蜂笉鑳戒负绌猴紒'
+        }
+
+        if (!j['*璁惧淇濆吇鏍囧噯缂栧彿(M)']) {
+          flag = false
+          msg = '*璁惧淇濆吇鏍囧噯缂栧彿(M)涓嶈兘涓虹┖锛�'
+        }
+
+        if (!j['*璁惧淇濆吇閮ㄤ綅缂栧彿(鍞竴)']) {
+          flag = false
+          msg = '*璁惧淇濆吇閮ㄤ綅缂栧彿(鍞竴)涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*璁惧淇濆吇閮ㄤ綅鍚嶇О']) {
+          flag = false
+          msg = '*璁惧淇濆吇閮ㄤ綅鍚嶇О涓嶈兘涓虹┖锛�'
+        }
+        if (!j['*閫夋嫨鎵爜']) {
+          flag = false
+          msg = '*閫夋嫨鎵爜涓嶈兘涓虹┖锛�'
+        }
+      })
+
+      if (!flag) {
+        return { code: '301', message: msg }
+      }
+
+      this.tableData[0].map(item => {
+        delete (item.uuid)
+      })
+      this.tableData[1].map(item => {
+        delete (item.uuid)
+      })
+
+      return { code: '200', message: '鎴愬姛锛�' }
+    },
+
+    // parents:鐢ㄤ簬杩斿洖鐨勬暟缁勶紝childNode:瑕佹煡璇㈢殑鑺傜偣锛宼reeData锛歫son鏍戝舰鏁版嵁
+    findParent(parents, childNode, treeData) {
+      // console.log(parents, childNode, treeData, 2)
+
+      for (let i = 0; i < treeData.length; i++) {
+        // 鐖惰妭鐐规煡璇㈡潯浠�
+        if (treeData[i].torg_code === childNode) {
+          // 濡傛灉鎵惧埌缁撴灉,淇濆瓨褰撳墠鑺傜偣
+          parents.push(treeData[i].torg_code)
+          // 鐢ㄥ綋鍓嶈妭鐐瑰啀鍘诲師鏁版嵁鏌ユ壘褰撳墠鑺傜偣鐨勭埗鑺傜偣
+          this.findParent(parents, treeData[i].parent_id, this.orgOptions)
+          break
+        } else {
+          if (treeData[i].children instanceof Array) {
+            //	娌℃壘鍒帮紝閬嶅巻璇ヨ妭鐐圭殑瀛愯妭鐐�
+            this.findParent(parents, childNode, treeData[i].children)
+          }
+        }
+      }
+      return parents
+    },
+    addRow() {
+      // 浜哄憳绠$悊鏂板琛�
+      if (this.sheetName.indexOf('浜哄憳绠$悊') !== -1) {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*鐢ㄦ埛缂栧彿(鍞竴)': '',
+          '*鐢ㄦ埛濮撳悕': '',
+          '*瀵嗙爜': '',
+          '*鍦ㄨ亴鐘舵��': 'Y',
+          '鎵嬫満鍙�': '',
+          '閭': '',
+          '*鎵�灞炵粍缁囩紪鐮�': '',
+          '鎵�灞炲矖浣嶇紪鐮�': [],
+          '鎵�灞炶鑹茬紪鐮�': [],
+          '鎵�灞炵彮缁勭紪鐮�': []
+        })
+      }
+      //  瑙掕壊绠$悊鏂板琛�
+      if (this.sheetName.indexOf('瑙掕壊绠$悊') !== -1) {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*瑙掕壊缂栧彿(鍞竴)': '',
+          '*瑙掕壊鍚嶇О': '',
+          '*鐘舵��': 'Y',
+          '鎻忚堪': ''
+        })
+      }
+      //  鐝粍绠$悊鏂板琛�
+      if (this.sheetName.indexOf('鐝粍绠$悊') !== -1) {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*鐝粍缂栧彿(鍞竴)': '',
+          '*鐝粍鍚嶇О': '',
+          '*鐘舵��': 'Y',
+          '鎻忚堪': ''
+        })
+      }
+      //  宀椾綅绠$悊鏂板琛�
+      if (this.sheetName.indexOf('宀椾綅绠$悊') !== -1) {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*宀椾綅缂栧彿(鍞竴)': '',
+          '*宀椾綅鍚嶇О': '',
+          '*鐘舵��': 'Y',
+          '鎻忚堪': ''
+        })
+      }
+      // 寰�鏉ュ崟浣�
+      if (this.sheetName.indexOf('寰�鏉ュ崟浣嶇被鍨�') !== -1 && this.activeName === '0') {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*寰�鏉ュ崟浣嶇被鍨嬬紪鍙�(鍞竴)': '',
+          '*寰�鏉ュ崟浣嶇被鍨嬪悕绉�': '',
+          '涓婄骇缂栫爜': ''
+        })
+      }
+      if (this.sheetName.indexOf('寰�鏉ュ崟浣�') !== -1 && this.activeName === '1') {
+        this.tableData[1].unshift({
+          uuid: nanoid(),
+          '*寰�鏉ュ崟浣嶇紪鍙�(鍞竴)': '',
+          '*寰�鏉ュ崟浣嶅悕绉�': '',
+          '*鐘舵��': '0',
+          '*寰�鏉ュ崟浣嶇被鍨嬬紪鐮�': '',
+          '鑱旂郴浜�': '',
+          '鑱旂郴鏂瑰紡': '',
+          '鍦板潃': ''
+        })
+      }
+      //  浠撳簱璁剧疆
+      if (this.sheetName.indexOf('浠撳簱璁剧疆') !== -1) {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*浠撳簱缂栧彿(鍞竴)': '',
+          '*浠撳簱鍚嶇О': '',
+          '*鐘舵��': '0',
+          '*搴撲綅绠$悊': '0',
+          '鎻忚堪': ''
+        })
+      }
+      // 搴撲綅璁剧疆
+      if (this.sheetName.indexOf('搴撲綅璁剧疆') !== -1) {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*搴撲綅缂栧彿(鍞竴)': '',
+          '*搴撲綅鍚嶇О': '',
+          '*鎵�灞炰粨搴撶紪鐮�': '',
+          '涓婄骇搴撲綅缂栫爜': '',
+          '*鐘舵��': '0',
+          '鎻忚堪': ''
+        })
+      }
+      // 瀛樿揣妗f
+      if (this.sheetName.indexOf('瀛樿揣鍒嗙被') !== -1 && this.activeName === '0') {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*瀛樿揣鍒嗙被缂栧彿(鍞竴)': '',
+          '*瀛樿揣鍒嗙被鍚嶇О': '',
+          '涓婄骇缂栫爜': ''
+        })
+      }
+      if (this.sheetName.indexOf('瀛樿揣') !== -1 && this.activeName === '1') {
+        this.tableData[1].unshift({
+          uuid: nanoid(),
+          '*瀛樿揣缂栧彿(鍞竴)': '',
+          '*瀛樿揣鍚嶇О': '',
+          '瑙勬牸鍨嬪彿': '',
+          '*瀛樿揣鍒嗙被缂栫爜': '',
+          '*鐘舵��': '0',
+          '*璁¢噺鏂瑰紡': '',
+          '璁¢噺鍗曚綅/缁勫悕绉�': '',
+          '鎵�灞炰粨搴撶紪鐮�': '',
+          '鏄惁澶栬喘': '0',
+          '鏄惁閿�鍞�': '0',
+          '鏄惁鑷埗': '0',
+          '鏄惁鐢熶骇娑堣��': '0',
+          '鏄惁濮斿': '0'
+        })
+      }
+      // 璁惧娓呭崟
+      if (this.sheetName.indexOf('璁惧绫诲瀷') !== -1 && this.activeName === '0') {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*璁惧绫诲瀷缂栧彿(鍞竴)': '',
+          '*璁惧绫诲瀷鍚嶇О': '',
+          '鎻忚堪': ''
+        })
+      }
+      if (this.sheetName.indexOf('璁惧娓呭崟') !== -1 && this.activeName === '1') {
+        this.tableData[1].unshift({
+          uuid: nanoid(),
+          '*璁惧缂栧彿(鍞竴)': '',
+          '*璁惧鍚嶇О': '',
+          '*鎵�灞炵粍缁囩紪鐮�': '',
+          '璁惧绫诲瀷缂栫爜': '',
+          '*鐘舵��': 'Y'
+        })
+      }
+      //  宸ュ簭璁剧疆
+      if (this.sheetName.indexOf('宸ュ簭璁剧疆') !== -1) {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*宸ュ簭缂栧彿(鍞竴)': '',
+          '*宸ュ簭鍚嶇О': '',
+          '*宸ュ簭绫诲瀷': 'Z',
+          '*鐘舵��': 'Y',
+          '鎻忚堪': ''
+        })
+      }
+      //  缂洪櫡瀹氫箟
+      if (this.sheetName.indexOf('缂洪櫡瀹氫箟') !== -1) {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*缂洪櫡缂栧彿(鍞竴)': '',
+          '*缂洪櫡鍚嶇О': '',
+          '缂洪櫡鎻忚堪': ''
+        })
+      }
+      //  妯″叿娓呭崟
+      if (this.sheetName.indexOf('妯″叿娓呭崟') !== -1 && this.activeName === '0') {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*妯″叿缂栧彿(鍞竴)': '',
+          '*妯″叿鍚嶇О': '',
+          '瑙勬牸鍨嬪彿': '',
+          '*鐘舵��': 'Y',
+          '*浠撳簱缂栫爜': '',
+          '*搴撲綅缂栫爜': '',
+          '棰勮瀵垮懡(娆�)': '',
+          '鍓╀綑瀵垮懡(娆�)': ''
+
+        })
+      }
+      if (this.sheetName.indexOf('妯″叿鍏宠仈浜у搧') !== -1 && this.activeName === '1') {
+        this.tableData[1].unshift({
+          uuid: nanoid(),
+          '妯″叿缂栫爜': '',
+          '浜у搧缂栫爜': ''
+        })
+      }
+
+      //  妯″叿鐐规椤�
+      if (this.sheetName.indexOf('妯″叿鐐规椤圭洰') !== -1) {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*鐐规椤圭洰缂栧彿(鍞竴)': '',
+          '*鐐规椤圭洰鍚嶇О': '',
+          '瑕佹眰鎻忚堪': ''
+        })
+      }
+
+      //  妯″叿鐐规鏍囧噯
+      if (this.sheetName.indexOf('妯″叿鐐规鏍囧噯') !== -1 && this.activeName === '0') {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*妯″叿鐐规鏍囧噯缂栧彿(鍞竴)': '',
+          '*妯″叿鐐规鏍囧噯鍚嶇О': '',
+          '鏍囧噯鎻忚堪': ''
+        })
+      }
+      if (this.sheetName.indexOf('鍏宠仈妯″叿鐐规閮ㄤ綅') !== -1 && this.activeName === '1') {
+        this.tableData[1].unshift({
+          uuid: nanoid(),
+          '*妯″叿鐐规鏍囧噯缂栧彿': '',
+          '*鐐规椤瑰簭鍙�': '',
+          '*妯″叿鐐规椤圭紪鍙�(鍞竴)': '',
+          '*妯″叿鐐规椤瑰悕绉�': '',
+          '鐐规椤硅姹�': ''
+        })
+      }
+
+      //  妯″叿淇濆吇椤�
+      if (this.sheetName.indexOf('妯″叿淇濆吇椤圭洰') !== -1) {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*淇濆吇椤圭洰缂栧彿(鍞竴)': '',
+          '*淇濆吇椤圭洰鍚嶇О': '',
+          '瑕佹眰鎻忚堪': ''
+        })
+      }
+
+      //  妯″叿淇濆吇鏍囧噯
+      if (this.sheetName.indexOf('妯″叿淇濆吇鏍囧噯') !== -1 && this.activeName === '0') {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*妯″叿淇濆吇鏍囧噯缂栧彿(鍞竴)': '',
+          '*妯″叿淇濆吇鏍囧噯鍚嶇О': '',
+          '鏍囧噯鎻忚堪': ''
+        })
+      }
+      if (this.sheetName.indexOf('鍏宠仈妯″叿淇濆吇閮ㄤ綅') !== -1 && this.activeName === '1') {
+        this.tableData[1].unshift({
+          uuid: nanoid(),
+          '*妯″叿淇濆吇鏍囧噯缂栧彿': '',
+          '*淇濆吇椤瑰簭鍙�': '',
+          '*妯″叿淇濆吇椤圭紪鍙�(鍞竴)': '',
+          '*妯″叿淇濆吇椤瑰悕绉�': '',
+          '淇濆吇椤硅姹�': ''
+        })
+      }
+
+      //  璁惧鐐规椤圭洰
+      if (this.sheetName.indexOf('璁惧鐐规椤圭洰') !== -1) {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*鐐规椤圭洰缂栧彿(鍞竴)': '',
+          '*鐐规椤圭洰鍚嶇О': '',
+          '*鐐规鍛ㄦ湡': '',
+          '*鏄惁鎵爜': '',
+          '鐐规椤圭洰瑕佹眰': ''
+        })
+      }
+
+      // 璁惧鐐规鏍囧噯
+      if (this.sheetName.indexOf('璁惧鐐规鏍囧噯') !== -1 && this.activeName === '0') {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*璁惧鐐规鏍囧噯缂栧彿(鍞竴)': '',
+          '*璁惧鐐规鏍囧噯鍚嶇О': '',
+          '*鐐规绠℃帶': '',
+          '鏍囧噯鎻忚堪': ''
+        })
+      }
+      if (this.sheetName.indexOf('璁惧鐐规閮ㄤ綅') !== -1 && this.activeName === '1') {
+        this.tableData[1].unshift({
+          uuid: nanoid(),
+          '*璁惧鐐规鏍囧噯缂栧彿(M)': '',
+          '*鐐规椤瑰簭鍙�': '',
+          '*璁惧鐐规閮ㄤ綅缂栧彿(鍞竴)': '',
+          '*璁惧鐐规閮ㄤ綅鍚嶇О': '',
+          '鐐规閮ㄤ綅瑕佹眰': '',
+          '*閫夋嫨鎵爜': '',
+          '*鐐规鍛ㄦ湡': ''
+        })
+      }
+
+      //  璁惧鐐规椤圭洰
+      if (this.sheetName.indexOf('璁惧淇濆吇椤圭洰') !== -1) {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*淇濆吇椤圭洰缂栧彿(鍞竴)': '',
+          '*淇濆吇椤圭洰鍚嶇О': '',
+          '*鏄惁鎵爜': '',
+          '淇濆吇椤圭洰瑕佹眰': ''
+        })
+      }
+
+      // 璁惧淇濆吇鏍囧噯
+      if (this.sheetName.indexOf('璁惧淇濆吇鏍囧噯') !== -1 && this.activeName === '0') {
+        this.tableData[0].unshift({
+          uuid: nanoid(),
+          '*璁惧淇濆吇鏍囧噯缂栧彿(鍞竴)': '',
+          '*璁惧淇濆吇鏍囧噯鍚嶇О': '',
+          '*淇濆吇鍛ㄦ湡': '',
+          '鏍囧噯鎻忚堪': ''
+        })
+      }
+      if (this.sheetName.indexOf('璁惧淇濆吇閮ㄤ綅') !== -1 && this.activeName === '1') {
+        this.tableData[1].unshift({
+          uuid: nanoid(),
+          '*淇濆吇椤瑰簭鍙�': '',
+          '*璁惧淇濆吇鏍囧噯缂栧彿(M)': '',
+          '*璁惧淇濆吇閮ㄤ綅缂栧彿(鍞竴)': '',
+          '*璁惧淇濆吇閮ㄤ綅鍚嶇О': '',
+          '淇濆吇閮ㄤ綅瑕佹眰': '',
+          '*閫夋嫨鎵爜': ''
+        })
+      }
+
+      //
+    },
+    delRow(row) {
+      // 閽堝鍗晄heet
+      if (this.sheetName.length === 1) {
+        if (this.tableData[0].length > 1) {
+          return this.tableData[0].splice(this.tableData[0].findIndex(i => i.uuid === row.uuid), 1)
+        } else {
+          return this.$message.info('蹇呴』瑕佹湁涓�鏉℃暟鎹紒')
+        }
+      }
+      // 閽堝涓や釜 sheet
+      if (this.sheetName.length === 2) {
+        if (this.activeName === '0') {
+          if (this.tableData[0].length > 1) {
+            return this.tableData[0].splice(this.tableData[0].findIndex(i => i.uuid === row.uuid), 1)
+          } else {
+            return this.$message.info('蹇呴』瑕佹湁涓�鏉℃暟鎹紒')
+          }
+        }
+        if (this.activeName === '1') {
+          if (this.tableData[1].length > 1) {
+            return this.tableData[1].splice(this.tableData[1].findIndex(i => i.uuid === row.uuid), 1)
+          } else {
+            return this.$message.info('蹇呴』瑕佹湁涓�鏉℃暟鎹紒')
+          }
+        }
+      }
+    },
+    reset() {
+      this.tableData = []
+      this.tableHeader = []
+      this.sheetName = []
+      this.excelCode = ''
+    },
+    handleClose() {
+      this.dialogTableData = []
+    },
+    // 鑾峰彇妯℃澘
+    async getExcelModelData() {
+      const { data: res } = await ExcelModelData()
+      this.excelArr = res
+
+      if (window.location.hash.indexOf('?') !== -1) {
+        this.excelCode = window.location.hash.split('?')[1].split('=')[1]
+      }
+    },
+    // 妯℃澘涓嬭浇
+    async getExcel() {
+      const res = await DownLoadExcel({ FileCode: this.excelCode })
+      if (res.code === '200') {
+        window.location.href = res.data
+      }
+    },
+    async getSelectArr() {
+      await this.getPrentOrganization()
+      await this.getPostPermissions()
+      await this.getRolePermissions()
+      await this.getGroupsPermissions()
+    },
+    // 缁勭粐鏋舵瀯绾ц仈閫夋嫨鍣�
+    async getPrentOrganization() {
+      const { data: res } = await PrentOrganization()
+      this.orgArr = res
+      this.orgOptions = arrayToTree(res, {
+        parentProperty: 'parent_id',
+        customID: 'torg_code',
+        childrenProperty: 'children'
+      })
+    },
+    // 鑾峰彇宀椾綅涓嬫媺鏁扮粍
+    async getPostPermissions() {
+      const { data: res } = await PostPermissions()
+      this.postArr = res
+    },
+    // 鑾峰彇瑙掕壊涓嬫媺鏁扮粍
+    async getRolePermissions() {
+      const { data: res } = await RolePermissions()
+      this.roleArr = res
+    },
+    // 鑾峰彇鐝粍涓嬫媺鏁扮粍
+    async getGroupsPermissions() {
+      const { data: res } = await GroupsPermissions()
+      this.groupArr = res
+    },
+    headerCellStyle({ row, column, rowIndex, columnIndex }) {
+      let string = ''
+      if (column.label.indexOf('*') !== -1 && rowIndex === 0) {
+        string = 'background:#ffc000;'
+      } else if (column.label.indexOf('*') === -1 && rowIndex === 0) {
+        string = 'background:#00b0f0;'
+      }
+      // else if (rowIndex === 0 && columnIndex === 0) {
+      //   string = 'background:red;color:#fff'
+      // }
+      return string + 'padding: 5px 0; fontWeight: 500;'
+    },
+    cellStyle() {
+      const option = {
+        padding: '5px 0'
+      }
+      return option
+    },
+    indexRender(h, { column }) {
+      return [
+        h('span', { style: 'color:#FFF' }, column.label)
+      ]
+    },
+    operationRender(h, { column }) {
+      return [
+        h('span', { style: 'color:#FFF' }, column.label)
+      ]
+    },
+    addRedStar(h, { column }) {
+      if (column.label.indexOf('*') !== -1) { // 蹇呭~瀛楁
+        return [
+          h('span', { style: 'color:#F56C6C' }, ' * '),
+          h('span', { style: 'color:#FFF' }, column.label.substring(1))
+        ]
+      } else { // 闈炲繀濉瓧娈�
+        return [
+          // h('span', { style: 'color:#F56C6C' }, ' * '),
+          h('span', { style: 'color:#FFF' }, column.label)
+        ]
+      }
+    },
+    // 鏁版嵁鎻愪氦鍓嶅幓闄ょ┖鏍兼柟娉�
+    tableDataTrim() {
+      if (this.tableData.length === 1) { // 涓�涓猻heet
+        this.tableData[0].forEach(i => {
+          for (const j in i) {
+            i[j] = i[j].trim()
+          }
+        })
+      }
+
+      if (this.tableData.length === 2) { // 涓や釜sheet
+        this.tableData[0].forEach(i => {
+          for (const j in i) {
+            i[j] = i[j].trim()
+          }
+        })
+        this.tableData[1].forEach(i => {
+          for (const j in i) {
+            i[j] = i[j].trim()
+          }
+        })
+      }
+    }
+
+  }
+}
+</script>
+
+<style lang="scss">
+::v-deep .el-dialog__body {
+  padding: 10px 10px !important;
+}
+
+</style>
diff --git a/src/views/systemSetting/encodingRules.vue b/src/views/systemSetting/encodingRules.vue
index 7efcb65..104f823 100644
--- a/src/views/systemSetting/encodingRules.vue
+++ b/src/views/systemSetting/encodingRules.vue
@@ -88,7 +88,7 @@
             sortable="custom"
           />
           <el-table-column
-            prop="type"
+            prop="Type"
             label="鑿滃崟绫诲瀷"
             sortable="custom"
           />
@@ -335,10 +335,11 @@
         customID: 'menucode',
         childrenProperty: 'children'
       })
-      this.menuOptions = this.menuOptionsAll.filter(i => i.type === this.dialogForm.type)
+      // this.menuOptions = this.menuOptionsAll.filter(i => i.Type === this.dialogForm.type)
+
     },
     radioChange() {
-      this.menuOptions = this.menuOptionsAll.filter(i => i.type === this.dialogForm.type)
+      this.menuOptions = this.menuOptionsAll.filter(i => i.Type === this.dialogForm.type)
     },
     async getEncodingRules() {
       const res = await EncodingRules(this.form)
@@ -374,8 +375,10 @@
       this.operation = operation
       this.dialogVisible = true
 
+
       this.$nextTick(() => {
-        this.dialogForm.type = row.type
+        this.dialogForm.type = row.Type
+        this.radioChange()
 
         let parentCode = ''
         this.menuOptions.forEach(item => {
@@ -387,7 +390,7 @@
             })
           }
         })
-
+        console.log(parentCode,row.menucode)
         this.$refs.cascader.checkedValue = [parentCode, row.menucode]
         this.dialogForm.rightcode = row.menucode
         this.dialogForm.incbit = row.incbit
diff --git a/src/views/workOrder/produceOrderList.vue b/src/views/workOrder/produceOrderList.vue
index a734cf0..65c40f0 100644
--- a/src/views/workOrder/produceOrderList.vue
+++ b/src/views/workOrder/produceOrderList.vue
@@ -1,11 +1,1127 @@
-<template />
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <el-button
+          v-waves
+          icon="el-icon-refresh-right"
+          @click="syncERP"
+        >鍚屾ERP
+        </el-button>
+        <div style="display: flex">
+          <el-button
+            v-waves
+            type="primary"
+            icon="el-icon-bottom"
+            @click="batchHandle"
+          >鎵归噺涓嬭揪
+          </el-button>
+        </div>
+
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">
+              <el-select
+                v-model="form.wkshopcode"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in wkshopcodeArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="璁㈠崟鐘舵��" style=" display: flex;">
+              <el-select
+                v-model="form.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 label="璁㈠崟缂栧彿" style=" display: flex;">
+              <el-input v-model="form.erpordercode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+
+            <el-form-item label="閿�鍞鍗�" style=" display: flex;">
+              <el-input v-model="form.saleordercode" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+
+            <el-form-item v-show="isExpandForm" 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="棰勮寮�宸ユ椂闂�"-->
+            <!--              label-width="100px"-->
+            <!--              style="display: flex;font-size: 14px;align-items: center"-->
+            <!--            >-->
+            <!--              <el-date-picker-->
+            <!--                v-model="form.paystartdate"-->
+            <!--                type="daterange"-->
+            <!--                range-separator="~"-->
+            <!--                class="timeMini"-->
+            <!--                size="mini"-->
+            <!--                style="width: 200px;display: flex;line-height: 34px;height: 34px;"-->
+            <!--                :clearable="false"-->
+            <!--                start-placeholder="寮�濮嬫棩鏈�"-->
+            <!--                end-placeholder="缁撴潫鏃ユ湡"-->
+            <!--              />-->
+            <!--            </el-form-item>-->
+            <!--            <el-form-item-->
+            <!--              v-show="isExpandForm"-->
+            <!--              label="棰勮瀹屽伐鏃堕棿"-->
+            <!--              label-width="100px"-->
+            <!--              style=" display: flex;font-size: 14px;align-items: center"-->
+            <!--            >-->
+            <!--              <el-date-picker-->
+            <!--                v-model="form.payenddate"-->
+            <!--                type="daterange"-->
+            <!--                :clearable="false"-->
+            <!--                class="timeMini"-->
+            <!--                range-separator="~"-->
+            <!--                start-placeholder="寮�濮嬫棩鏈�"-->
+            <!--                style="width: 200px;display: flex;line-height: 34px ;height: 34px ;"-->
+            <!--                end-placeholder="缁撴潫鏃ユ湡"-->
+            <!--                size="mini"-->
+            <!--              />-->
+            <!--            </el-form-item>-->
+          </div>
+
+          <div
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+
+        </el-form>
+
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :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"
+          @selection-change="handleSelectionChange"
+        >
+          <!--          @row-click="rowClick"-->
+          <el-table-column
+            type="selection"
+            width="50"
+            :selectable="selected"
+          />
+          <!--          <el-table-column-->
+          <!--            width="50"-->
+          <!--            fixed-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <el-radio-->
+          <!--                v-model="radioSelectedId"-->
+          <!--                :label="row.id"-->
+          <!--                style="color: transparent;padding-left: 10px;"-->
+          <!--              />-->
+          <!--              &lt;!&ndash;              @change.native="getCurrentRow(row.id)"&ndash;&gt;-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <el-table-column
+            prop="rowNum"
+            width="50"
+            fixed
+            label="搴忓彿"
+          />
+          <el-table-column
+            prop="status"
+            label="璁㈠崟鐘舵��"
+            sortable="custom"
+            width="110"
+            show-tooltip-when-overflow
+          >
+            <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="璁㈠崟缂栧彿"
+            show-tooltip-when-overflow
+            sortable="custom"
+            min-width="150"
+          />
+          <el-table-column
+            show-tooltip-when-overflow
+            prop="saleOrderCode"
+            label="閿�鍞鍗�"
+            sortable="custom"
+            width="150"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="150"
+          />
+          <el-table-column
+            prop="partname"
+            label="浜у搧鍚嶇О"
+            sortable="custom"
+            min-width="200"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="partspec"
+            label="浜у搧瑙勬牸"
+            sortable="custom"
+            show-tooltip-when-overflow
+            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"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="relse_qty"
+            label="宸蹭笅鍗曟暟閲�"
+            show-tooltip-when-overflow
+            width="150"
+            sortable="custom"
+          />
+          <el-table-column
+            prop="clerkuser"
+            label="閿�鍞笟鍔″憳"
+            show-tooltip-when-overflow
+            width="150"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.clerkuser">{{ row.clerkuser }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wkshp_name"
+            label="鐢熶骇杞﹂棿"
+            show-tooltip-when-overflow
+            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"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            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="棰勮瀹屽伐鏃堕棿"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            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="saleOrderDeliveryDate"
+            label="棰勮浜や粯鏃ユ湡"
+            sortable="custom"
+            show-tooltip-when-overflow
+            width="130"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.saleOrderDeliveryDate">{{ row.saleOrderDeliveryDate.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            show-tooltip-when-overflow
+            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"
+            show-tooltip-when-overflow
+            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="120"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-tooltip class="item" effect="dark" content="涓嬭揪" placement="top">
+                  <!--                <el-button v-waves type="text" @click="edit('edit',row)">涓嬭揪</el-button>-->
+                  <i
+                    class="el-icon-bottom"
+                    :style="{color:$store.state.settings.theme}"
+                    style="cursor: pointer;margin-left: 5px"
+                    @click="edit('edit',row)"
+                  />
+                </el-tooltip>
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="璁㈠崟鍏抽棴" placement="top">
+                  <i
+                    class="el-icon-switch-button"
+                    :style="{color:$store.state.settings.theme}"
+                    style="cursor: pointer;margin-left: 15px"
+                    @click="orderClose(row.id)"
+                  />
+                </el-tooltip>
+
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="璁㈠崟鍒犻櫎" placement="top">
+                  <i
+                    class="el-icon-delete"
+                    :style="{color:$store.state.settings.theme}"
+                    style="cursor: pointer;margin-left: 15px"
+                    @click="orderDel(row.id)"
+                  />
+                </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,jumper"
+        popper-class="select_bottom"
+        @pagination="getErpOrderSearch"
+      />
+    </div>
+
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'涓嬭揪'"
+      :visible.sync="dialogVisible"
+      width="860px"
+      top="15vh"
+      :close-on-click-modal="false"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <el-form ref="dialogForm" inline :rules="dialogFormRules" :model="dialogForm" label-width="106px">
+        <el-form-item label="璁㈠崟缂栧彿" prop="erpordercode">
+          <el-input v-model="dialogForm.erpordercode" disabled style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="浜у搧缂栫爜" prop="partcode">
+          <el-input v-model="dialogForm.partcode" disabled style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="浜у搧鍚嶇О" prop="partname">
+          <el-input v-model="dialogForm.partname" 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>
+        <el-form-item label="鐢熶骇杞﹂棿" prop="wkshopname">
+          <el-input v-model="dialogForm.wkshopname" disabled style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="鎵�灞炰粨搴�" prop="warehousename">
+          <el-input v-model="dialogForm.warehousename" disabled style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="璁㈠崟鏁伴噺" prop="erpqty">
+          <el-input v-model="dialogForm.erpqty" disabled style="width: 200px" />
+        </el-form-item>
+        <el-form-item label="宸蹭笅鍗曟暟" prop="relse_qty">
+          <el-input
+            v-model="dialogForm.relse_qty"
+            disabled
+            oninput="value=value.replace(/[^0-9.]/g,'')"
+            style="width: 200px"
+          />
+        </el-form-item>
+        <el-form-item label="涓嬪崟鏁伴噺" prop="markqty">
+          <el-input
+            v-model="dialogForm.markqty"
+            oninput="value=value.replace(/[^0-9.]/g,'')"
+            style="width: 200px"
+          />
+        </el-form-item>
+        <el-form-item label="涓嬪崟鍗曟暟" prop="ordernum">
+          <el-input
+            v-model="dialogForm.ordernum"
+            oninput="value=value.replace(/[^0-9.]/g,'')"
+            style="width: 200px"
+          />
+        </el-form-item>
+
+        <el-form-item label="閿�鍞笟鍔″憳" prop="">
+          <el-input
+            v-model="dialogForm.clerkuser"
+            disabled
+            style="width: 200px"
+          />
+        </el-form-item>
+        <el-form-item label="棰勮浜や粯鏃ユ湡" prop="saleOrderDeliveryDate">
+          <el-date-picker
+            v-model="dialogForm.saleOrderDeliveryDate"
+            type="date"
+            size="mini"
+            :clearable="false"
+            class="dateMini"
+            :picker-options="pickerOptions"
+            format="yyyy-MM-dd"
+            placeholder="閫夋嫨鏃ユ湡"
+            :disabled="dialogForm.saleOrderDeliveryDateIsDisabled"
+          />
+        </el-form-item>
+      </el-form>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >涓� 杈�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+  </div>
+</template>
 
 <script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime } from '@/utils/global'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import {
+  ClosedErpOrder,
+  DeleteErpOrder,
+  ErpOrderSearch,
+  MarkBatchSaveErpOrder,
+  MarkSaveErpOrder
+} from '@/api/WorkOrder'
+import { SeaveSearchErpOrder } from '@/api/ErpSyncMes'
+import { PrentOrganizationNoCompany } from '@/api/GeneralBasicData'
+
+const SER_HZ = /^[\u4e00-\u9fa5]+$/
 export default {
-  name: 'ProduceOrderList'
+  name: 'SCDD',
+  components: {
+    Pagination
+  },
+  directives: { elDragDialog, waves },
+  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 {
+      mouseHoverType: 'mouseout',
+      isExpandForm: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      form: {
+        wkshopcode: '', // 杞﹂棿缂栫爜
+        erporderstus: '', // 璁㈠崟鐘舵�佺爜
+        erpordercode: '', // 璁㈠崟缂栧彿
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+        creatuser: '', // 鍒涘缓浜哄憳
+        saleordercode: '', // 閿�鍞鍗�
+        // paystartdate: '', // 浜や粯鏃堕棿
+        paystartdate: '', // 棰勮寮�宸ユ椂闂�
+        payenddate: '', // 棰勮瀹屽伐鏃堕棿
+        createdate: '', // 鍒涘缓鏃堕棿
+        prop: 'wo', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      erporderstusArr: [
+        { code: 'NEW', name: '鏂拌鍗�' },
+        { code: 'CREATING', name: '閮ㄥ垎涓嬭揪' },
+        { code: 'CREATED', name: '鍏ㄩ儴涓嬭揪' },
+        { code: 'CLOSED', name: '宸插叧闂�' }
+      ],
+      wkshopcodeArr: [],
+      total: 10,
+      radioSelectedId: '',
+      tableData: [],
+      dialogVisible: false,
+      dialogForm: {
+        erporderid: '', // 璁㈠崟id
+        sbid: '', // 璁㈠崟鏄庣粏id
+        erpordercode: '', // 璁㈠崟缂栧彿
+        saleordercode: '', // 閿�鍞鍗�
+
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+
+        wkshopcode: '', // 杞﹂棿缂栫爜
+        wkshopname: '', // 杞﹂棿鍚嶇О
+
+        warehousecode: '', // 浠撳簱缂栫爜
+        warehousename: '', // 浠撳簱鍚嶇О
+
+        erpqty: '', // 璁㈠崟鏁伴噺
+        markqty: '', // 涓嬪崟鏁伴噺
+        ordernum: '', // 涓嬪崟鍗曟暟
+        relse_qty: '', // 宸蹭笅鍗曟暟閲�
+
+        clerkuser: '', // 閿�鍞笟鍔″憳
+
+        saleOrderDeliveryDate: '' // 棰勮浜や粯鏃ユ湡
+      },
+      operation: '',
+      dialogFormRules: {
+        // OrgType: [
+        //   { required: true, message: '璇疯緭鍏ラ�夋嫨绫诲瀷', trigger: ['blur', 'change'] }
+        // ],
+        // OrgCode: [
+        //   { required: true, validator: validateName, trigger: ['blur', 'change'] }
+        // ],
+        markqty: [
+          { required: true, message: '璇疯緭鍏ヤ笅鍗曟暟閲�', trigger: ['blur', 'change'] }
+        ],
+        ordernum: [
+          { required: true, message: '璇疯緭鍏ヤ笅鍗曞崟鏁�', trigger: ['blur', 'change'] }
+        ],
+        saleOrderDeliveryDate: [
+          { required: true, message: '璇烽�夋嫨棰勮浜や粯鏃ユ湡', trigger: ['blur', 'change'] }
+        ]
+
+      },
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now() - 8.64e7
+        }
+      },
+      multipleSelection: []
+
+      // expireTimeOption: {
+      //   disabledDate(time) {
+      //     return time.getTime() > Date.now() - 8.64e6 // 濡傛灉娌℃湁鍚庨潰鐨�-8.64e6灏辨槸涓嶅彲浠ラ�夋嫨浠婂ぉ鐨�
+      //   }
+      // }
+
+    }
+  },
+  created() {
+    this.getErpOrderSearch()
+    // this.getPartSelect()// 鑾峰彇浜у搧缂栫爜淇℃伅
+
+    this.getPrentOrganizationNoCompany()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+  },
+  methods: {
+    async getPrentOrganizationNoCompany() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopcodeArr = res
+    },
+    async getErpOrderSearch() {
+      console.log(this.form, 1)
+      let tempDate2 = this.form.paystartdate
+      if (tempDate2.length > 0) {
+        tempDate2 = handleDatetime(tempDate2[0]) + '~' + handleDatetime(tempDate2[1])
+      }
+
+      let tempDate = this.form.payenddate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        erporderstus: this.form.erporderstus, // 璁㈠崟鐘舵�佺爜
+        erpordercode: this.form.erpordercode, // 璁㈠崟缂栧彿
+        partcode: this.form.partcode, // 浜у搧缂栫爜
+        partname: this.form.partname, // 浜у搧鍚嶇О
+        partspec: this.form.partspec, // 浜у搧瑙勬牸
+        paystartdate: tempDate2, // 浜や粯鏃堕棿
+        payenddate: tempDate, // 浜や粯鏃堕棿
+        saleordercode: this.form.saleordercode,
+        creatuser: this.form.creatuser, // 鍒涘缓浜哄憳
+        // 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 ErpOrderSearch(data)
+      this.tableData = res.data
+      this.total = res.count
+    },
+    // 鎺掑簭鏀瑰彉鏃�
+    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.getErpOrderSearch()
+    },
+    // 鍚屾ERP
+    syncERP() {
+      const loading = this.$loading({
+        lock: true,
+        text: '姝e湪鍚屾ERP锛岃绋嶇瓑...',
+        spinner: 'el-icon-loading',
+        customClass: 'osloading',
+        background: 'rgba(0, 0, 0, 0.7)'
+      })
+
+      SeaveSearchErpOrder().then(res => {
+        console.log(res, 11)
+        if (res.code === '200') {
+          setTimeout(() => {
+            this.getErpOrderSearch()
+            loading.close()
+            this.$message.success('鍚屾鎴愬姛锛�')
+          }, 2000)
+        }
+        // else if (res.code === '300') {
+        //   setTimeout(() => {
+        //     loading.close()
+        //     this.$message.error('鍚屾澶辫触锛�')
+        //   }, 10000)
+        // }
+      }).catch(e => {
+        loading.close()
+      })
+    },
+    // 鏌ヨ
+    search() {
+      this.getErpOrderSearch()
+    },
+    // 閲嶇疆
+    reset() {
+      this.form.wkshopcode = ''
+      this.form.erporderstus = ''
+      this.form.erpordercode = ''
+      this.form.partcode = ''
+      this.form.partname = ''
+      this.form.partspec = ''
+      this.form.paystartdate = ''
+      this.form.payenddate = ''
+      this.form.creatuser = ''
+      this.form.erpordercode = ''
+      this.form.createdate = ''
+      this.getErpOrderSearch()
+    },
+    // 鍗曢�夋閫変腑鑾峰彇褰撳墠琛屼俊鎭�
+    // getCurrentRow(id) {
+    //   this.radioSelectedId = id
+    // },
+    // rowClick(row) {
+    //   this.radioSelectedId = row.id
+    // },
+
+    // 璁㈠崟鍒犻櫎
+    orderDel(id) {
+      this.tableData.forEach(item => {
+        if (item.id === id) {
+          if (item.status === 'CLOSED') {
+            return this.$message.info('姝よ鍗曞凡鍏抽棴锛屾棤娉曞垹闄わ紒')
+          } else {
+            this.$confirm('鏄惁纭鍏抽棴璁㈠崟?', '鎻愮ず', {
+              confirmButtonText: '纭畾',
+              cancelButtonText: '鍙栨秷',
+              type: 'warning'
+            }).then(() => {
+              DeleteErpOrder({ erpordercode: item.wo, erporderid: id }).then(res => {
+                if (res.code === '200') {
+                  this.$message.success('璁㈠崟鍒犻櫎鎴愬姛!')
+                  this.getErpOrderSearch()
+                }
+              })
+            }).catch(() => {
+              this.$message.info('宸插彇娑堝垹闄わ紒')
+            })
+          }
+        }
+      })
+    },
+    // 璁㈠崟鍏抽棴
+    async orderClose(id) {
+      this.tableData.forEach(item => {
+        if (item.id === id) {
+          if (item.status !== 'NEW') {
+            return this.$message.info('姝よ鍗曢潪鏂拌鍗曪紝鏃犳硶鍏抽棴锛�')
+          } else {
+            this.$confirm('鏄惁纭鍏抽棴璁㈠崟?', '鎻愮ず', {
+              confirmButtonText: '纭畾',
+              cancelButtonText: '鍙栨秷',
+              type: 'warning'
+            }).then(() => {
+              ClosedErpOrder({ erpordercode: item.wo, erporderid: id }).then(res => {
+                if (res.code === '200') {
+                  this.$message.success('璁㈠崟鍏抽棴鎴愬姛!')
+                  this.getErpOrderSearch()
+                }
+              })
+            }).catch(() => {
+              this.$message.info('宸插彇娑堝叧闂紒')
+            })
+          }
+        }
+      })
+    },
+    batchHandle() {
+      this.$confirm('鏄惁鎵归噺涓嬭揪?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        if (this.multipleSelection.length === 0) {
+          return this.$message.info('璇峰厛閫夋嫨璁㈠崟锛�')
+        }
+        // console.log(JSON.parse(JSON.stringify(this.multipleSelection)))
+        const data = []
+        this.multipleSelection.forEach(i => {
+          data.push({
+            'erporderid': i.id,
+            'sbid': i.sbid,
+            'erpordercode': i.wo,
+            'partcode': i.partcode,
+            'wkshopcode': i.wkshp_code,
+            'warehousecode': i.stck_code,
+            'erpqty': i.qty,
+            'markqty': i.qty,
+            'ordernum': 1,
+            'clerkuser': i.clerkuser,
+            'relse_qty': i.qty,
+            'saleordercode': i.saleOrderCode,
+            // 'saleOrderDeliveryDate': i.saleOrderDeliveryDate
+            'saleOrderDeliveryDate': handleDatetime(new Date()) + ' 00:00:00'
+          })
+        })
+        // console.log(JSON.parse(JSON.stringify(data)))
+        MarkBatchSaveErpOrder(data).then(res => {
+          if (res.code === '200') {
+            this.multipleSelection = []
+            this.$message.success('鎵归噺涓嬭揪鎴愬姛锛�')
+            this.getErpOrderSearch()
+          } else {
+            this.$message.error('鎵归噺涓嬭揪澶辫触锛�')
+          }
+        })
+      }).catch(() => {
+        this.$message.info('宸插彇娑堜笅杈撅紒')
+      })
+    },
+    selected(row, index) {
+      return row.status === 'NEW'
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val
+    },
+    // 鏂板鎸夐挳
+    add(operation) {
+      this.operation = operation
+      this.dialogVisible = true
+    },
+    // 淇敼鎸夐挳
+    edit(operation, row) {
+      if (parseFloat(row.qty) === parseFloat(row.relse_qty) || row.status === 'CLOSED') {
+        return this.$message.info('姝ゅ伐鍗曞凡鍏ㄩ儴涓嬭揪锛�')
+      }
+
+      this.operation = operation
+      this.dialogVisible = true
+
+      this.$nextTick(() => {
+        this.dialogForm.sbid = row.sbid
+        this.dialogForm.erporderid = row.id
+        this.dialogForm.erpordercode = row.wo
+        this.dialogForm.saleordercode = row.saleOrderCode
+
+        this.dialogForm.partcode = row.partcode
+        this.dialogForm.partname = row.partname
+        this.dialogForm.partspec = row.partspec
+
+        this.dialogForm.wkshopcode = row.wkshp_code
+        this.dialogForm.wkshopname = row.wkshp_name
+
+        this.dialogForm.warehousecode = row.stck_code
+        this.dialogForm.warehousename = row.stck_name
+
+        this.dialogForm.saleOrderDeliveryDate = row.saleOrderDeliveryDate
+
+        this.dialogForm.erpqty = row.qty
+        this.dialogForm.markqty = parseFloat(row.qty) - parseFloat(row.relse_qty)
+        this.dialogForm.ordernum = 1
+        this.dialogForm.relse_qty = row.relse_qty
+        this.dialogForm.clerkuser = row.clerkuser
+      })
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm = {
+        erporderid: '', // 璁㈠崟id
+        sbid: '', // 璁㈠崟鏄庣粏id
+        erpordercode: '', // 璁㈠崟缂栧彿
+        saleordercode: '', // 閿�鍞鍗�
+
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+
+        wkshopcode: '', // 杞﹂棿缂栫爜
+        wkshopname: '', // 杞﹂棿鍚嶇О
+
+        warehousecode: '', // 浠撳簱缂栫爜
+        warehousename: '', // 浠撳簱鍚嶇О
+
+        erpqty: '', // 璁㈠崟鏁伴噺
+        markqty: '', // 涓嬪崟鏁伴噺
+        ordernum: '', // 涓嬪崟鍗曟暟
+        relse_qty: '', // 宸蹭笅鍗曟暟閲�
+
+        saleOrderDeliveryDate: '' // 棰勮浜や粯鏃ユ湡
+      }
+      this.$refs.dialogForm.clearValidate()
+    },
+    // 瀵硅瘽妗嗗彇娑�
+    dialogVisibleCancel() {
+      this.dialogVisible = false
+    },
+    // 瀵硅瘽妗嗙‘璁�
+    dialogVisibleConfirm() {
+      this.dialogForm.markqty = parseFloat(this.dialogForm.markqty)
+      this.dialogForm.erpqty = parseFloat(this.dialogForm.erpqty)
+      this.dialogForm.relse_qty = parseFloat(this.dialogForm.relse_qty)
+      this.dialogForm.ordernum = parseFloat(this.dialogForm.ordernum)
+      if (this.dialogForm.markqty < 1 || this.dialogForm.markqty > this.dialogForm.erpqty - this.dialogForm.relse_qty) {
+        return this.$message.info('涓嬪崟鏁伴噺瓒呭嚭鍙笅鍗曟暟鐨勮寖鍥达紒')
+      }
+
+      if (this.dialogForm.ordernum < 1 || this.dialogForm.ordernum > this.dialogForm.markqty) {
+        return this.$message.info('涓嬪崟鍗曟暟瓒呭嚭鍙笅鍗曞崟鏁扮殑鑼冨洿锛�')
+      }
+
+      this.$refs.dialogForm.validate(valid => {
+        if (valid) {
+          this.$store.state.app.buttonIsDisabled = true
+          const data = {
+            'sbid': this.dialogForm.sbid,
+            'erporderid': this.dialogForm.erporderid,
+            'erpordercode': this.dialogForm.erpordercode,
+            'saleordercode': this.dialogForm.saleordercode,
+            'partcode': this.dialogForm.partcode,
+            'wkshopcode': this.dialogForm.wkshopcode,
+            'warehousecode': this.dialogForm.warehousecode,
+            'clerkuser': this.dialogForm.clerkuser,
+            'erpqty': this.dialogForm.erpqty,
+            'markqty': this.dialogForm.markqty,
+            'ordernum': this.dialogForm.ordernum,
+            'relse_qty': this.dialogForm.relse_qty,
+            'saleOrderDeliveryDate': handleDatetime(this.dialogForm.saleOrderDeliveryDate) + ' 00:00:00'
+          }
+
+          MarkSaveErpOrder(data).then(res => {
+            if (res.code === '200') {
+              this.dialogVisible = false
+              this.$message.success('涓嬭揪鎴愬姛锛�')
+              this.getErpOrderSearch()
+              this.$store.state.app.buttonIsDisabled = false
+            } else {
+              this.$message.error('涓嬭揪澶辫触锛�')
+            }
+          })
+        }
+      })
+    },
+    // 鑾峰彇椤甸潰楂樺害
+    getHeight() {
+      this.$nextTick(() => {
+        this.mainHeight = window.innerHeight - 85
+        this.tableHeight = this.mainHeight - 250
+
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    }
+  }
 }
 </script>
 
-<style scoped>
+<!--鍏叡椤甸潰鏍峰紡-->
+<style lang="scss" scoped>
+$main_color: #42b983;
 
+::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;
+}
+
+.elTableDiv {
+  ::v-deep .el-radio__label {
+    display: none;
+  }
+}
+
+.tableFixed {
+  ::v-deep .el-table__fixed-right {
+    height: 100% !important;
+  }
+
+  ::v-deep .el-table__fixed {
+    height: 100% !important;
+  }
+}
+
+.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-icon-delete  {
+  cursor: pointer;
+  margin-right: 0px !important;
+}
 </style>
+<style>
+.el-table .custom-row {
+  background: #f8f8fa;
+}
+
+.osloading {
+  font-size: 26px !important;
+}
+
+.el-loading-text {
+  font-size: 26px !important;
+}
+</style>
+
diff --git a/src/views/workOrder/workOrderClose.vue b/src/views/workOrder/workOrderClose.vue
index 753842b..4435910 100644
--- a/src/views/workOrder/workOrderClose.vue
+++ b/src/views/workOrder/workOrderClose.vue
@@ -1,11 +1,3443 @@
-<template />
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+
+      <div class="bodyTopButtonGroup">
+        <el-button v-waves icon="el-icon-switch-button" type="success" @click="orderClose()">宸ュ崟鍏抽棴</el-button>
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">
+              <el-select
+                v-model="form.wkshopcode"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in wkshopcodeArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <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 v-show="isExpandForm" label="閿�鍞鍗�" style="display: flex;">
+              <el-input v-model="form.saleordercode" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" 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 v-show="isExpandForm" 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
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :data="tableData"
+          :height="isExpandForm?tableHeight:(tableHeight+80)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px'}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+          @row-click="rowClick"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column
+            type="selection"
+            width="50"
+            :selectable="selected"
+          />
+          <el-table-column
+            prop="rowNum"
+            width="50"
+            label="搴忓彿"
+            fixed
+          />
+          <el-table-column
+            prop="status"
+            label="宸ュ崟鐘舵��"
+            sortable="custom"
+            width="110"
+            show-tooltip-when-overflow
+          >
+            <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>
+              <div v-if="row.status==='NOCLOSED'">鏈叧闂�</div>
+              <div v-if="row.status==='NOSCHED'">寰呮帓绋�</div>
+              <div v-if="row.status==='SCHED'">宸叉帓绋�</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wo_code"
+            label="宸ュ崟缂栧彿"
+            show-tooltip-when-overflow
+            sortable="custom"
+            min-width="160"
+          />
+          <el-table-column
+            prop="m_po"
+            label="婧愬崟鍗曞彿"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="160"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.m_po">{{ row.m_po }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="saleOrderCode"
+            label="閿�鍞鍗�"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="160"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wotype"
+            label="鍗曟嵁绫诲瀷"
+            sortable="custom"
+            show-tooltip-when-overflow
+            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="浜у搧缂栫爜"
+            show-tooltip-when-overflow
+            sortable="custom"
+            min-width="120"
+          />
+          <el-table-column
+            prop="partname"
+            min-width="150"
+            label="浜у搧鍚嶇О"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partspec"
+            label="浜у搧瑙勬牸"
+            sortable="custom"
+            width="110"
+            show-tooltip-when-overflow
+          >
+            <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"
+            show-tooltip-when-overflow
+            width="100"
+          />
+          <el-table-column
+            prop="wkshp_name"
+            label="鐢熶骇杞﹂棿"
+            show-tooltip-when-overflow
+            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="saleOrderDeliveryDate"
+            label="棰勮浜や粯鏃ユ湡"
+            sortable="custom"
+            width="130"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.saleOrderDeliveryDate">{{ row.saleOrderDeliveryDate.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            prop="data_sources"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            label="鏁版嵁鏉ユ簮"-->
+          <!--            sortable="custom"-->
+          <!--            width="120"-->
+          <!--          />-->
+
+          <el-table-column
+            prop="lm_user"
+            show-tooltip-when-overflow
+            label="鍒涘缓浜哄憳"
+            sortable="custom"
+            width="120"
+          />
+          <el-table-column
+            prop="lm_date"
+            label="鍒涘缓鏃堕棿"
+            show-tooltip-when-overflow
+            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"-->
+                <!--                    :style="{color:$store.state.settings.theme}"-->
+                <!--                    @click.stop="edit('edit',row)"-->
+                <!--                  />-->
+                <!--                </el-tooltip>-->
+
+                <!--                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">-->
+                <!--                  <i class="el-icon-delete" :style="{color:$store.state.settings.theme}" @click.stop="del(row)" />-->
+                <!--                </el-tooltip>-->
+
+                <!--                <el-tooltip class="item" effect="dark" content="鎵撳嵃宸ュ崟" placement="top">-->
+                <!--                  &lt;!&ndash;                  <i&ndash;&gt;-->
+                <!--                  &lt;!&ndash;                    class="el-icon-tickets"&ndash;&gt;-->
+                <!--                  &lt;!&ndash;                    style="cursor: pointer;color: #42b983;margin-right: 15px"&ndash;&gt;-->
+                <!--                  &lt;!&ndash;                    @click="check(row)"&ndash;&gt;-->
+                <!--                  &lt;!&ndash;                  />&ndash;&gt;-->
+                <!--                  <i-->
+                <!--                    :style="{color:$store.state.settings.theme}"-->
+                <!--                    class="el-icon-printer"-->
+                <!--                    style="cursor: pointer;margin-right: 15px"-->
+                <!--                    @click.stop="handlePrint(row.wo_code)"-->
+                <!--                  />-->
+                <!--                </el-tooltip>-->
+
+                <el-tooltip class="item" effect="dark" content="璇︽儏" placement="top">
+                  <i
+                    class="el-icon-view"
+                    style="cursor: pointer;"
+                    :style="{color:$store.state.settings.theme}"
+                    @click.stop="edit('view',row)"
+                  />
+                </el-tooltip>
+
+                <el-tooltip class="item" effect="dark" content="宸ュ崟鍏抽棴" placement="top">
+                  <i
+                    class="el-icon-switch-button"
+                    style="cursor: pointer;margin-left: 15px"
+                    :style="{color:$store.state.settings.theme}"
+                    @click.stop="orderClose(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,jumper"
+        popper-class="select_bottom"
+        @pagination="getMesOrderClosedSearch"
+      />
+
+      <!--      <div class="elTableDiv">-->
+      <!--        <el-table-->
+      <!--          :data="tableDataDetail"-->
+      <!--          border-->
+      <!--          height="210px"-->
+      <!--          :row-class-name="tableRowClassName"-->
+      <!--          highlight-current-row-->
+      <!--          :header-cell-style="this.$headerCellStyle"-->
+      <!--          :cell-style="this.$cellStyle"-->
+      <!--        >-->
+      <!--          &lt;!&ndash;          <el-table-column&ndash;&gt;-->
+      <!--          &lt;!&ndash;            width="50"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            type="index"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            prop="搴忓彿"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            fixed&ndash;&gt;-->
+      <!--          &lt;!&ndash;          />   &ndash;&gt;-->
+      <!--          <el-table-column-->
+      <!--            width="50"-->
+      <!--            prop="seq"-->
+      <!--            label="搴忓彿"-->
+      <!--            fixed-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            prop="wo_code"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            label="宸ュ崟缂栧彿"-->
+      <!--            width="160"-->
+      <!--          />-->
+
+      <!--          &lt;!&ndash;          <el-table-column&ndash;&gt;-->
+      <!--          &lt;!&ndash;            prop="partcode"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            label="浜у搧缂栫爜"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            width="150"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            show-tooltip-when-overflow&ndash;&gt;-->
+      <!--          &lt;!&ndash;          />&ndash;&gt;-->
+      <!--          &lt;!&ndash;          <el-table-column&ndash;&gt;-->
+      <!--          &lt;!&ndash;            prop="partname"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            label="浜у搧鍚嶇О"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            width="200"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            show-tooltip-when-overflow&ndash;&gt;-->
+      <!--          &lt;!&ndash;          />&ndash;&gt;-->
+
+      <!--          <el-table-column-->
+      <!--            label="宸ュ簭缂栫爜"-->
+      <!--            prop="step_code"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            width="150"-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            label="宸ュ簭鍚嶇О"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            prop="stepname"-->
+      <!--            width="150"-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            label="宸茬敓浜ф暟閲�"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            prop="produceq_qty"-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            label="鍚堟牸鏁伴噺"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            prop="good_qty"-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            label="涓嶈壇鏁伴噺"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            prop="ng_qty"-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            label="宸ュ簾鏁伴噺"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            prop="laborbad_qty"-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            label="鏂欏簾鏁伴噺"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            prop="materielbad_qty"-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            label="寰呬骇鏁伴噺"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            prop="delive_qty"-->
+      <!--          />-->
+      <!--          &lt;!&ndash;          <el-table-column&ndash;&gt;-->
+      <!--          &lt;!&ndash;            label="鎿嶄綔"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            width="120"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            fixed="right"&ndash;&gt;-->
+      <!--          &lt;!&ndash;          >&ndash;&gt;-->
+      <!--          &lt;!&ndash;            <template slot-scope="{row}">&ndash;&gt;-->
+      <!--          &lt;!&ndash;              <div class="operationClass">&ndash;&gt;-->
+      <!--          &lt;!&ndash;                <el-tooltip class="item" effect="dark" content="鎵撳嵃宸ュ簭" placement="top">&ndash;&gt;-->
+      <!--          &lt;!&ndash;                  <i&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    v-if="tableDataDetail.length!==row.seq"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    class="el-icon-printer"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    :style="{color:$store.state.settings.theme}"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    style="cursor: pointer;margin-right: 15px"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    @click="supplementSmallClick(row)"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                  />&ndash;&gt;-->
+      <!--          &lt;!&ndash;                </el-tooltip>&ndash;&gt;-->
+      <!--          &lt;!&ndash;                <el-tooltip class="item" effect="dark" content="琛ユ墦鐢熶骇鍏ュ簱鏉$爜" placement="top">&ndash;&gt;-->
+      <!--          &lt;!&ndash;                  <i&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    v-if="tableDataDetail.length===row.seq"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    class="  el-icon-camera"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    :style="{color:$store.state.settings.theme}"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    style="cursor: pointer;margin-right: 15px"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    @click="getProductInHouseLabCode(row.wo_code)"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                  />&ndash;&gt;-->
+      <!--          &lt;!&ndash;                </el-tooltip>&ndash;&gt;-->
+      <!--          &lt;!&ndash;              </div>&ndash;&gt;-->
+      <!--          &lt;!&ndash;            </template>&ndash;&gt;-->
+      <!--          &lt;!&ndash;          </el-table-column>&ndash;&gt;-->
+      <!--        </el-table>-->
+      <!--      </div>-->
+    </div>
+    <!--鏂板娲惧彂瀵硅瘽妗�-->
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'娲惧彂'"
+      :visible.sync="dialogVisible"
+      width="1200px"
+      top="8vh"
+      :close-on-click-modal="false"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <el-form
+        ref="dialogForm"
+        inline
+        :rules="dialogFormRules"
+        :model="dialogForm"
+        label-width="110px"
+      >
+
+        <el-divider content-position="left">鍩烘湰淇℃伅</el-divider>
+
+        <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-input v-model="dialogForm.mesordercode" disabled 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: 200px"
+          >
+            <el-button
+              slot="append"
+              icon="el-icon-search"
+              :disabled="operation!=='add'||dialogForm.ordertype==='PO'"
+              @click="mesordertsourcesearchclick"
+            />
+          </el-input>
+        </el-form-item>
+        <!--            <el-button-->
+        <!--              v-waves-->
+        <!--              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(/[^\d]/g,'')"
+            style="width: 200px"
+          />
+          <!--          oninput="value=value.replace(/[^0-9*.{1}0-9*]/g,'')"-->
+        </el-form-item>
+        <el-form-item
+          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+'/'+item.partcode"
+              :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 v-if="operation!=='add'" 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>
+        <!--        :disabled="dialogForm.partcode===''"-->
+        <el-form-item label="鎵�灞炶溅闂�" prop="wkshopcode">
+          <el-select
+            v-model="dialogForm.wkshopcode"
+            filterable
+            :popper-append-to-body="false"
+            style="width: 200px;"
+            placeholder="璇烽�夋嫨杞﹂棿"
+          >
+            <el-option
+              v-for="item in wkshopArr"
+              :key="item.torg_code"
+              :label="item.torg_name"
+              :value="item.torg_code"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="棰勮浜や粯鏃ユ湡" prop="deliverydate">
+          <el-date-picker
+            v-model="dialogForm.deliverydate"
+            type="date"
+            size="mini"
+            :clearable="false"
+            class="dateMini"
+            :picker-options="pickerOptions"
+            format="yyyy-MM-dd"
+            value-format="yyyy-MM-dd"
+            placeholder="閫夋嫨鏃ユ湡"
+          />
+          <!--          :disabled="dialogForm.deliverydate"-->
+        </el-form-item>
+
+        <el-divider content-position="left">宸ュ簭淇℃伅</el-divider>
+
+        <div style="display: flex;align-items: center">
+          <!--          <div style="font-weight: bolder">宸ュ簭閫夋嫨锛�</div>-->
+          <!--          <el-drag-select-->
+          <!--            v-model="stepSelectedValue"-->
+          <!--            style="width:930px;"-->
+          <!--            multiple-->
+          <!--            placeholder="璇烽�夋嫨鐩稿搴斿伐搴�"-->
+          <!--            @change="stepSelectedValueChange"-->
+          <!--          >-->
+          <!--            <el-option-->
+          <!--              v-for="item in stepSelectArr"-->
+          <!--              :key="item.stepcode"-->
+          <!--              :label="item.stepname"-->
+          <!--              :value="item.stepcode"-->
+          <!--            />-->
+          <!--          </el-drag-select>-->
+        </div>
+
+        <el-table
+          ref="stepTableDataRef"
+          :data="stepTableData"
+          border
+          :row-class-name="tableRowClassName"
+          height="300"
+          style="width: 100%;margin-top: 15px;"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          row-key="stepcode"
+        >
+          <el-table-column
+            type="index"
+            label="搴忓彿"
+            width="50"
+          />
+          <!--          <el-table-column-->
+          <!--            prop="stepcode"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            label="宸ュ簭缂栫爜"-->
+          <!--          />-->
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="stepprice"
+            label="鐢熶骇鍗曚环"
+            show-tooltip-when-overflow
+          >
+            <!--            <template slot-scope="{row}">-->
+            <!--              <el-input-->
+            <!--                v-model="row.stepprice"-->
+            <!--                placeholder="璇疯緭鍏ュ伐搴忓崟浠�"-->
+            <!--                oninput="value=value.replace(/[^0-9.]/g,'')"-->
+            <!--                style="width: 100%"-->
+            <!--                @click.stop=""-->
+            <!--              />-->
+            <!--            </template>-->
+          </el-table-column>
+          <el-table-column
+            prop="produceq_qty"
+            label="宸茬敓鎴愭暟閲�"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="good_qty"
+            label="鍚堟牸鏁伴噺"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="ng_qty"
+            label="涓嶈壇鏁伴噺"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="laborbad_qty"
+            label="宸ュ簾鏁伴噺"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="materielbad_qty"
+            label="鏂欏簾鏁伴噺"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="delive_qty"
+            label="寰呬骇鏁伴噺"
+            show-tooltip-when-overflow
+          />
+          <!--          <el-table-column-->
+          <!--            label="鎿嶄綔"-->
+          <!--            width="120"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div class="operationClass">-->
+          <!--                &lt;!&ndash;                <el-tooltip class="item" effect="dark" content="绉诲姩" placement="top">&ndash;&gt;-->
+          <!--                <i-->
+          <!--                  class="el-icon-rank"-->
+          <!--                  :style="{color:$store.state.settings.theme}"-->
+          <!--                  style="cursor: move"-->
+          <!--                />-->
+          <!--                &lt;!&ndash;                </el-tooltip>&ndash;&gt;-->
+          <!--                &lt;!&ndash;                @click="edit('edit',row)"&ndash;&gt;-->
+
+          <!--                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">-->
+          <!--                  <i-->
+          <!--                    class="el-icon-delete"-->
+          <!--                    :style="{color:$store.state.settings.theme}"-->
+          <!--                    style="margin-left: 15px;"-->
+          <!--                    @click="stepDel(row)"-->
+          <!--                  />-->
+          <!--                </el-tooltip>-->
+          <!--              </div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+        </el-table>
+
+      </el-form>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <!--          <el-button v-waves v-if="operation==='add'" type="primary" @click="dialogVisibleConfirmPreview('add')">棰勮</el-button>-->
+          <el-button
+            v-if="operation!=='view'"
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!-- 宸ュ簭浠诲姟瀵硅瘽妗�-->
+    <el-dialog
+      v-el-drag-dialog
+      title="宸ュ簭浠诲姟"
+      :visible.sync="dialogVisibleTask"
+      width="840px"
+      top="15vh"
+      class="dialogVisibleSearch"
+      :close-on-click-modal="false"
+      @close="dialogVisibleTaskClose"
+    >
+      <el-button
+        v-waves
+        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"
+          show-tooltip-when-overflow
+          label="宸ュ崟缂栧彿"
+          width="200"
+        />
+        <el-table-column
+          prop="stepcode"
+          label="宸ュ簭缂栫爜"
+          show-tooltip-when-overflow
+        />
+        <el-table-column
+          prop="stepname"
+          show-tooltip-when-overflow
+          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"
+          show-tooltip-when-overflow
+          label="浠诲姟鏁伴噺"
+        />
+        <el-table-column
+          prop="good_qty"
+          show-tooltip-when-overflow
+          label="鍚堟牸鏁伴噺"
+        />
+        <el-table-column
+          prop="ng_qty"
+          show-tooltip-when-overflow
+          label="涓嶈壇鏁伴噺"
+        />
+        <el-table-column
+          label="鎿嶄綔"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button v-waves 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 v-waves @click="dialogVisibleBack">杩� 鍥�</el-button>
+          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
+    <!-- 婧愬崟鍗曞彿瀵硅瘽妗�-->
+    <el-dialog
+      v-el-drag-dialog
+      title="婧愬崟鍗曞彿"
+      :visible.sync="dialogVisibleSource"
+      width="1200px"
+      top="10vh"
+      class="dialogVisibleSearch"
+      :close-on-click-modal="false"
+      @close="dialogVisibleSourceClose"
+    >
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="sourceForm"
+          :model="sourceForm"
+          label-width="100px"
+          inline
+          style="display: flex;justify-content: space-between"
+        >
+          <div class="elForm" style="justify-content: flex-start">
+            <!--            <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="缁撴潫鏃ユ湡"-->
+            <!--              />-->
+            <!--              &lt;!&ndash;              :picker-options="expireTimeOption"&ndash;&gt;-->
+
+            <!--            </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.mesordercode"
+                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="宸ュ崟缂栧彿" style=" display: flex;">
+              <el-input v-model="sourceForm.sourceorder" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item 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>
+
+            <el-form-item
+              v-show="isExpandDialog"
+              label="鍒涘缓鏃堕棿"
+              label-width="100px"
+              style=" display: flex;font-size: 14px;margin-top: 3px"
+            >
+              <el-date-picker
+                v-model="sourceForm.createdate"
+                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>
+
+          </div>
+
+          <div style="display: flex;align-items: start;margin-top: 3px;z-index: 2;justify-content: end">
+            <el-button v-waves type="primary" icon="el-icon-search" @click="sourceSearch">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="sourceReset">閲嶇疆</el-button>
+          </div>
+
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverTypeDialog==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandDialog?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverTypeDialog=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverTypeDialog==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandDialog?'doubleDown':'doubleUp'"
+            @click="isExpandDialog=!isExpandDialog"
+            @mouseout="mouseHoverTypeDialog=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          :data="sourceTableData"
+          :height="isExpandDialog?(tableHeight+60)+'px':(tableHeight+140)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:isExpandDialog?(tableHeight+60)+'px':(tableHeight+140)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sourceSortChange"
+          @row-click="getCurrentRowSource"
+        >
+          <!--          <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="宸ュ崟鐘舵��"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            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
+            label="宸ュ崟缂栧彿"
+            prop="wo_code"
+            show-tooltip-when-overflow
+            min-width="150"
+            sortable="custom"
+          >
+            <!--            <template slot-scope="{row}">-->
+            <!--              <div v-if="row.m_po">{{ row.m_po }}</div>-->
+            <!--              <div v-else>{{ row.wo_code }}</div>-->
+            <!--            </template>-->
+          </el-table-column>
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="150"
+          />
+          <el-table-column
+            prop="partname"
+            label="浜у搧鍚嶇О"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="150"
+          />
+          <el-table-column
+            prop="partspec"
+            label="浜у搧瑙勬牸"
+            show-tooltip-when-overflow
+            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="plan_qty"
+            label="浠诲姟鏁伴噺"
+            width="150"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+
+          <el-table-column
+            prop="bad_qty"
+            label="鎶ュ簾鏁伴噺"
+            width="150"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+
+          <!--          <el-table-column-->
+          <!--            prop="relse_qty"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            label="宸蹭笅鍗曟暟閲�"-->
+          <!--            width="150"-->
+          <!--            sortable="custom"-->
+          <!--          />-->
+          <el-table-column
+            prop="wkshp_name"
+            label="鐢熶骇杞﹂棿"
+            show-tooltip-when-overflow
+            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="plan_startdate"
+            label="棰勮寮�宸ユ椂闂�"
+            show-tooltip-when-overflow
+            sortable="custom"
+            width="130"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.plan_startdate">{{ row.plan_startdate.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="plan_enddate"
+            label="棰勮瀹屽伐鏃堕棿"
+            show-tooltip-when-overflow
+            sortable="custom"
+            width="130"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.plan_enddate">{{ row.plan_enddate.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="lm_user"
+            label="鍒涘缓浜哄憳"
+            show-tooltip-when-overflow
+            sortable="custom"
+            width="150"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.lm_user">{{ row.lm_user }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="lm_date"
+            label="鍒涘缓鏃堕棿"
+            show-tooltip-when-overflow
+            width="130"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.lm_date">{{ row.lm_date.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 v-waves 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="getMesBadOrderSearch"
+      />
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleSourceBack">杩� 鍥�</el-button>
+          <el-button v-waves type="primary" @click="dialogVisibleSourceConfirm">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--鎵撳嵃棰勮瀵硅瘽妗�  澶ф爣绛�-->
+    <el-dialog
+      v-el-drag-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="80px"
+              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">
+                  <!--                  {{ localStorage.getItem('username') }}-->
+                  {{ formApprove.routename }}
+                </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:90px;
+            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 v-waves @click="dialogVisibleBackPreview">杩� 鍥�</el-button>
+          <!--            <el-button v-waves v-if="operation==='add'" type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+          <!--            <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�/鎵� 鍗�</el-button>-->
+          <el-button v-waves v-print="printObj" type="primary">鎵� 鍗�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--鎵撳嵃棰勮椤甸潰  灏忔爣绛�-->
+    <el-dialog
+      v-el-drag-dialog
+      title="棰勮"
+      :visible.sync="dialogVisible2"
+      width="1000"
+      top="10vh"
+      :close-on-click-modal="false"
+      @close="dialogVisible2Close"
+    >
+      <div style="height: 650px;overflow:auto;">
+        <!--      涓嬫媺妗嗛�夋嫨鎵撳嵃灏哄-->
+        <div v-if="!isLastPrint" style="display: flex;align-items: center;margin: 0 0 20px 0">
+          <div>閫夋嫨鎵撳嵃灏哄锛�</div>
+          <el-select
+            v-model="printSize"
+            :popper-append-to-body="false"
+            style="width: 200px"
+            placeholder="璇烽�夋嫨"
+            @change="printSizeChange"
+          >
+
+            <el-option
+              v-for="item in printSizeSelectArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </div>
+        <!-- 瑕佹墦鍗扮殑鍖哄煙 -->
+        <!--      <div id="printMe2" :style="{paddingLeft:'10px',paddingTop: '5px'}">-->
+        <div v-if="!isLastPrint" :style="printMe2StylePadding(printSize)">
+          <!--      80 * 50-->
+          <div
+            v-if="printSize===0"
+            style="display: flex;width: 280px;height: 160px;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: 96px;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: 32px;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: 32px;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>
+          <!--      78 * 60    -->
+          <div
+            v-if="printSize===1"
+            style="display: flex;width: 280px;height: 160px;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: 96px;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: 32px;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: 32px;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>
+          <!--      60 * 40    -->
+          <div
+            v-if="printSize===2"
+            style="display: flex;width: 220px;height: 130px;border: 1px solid #000;text-align: center;font-size: 12px"
+          >
+
+            <div style="width: 70px;display: flex;flex-direction: column;border-right: 1px solid #000">
+              <div
+                style="display: flex;height: 60%;border-bottom:1px solid #000;
+              justify-content: center;align-items: center;position: relative"
+              >
+                <div
+                  id="qrCode2"
+                  ref="qrCodeDiv2"
+                  style="overflow-y: hidden;height:71%;position: absolute;left: 7px;"
+                />
+              </div>
+              <div
+                style="display: flex;height:  20%;justify-content: flex-start;border-bottom:1px solid #000;align-items: center"
+              >
+                <div style="margin-left: 3px; ">鏁伴噺:{{ qrForm.startqty }}</div>
+              </div>
+              <div style="display: flex;height:  20%;justify-content: flex-start;align-items: center;">
+                <div style="margin-left: 3px; ">鎿嶄綔:{{ qrForm.operator }}</div>
+
+              </div>
+            </div>
+
+            <div style="width:150px;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="margin-left: 3px;">缂栧彿:{{ 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="margin-left: 3px;">浜у搧缂栫爜:{{ 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="margin-left: 3px;">浜у搧鍚嶇О:{{ 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="margin-left: 3px;">涓嬮亾宸ュ簭:{{ qrForm.nextstepname }}</div>
+
+              </div>
+              <div style="display: flex;height: 20%;justify-content: flex-start;align-items: center;text-align: left">
+                <div style=" margin-left: 3px;">鏃堕棿: {{ qrForm.operatorTime }}</div>
+                <!--                <div>{{ qrForm.operatorTime?qrForm.operatorTime.substring(5):'' }}</div>-->
+                <!--                <div>{{ qrForm.operatorTime }}</div>-->
+              </div>
+
+            </div>
+
+          </div>
+          <div
+            v-if="printSize===5"
+            style="display: flex;width: 140px;height: 80px;border: 1px solid #000;text-align: center;font-size: 10px;"
+          >
+
+            <div v-if="false" style="width: 45px;display: flex;flex-direction: column;border-right: 1px solid #000">
+              <div
+                style="display: flex;height: 60px;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: 20px;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: 20px;justify-content: flex-start;align-items: center">
+                <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div>
+                {{ qrForm.operator }}
+              </div>
+            </div>
+
+            <div style="width:100%;display: flex;flex-direction: column;">
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: center;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: center;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: center;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: center;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: center;align-items: center;text-align: left">
+                <!--              <div style="width: 60px;margin-left: 5px;">澶勭悊鏃堕棿:</div>-->
+                <div>{{ qrForm.operatorTime }}</div>
+              </div>
+
+            </div>
+
+          </div>
+        </div>
+
+        <div v-if="isLastPrint" style="display: flex;flex-direction: column">
+
+          <div style="display: flex;font-weight: bold;font-size: 16px;margin-bottom: 20px;">
+            <div style="width: 48%;">
+              璇烽�夋嫨鍏ュ簱鏉$爜
+            </div>
+            <div style="width: 48%;margin-left: 4%;">
+              宸查�変腑鐨勫叆搴撴潯鐮�
+            </div>
+          </div>
+
+          <div style="display: flex;">
+            <!--          璇烽�夋嫨鍏ュ簱鏉$爜-->
+            <div style="display: flex;flex-direction: column;height: 600px;overflow: auto;width: 48%;">
+              <div
+                v-for="(item,index) in lastPrintArr"
+                :key="item.inbarcode"
+                :style="{marginTop:index===0?'':'15px'}"
+                style="display: flex;align-items: center;"
+              >
+
+                <!--          v-if="printSize===0"-->
+                <div style="margin-right:40px">
+                  <el-checkbox
+                    :key="item.inbarcode"
+                    v-model="item.checked"
+                    @change="val=>inbarcodeChange(val,item)"
+                  />
+                </div>
+                <div
+                  style="display: flex;width: 280px;height: 160px;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: 96px;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: 32px;justify-content: flex-start;border-bottom:1px solid #000;align-items: center"
+                    >
+                      <div style="margin-left: 5px;width: 28px">鏁伴噺:</div>
+                      {{ item.good_qty }}
+                    </div>
+                    <div style="display: flex;height: 32px;justify-content: flex-start;align-items: center">
+                      <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div>
+                      {{ item.username }}
+                    </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>{{ item.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>{{ item.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>{{ item.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>{{ item.partspec ? item.partspec : '/' }}</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>{{ item.lm_date }}</div>
+                    </div>
+
+                  </div>
+
+                </div>
+
+              </div>
+            </div>
+
+            <!--          宸查�変腑鐨勫叆搴撴潯鐮�-->
+            <div
+              style="display: flex;flex-direction: column;height: 600px;overflow: auto;width: 48%;margin-left: 50px;"
+            >
+              <div id="printMe2">
+                <div
+                  v-for="(item,index) in lastPrintArrSelected"
+                  v-if="item.checked"
+                  :key="item.inbarcode"
+                  :style="{marginTop:index===0?'':'15px'}"
+                  style="display: flex;align-items: center;"
+                >
+                  <div
+                    style="display: flex;width: 280px;height: 160px;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: 96px;border-bottom:1px solid #000;
+                        justify-content: center;align-items: center;position: relative"
+                      >
+                        <div
+                          id="qrCode3"
+                          ref="qrCodeDiv3"
+                          style="overflow-y: hidden;height:60px;position: absolute;left: 14px;"
+                        />
+                      </div>
+                      <div
+                        style="display: flex;height: 32px;justify-content: flex-start;border-bottom:1px solid #000;align-items: center"
+                      >
+                        <div style="margin-left: 5px;width: 28px">鏁伴噺:</div>
+                        {{ item.good_qty }}
+                      </div>
+                      <div style="display: flex;height: 32px;justify-content: flex-start;align-items: center">
+                        <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div>
+                        {{ item.username }}
+                      </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>{{ item.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>{{ item.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>{{ item.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>{{ item.partspec ? item.partspec : '/' }}</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>{{ item.lm_date }}</div>
+                      </div>
+
+                    </div>
+
+                  </div>
+
+                </div>
+              </div>
+
+            </div>
+
+          </div>
+
+        </div>
+
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisible2 = false;">鍙� 娑�</el-button>
+          <el-button v-waves v-print="printObj2" type="primary">鎵� 鍗�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--    宸ヨ壓璺嚎瀵硅瘽妗�-->
+    <el-dialog
+      v-el-drag-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="宸ュ簭缂栫爜"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+            show-tooltip-when-overflow
+          />
+          <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 v-waves @click="routeDialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button v-waves type="primary" @click="routeDialogVisibleConfirm">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
 
 <script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime, handleDatetime2, validateCode } from '@/utils/global'
+import { getCookie } from '@/utils/auth'
+import QRCode from 'qrcodejs2'
+import $ from 'jquery'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import {
+  AddMesOrderCodeSearch,
+  AddUpdateMesOrder, DeleteMesOrder,
+  MesBadOrderSearch, MesOrderDistribution,
+  MesOrderClosedSearch,
+  UpdateMesOrderStepSearch, MesOrderBitchClosedSeave
+} from '@/api/WorkOrder'
+import { PartSelect } from '@/api/ProductModel'
+import { PrentOrganization, PrentOrganizationNoCompany, StepData } from '@/api/GeneralBasicData'
+import Sortable from 'sortablejs'
+import ElDragSelect from '@/components/DragSelect'
+import { MesOrderPrintSearch } from '@/api/GridReport' // base on element-ui
+
 export default {
-  name: 'WorkOrderClose'
+  name: 'WorkOrderList',
+  components: {
+    Pagination, ElDragSelect
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      mouseHoverTypeDialog: 'mouseout',
+      isExpandForm: false,
+      isIpad: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      username: '',
+      form: {
+        wkshopcode: '',
+        mesorderstus: '', // 宸ュ崟鐘舵�佺爜
+        mesordercode: '', // 宸ュ崟缂栧彿
+        partcode: '', // 浜у搧缂栫爜
+        ordertype: '', // ordertype
+        sourceorder: '', // 婧愬崟鍗曞彿
+        saleordercode: '', // 閿�鍞鍗�
+        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: '宸叉淳鍙�' }
+        // 宸插叧闂細CLOSED  鏈叧闂細NOCLOSED
+        { code: 'NOCLOSED', name: '鏈叧闂�' },
+        { code: 'CLOSED', name: '宸插叧闂�' }
+        // { code: 'NOSCHED', name: '寰呮帓绋�' },
+        // { code: 'SCHED', name: '宸叉帓绋�' }
+      ],
+      wkshopcodeArr: [],
+      total: 10,
+      tableData: [],
+      dialogVisible: false,
+      dialogForm: {
+        mesorderstus: 'NEW', // 宸ュ崟鐘舵�佺爜
+        mesordercode: '', // 宸ュ崟缂栧彿
+        ordertype: 'PO', // 宸ュ崟绫诲瀷
+        sourceorderid: '', // 婧愬崟id
+        sourceorder: '', // 婧愬崟鍗曞彿
+
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+
+        mesqty: '', // 宸ュ崟鏁伴噺
+        wkshopcode: '', // 鐢熶骇杞﹂棿缂栫爜
+        wkshopname: '', // 鐢熶骇杞﹂棿鍚嶇О
+
+        deliverydate: '', // 浜や粯鏃堕棿
+        data_sources: '', // 鏁版嵁鏉ユ簮
+
+        mesmaxqty: 0// 宸ュ崟鐨勬渶澶у��
+      },
+      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'] }
+        ],
+        deliverydate: [
+          { 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'] }
+        ],
+        isAps: [
+          { required: true, message: '璇烽�夋嫨鏄惁鎺掔▼', trigger: ['blur', 'change'] }
+        ],
+        bomId: [
+          { 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: {
+        mesordercode: '', // 宸ュ崟缂栧彿
+        sourceorder: '', // 璁㈠崟缂栧彿
+        saleordercode: '', // 閿�鍞鍗曞彿
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+        creatuser: '', // 鍒涘缓浜哄憳
+        // paystartdate: '', // 浜や粯鏃堕棿
+        // paystartdate: '', // 棰勮寮�宸ユ椂闂�
+        // payenddate: '', // 棰勮瀹屽伐鏃堕棿
+        createdate: '', // 鍒涘缓鏃堕棿
+
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      sourceFormTotal: 10,
+      radioSelectedId: '',
+      isExpandDialog: false, // 瀵硅瘽妗嗚〃鍗曟槸鍚﹀睍寮�锛岄粯璁や笉灞曞紑
+      dialogVisibleRoute: false,
+      dialogFormRoute: {
+        projectName: '', // 浜у搧鍚嶇О
+        projectCode: '', // 浜у搧浠g爜
+        routeOperationArr: [] // 宸ヨ壓璺嚎闆嗗悎
+      },
+      defaultroute_code: '', // 榛樿宸ヨ壓璺嚎閫変腑鍊�
+      defaultroute_codeArr: '', // 榛樿宸ヨ壓璺嚎鏁扮粍
+      projectTableData: [], // 璁惧鍒楄〃
+      tableDataDetail: [], // 鐐瑰嚮宸ュ崟琛ㄧ殑琛� 鏄剧ず璇︾粏淇℃伅
+      printSize: 0,
+      printSizeSelectArr: [// 瀹�*楂�
+        { code: 0, name: '80*50' },
+        { code: 1, name: '78*60' },
+        { code: 2, name: '60*40' }
+        // { code: 2, name: '50*60' },
+        // { code: 3, name: '50*40' },
+        // { code: 4, name: '50*80' },
+        // { code: 5, name: '40*30' }
+      ],
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now() - 8.64e7
+        }
+      },
+
+      isLastPrint: false, // 鏄惁鏄湯閬撴墦鍗�
+      lastPrintArr: [], // 鏈亾鎵撳嵃鐨勬暟缁�(鎵�鏈�)
+      lastPrintArrSelected: [], // 鏈亾鎵撳嵃鐨勬暟缁�(閫変腑)
+
+      switchButton: false,
+
+      routeStepArr: '',
+
+      stepTableData: [],
+      sortable: null,
+      stepSelectArr: [], // 宸ュ簭涓嬫媺鏁版嵁
+      stepSelectedValue: [], // 涓嬫媺閫変腑鍊�
+
+      multipleSelection: []
+    }
+  },
+  watch: {
+    'stepSelectedValue': {
+      // deep: true,
+      handler: function(val) {
+        // do something with the new and old value of stepSelectedValue
+        console.log(val, 1)
+        const arr = JSON.parse(JSON.stringify(this.stepTableData))
+        const arrStepcode = arr.map(i => i.stepcode)
+        this.stepTableData = []
+        val.forEach(i => {
+          this.stepTableData.push(
+            {
+              stepcode: i,
+              stepname: this.stepSelectArr.find(j => j.stepcode === i).stepname,
+              stepprice: arrStepcode.includes(i) ? arr.find(j => j.stepcode === i).stepprice : 0
+            }
+          )
+        })
+      }
+    }
+  },
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+
+    // this.$nextTick(() => {
+    //   this.setSort()
+    // })
+  },
+  methods: {
+    setSort() {
+      const el = this.$refs.stepTableDataRef.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0]
+      this.sortable = Sortable.create(el, {
+        ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
+        setData: function(dataTransfer) {
+          // to avoid Firefox bug
+          // Detail see : https://github.com/RubaXa/Sortable/issues/1012
+          dataTransfer.setData('Text', '')
+        },
+        onEnd: evt => {
+          const targetRow = this.stepTableData.splice(evt.oldIndex, 1)[0]
+          this.stepTableData.splice(evt.newIndex, 0, targetRow)
+
+          this.stepSelectedValue = this.stepTableData.map(i => i.stepcode)
+          // for show the changes, you can delete in you code
+          // const tempIndex = this.newList.splice(evt.oldIndex, 1)[0]
+          // this.newList.splice(evt.newIndex, 0, tempIndex)
+        }
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    },
+    handleRequest() {
+      this.getMesOrderClosedSearch().then(res => {
+        if (res.code === '200') {
+          this.getSelect()
+          this.getPrentOrganizationNoCompany()
+        }
+      })
+    },
+    async getPrentOrganizationNoCompany() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopcodeArr = res
+    },
+    async getMesOrderClosedSearch() {
+      // let tempDate = this.form.createdate
+      // if (tempDate.length > 0) {
+      //   tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      // }
+
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        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, // 婧愬崟鍗曞彿
+        saleordercode: this.form.saleordercode, // 閿�鍞鍗�
+        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 MesOrderClosedSearch(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
+
+      // 鑾峰彇缁勭粐
+      const { data: res2 } = await PrentOrganization()
+      this.wkshopArr = res2
+
+      // 鑾峰彇宸ュ簭
+      const { data: res3 } = await StepData()
+      this.stepSelectArr = res3
+    },
+    // 璁㈠崟鐘舵�佹敼鍙樻椂
+    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.getMesOrderClosedSearch()
+    },
+    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.getMesBadOrderSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getMesOrderClosedSearch()
+    },
+
+    // 閲嶇疆
+    reset(val) {
+      this.form.wkshopcode = ''
+      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.ordertype = ''
+      this.form.createdate = ''
+      this.getMesOrderClosedSearch()
+    },
+    // 鏂板鎸夐挳
+    async add(operation) {
+      const { data: res } = await AddMesOrderCodeSearch()
+      this.dialogForm.mesordercode = res
+      this.operation = operation
+      this.dialogVisible = true
+      this.dialogForm.data_sources = 'MES'
+
+      this.$nextTick(() => {
+        this.setSort()
+      })
+    },
+    // 宸ュ簭浠诲姟
+    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
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val.map(i => i.wo_code)
+    },
+
+    selected(row, index) {
+      return row.status !== 'CLOSED'
+    },
+    // 娲惧彂
+    send() {
+      this.$confirm('鏄惁纭娲惧彂?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        MesOrderDistribution(this.multipleSelection).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('娲惧彂鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getMesOrderClosedSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堟淳鍙�')
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      if (row.status === 'START' || row.status === 'CLOSED' || row.status === 'SCHED') {
+        return this.$message.info('姝ゅ伐鍗曚笉鍙垹闄わ紒')
+      }
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        const data = {
+          souceid: row.sourceid ? row.sourceid : '',
+          wocode: row.wo_code,
+          m_po: row.m_po,
+          orderqty: row.plan_qty
+        }
+        DeleteMesOrder(data).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getMesOrderClosedSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+
+      this.dialogForm.data_sources = row.data_sources
+      this.dialogForm.mesorderstus = row.status
+      this.dialogForm.mesordercode = row.wo_code
+      this.dialogForm.ordertype = row.wotype
+      this.dialogForm.sourceorderid = row.sourceid
+      this.dialogForm.sourceorder = row.m_po
+      this.dialogForm.partcode = row.partcode
+      this.dialogForm.partname = row.partname
+      this.dialogForm.partspec = row.partspec
+      this.dialogForm.wkshopcode = row.wkshp_code
+      this.dialogForm.deliverydate = row.saleOrderDeliveryDate.substring(0, 11)
+      this.dialogForm.mesqty = row.plan_qty
+
+      const data = {
+        sourceid: this.dialogForm.sourceorderid,
+        sourcewo: this.dialogForm.sourceorder,
+        wocode: this.dialogForm.mesordercode,
+        data_sources: this.dialogForm.data_sources
+      }
+      const { data: res } = await UpdateMesOrderStepSearch(data)
+      this.dialogForm.mesmaxqty = res.canupdate_qty
+      this.stepTableData = res.stepdata
+      // res.stepdata.forEach(i => {
+      //   this.stepTableData.push(
+      //     {
+      //       stepcode: i.step_code,
+      //       stepname: i.stepname,
+      //       stepprice: i.stepprice
+      //     }
+      //   )
+      // })
+      // this.stepSelectedValue = this.stepTableData.map(i => i.stepcode)
+
+      this.dialogVisible = true
+    },
+    // 宸ュ崟鍏抽棴浜嬩欢
+    async orderClose(row) {
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        if (row) { // 琛屽叧闂伐鍗�
+          this.multipleSelection = [row.wo_code]
+        }
+        MesOrderBitchClosedSeave(this.multipleSelection).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍏抽棴鎴愬姛!')
+            // if (this.form.page > 1 && this.tableData.length === 1) {
+            //   this.form.page--
+            // }
+            this.getMesOrderClosedSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.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
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm = {
+        mesorderstus: 'NEW', // 宸ュ崟鐘舵�佺爜
+        mesordercode: '', // 宸ュ崟缂栧彿
+        ordertype: 'PO', // 宸ュ崟绫诲瀷
+        sourceorderid: '', // 婧愬崟id
+        sourceorder: '', // 婧愬崟鍗曞彿
+
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+
+        mesqty: '', // 宸ュ崟鏁伴噺
+        wkshopcode: '', // 鐢熶骇杞﹂棿缂栫爜
+        wkshopname: '', // 鐢熶骇杞﹂棿鍚嶇О
+
+        deliverydate: '', // 浜や粯鏃堕棿
+        data_sources: '' // 鏁版嵁鏉ユ簮
+      }
+      this.stepSelectedValue = []
+      this.stepTableData = []
+      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('婧愬崟鍗曞彿涓嶈兘涓虹┖锛�')
+          }
+
+          if (this.dialogForm.data_sources === 'ERP' && this.dialogForm.mesmaxqty < this.dialogForm.mesqty) {
+            return this.$message.info('姝ゅ伐鍗曠殑鏈�澶т慨鏀规暟鍊间负锛�' + this.dialogForm.mesmaxqty)
+          }
+
+          const workListSub = []
+          this.stepTableData.forEach((i, j) => {
+            workListSub.push(
+              {
+                stepseq: j + 1,
+                stepcode: i.stepcode,
+                stepprice: i.stepprice,
+                isbott: j === 0 ? 'Y' : 'N',
+                isend: j === this.stepTableData.length - 1 ? 'Y' : 'N'
+              }
+            )
+          })
+
+          const data = {
+            wostatus: this.dialogForm.mesorderstus, // 宸ュ崟鐘舵��
+            wocode: this.dialogForm.mesordercode, // 宸ュ崟鍙�
+            wotype: this.dialogForm.ordertype, // 宸ュ崟绫诲瀷
+            sourceid: this.dialogForm.sourceorderid, // 婧愬崟id
+            sourcewo: this.dialogForm.sourceorder, // 婧愬崟鍗曞彿
+            partcode: this.dialogForm.partcode, // 浜у搧缂栧彿
+            wkshopcode: this.dialogForm.wkshopcode,
+            woqty: this.dialogForm.mesqty, // 宸ュ崟鏁伴噺
+            deliverydate: this.dialogForm.deliverydate, // 浜や粯鏃堕棿
+            data_sources: this.dialogForm.data_sources, // 鏁版嵁鏉ユ簮
+            isstep: workListSub.length > 0 ? 'Y' : 'N', //
+            workListSub
+          }
+
+          this.$store.state.app.buttonIsDisabled = true
+          AddUpdateMesOrder(data, this.operation === 'add' ? 'Add' : 'Update').then(res => {
+            if (res.code === '200') {
+              this.dialogVisible = false
+              // this.handlePrint()
+              this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '娲惧彂鎴愬姛锛�')
+              this.getMesOrderClosedSearch()
+              this.$store.state.app.buttonIsDisabled = false
+            } 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 - 295
+        if (window.innerHeight < 769) {
+          this.tableHeight = this.tableHeight - 20
+        }
+        this.isIpad = window.innerHeight < 769 && window.innerWidth < 1367
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    // 宸ヨ壓璺嚎鏀惧ぇ闀滅偣鍑�
+    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(wo_code) {
+      // const number = Math.random() * Math.random()
+      // this.number = number === 0 ? (10 + Math.random()) : number
+      // console.log(number)
+
+      const data2 = {
+        mesordercode: wo_code || this.dialogForm.mesordercode
+      }
+      MesOrderPrintSearch(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 = localStorage.getItem('username') // 鎵撳嵃浜哄憳
+          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 = {}
+      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,
+            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.tableDataDetail.length ? item.stepname : this.tableDataDetail[item.seq].stepname,
+            operator: getCookie('username'),
+            operatorTime: handleDatetime2(new Date())
+          }
+          this.$nextTick(() => {
+            console.log(this.qrForm.qrvalue, 3333)
+            this.bindQRCode2(this.qrForm.qrvalue)
+
+            const div = document.getElementById('qrCode2')
+            // 杩欎箞澶氫唬鐮佸彧闇�瑕佽繖涓�鍙ュ疄鐜版垜浠墍闇�瑕佺殑鍔熻兘锛屽畾浣峝iv婊氬姩鏉′綅缃湪搴曢儴锛宻crollHeight璁$畻鍑篸iv鐨勯珮搴︼紝鍐峴crollTop 璁剧疆婊氬姩鏉$殑楂樺害涓哄灏�
+            div.scrollTop = div.scrollHeight // 婊氬姩鏉′綅浜庢渶搴曢儴
+            // div.scrollTop = 0 // 婊氬姩鏉′綅浜庢渶椤堕儴
+          })
+        }
+      })
+
+      // this.dialogVisibleTask = false
+      this.dialogVisible2 = true
+      console.log(this.qrForm, 1111)
+    },
+    // 琛ユ墦鐢熶骇鍏ュ簱鏉$爜
+    async getProductInHouseLabCode(ordercode) {
+      const res = await ProductInHouseLabCode({ ordercode })
+      console.log(res)
+      this.isLastPrint = true
+
+      this.lastPrintArr = res.data
+
+      this.dialogVisible2 = true
+
+      // 鐢熶骇浜岀淮鐮�
+      this.$nextTick(() => {
+        this.lastPrintArr.forEach((i, index) => {
+          i.checked = false
+          new QRCode(this.$refs.qrCodeDiv2[index], {
+            text: i.inbarcode,
+            width: this.printSize !== 2 ? 60 : 55,
+            height: this.printSize !== 2 ? 60 : 55,
+            colorDark: '#000', // 浜岀淮鐮侀鑹�
+            colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊
+            correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H
+          })
+        })
+      })
+    },
+    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 = ''
+      this.isLastPrint = false
+      this.lastPrintArr = []
+      this.lastPrintArrSelected = []
+    },
+    // 鐢熸垚浜岀淮鐮�    宸ュ簭鏍囩浜岀淮鐮�
+    bindQRCode2(text) {
+      new QRCode(this.$refs.qrCodeDiv2, {
+        text: text,
+        width: this.printSize !== 2 ? 60 : 55,
+        height: this.printSize !== 2 ? 60 : 55,
+        colorDark: '#000', // 浜岀淮鐮侀鑹�
+        colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊
+        correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H
+      })
+    },
+    // 鎶ュ簾琛ュ崟鎯呭喌涓嬪彲鐐瑰嚮閫夋嫨
+    mesordertsourcesearchclick() {
+      if (this.dialogForm.ordertype === 'PO') {
+        return this.$message.info('宸ュ崟绫诲瀷涓烘姤搴熻ˉ鍗曟儏鍐典笅鍙�夋嫨锛�')
+      }
+
+      this.getMesBadOrderSearch()
+
+      this.dialogVisibleSource = true
+    },
+    async getMesBadOrderSearch() {
+      // let tempDate2 = this.sourceForm.paystartdate
+      // if (tempDate2.length > 0) {
+      //   tempDate2 = handleDatetime(tempDate2[0]) + '~' + handleDatetime(tempDate2[1])
+      // }
+
+      let tempDate = this.sourceForm.createdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        mesordercode: this.sourceForm.mesordercode, // 宸ュ崟缂栧彿
+        sourceorder: this.sourceForm.sourceorder, // 璁㈠崟璁㈠崟鍙�
+        saleordercode: this.sourceForm.sourceorder, // 璁㈠崟璁㈠崟鍙�
+        partcode: this.sourceForm.partcode, // 浜у搧缂栫爜
+        partname: this.sourceForm.partname, // 浜у搧鍚嶇О
+        partspec: this.sourceForm.partspec, // 浜у搧瑙勬牸
+        // paystartdate: tempDate2, // 浜や粯鏃堕棿
+        // payenddate: tempDate, // 浜や粯鏃堕棿
+        creatuser: this.sourceForm.creatuser, // 鍒涘缓浜哄憳
+        createdate: tempDate, // 鍒涘缓鏃堕棿
+
+        prop: this.sourceForm.prop, // 鎺掑簭瀛楁
+        order: this.sourceForm.order, // 鎺掑簭瀛楁
+        page: this.sourceForm.page, // 绗嚑椤�
+        rows: this.sourceForm.rows // 姣忛〉澶氬皯鏉�
+
+      }
+
+      const res = await MesBadOrderSearch(data)
+      this.sourceTableData = res.data
+      this.sourceFormTotal = res.count
+    },
+    // 鍗曢�夋閫変腑鑾峰彇褰撳墠琛屼俊鎭�
+    // getCurrentRowSource2(id) {
+    //   this.radioSelectedId = id
+    // },
+    // 鍗曢�夋閫変腑鑾峰彇褰撳墠琛屼俊鎭�
+    getCurrentRowSource(row, event, column) {
+      this.radioSelectedId = row.id
+      this.dialogForm.mesqty = row.bad_qty
+    },
+    sourceSearch() {
+      this.getMesBadOrderSearch()
+    },
+    sourceReset() {
+      this.sourceForm.mesordercode = ''
+      this.sourceForm.sourceorder = ''
+      this.sourceForm.partcode = ''
+      this.sourceForm.partname = ''
+      this.sourceForm.partspec = ''
+      // this.sourceForm.paystartdate = ''
+      // this.sourceForm.payenddate = ''
+      this.sourceForm.creatuser = ''
+      this.sourceForm.createdate = ''
+      this.getMesBadOrderSearch()
+    },
+    dialogVisibleSourceClose() {
+      this.radioSelectedId = ''
+
+      this.sourceForm.mesordercode = ''
+      this.sourceForm.sourceorder = ''
+      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_code
+          this.dialogForm.partcode = item.partcode
+          this.dialogForm.partspec = item.partspec
+        }
+      })
+      this.dialogVisibleSource = false
+    },
+    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.getMesOrderClosedSearch()
+        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)
+    },
+    //  琛岀偣鍑讳簨浠�
+    async rowClick(row, event, column) {
+      const data = {
+        sourceid: row.sourceid,
+        sourcewo: row.m_po,
+        wocode: row.wo_code,
+        data_sources: row.data_sources
+      }
+      const { data: res } = await UpdateMesOrderStepSearch(data)
+      this.tableDataDetail = res.stepdata
+    },
+    // 宸ュ簭鍒犻櫎
+    stepDel(row) {
+      console.log(row)
+      const index = this.stepSelectedValue.findIndex(i => i === row.stepcode)
+      this.stepSelectedValue.splice(index, 1)
+    },
+    // 鎵撳嵃宸ュ崟
+    printOrder() {
+
+    },
+    //  閫夋嫨鎵撳嵃灏哄鐨勫ぇ灏忓�兼敼鍙�
+    printSizeChange(val) {
+      this.$nextTick(() => {
+        this.bindQRCode2(this.qrForm.qrvalue)
+      })
+    },
+    printMe2StylePadding(val) {
+      if (val === 0) {
+        return { paddingLeft: '10px', paddingTop: '5px' }
+      }
+      if (val === 5) {
+        return { paddingLeft: '15px', paddingTop: '7px' }
+      }
+    },
+
+    inbarcodeChange(val, item) {
+      // 褰� lastPrintArrSelected涓湭鏈夊綋鍓嶅嬀閫夌殑鍊兼槸  璧皃ush  item  鍚﹀垯璧拌繃婊ゆ帀item
+      if (val) {
+        this.lastPrintArrSelected.push(item)
+      } else {
+        this.lastPrintArrSelected = this.lastPrintArrSelected.filter(i => i.inbarcode !== item.inbarcode)
+      }
+
+      // 鐢熶骇浜岀淮鐮�
+      this.$nextTick(() => {
+        this.lastPrintArrSelected.forEach((i, index) => {
+          console.log(i.inbarcode, 'i.inbarcode')
+          new QRCode(this.$refs.qrCodeDiv3[index], {
+            text: i.inbarcode,
+            width: 60,
+            height: 60,
+            colorDark: '#000', // 浜岀淮鐮侀鑹�
+            colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊
+            correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H
+          })
+        })
+
+        // const div = document.getElementById('qrCode3')
+        // div.scrollTop = 0 // 婊氬姩鏉′綅浜庢渶搴曢儴
+
+        this.$forceUpdate()
+      }, 500)
+    },
+    stepSelectedValueChange(val) {
+      // console.log(val, 123)
+    }
+  }
 }
 </script>
+<style>
+.sortable-ghost {
+  opacity: .8;
+  color: #fff !important;
+  background: #42b983 !important;
+}
+</style>
+<style lang="scss" scoped>
+$main_color: #42b983;
 
-<style scoped>
+.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;
+}
+
+::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;
+}
+
+//::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;
+  //}
+}
+
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.tableFixed {
+  ::v-deep .el-table__fixed-right {
+    height: 100% !important;
+  }
+
+  ::v-deep .el-table__fixed {
+    height: 100% !important;
+  }
+}
+</style>
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
 </style>
diff --git a/src/views/workOrder/workOrderList.vue b/src/views/workOrder/workOrderList.vue
index 4398e56..af688a1 100644
--- a/src/views/workOrder/workOrderList.vue
+++ b/src/views/workOrder/workOrderList.vue
@@ -1,11 +1,3486 @@
-<template />
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+
+      <div class="bodyTopButtonGroup" style="justify-content: space-between">
+        <div style="display: flex">
+          <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>
+          <el-button v-waves type="success" icon="el-icon-connection" @click="send">娲惧彂</el-button>
+        </div>
+
+        <!--        <el-button v-waves icon="el-icon-switch-button" @click="orderClose">鍏抽棴宸ュ崟</el-button>-->
+      </div>
+
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">
+              <el-select
+                v-model="form.wkshopcode"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in wkshopcodeArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <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 v-show="isExpandForm" label="閿�鍞鍗�" style="display: flex;">
+              <el-input v-model="form.saleordercode" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" 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 v-show="isExpandForm" 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
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :data="tableData"
+          :height="isExpandForm?tableHeight:(tableHeight+80)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px'}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+          @row-click="rowClick"
+          @selection-change="handleSelectionChange"
+        >
+          <el-table-column
+            type="selection"
+            width="50"
+            :selectable="selected"
+          />
+          <el-table-column
+            prop="rowNum"
+            width="50"
+            label="搴忓彿"
+            fixed
+          />
+          <el-table-column
+            prop="status"
+            label="宸ュ崟鐘舵��"
+            sortable="custom"
+            width="110"
+            show-tooltip-when-overflow
+          >
+            <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>
+              <div v-if="row.status==='NOSCHED'">寰呮帓绋�</div>
+              <div v-if="row.status==='SCHED'">宸叉帓绋�</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wo_code"
+            label="宸ュ崟缂栧彿"
+            show-tooltip-when-overflow
+            sortable="custom"
+            min-width="160"
+          />
+          <el-table-column
+            prop="m_po"
+            label="婧愬崟鍗曞彿"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="160"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.m_po">{{ row.m_po }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="saleOrderCode"
+            label="閿�鍞鍗�"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="160"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wotype"
+            label="鍗曟嵁绫诲瀷"
+            sortable="custom"
+            show-tooltip-when-overflow
+            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="浜у搧缂栫爜"
+            show-tooltip-when-overflow
+            sortable="custom"
+            min-width="120"
+          />
+          <el-table-column
+            prop="partname"
+            min-width="150"
+            label="浜у搧鍚嶇О"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partspec"
+            label="浜у搧瑙勬牸"
+            sortable="custom"
+            width="110"
+            show-tooltip-when-overflow
+          >
+            <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"
+            show-tooltip-when-overflow
+            width="100"
+          />
+          <el-table-column
+            prop="clerkuser"
+            label="閿�鍞笟鍔″憳"
+            sortable="custom"
+            show-tooltip-when-overflow
+            width="150"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.clerkuser">{{ row.clerkuser }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wkshp_name"
+            label="鐢熶骇杞﹂棿"
+            show-tooltip-when-overflow
+            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="saleOrderDeliveryDate"
+            label="棰勮浜や粯鏃ユ湡"
+            sortable="custom"
+            width="130"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.saleOrderDeliveryDate">{{ row.saleOrderDeliveryDate.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            prop="data_sources"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            label="鏁版嵁鏉ユ簮"-->
+          <!--            sortable="custom"-->
+          <!--            width="120"-->
+          <!--          />-->
+
+          <el-table-column
+            prop="lm_user"
+            show-tooltip-when-overflow
+            label="鍒涘缓浜哄憳"
+            sortable="custom"
+            width="120"
+          />
+          <el-table-column
+            prop="lm_date"
+            label="鍒涘缓鏃堕棿"
+            show-tooltip-when-overflow
+            width="160"
+            sortable="custom"
+          />
+          <el-table-column
+            label="鎿嶄綔"
+            width="160"
+            fixed="right"
+          >
+            <template slot-scope="{row}">
+              <div class="operationClass">
+                <el-tooltip class="item" effect="dark" content="淇敼" placement="top">
+                  <i
+                    class="el-icon-edit-outline"
+                    :style="{color:$store.state.settings.theme}"
+                    @click.stop="edit('edit',row)"
+                  />
+                </el-tooltip>
+
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                  <i class="el-icon-delete" :style="{color:$store.state.settings.theme}" @click.stop="del(row)" />
+                </el-tooltip>
+
+                <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
+                    :style="{color:$store.state.settings.theme}"
+                    class="el-icon-printer"
+                    style="cursor: pointer;margin-right: 15px"
+                    @click.stop="handlePrint(row.wo_code)"
+                  />
+                </el-tooltip>
+
+                <el-tooltip class="item" effect="dark" content="璇︽儏" placement="top">
+                  <i
+                    class="el-icon-view"
+                    style="cursor: pointer;"
+                    :style="{color:$store.state.settings.theme}"
+                    @click.stop="edit('view',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,jumper"
+        popper-class="select_bottom"
+        @pagination="getMesOrderSearch"
+      />
+
+      <div class="elTableDiv">
+        <el-table
+          :data="tableDataDetail"
+          border
+          height="210px"
+          :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"
+            show-tooltip-when-overflow
+            label="宸ュ崟缂栧彿"
+            width="160"
+          />
+
+          <!--          <el-table-column-->
+          <!--            prop="partcode"-->
+          <!--            label="浜у搧缂栫爜"-->
+          <!--            width="150"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--          />-->
+          <!--          <el-table-column-->
+          <!--            prop="partname"-->
+          <!--            label="浜у搧鍚嶇О"-->
+          <!--            width="200"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--          />-->
+
+          <el-table-column
+            label="宸ュ簭缂栫爜"
+            prop="step_code"
+            show-tooltip-when-overflow
+            width="150"
+          />
+          <el-table-column
+            label="宸ュ簭鍚嶇О"
+            show-tooltip-when-overflow
+            prop="stepname"
+            width="150"
+          />
+          <el-table-column
+            label="宸ュ簭鍗曚环"
+            show-tooltip-when-overflow
+            prop="stepprice"
+          />
+          <el-table-column
+            label="宸茬敓浜ф暟閲�"
+            show-tooltip-when-overflow
+            prop="produceq_qty"
+          />
+          <el-table-column
+            label="鍚堟牸鏁伴噺"
+            show-tooltip-when-overflow
+            prop="good_qty"
+          />
+          <el-table-column
+            label="涓嶈壇鏁伴噺"
+            show-tooltip-when-overflow
+            prop="ng_qty"
+          />
+          <el-table-column
+            label="宸ュ簾鏁伴噺"
+            show-tooltip-when-overflow
+            prop="laborbad_qty"
+          />
+          <el-table-column
+            label="鏂欏簾鏁伴噺"
+            show-tooltip-when-overflow
+            prop="materielbad_qty"
+          />
+          <el-table-column
+            label="寰呬骇鏁伴噺"
+            show-tooltip-when-overflow
+            prop="delive_qty"
+          />
+          <!--          <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-->
+          <!--                    v-if="tableDataDetail.length!==row.seq"-->
+          <!--                    class="el-icon-printer"-->
+          <!--                    :style="{color:$store.state.settings.theme}"-->
+          <!--                    style="cursor: pointer;margin-right: 15px"-->
+          <!--                    @click="supplementSmallClick(row)"-->
+          <!--                  />-->
+          <!--                </el-tooltip>-->
+          <!--                <el-tooltip class="item" effect="dark" content="琛ユ墦鐢熶骇鍏ュ簱鏉$爜" placement="top">-->
+          <!--                  <i-->
+          <!--                    v-if="tableDataDetail.length===row.seq"-->
+          <!--                    class="  el-icon-camera"-->
+          <!--                    :style="{color:$store.state.settings.theme}"-->
+          <!--                    style="cursor: pointer;margin-right: 15px"-->
+          <!--                    @click="getProductInHouseLabCode(row.wo_code)"-->
+          <!--                  />-->
+          <!--                </el-tooltip>-->
+          <!--              </div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+        </el-table>
+      </div>
+    </div>
+    <!--鏂板娲惧彂瀵硅瘽妗�-->
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':(operation==='edit'?'淇敼':'璇︽儏')"
+      :visible.sync="dialogVisible"
+      width="1200px"
+      top="8vh"
+      :close-on-click-modal="false"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <el-form
+        ref="dialogForm"
+        inline
+        :rules="dialogFormRules"
+        :model="dialogForm"
+        label-width="110px"
+      >
+
+        <el-divider content-position="left">鍩烘湰淇℃伅</el-divider>
+
+        <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-input v-model="dialogForm.mesordercode" disabled 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: 200px"
+          >
+            <el-button
+              slot="append"
+              icon="el-icon-search"
+              :disabled="operation!=='add'||dialogForm.ordertype==='PO'"
+              @click="mesordertsourcesearchclick"
+            />
+          </el-input>
+        </el-form-item>
+        <!--            <el-button-->
+        <!--              v-waves-->
+        <!--              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(/[^\d]/g,'')"
+            style="width: 200px"
+          />
+          <!--          oninput="value=value.replace(/[^0-9*.{1}0-9*]/g,'')"-->
+        </el-form-item>
+        <el-form-item
+          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+'/'+item.partcode"
+              :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 v-if="operation!=='add'" 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>
+        <!--        :disabled="dialogForm.partcode===''"-->
+        <el-form-item label="鎵�灞炶溅闂�" prop="wkshopcode">
+          <el-select
+            v-model="dialogForm.wkshopcode"
+            filterable
+            :popper-append-to-body="false"
+            style="width: 200px;"
+            placeholder="璇烽�夋嫨杞﹂棿"
+            @change="getMesOrderNewStepContent"
+          >
+            <el-option
+              v-for="item in wkshopArr"
+              :key="item.torg_code"
+              :label="item.torg_name"
+              :value="item.torg_code"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="棰勮浜や粯鏃ユ湡" prop="deliverydate">
+          <el-date-picker
+            v-model="dialogForm.deliverydate"
+            type="date"
+            size="mini"
+            :clearable="false"
+            class="dateMini"
+            :picker-options="pickerOptions"
+            format="yyyy-MM-dd"
+            value-format="yyyy-MM-dd"
+            placeholder="閫夋嫨鏃ユ湡"
+          />
+          <!--          :disabled="dialogForm.deliverydate"-->
+        </el-form-item>
+
+        <el-divider content-position="left">宸ュ簭淇℃伅</el-divider>
+
+        <div style="display: flex;align-items: center">
+          <div style="font-weight: bolder">宸ュ簭閫夋嫨锛�</div>
+          <el-drag-select
+            v-model="stepSelectedValue"
+            style="width:930px;"
+            multiple
+            placeholder="璇烽�夋嫨鐩稿搴斿伐搴�"
+            @change="stepSelectedValueChange"
+          >
+            <!--            :disabled="!(dialogForm.mesorderstus==='NEW'||dialogForm.mesorderstus==='ALLO')"-->
+            <el-option
+              v-for="item in stepSelectArr"
+              :key="item.stepcode"
+              :label="item.stepname"
+              :value="item.stepcode"
+            />
+          </el-drag-select>
+        </div>
+
+        <el-table
+          ref="stepTableDataRef"
+          :data="stepTableData"
+          border
+          :row-class-name="tableRowClassName"
+          height="300"
+          style="width: 100%;margin-top: 15px;"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          row-key="stepcode"
+        >
+          <el-table-column
+            type="index"
+            label="搴忓彿"
+            width="50"
+          />
+          <el-table-column
+            prop="stepcode"
+            show-tooltip-when-overflow
+            label="宸ュ簭缂栫爜"
+          />
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="stepprice"
+            label="鐢熶骇鍗曚环"
+            show-tooltip-when-overflow
+          >
+            <template slot-scope="{row}">
+              <el-input
+                v-model="row.stepprice"
+                placeholder="璇疯緭鍏ュ伐搴忓崟浠�"
+                oninput="value=value.replace(/[^0-9.]/g,'')"
+                style="width: 100%"
+                @click.stop=""
+              />
+            </template>
+          </el-table-column>
+          <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-rank"
+                  :style="{color:$store.state.settings.theme}"
+                  style="cursor: move"
+                />
+                <!--                </el-tooltip>-->
+                <!--                @click="edit('edit',row)"-->
+
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                  <i
+                    class="el-icon-delete"
+                    :style="{color:$store.state.settings.theme}"
+                    style="margin-left: 15px;"
+                    @click="stepDel(row)"
+                  />
+                </el-tooltip>
+              </div>
+            </template>
+          </el-table-column>
+        </el-table>
+
+      </el-form>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <!--          <el-button v-waves v-if="operation==='add'" type="primary" @click="dialogVisibleConfirmPreview('add')">棰勮</el-button>-->
+          <el-button
+            v-if="operation!=='view'&&(dialogForm.mesorderstus==='NEW'||dialogForm.mesorderstus==='ALLO')"
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!-- 宸ュ簭浠诲姟瀵硅瘽妗�-->
+    <el-dialog
+      v-el-drag-dialog
+      title="宸ュ簭浠诲姟"
+      :visible.sync="dialogVisibleTask"
+      width="840px"
+      top="15vh"
+      class="dialogVisibleSearch"
+      :close-on-click-modal="false"
+      @close="dialogVisibleTaskClose"
+    >
+      <el-button
+        v-waves
+        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"
+          show-tooltip-when-overflow
+          label="宸ュ崟缂栧彿"
+          width="200"
+        />
+        <el-table-column
+          prop="stepcode"
+          label="宸ュ簭缂栫爜"
+          show-tooltip-when-overflow
+        />
+        <el-table-column
+          prop="stepname"
+          show-tooltip-when-overflow
+          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"
+          show-tooltip-when-overflow
+          label="浠诲姟鏁伴噺"
+        />
+        <el-table-column
+          prop="good_qty"
+          show-tooltip-when-overflow
+          label="鍚堟牸鏁伴噺"
+        />
+        <el-table-column
+          prop="ng_qty"
+          show-tooltip-when-overflow
+          label="涓嶈壇鏁伴噺"
+        />
+        <el-table-column
+          label="鎿嶄綔"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button v-waves 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 v-waves @click="dialogVisibleBack">杩� 鍥�</el-button>
+          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
+    <!-- 婧愬崟鍗曞彿瀵硅瘽妗�-->
+    <el-dialog
+      v-el-drag-dialog
+      title="婧愬崟鍗曞彿"
+      :visible.sync="dialogVisibleSource"
+      width="1200px"
+      top="10vh"
+      class="dialogVisibleSearch"
+      :close-on-click-modal="false"
+      @close="dialogVisibleSourceClose"
+    >
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="sourceForm"
+          :model="sourceForm"
+          label-width="100px"
+          inline
+          style="display: flex;justify-content: space-between"
+        >
+          <div class="elForm" style="justify-content: flex-start">
+            <!--            <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="缁撴潫鏃ユ湡"-->
+            <!--              />-->
+            <!--              &lt;!&ndash;              :picker-options="expireTimeOption"&ndash;&gt;-->
+
+            <!--            </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.mesordercode"-->
+            <!--                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="杞﹂棿鍚嶇О" style=" display: flex;">
+              <el-select
+                v-model="sourceForm.wkshopcode"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in wkshopcodeArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="宸ュ崟缂栧彿" style=" display: flex;">
+              <el-input v-model="sourceForm.mesordercode" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item 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>
+
+            <el-form-item
+              v-show="isExpandDialog"
+              label="鍒涘缓鏃堕棿"
+              label-width="100px"
+              style=" display: flex;font-size: 14px;margin-top: 3px"
+            >
+              <el-date-picker
+                v-model="sourceForm.createdate"
+                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>
+
+          </div>
+
+          <div style="display: flex;align-items: start;margin-top: 3px;z-index: 2;justify-content: end">
+            <el-button v-waves type="primary" icon="el-icon-search" @click="sourceSearch">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="sourceReset">閲嶇疆</el-button>
+          </div>
+
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverTypeDialog==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandDialog?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverTypeDialog=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverTypeDialog==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandDialog?'doubleDown':'doubleUp'"
+            @click="isExpandDialog=!isExpandDialog"
+            @mouseout="mouseHoverTypeDialog=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          :data="sourceTableData"
+          :height="isExpandDialog?(tableHeight+100)+'px':(tableHeight+140)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:isExpandDialog?(tableHeight+100)+'px':(tableHeight+140)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sourceSortChange"
+          @row-click="getCurrentRowSource"
+        >
+          <!--          <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="宸ュ崟鐘舵��"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            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
+            label="宸ュ崟缂栧彿"
+            prop="wo_code"
+            show-tooltip-when-overflow
+            min-width="150"
+            sortable="custom"
+          >
+            <!--            <template slot-scope="{row}">-->
+            <!--              <div v-if="row.m_po">{{ row.m_po }}</div>-->
+            <!--              <div v-else>{{ row.wo_code }}</div>-->
+            <!--            </template>-->
+          </el-table-column>
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="150"
+          />
+          <el-table-column
+            prop="partname"
+            label="浜у搧鍚嶇О"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="150"
+          />
+          <el-table-column
+            prop="partspec"
+            label="浜у搧瑙勬牸"
+            show-tooltip-when-overflow
+            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="plan_qty"
+            label="浠诲姟鏁伴噺"
+            width="150"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+
+          <el-table-column
+            prop="laborbad_qty"
+            label="宸ュ簾鏁伴噺"
+            width="150"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="materielbad_qty"
+            label="鏂欏簾鏁伴噺"
+            width="150"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+
+          <!--          <el-table-column-->
+          <!--            prop="relse_qty"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            label="宸蹭笅鍗曟暟閲�"-->
+          <!--            width="150"-->
+          <!--            sortable="custom"-->
+          <!--          />-->
+          <el-table-column
+            prop="wkshp_name"
+            label="鐢熶骇杞﹂棿"
+            show-tooltip-when-overflow
+            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="plan_startdate"-->
+          <!--            label="棰勮寮�宸ユ椂闂�"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            sortable="custom"-->
+          <!--            width="130"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div v-if="row.plan_startdate">{{ row.plan_startdate.substring(0, 11) }}</div>-->
+          <!--              <div v-else>/</div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <!--          <el-table-column-->
+          <!--            prop="plan_enddate"-->
+          <!--            label="棰勮瀹屽伐鏃堕棿"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            sortable="custom"-->
+          <!--            width="130"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div v-if="row.plan_enddate">{{ row.plan_enddate.substring(0, 11) }}</div>-->
+          <!--              <div v-else>/</div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+          <el-table-column
+            prop="lm_user"
+            label="鍒涘缓浜哄憳"
+            show-tooltip-when-overflow
+            sortable="custom"
+            width="150"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.lm_user">{{ row.lm_user }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="lm_date"
+            label="鍒涘缓鏃堕棿"
+            show-tooltip-when-overflow
+            width="130"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.lm_date">{{ row.lm_date.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 v-waves 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="getMesBadOrderSearch"
+      />
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleSourceBack">杩� 鍥�</el-button>
+          <el-button v-waves type="primary" @click="dialogVisibleSourceConfirm">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--鎵撳嵃棰勮瀵硅瘽妗�  澶ф爣绛�-->
+    <el-dialog
+      v-el-drag-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="80px"
+              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">
+                  <!--                  {{ localStorage.getItem('username') }}-->
+                  {{ formApprove.routename }}
+                </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:90px;
+            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 v-waves @click="dialogVisibleBackPreview">杩� 鍥�</el-button>
+          <!--            <el-button v-waves v-if="operation==='add'" type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+          <!--            <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�/鎵� 鍗�</el-button>-->
+          <el-button v-waves v-print="printObj" type="primary">鎵� 鍗�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--鎵撳嵃棰勮椤甸潰  灏忔爣绛�-->
+    <el-dialog
+      v-el-drag-dialog
+      title="棰勮"
+      :visible.sync="dialogVisible2"
+      width="1000"
+      top="10vh"
+      :close-on-click-modal="false"
+      @close="dialogVisible2Close"
+    >
+      <div style="height: 650px;overflow:auto;">
+        <!--      涓嬫媺妗嗛�夋嫨鎵撳嵃灏哄-->
+        <div v-if="!isLastPrint" style="display: flex;align-items: center;margin: 0 0 20px 0">
+          <div>閫夋嫨鎵撳嵃灏哄锛�</div>
+          <el-select
+            v-model="printSize"
+            :popper-append-to-body="false"
+            style="width: 200px"
+            placeholder="璇烽�夋嫨"
+            @change="printSizeChange"
+          >
+
+            <el-option
+              v-for="item in printSizeSelectArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </div>
+        <!-- 瑕佹墦鍗扮殑鍖哄煙 -->
+        <!--      <div id="printMe2" :style="{paddingLeft:'10px',paddingTop: '5px'}">-->
+        <div v-if="!isLastPrint" :style="printMe2StylePadding(printSize)">
+          <!--      80 * 50-->
+          <div
+            v-if="printSize===0"
+            style="display: flex;width: 280px;height: 160px;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: 96px;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: 32px;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: 32px;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>
+          <!--      78 * 60    -->
+          <div
+            v-if="printSize===1"
+            style="display: flex;width: 280px;height: 160px;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: 96px;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: 32px;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: 32px;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>
+          <!--      60 * 40    -->
+          <div
+            v-if="printSize===2"
+            style="display: flex;width: 220px;height: 130px;border: 1px solid #000;text-align: center;font-size: 12px"
+          >
+
+            <div style="width: 70px;display: flex;flex-direction: column;border-right: 1px solid #000">
+              <div
+                style="display: flex;height: 60%;border-bottom:1px solid #000;
+              justify-content: center;align-items: center;position: relative"
+              >
+                <div
+                  id="qrCode2"
+                  ref="qrCodeDiv2"
+                  style="overflow-y: hidden;height:71%;position: absolute;left: 7px;"
+                />
+              </div>
+              <div
+                style="display: flex;height:  20%;justify-content: flex-start;border-bottom:1px solid #000;align-items: center"
+              >
+                <div style="margin-left: 3px; ">鏁伴噺:{{ qrForm.startqty }}</div>
+              </div>
+              <div style="display: flex;height:  20%;justify-content: flex-start;align-items: center;">
+                <div style="margin-left: 3px; ">鎿嶄綔:{{ qrForm.operator }}</div>
+
+              </div>
+            </div>
+
+            <div style="width:150px;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="margin-left: 3px;">缂栧彿:{{ 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="margin-left: 3px;">浜у搧缂栫爜:{{ 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="margin-left: 3px;">浜у搧鍚嶇О:{{ 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="margin-left: 3px;">涓嬮亾宸ュ簭:{{ qrForm.nextstepname }}</div>
+
+              </div>
+              <div style="display: flex;height: 20%;justify-content: flex-start;align-items: center;text-align: left">
+                <div style=" margin-left: 3px;">鏃堕棿: {{ qrForm.operatorTime }}</div>
+                <!--                <div>{{ qrForm.operatorTime?qrForm.operatorTime.substring(5):'' }}</div>-->
+                <!--                <div>{{ qrForm.operatorTime }}</div>-->
+              </div>
+
+            </div>
+
+          </div>
+          <div
+            v-if="printSize===5"
+            style="display: flex;width: 140px;height: 80px;border: 1px solid #000;text-align: center;font-size: 10px;"
+          >
+
+            <div v-if="false" style="width: 45px;display: flex;flex-direction: column;border-right: 1px solid #000">
+              <div
+                style="display: flex;height: 60px;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: 20px;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: 20px;justify-content: flex-start;align-items: center">
+                <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div>
+                {{ qrForm.operator }}
+              </div>
+            </div>
+
+            <div style="width:100%;display: flex;flex-direction: column;">
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: center;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: center;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: center;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: center;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: center;align-items: center;text-align: left">
+                <!--              <div style="width: 60px;margin-left: 5px;">澶勭悊鏃堕棿:</div>-->
+                <div>{{ qrForm.operatorTime }}</div>
+              </div>
+
+            </div>
+
+          </div>
+        </div>
+
+        <div v-if="isLastPrint" style="display: flex;flex-direction: column">
+
+          <div style="display: flex;font-weight: bold;font-size: 16px;margin-bottom: 20px;">
+            <div style="width: 48%;">
+              璇烽�夋嫨鍏ュ簱鏉$爜
+            </div>
+            <div style="width: 48%;margin-left: 4%;">
+              宸查�変腑鐨勫叆搴撴潯鐮�
+            </div>
+          </div>
+
+          <div style="display: flex;">
+            <!--          璇烽�夋嫨鍏ュ簱鏉$爜-->
+            <div style="display: flex;flex-direction: column;height: 600px;overflow: auto;width: 48%;">
+              <div
+                v-for="(item,index) in lastPrintArr"
+                :key="item.inbarcode"
+                :style="{marginTop:index===0?'':'15px'}"
+                style="display: flex;align-items: center;"
+              >
+
+                <!--          v-if="printSize===0"-->
+                <div style="margin-right:40px">
+                  <el-checkbox
+                    :key="item.inbarcode"
+                    v-model="item.checked"
+                    @change="val=>inbarcodeChange(val,item)"
+                  />
+                </div>
+                <div
+                  style="display: flex;width: 280px;height: 160px;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: 96px;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: 32px;justify-content: flex-start;border-bottom:1px solid #000;align-items: center"
+                    >
+                      <div style="margin-left: 5px;width: 28px">鏁伴噺:</div>
+                      {{ item.good_qty }}
+                    </div>
+                    <div style="display: flex;height: 32px;justify-content: flex-start;align-items: center">
+                      <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div>
+                      {{ item.username }}
+                    </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>{{ item.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>{{ item.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>{{ item.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>{{ item.partspec ? item.partspec : '/' }}</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>{{ item.lm_date }}</div>
+                    </div>
+
+                  </div>
+
+                </div>
+
+              </div>
+            </div>
+
+            <!--          宸查�変腑鐨勫叆搴撴潯鐮�-->
+            <div
+              style="display: flex;flex-direction: column;height: 600px;overflow: auto;width: 48%;margin-left: 50px;"
+            >
+              <div id="printMe2">
+                <div
+                  v-for="(item,index) in lastPrintArrSelected"
+                  v-if="item.checked"
+                  :key="item.inbarcode"
+                  :style="{marginTop:index===0?'':'15px'}"
+                  style="display: flex;align-items: center;"
+                >
+                  <div
+                    style="display: flex;width: 280px;height: 160px;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: 96px;border-bottom:1px solid #000;
+                        justify-content: center;align-items: center;position: relative"
+                      >
+                        <div
+                          id="qrCode3"
+                          ref="qrCodeDiv3"
+                          style="overflow-y: hidden;height:60px;position: absolute;left: 14px;"
+                        />
+                      </div>
+                      <div
+                        style="display: flex;height: 32px;justify-content: flex-start;border-bottom:1px solid #000;align-items: center"
+                      >
+                        <div style="margin-left: 5px;width: 28px">鏁伴噺:</div>
+                        {{ item.good_qty }}
+                      </div>
+                      <div style="display: flex;height: 32px;justify-content: flex-start;align-items: center">
+                        <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div>
+                        {{ item.username }}
+                      </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>{{ item.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>{{ item.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>{{ item.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>{{ item.partspec ? item.partspec : '/' }}</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>{{ item.lm_date }}</div>
+                      </div>
+
+                    </div>
+
+                  </div>
+
+                </div>
+              </div>
+
+            </div>
+
+          </div>
+
+        </div>
+
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisible2 = false;">鍙� 娑�</el-button>
+          <el-button v-waves v-print="printObj2" type="primary">鎵� 鍗�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--    宸ヨ壓璺嚎瀵硅瘽妗�-->
+    <el-dialog
+      v-el-drag-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="宸ュ簭缂栫爜"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+            show-tooltip-when-overflow
+          />
+          <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 v-waves @click="routeDialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button v-waves type="primary" @click="routeDialogVisibleConfirm">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
 
 <script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime, handleDatetime2, validateCode } from '@/utils/global'
+import { getCookie } from '@/utils/auth'
+import QRCode from 'qrcodejs2'
+import $ from 'jquery'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import {
+  AddMesOrderCodeSearch,
+  AddUpdateMesOrder, DeleteMesOrder,
+  MesBadOrderSearch, MesOrderDistribution, MesOrderNewStepContent,
+  MesOrderSearch,
+  UpdateMesOrderStepSearch
+} from '@/api/WorkOrder'
+import { PartSelect } from '@/api/ProductModel'
+import { PrentOrganization, PrentOrganizationNoCompany, StepData } from '@/api/GeneralBasicData'
+import Sortable from 'sortablejs'
+import ElDragSelect from '@/components/DragSelect'
+import { MesOrderPrintSearch } from '@/api/GridReport' // base on element-ui
+
 export default {
-  name: 'WorkOrderList'
+  name: 'WorkOrderList',
+  components: {
+    Pagination, ElDragSelect
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      mouseHoverTypeDialog: 'mouseout',
+      isExpandForm: false,
+      isIpad: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      username: '',
+      form: {
+        wkshopcode: '', // 杞﹂棿缂栫爜
+        mesorderstus: '', // 宸ュ崟鐘舵�佺爜
+        mesordercode: '', // 宸ュ崟缂栧彿
+        partcode: '', // 浜у搧缂栫爜
+        ordertype: '', // ordertype
+        sourceorder: '', // 婧愬崟鍗曞彿
+        saleordercode: '', // 閿�鍞鍗�
+        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: '瀹屽伐' }
+        // { code: 'NOSCHED', name: '寰呮帓绋�' },
+        // { code: 'SCHED', name: '宸叉帓绋�' }
+      ],
+      wkshopcodeArr: [],
+      total: 10,
+      tableData: [],
+      dialogVisible: false,
+      dialogForm: {
+        mesorderstus: 'NEW', // 宸ュ崟鐘舵�佺爜
+        mesordercode: '', // 宸ュ崟缂栧彿
+        ordertype: 'PO', // 宸ュ崟绫诲瀷
+        sourceorderid: '', // 婧愬崟id
+        sourceorder: '', // 婧愬崟鍗曞彿
+
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+
+        mesqty: '', // 宸ュ崟鏁伴噺
+        wkshopcode: '', // 鐢熶骇杞﹂棿缂栫爜
+        wkshopname: '', // 鐢熶骇杞﹂棿鍚嶇О
+
+        deliverydate: '', // 浜や粯鏃堕棿
+        data_sources: '', // 鏁版嵁鏉ユ簮
+
+        mesmaxqty: 0// 宸ュ崟鐨勬渶澶у��
+      },
+      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'] }
+        ],
+        deliverydate: [
+          { 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'] }
+        ],
+        isAps: [
+          { required: true, message: '璇烽�夋嫨鏄惁鎺掔▼', trigger: ['blur', 'change'] }
+        ],
+        bomId: [
+          { 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: {
+        wkshopcode: '', // 杞﹂棿缂栫爜
+        mesordercode: '', // 宸ュ崟缂栧彿
+        sourceorder: '', // 璁㈠崟缂栧彿
+        saleordercode: '', // 閿�鍞鍗曞彿
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+        creatuser: '', // 鍒涘缓浜哄憳
+        // paystartdate: '', // 浜や粯鏃堕棿
+        // paystartdate: '', // 棰勮寮�宸ユ椂闂�
+        // payenddate: '', // 棰勮瀹屽伐鏃堕棿
+        createdate: '', // 鍒涘缓鏃堕棿
+
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      sourceFormTotal: 10,
+      radioSelectedId: '',
+      isExpandDialog: false, // 瀵硅瘽妗嗚〃鍗曟槸鍚﹀睍寮�锛岄粯璁や笉灞曞紑
+      dialogVisibleRoute: false,
+      dialogFormRoute: {
+        projectName: '', // 浜у搧鍚嶇О
+        projectCode: '', // 浜у搧浠g爜
+        routeOperationArr: [] // 宸ヨ壓璺嚎闆嗗悎
+      },
+      defaultroute_code: '', // 榛樿宸ヨ壓璺嚎閫変腑鍊�
+      defaultroute_codeArr: '', // 榛樿宸ヨ壓璺嚎鏁扮粍
+      projectTableData: [], // 璁惧鍒楄〃
+      tableDataDetail: [], // 鐐瑰嚮宸ュ崟琛ㄧ殑琛� 鏄剧ず璇︾粏淇℃伅
+      printSize: 0,
+      printSizeSelectArr: [// 瀹�*楂�
+        { code: 0, name: '80*50' },
+        { code: 1, name: '78*60' },
+        { code: 2, name: '60*40' }
+        // { code: 2, name: '50*60' },
+        // { code: 3, name: '50*40' },
+        // { code: 4, name: '50*80' },
+        // { code: 5, name: '40*30' }
+      ],
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now() - 8.64e7
+        }
+      },
+
+      isLastPrint: false, // 鏄惁鏄湯閬撴墦鍗�
+      lastPrintArr: [], // 鏈亾鎵撳嵃鐨勬暟缁�(鎵�鏈�)
+      lastPrintArrSelected: [], // 鏈亾鎵撳嵃鐨勬暟缁�(閫変腑)
+
+      switchButton: false,
+
+      routeStepArr: '',
+
+      stepTableData: [],
+      sortable: null,
+      stepSelectArr: [], // 宸ュ簭涓嬫媺鏁版嵁
+      stepSelectedValue: [], // 涓嬫媺閫変腑鍊�
+
+      multipleSelection: []
+    }
+  },
+  watch: {
+    'stepSelectedValue': {
+      // deep: true,
+      handler: function(val) {
+        // do something with the new and old value of stepSelectedValue
+        console.log(val, 1)
+        const arr = JSON.parse(JSON.stringify(this.stepTableData))
+        const arrStepcode = arr.map(i => i.stepcode)
+        this.stepTableData = []
+        val.forEach(i => {
+          this.stepTableData.push(
+            {
+              stepcode: i,
+              stepname: this.stepSelectArr.find(j => j.stepcode === i).stepname,
+              stepprice: arrStepcode.includes(i) ? arr.find(j => j.stepcode === i).stepprice : 0
+            }
+          )
+        })
+      }
+    }
+  },
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+
+    // this.$nextTick(() => {
+    //   this.setSort()
+    // })
+  },
+  methods: {
+    setSort() {
+      const el = this.$refs.stepTableDataRef.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0]
+      this.sortable = Sortable.create(el, {
+        ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
+        setData: function(dataTransfer) {
+          // to avoid Firefox bug
+          // Detail see : https://github.com/RubaXa/Sortable/issues/1012
+          dataTransfer.setData('Text', '')
+        },
+        onEnd: evt => {
+          const targetRow = this.stepTableData.splice(evt.oldIndex, 1)[0]
+          this.stepTableData.splice(evt.newIndex, 0, targetRow)
+
+          this.stepSelectedValue = this.stepTableData.map(i => i.stepcode)
+          // for show the changes, you can delete in you code
+          // const tempIndex = this.newList.splice(evt.oldIndex, 1)[0]
+          // this.newList.splice(evt.newIndex, 0, tempIndex)
+        }
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    },
+    handleRequest() {
+      this.getMesOrderSearch().then(res => {
+        if (res.code === '200') {
+          this.getSelect()
+          this.getPrentOrganizationNoCompany()
+        }
+      })
+    },
+    async getPrentOrganizationNoCompany() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopcodeArr = res
+    },
+    async getMesOrderSearch() {
+      // let tempDate = this.form.createdate
+      // if (tempDate.length > 0) {
+      //   tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      // }
+
+      const data = {
+        wkshopcode: this.form.wkshopcode,
+        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, // 婧愬崟鍗曞彿
+        saleordercode: this.form.saleordercode, // 閿�鍞鍗�
+        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
+
+      // 鑾峰彇缁勭粐
+      const { data: res2 } = await PrentOrganization()
+      this.wkshopArr = res2
+
+      // 鑾峰彇宸ュ簭
+      const { data: res3 } = await StepData()
+      this.stepSelectArr = res3
+    },
+    // 璁㈠崟鐘舵�佹敼鍙樻椂
+    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.getMesBadOrderSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getMesOrderSearch()
+    },
+
+    // 閲嶇疆
+    reset(val) {
+      this.form.wkshopcode = ''
+      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.ordertype = ''
+      this.form.createdate = ''
+      this.getMesOrderSearch()
+    },
+    // 鏂板鎸夐挳
+    async add(operation) {
+      const { data: res } = await AddMesOrderCodeSearch()
+      this.dialogForm.mesordercode = res
+      this.operation = operation
+      this.dialogVisible = true
+      this.dialogForm.data_sources = 'MES'
+
+      this.$nextTick(() => {
+        this.setSort()
+      })
+    },
+    // 宸ュ簭浠诲姟
+    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
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val.map(i => i.wo_code)
+    },
+
+    selected(row, index) {
+      return row.status === 'NEW' && row.isstep === 'Y'
+    },
+    // 娲惧彂
+    send() {
+      if (this.multipleSelection.length === 0) {
+        return this.$message.info('璇峰厛鍕鹃�夌浉瀵瑰簲鐨勫伐鍗曪紒')
+      }
+
+      this.$confirm('鏄惁纭娲惧彂?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        MesOrderDistribution(this.multipleSelection).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('娲惧彂鎴愬姛!')
+            this.getMesOrderSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堟淳鍙�')
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      if (row.status === 'START' || row.status === 'CLOSED' || row.status === 'SCHED') {
+        return this.$message.info('姝ゅ伐鍗曚笉鍙垹闄わ紒')
+      }
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        const data = {
+          souceid: row.sourceid ? row.sourceid : '',
+          wocode: row.wo_code,
+          m_po: row.m_po,
+          orderqty: row.plan_qty
+        }
+        DeleteMesOrder(data).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getMesOrderSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+
+      this.dialogForm.data_sources = row.data_sources
+      this.dialogForm.mesorderstus = row.status
+      this.dialogForm.mesordercode = row.wo_code
+      this.dialogForm.ordertype = row.wotype
+      this.dialogForm.sourceorderid = row.sourceid
+      this.dialogForm.sourceorder = row.m_po
+      this.dialogForm.partcode = row.partcode
+      this.dialogForm.partname = row.partname
+      this.dialogForm.partspec = row.partspec
+      this.dialogForm.wkshopcode = row.wkshp_code
+      this.dialogForm.deliverydate = row.saleOrderDeliveryDate.substring(0, 11)
+      this.dialogForm.mesqty = row.plan_qty
+
+      const data = {
+        sourceid: this.dialogForm.sourceorderid,
+        sourcewo: this.dialogForm.sourceorder,
+        wocode: this.dialogForm.mesordercode,
+        data_sources: this.dialogForm.data_sources
+      }
+      const { data: res } = await UpdateMesOrderStepSearch(data)
+      this.dialogForm.mesmaxqty = res.canupdate_qty
+
+      if (res.stepdata.length > 0) {
+        res.stepdata.forEach(i => {
+          this.stepTableData.push(
+            {
+              stepcode: i.step_code,
+              stepname: i.stepname,
+              stepprice: i.stepprice
+            }
+          )
+        })
+        this.stepSelectedValue = this.stepTableData.map(i => i.stepcode)
+      } else {
+        const data2 = {
+          wkshopcode: this.dialogForm.wkshopcode,
+          partcode: this.dialogForm.partcode
+        }
+        const { data: res2 } = await MesOrderNewStepContent(data2)
+        if (res2.length > 0) {
+          res2.forEach(i => {
+            this.stepTableData.push(
+              {
+                stepcode: i.step_code,
+                // stepname: i.stepname,
+                stepprice: i.stepprice
+              }
+            )
+          })
+          this.stepSelectedValue = this.stepTableData.map(i => i.stepcode)
+        }
+      }
+
+      this.dialogVisible = true
+    },
+    // 宸ュ崟鍏抽棴浜嬩欢
+    orderClose() {
+      console.log('宸ュ崟鍏抽棴浜嬩欢')
+    },
+    // 瀵硅瘽妗嗕骇鍝佷俊鎭�兼敼鍙�
+    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
+      if (this.dialogForm.wkshopcode) {
+        this.getMesOrderNewStepContent()
+      }
+    },
+    async  getMesOrderNewStepContent() {
+      const data = {
+        wkshopcode: this.dialogForm.wkshopcode,
+        partcode: this.dialogForm.partcode
+      }
+      const { data: res } = await MesOrderNewStepContent(data)
+      // console.log(res)
+      this.stepSelectedValue = []
+      this.stepTableData = []
+      if (res.length > 0) {
+        res.forEach(i => {
+          this.stepTableData.push(
+            {
+              stepcode: i.step_code,
+              // stepname: i.stepname,
+              stepprice: i.stepprice
+            }
+          )
+        })
+        this.stepSelectedValue = this.stepTableData.map(i => i.stepcode)
+      }
+    },
+
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm = {
+        mesorderstus: 'NEW', // 宸ュ崟鐘舵�佺爜
+        mesordercode: '', // 宸ュ崟缂栧彿
+        ordertype: 'PO', // 宸ュ崟绫诲瀷
+        sourceorderid: '', // 婧愬崟id
+        sourceorder: '', // 婧愬崟鍗曞彿
+
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+
+        mesqty: '', // 宸ュ崟鏁伴噺
+        wkshopcode: '', // 鐢熶骇杞﹂棿缂栫爜
+        wkshopname: '', // 鐢熶骇杞﹂棿鍚嶇О
+
+        deliverydate: '', // 浜や粯鏃堕棿
+        data_sources: '' // 鏁版嵁鏉ユ簮
+      }
+      this.stepSelectedValue = []
+      this.stepTableData = []
+      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('婧愬崟鍗曞彿涓嶈兘涓虹┖锛�')
+          }
+
+          if (this.dialogForm.data_sources === 'ERP' && this.dialogForm.mesmaxqty < this.dialogForm.mesqty) {
+            return this.$message.info('姝ゅ伐鍗曠殑鏈�澶т慨鏀规暟鍊间负锛�' + this.dialogForm.mesmaxqty)
+          }
+
+          const workListSub = []
+          this.stepTableData.forEach((i, j) => {
+            workListSub.push(
+              {
+                stepseq: j + 1,
+                stepcode: i.stepcode,
+                stepprice: i.stepprice,
+                isbott: j === 0 ? 'Y' : 'N',
+                isend: j === this.stepTableData.length - 1 ? 'Y' : 'N'
+              }
+            )
+          })
+
+          if (workListSub.length === 0) {
+            return this.$message.info('宸ュ簭涓嶈兘涓虹┖锛�')
+          }
+
+          const data = {
+            wostatus: this.dialogForm.mesorderstus, // 宸ュ崟鐘舵��
+            wocode: this.dialogForm.mesordercode, // 宸ュ崟鍙�
+            wotype: this.dialogForm.ordertype, // 宸ュ崟绫诲瀷
+            sourceid: this.dialogForm.sourceorderid, // 婧愬崟id
+            sourcewo: this.dialogForm.sourceorder, // 婧愬崟鍗曞彿
+            partcode: this.dialogForm.partcode, // 浜у搧缂栧彿
+            wkshopcode: this.dialogForm.wkshopcode,
+            woqty: this.dialogForm.mesqty, // 宸ュ崟鏁伴噺
+            deliverydate: this.dialogForm.deliverydate, // 浜や粯鏃堕棿
+            data_sources: this.dialogForm.data_sources, // 鏁版嵁鏉ユ簮
+            isstep: workListSub.length > 0 ? 'Y' : 'N', //
+            workListSub
+          }
+
+          this.$store.state.app.buttonIsDisabled = true
+          AddUpdateMesOrder(data, this.operation === 'add' ? 'Add' : 'Update').then(res => {
+            if (res.code === '200') {
+              this.dialogVisible = false
+              // this.handlePrint()
+              this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '娲惧彂鎴愬姛锛�')
+              this.getMesOrderSearch()
+              this.$store.state.app.buttonIsDisabled = false
+            } 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
+        this.tableHeight = this.mainHeight - 515
+        if (window.innerHeight < 769) {
+          this.tableHeight = this.tableHeight - 20
+        }
+        this.isIpad = window.innerHeight < 769 && window.innerWidth < 1367
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    // 宸ヨ壓璺嚎鏀惧ぇ闀滅偣鍑�
+    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(wo_code) {
+      // const number = Math.random() * Math.random()
+      // this.number = number === 0 ? (10 + Math.random()) : number
+      // console.log(number)
+
+      const data2 = {
+        mesordercode: wo_code || this.dialogForm.mesordercode
+      }
+      MesOrderPrintSearch(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 = localStorage.getItem('username') // 鎵撳嵃浜哄憳
+          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 = {}
+      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,
+            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.tableDataDetail.length ? item.stepname : this.tableDataDetail[item.seq].stepname,
+            operator: getCookie('username'),
+            operatorTime: handleDatetime2(new Date())
+          }
+          this.$nextTick(() => {
+            console.log(this.qrForm.qrvalue, 3333)
+            this.bindQRCode2(this.qrForm.qrvalue)
+
+            const div = document.getElementById('qrCode2')
+            // 杩欎箞澶氫唬鐮佸彧闇�瑕佽繖涓�鍙ュ疄鐜版垜浠墍闇�瑕佺殑鍔熻兘锛屽畾浣峝iv婊氬姩鏉′綅缃湪搴曢儴锛宻crollHeight璁$畻鍑篸iv鐨勯珮搴︼紝鍐峴crollTop 璁剧疆婊氬姩鏉$殑楂樺害涓哄灏�
+            div.scrollTop = div.scrollHeight // 婊氬姩鏉′綅浜庢渶搴曢儴
+            // div.scrollTop = 0 // 婊氬姩鏉′綅浜庢渶椤堕儴
+          })
+        }
+      })
+
+      // this.dialogVisibleTask = false
+      this.dialogVisible2 = true
+      console.log(this.qrForm, 1111)
+    },
+    // 琛ユ墦鐢熶骇鍏ュ簱鏉$爜
+    async getProductInHouseLabCode(ordercode) {
+      const res = await ProductInHouseLabCode({ ordercode })
+      console.log(res)
+      this.isLastPrint = true
+
+      this.lastPrintArr = res.data
+
+      this.dialogVisible2 = true
+
+      // 鐢熶骇浜岀淮鐮�
+      this.$nextTick(() => {
+        this.lastPrintArr.forEach((i, index) => {
+          i.checked = false
+          new QRCode(this.$refs.qrCodeDiv2[index], {
+            text: i.inbarcode,
+            width: this.printSize !== 2 ? 60 : 55,
+            height: this.printSize !== 2 ? 60 : 55,
+            colorDark: '#000', // 浜岀淮鐮侀鑹�
+            colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊
+            correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H
+          })
+        })
+      })
+    },
+    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 = ''
+      this.isLastPrint = false
+      this.lastPrintArr = []
+      this.lastPrintArrSelected = []
+    },
+    // 鐢熸垚浜岀淮鐮�    宸ュ簭鏍囩浜岀淮鐮�
+    bindQRCode2(text) {
+      new QRCode(this.$refs.qrCodeDiv2, {
+        text: text,
+        width: this.printSize !== 2 ? 60 : 55,
+        height: this.printSize !== 2 ? 60 : 55,
+        colorDark: '#000', // 浜岀淮鐮侀鑹�
+        colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊
+        correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H
+      })
+    },
+    // 鎶ュ簾琛ュ崟鎯呭喌涓嬪彲鐐瑰嚮閫夋嫨
+    mesordertsourcesearchclick() {
+      if (this.dialogForm.ordertype === 'PO') {
+        return this.$message.info('宸ュ崟绫诲瀷涓烘姤搴熻ˉ鍗曟儏鍐典笅鍙�夋嫨锛�')
+      }
+
+      this.getMesBadOrderSearch()
+
+      this.dialogVisibleSource = true
+    },
+    async getMesBadOrderSearch() {
+      // let tempDate2 = this.sourceForm.paystartdate
+      // if (tempDate2.length > 0) {
+      //   tempDate2 = handleDatetime(tempDate2[0]) + '~' + handleDatetime(tempDate2[1])
+      // }
+
+      let tempDate = this.sourceForm.createdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        wkshopcode: this.form.wkshopcode, // 杞﹂棿缂栫爜
+        mesordercode: this.sourceForm.mesordercode, // 宸ュ崟缂栧彿
+        sourceorder: '', // 婧愬崟鍗曞彿
+        saleordercode: '', // 閿�鍞崟鍙�
+        partcode: this.sourceForm.partcode, // 浜у搧缂栫爜
+        partname: this.sourceForm.partname, // 浜у搧鍚嶇О
+        partspec: this.sourceForm.partspec, // 浜у搧瑙勬牸
+        // paystartdate: tempDate2, // 浜や粯鏃堕棿
+        // payenddate: tempDate, // 浜や粯鏃堕棿
+        creatuser: this.sourceForm.creatuser, // 鍒涘缓浜哄憳
+        createdate: tempDate, // 鍒涘缓鏃堕棿
+
+        prop: this.sourceForm.prop, // 鎺掑簭瀛楁
+        order: this.sourceForm.order, // 鎺掑簭瀛楁
+        page: this.sourceForm.page, // 绗嚑椤�
+        rows: this.sourceForm.rows // 姣忛〉澶氬皯鏉�
+
+      }
+
+      const res = await MesBadOrderSearch(data)
+      this.sourceTableData = res.data
+      this.sourceFormTotal = res.count
+    },
+    // 鍗曢�夋閫変腑鑾峰彇褰撳墠琛屼俊鎭�
+    // getCurrentRowSource2(id) {
+    //   this.radioSelectedId = id
+    // },
+    // 鍗曢�夋閫変腑鑾峰彇褰撳墠琛屼俊鎭�
+    getCurrentRowSource(row, event, column) {
+      this.radioSelectedId = row.id
+      this.dialogForm.mesqty = row.bad_qty
+    },
+    sourceSearch() {
+      this.getMesBadOrderSearch()
+    },
+    sourceReset() {
+      this.sourceForm.wkshopcode = ''
+      this.sourceForm.mesordercode = ''
+      this.sourceForm.sourceorder = ''
+      this.sourceForm.partcode = ''
+      this.sourceForm.partname = ''
+      this.sourceForm.partspec = ''
+      // this.sourceForm.paystartdate = ''
+      // this.sourceForm.payenddate = ''
+      this.sourceForm.creatuser = ''
+      this.sourceForm.createdate = ''
+      this.getMesBadOrderSearch()
+    },
+    dialogVisibleSourceClose() {
+      this.radioSelectedId = ''
+
+      this.sourceForm.wkshopcode = ''
+      this.sourceForm.mesordercode = ''
+      this.sourceForm.sourceorder = ''
+      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_code
+          this.dialogForm.partcode = item.partcode
+          this.dialogForm.partspec = item.partspec
+        }
+      })
+      this.dialogVisibleSource = false
+    },
+    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)
+    },
+    //  琛岀偣鍑讳簨浠�
+    async rowClick(row, event, column) {
+      const data = {
+        sourceid: row.sourceid,
+        sourcewo: row.m_po,
+        wocode: row.wo_code,
+        data_sources: row.data_sources
+      }
+      const { data: res } = await UpdateMesOrderStepSearch(data)
+      this.tableDataDetail = res.stepdata
+    },
+    // 宸ュ簭鍒犻櫎
+    stepDel(row) {
+      console.log(row)
+      const index = this.stepSelectedValue.findIndex(i => i === row.stepcode)
+      this.stepSelectedValue.splice(index, 1)
+    },
+    // 鎵撳嵃宸ュ崟
+    printOrder() {
+
+    },
+    //  閫夋嫨鎵撳嵃灏哄鐨勫ぇ灏忓�兼敼鍙�
+    printSizeChange(val) {
+      this.$nextTick(() => {
+        this.bindQRCode2(this.qrForm.qrvalue)
+      })
+    },
+    printMe2StylePadding(val) {
+      if (val === 0) {
+        return { paddingLeft: '10px', paddingTop: '5px' }
+      }
+      if (val === 5) {
+        return { paddingLeft: '15px', paddingTop: '7px' }
+      }
+    },
+
+    inbarcodeChange(val, item) {
+      // 褰� lastPrintArrSelected涓湭鏈夊綋鍓嶅嬀閫夌殑鍊兼槸  璧皃ush  item  鍚﹀垯璧拌繃婊ゆ帀item
+      if (val) {
+        this.lastPrintArrSelected.push(item)
+      } else {
+        this.lastPrintArrSelected = this.lastPrintArrSelected.filter(i => i.inbarcode !== item.inbarcode)
+      }
+
+      // 鐢熶骇浜岀淮鐮�
+      this.$nextTick(() => {
+        this.lastPrintArrSelected.forEach((i, index) => {
+          console.log(i.inbarcode, 'i.inbarcode')
+          new QRCode(this.$refs.qrCodeDiv3[index], {
+            text: i.inbarcode,
+            width: 60,
+            height: 60,
+            colorDark: '#000', // 浜岀淮鐮侀鑹�
+            colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊
+            correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H
+          })
+        })
+
+        // const div = document.getElementById('qrCode3')
+        // div.scrollTop = 0 // 婊氬姩鏉′綅浜庢渶搴曢儴
+
+        this.$forceUpdate()
+      }, 500)
+    },
+    stepSelectedValueChange(val) {
+      // console.log(val, 123)
+    }
+  }
 }
 </script>
+<style>
+.sortable-ghost {
+  opacity: .8;
+  color: #fff !important;
+  background: #42b983 !important;
+}
+</style>
+<style lang="scss" scoped>
+$main_color: #42b983;
 
-<style scoped>
+.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;
+}
+
+::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;
+}
+
+//::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;
+  //}
+}
+
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.tableFixed {
+  ::v-deep .el-table__fixed-right {
+    height: 100% !important;
+  }
+
+  ::v-deep .el-table__fixed {
+    height: 100% !important;
+  }
+}
+</style>
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
 </style>
diff --git a/src/views/workOrder/workOrderSend.vue b/src/views/workOrder/workOrderSend.vue
index d150eab..c726f93 100644
--- a/src/views/workOrder/workOrderSend.vue
+++ b/src/views/workOrder/workOrderSend.vue
@@ -1,11 +1,3419 @@
-<template />
+<template>
+  <div>
+    <div class="body" :style="{height:mainHeight+'px'}">
+
+      <!--      <div class="bodyTopButtonGroup" style="justify-content: space-between">-->
+      <!--        <div style="display: flex">-->
+      <!--          &lt;!&ndash;          <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">鏂板</el-button>&ndash;&gt;-->
+      <!--          &lt;!&ndash;          <el-button v-waves type="success" icon="el-icon-connection" @click="send">娲惧彂</el-button>&ndash;&gt;-->
+      <!--        </div>-->
+
+      <!--        &lt;!&ndash;        <el-button v-waves icon="el-icon-switch-button" @click="orderClose">鍏抽棴宸ュ崟</el-button>&ndash;&gt;-->
+      <!--      </div>-->
+
+      <div class="bodyTopFormGroup" style="margin-top: 10px;">
+        <el-form
+          ref="form"
+          :model="form"
+          label-width="100px"
+          inline
+          style="display: flex;"
+        >
+          <div class="elForm">
+            <el-form-item label="杞﹂棿鍚嶇О" style=" display: flex;">
+              <el-select
+                v-model="form.wkshopcode"
+                filterable
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+              >
+                <el-option
+                  v-for="item in wkshopcodeArr"
+                  :key="item.torg_code"
+                  :label="item.torg_name"
+                  :value="item.torg_code"
+                />
+              </el-select>
+            </el-form-item>
+            <el-form-item label="宸ュ崟鐘舵��" style=" display: flex;">
+              <el-select
+                v-model="form.mesorderstus"
+                :popper-append-to-body="false"
+                style="width: 200px"
+                placeholder="璇烽�夋嫨"
+                disabled
+                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 v-show="isExpandForm" label="閿�鍞鍗�" style="display: flex;">
+              <el-input v-model="form.saleordercode" style="width: 200px" placeholder="璇疯緭鍏�" />
+            </el-form-item>
+            <el-form-item v-show="isExpandForm" 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 v-show="isExpandForm" 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
+            class="bodySearchReset"
+            :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}"
+          >
+            <el-button v-waves type="primary" icon="el-icon-search" @click="search">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">閲嶇疆</el-button>
+          </div>
+
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverType==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverType=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverType==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandForm?'doubleDown':'doubleUp'"
+            @click="isExpandForm=!isExpandForm"
+            @mouseout="mouseHoverType=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          ref="tableDataRef"
+          class="tableFixed"
+          :data="tableData"
+          :height="isExpandForm?tableHeight:(tableHeight+80)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:isExpandForm?tableHeight:(tableHeight+80)+'px'}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sortChange"
+          @selection-change="handleSelectionChange"
+        >
+          <!--          @row-click="rowClick"-->
+          <!--          <el-table-column-->
+          <!--            type="selection"-->
+          <!--            width="50"-->
+          <!--            :selectable="selected"-->
+          <!--          />-->
+          <el-table-column
+            prop="rowNum"
+            width="50"
+            label="搴忓彿"
+            fixed
+          />
+          <el-table-column
+            prop="status"
+            label="宸ュ崟鐘舵��"
+            sortable="custom"
+            width="110"
+            show-tooltip-when-overflow
+          >
+            <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>
+              <div v-if="row.status==='NOSCHED'">寰呮帓绋�</div>
+              <div v-if="row.status==='SCHED'">宸叉帓绋�</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wo_code"
+            label="宸ュ崟缂栧彿"
+            show-tooltip-when-overflow
+            sortable="custom"
+            min-width="160"
+          />
+          <el-table-column
+            prop="m_po"
+            label="婧愬崟鍗曞彿"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="160"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.m_po">{{ row.m_po }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="saleOrderCode"
+            label="閿�鍞鍗�"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="160"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.saleOrderCode">{{ row.saleOrderCode }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="wotype"
+            label="鍗曟嵁绫诲瀷"
+            sortable="custom"
+            show-tooltip-when-overflow
+            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="浜у搧缂栫爜"
+            show-tooltip-when-overflow
+            sortable="custom"
+            min-width="120"
+          />
+          <el-table-column
+            prop="partname"
+            min-width="150"
+            label="浜у搧鍚嶇О"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+          <el-table-column
+            prop="partspec"
+            label="浜у搧瑙勬牸"
+            sortable="custom"
+            width="110"
+            show-tooltip-when-overflow
+          >
+            <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"
+            show-tooltip-when-overflow
+            width="100"
+          />
+          <el-table-column
+            prop="wkshp_name"
+            label="鐢熶骇杞﹂棿"
+            show-tooltip-when-overflow
+            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="saleOrderDeliveryDate"
+            label="棰勮浜や粯鏃ユ湡"
+            sortable="custom"
+            width="130"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.saleOrderDeliveryDate">{{ row.saleOrderDeliveryDate.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <!--          <el-table-column-->
+          <!--            prop="data_sources"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            label="鏁版嵁鏉ユ簮"-->
+          <!--            sortable="custom"-->
+          <!--            width="120"-->
+          <!--          />-->
+
+          <el-table-column
+            prop="lm_user"
+            show-tooltip-when-overflow
+            label="鍒涘缓浜哄憳"
+            sortable="custom"
+            width="120"
+          />
+          <el-table-column
+            prop="lm_date"
+            label="鍒涘缓鏃堕棿"
+            show-tooltip-when-overflow
+            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"-->
+                <!--                    :style="{color:$store.state.settings.theme}"-->
+                <!--                    @click.stop="edit('edit',row)"-->
+                <!--                  />-->
+                <!--                </el-tooltip>-->
+
+                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">
+                  <i class="el-icon-delete" :style="{color:$store.state.settings.theme}" @click.stop="del(row)" />
+                </el-tooltip>
+
+                <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
+                    :style="{color:$store.state.settings.theme}"
+                    class="el-icon-printer"
+                    style="cursor: pointer;margin-right: 15px"
+                    @click.stop="handlePrint(row.wo_code)"
+                  />
+                </el-tooltip>
+
+                <el-tooltip class="item" effect="dark" content="璇︽儏" placement="top">
+                  <i
+                    class="el-icon-view"
+                    style="cursor: pointer;"
+                    :style="{color:$store.state.settings.theme}"
+                    @click.stop="edit('view',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,jumper"
+        popper-class="select_bottom"
+        @pagination="getMesOrderSearch"
+      />
+
+      <!--      <div class="elTableDiv">-->
+      <!--        <el-table-->
+      <!--          :data="tableDataDetail"-->
+      <!--          border-->
+      <!--          height="210px"-->
+      <!--          :row-class-name="tableRowClassName"-->
+      <!--          highlight-current-row-->
+      <!--          :header-cell-style="this.$headerCellStyle"-->
+      <!--          :cell-style="this.$cellStyle"-->
+      <!--        >-->
+      <!--          &lt;!&ndash;          <el-table-column&ndash;&gt;-->
+      <!--          &lt;!&ndash;            width="50"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            type="index"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            prop="搴忓彿"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            fixed&ndash;&gt;-->
+      <!--          &lt;!&ndash;          />   &ndash;&gt;-->
+      <!--          <el-table-column-->
+      <!--            width="50"-->
+      <!--            prop="seq"-->
+      <!--            label="搴忓彿"-->
+      <!--            fixed-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            prop="wo_code"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            label="宸ュ崟缂栧彿"-->
+      <!--            width="160"-->
+      <!--          />-->
+
+      <!--          &lt;!&ndash;          <el-table-column&ndash;&gt;-->
+      <!--          &lt;!&ndash;            prop="partcode"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            label="浜у搧缂栫爜"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            width="150"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            show-tooltip-when-overflow&ndash;&gt;-->
+      <!--          &lt;!&ndash;          />&ndash;&gt;-->
+      <!--          &lt;!&ndash;          <el-table-column&ndash;&gt;-->
+      <!--          &lt;!&ndash;            prop="partname"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            label="浜у搧鍚嶇О"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            width="200"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            show-tooltip-when-overflow&ndash;&gt;-->
+      <!--          &lt;!&ndash;          />&ndash;&gt;-->
+
+      <!--          <el-table-column-->
+      <!--            label="宸ュ簭缂栫爜"-->
+      <!--            prop="step_code"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            width="150"-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            label="宸ュ簭鍚嶇О"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            prop="stepname"-->
+      <!--            width="150"-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            label="宸茬敓浜ф暟閲�"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            prop="produceq_qty"-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            label="鍚堟牸鏁伴噺"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            prop="good_qty"-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            label="涓嶈壇鏁伴噺"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            prop="ng_qty"-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            label="宸ュ簾鏁伴噺"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            prop="laborbad_qty"-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            label="鏂欏簾鏁伴噺"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            prop="materielbad_qty"-->
+      <!--          />-->
+      <!--          <el-table-column-->
+      <!--            label="寰呬骇鏁伴噺"-->
+      <!--            show-tooltip-when-overflow-->
+      <!--            prop="delive_qty"-->
+      <!--          />-->
+      <!--          &lt;!&ndash;          <el-table-column&ndash;&gt;-->
+      <!--          &lt;!&ndash;            label="鎿嶄綔"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            width="120"&ndash;&gt;-->
+      <!--          &lt;!&ndash;            fixed="right"&ndash;&gt;-->
+      <!--          &lt;!&ndash;          >&ndash;&gt;-->
+      <!--          &lt;!&ndash;            <template slot-scope="{row}">&ndash;&gt;-->
+      <!--          &lt;!&ndash;              <div class="operationClass">&ndash;&gt;-->
+      <!--          &lt;!&ndash;                <el-tooltip class="item" effect="dark" content="鎵撳嵃宸ュ簭" placement="top">&ndash;&gt;-->
+      <!--          &lt;!&ndash;                  <i&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    v-if="tableDataDetail.length!==row.seq"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    class="el-icon-printer"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    :style="{color:$store.state.settings.theme}"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    style="cursor: pointer;margin-right: 15px"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    @click="supplementSmallClick(row)"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                  />&ndash;&gt;-->
+      <!--          &lt;!&ndash;                </el-tooltip>&ndash;&gt;-->
+      <!--          &lt;!&ndash;                <el-tooltip class="item" effect="dark" content="琛ユ墦鐢熶骇鍏ュ簱鏉$爜" placement="top">&ndash;&gt;-->
+      <!--          &lt;!&ndash;                  <i&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    v-if="tableDataDetail.length===row.seq"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    class="  el-icon-camera"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    :style="{color:$store.state.settings.theme}"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    style="cursor: pointer;margin-right: 15px"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                    @click="getProductInHouseLabCode(row.wo_code)"&ndash;&gt;-->
+      <!--          &lt;!&ndash;                  />&ndash;&gt;-->
+      <!--          &lt;!&ndash;                </el-tooltip>&ndash;&gt;-->
+      <!--          &lt;!&ndash;              </div>&ndash;&gt;-->
+      <!--          &lt;!&ndash;            </template>&ndash;&gt;-->
+      <!--          &lt;!&ndash;          </el-table-column>&ndash;&gt;-->
+      <!--        </el-table>-->
+      <!--      </div>-->
+    </div>
+    <!--鏂板娲惧彂瀵硅瘽妗�-->
+    <el-dialog
+      v-el-drag-dialog
+      :title="operation==='add'?'鏂板':'娲惧彂'"
+      :visible.sync="dialogVisible"
+      width="1200px"
+      top="8vh"
+      :close-on-click-modal="false"
+      @closed="handleClose"
+      @close="handleClose"
+    >
+      <el-form
+        ref="dialogForm"
+        inline
+        :rules="dialogFormRules"
+        :model="dialogForm"
+        label-width="110px"
+      >
+
+        <el-divider content-position="left">鍩烘湰淇℃伅</el-divider>
+
+        <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-input v-model="dialogForm.mesordercode" disabled 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: 200px"
+          >
+            <el-button
+              slot="append"
+              icon="el-icon-search"
+              :disabled="operation!=='add'||dialogForm.ordertype==='PO'"
+              @click="mesordertsourcesearchclick"
+            />
+          </el-input>
+        </el-form-item>
+        <!--            <el-button-->
+        <!--              v-waves-->
+        <!--              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(/[^\d]/g,'')"
+            style="width: 200px"
+          />
+          <!--          oninput="value=value.replace(/[^0-9*.{1}0-9*]/g,'')"-->
+        </el-form-item>
+        <el-form-item
+          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+'/'+item.partcode"
+              :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 v-if="operation!=='add'" 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>
+        <!--        :disabled="dialogForm.partcode===''"-->
+        <el-form-item label="鎵�灞炶溅闂�" prop="wkshopcode">
+          <el-select
+            v-model="dialogForm.wkshopcode"
+            filterable
+            :popper-append-to-body="false"
+            style="width: 200px;"
+            placeholder="璇烽�夋嫨杞﹂棿"
+          >
+            <el-option
+              v-for="item in wkshopArr"
+              :key="item.torg_code"
+              :label="item.torg_name"
+              :value="item.torg_code"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item label="棰勮浜や粯鏃ユ湡" prop="deliverydate">
+          <el-date-picker
+            v-model="dialogForm.deliverydate"
+            type="date"
+            size="mini"
+            :clearable="false"
+            class="dateMini"
+            :picker-options="pickerOptions"
+            format="yyyy-MM-dd"
+            value-format="yyyy-MM-dd"
+            placeholder="閫夋嫨鏃ユ湡"
+          />
+          <!--          :disabled="dialogForm.deliverydate"-->
+        </el-form-item>
+
+        <el-divider content-position="left">宸ュ簭淇℃伅</el-divider>
+
+        <div style="display: flex;align-items: center">
+          <!--          <div style="font-weight: bolder">宸ュ簭閫夋嫨锛�</div>-->
+          <!--          <el-drag-select-->
+          <!--            v-model="stepSelectedValue"-->
+          <!--            style="width:930px;"-->
+          <!--            multiple-->
+          <!--            placeholder="璇烽�夋嫨鐩稿搴斿伐搴�"-->
+          <!--            @change="stepSelectedValueChange"-->
+          <!--          >-->
+          <!--            <el-option-->
+          <!--              v-for="item in stepSelectArr"-->
+          <!--              :key="item.stepcode"-->
+          <!--              :label="item.stepname"-->
+          <!--              :value="item.stepcode"-->
+          <!--            />-->
+          <!--          </el-drag-select>-->
+        </div>
+
+        <el-table
+          ref="stepTableDataRef"
+          :data="stepTableData"
+          border
+          :row-class-name="tableRowClassName"
+          height="300"
+          style="width: 100%;margin-top: 15px;"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          row-key="stepcode"
+        >
+          <el-table-column
+            type="index"
+            label="搴忓彿"
+            width="50"
+          />
+          <!--          <el-table-column-->
+          <!--            prop="stepcode"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            label="宸ュ簭缂栫爜"-->
+          <!--          />-->
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="stepprice"
+            label="鐢熶骇鍗曚环"
+            show-tooltip-when-overflow
+          >
+            <!--            <template slot-scope="{row}">-->
+            <!--              <el-input-->
+            <!--                v-model="row.stepprice"-->
+            <!--                placeholder="璇疯緭鍏ュ伐搴忓崟浠�"-->
+            <!--                oninput="value=value.replace(/[^0-9.]/g,'')"-->
+            <!--                style="width: 100%"-->
+            <!--                @click.stop=""-->
+            <!--              />-->
+            <!--            </template>-->
+          </el-table-column>
+          <el-table-column
+            prop="produceq_qty"
+            label="宸茬敓鎴愭暟閲�"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="good_qty"
+            label="鍚堟牸鏁伴噺"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="ng_qty"
+            label="涓嶈壇鏁伴噺"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="laborbad_qty"
+            label="宸ュ簾鏁伴噺"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="materielbad_qty"
+            label="鏂欏簾鏁伴噺"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="delive_qty"
+            label="寰呬骇鏁伴噺"
+            show-tooltip-when-overflow
+          />
+          <!--          <el-table-column-->
+          <!--            label="鎿嶄綔"-->
+          <!--            width="120"-->
+          <!--          >-->
+          <!--            <template slot-scope="{row}">-->
+          <!--              <div class="operationClass">-->
+          <!--                &lt;!&ndash;                <el-tooltip class="item" effect="dark" content="绉诲姩" placement="top">&ndash;&gt;-->
+          <!--                <i-->
+          <!--                  class="el-icon-rank"-->
+          <!--                  :style="{color:$store.state.settings.theme}"-->
+          <!--                  style="cursor: move"-->
+          <!--                />-->
+          <!--                &lt;!&ndash;                </el-tooltip>&ndash;&gt;-->
+          <!--                &lt;!&ndash;                @click="edit('edit',row)"&ndash;&gt;-->
+
+          <!--                <el-tooltip v-del-tab-index class="item" effect="dark" content="鍒犻櫎" placement="top">-->
+          <!--                  <i-->
+          <!--                    class="el-icon-delete"-->
+          <!--                    :style="{color:$store.state.settings.theme}"-->
+          <!--                    style="margin-left: 15px;"-->
+          <!--                    @click="stepDel(row)"-->
+          <!--                  />-->
+          <!--                </el-tooltip>-->
+          <!--              </div>-->
+          <!--            </template>-->
+          <!--          </el-table-column>-->
+        </el-table>
+
+      </el-form>
+
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleCancel">鍙� 娑�</el-button>
+          <!--          <el-button v-waves v-if="operation==='add'" type="primary" @click="dialogVisibleConfirmPreview('add')">棰勮</el-button>-->
+          <el-button
+            v-if="operation!=='view'"
+            v-waves
+            type="primary"
+            :loading="$store.state.app.buttonIsDisabled"
+            :disabled="$store.state.app.buttonIsDisabled"
+            @click="dialogVisibleConfirm"
+          >纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!-- 宸ュ簭浠诲姟瀵硅瘽妗�-->
+    <el-dialog
+      v-el-drag-dialog
+      title="宸ュ簭浠诲姟"
+      :visible.sync="dialogVisibleTask"
+      width="840px"
+      top="15vh"
+      class="dialogVisibleSearch"
+      :close-on-click-modal="false"
+      @close="dialogVisibleTaskClose"
+    >
+      <el-button
+        v-waves
+        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"
+          show-tooltip-when-overflow
+          label="宸ュ崟缂栧彿"
+          width="200"
+        />
+        <el-table-column
+          prop="stepcode"
+          label="宸ュ簭缂栫爜"
+          show-tooltip-when-overflow
+        />
+        <el-table-column
+          prop="stepname"
+          show-tooltip-when-overflow
+          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"
+          show-tooltip-when-overflow
+          label="浠诲姟鏁伴噺"
+        />
+        <el-table-column
+          prop="good_qty"
+          show-tooltip-when-overflow
+          label="鍚堟牸鏁伴噺"
+        />
+        <el-table-column
+          prop="ng_qty"
+          show-tooltip-when-overflow
+          label="涓嶈壇鏁伴噺"
+        />
+        <el-table-column
+          label="鎿嶄綔"
+          fixed="right"
+        >
+          <template slot-scope="{row}">
+            <el-button v-waves 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 v-waves @click="dialogVisibleBack">杩� 鍥�</el-button>
+          <!--          <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+        </div>
+      </span>
+    </el-dialog>
+
+    <!-- 婧愬崟鍗曞彿瀵硅瘽妗�-->
+    <el-dialog
+      v-el-drag-dialog
+      title="婧愬崟鍗曞彿"
+      :visible.sync="dialogVisibleSource"
+      width="1200px"
+      top="10vh"
+      class="dialogVisibleSearch"
+      :close-on-click-modal="false"
+      @close="dialogVisibleSourceClose"
+    >
+      <div class="bodyTopFormGroup">
+        <el-form
+          ref="sourceForm"
+          :model="sourceForm"
+          label-width="100px"
+          inline
+          style="display: flex;justify-content: space-between"
+        >
+          <div class="elForm" style="justify-content: flex-start">
+            <!--            <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="缁撴潫鏃ユ湡"-->
+            <!--              />-->
+            <!--              &lt;!&ndash;              :picker-options="expireTimeOption"&ndash;&gt;-->
+
+            <!--            </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.mesordercode"
+                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="宸ュ崟缂栧彿" style=" display: flex;">
+              <el-input v-model="sourceForm.sourceorder" placeholder="璇疯緭鍏�" style="width: 200px" />
+            </el-form-item>
+            <el-form-item 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>
+
+            <el-form-item
+              v-show="isExpandDialog"
+              label="鍒涘缓鏃堕棿"
+              label-width="100px"
+              style=" display: flex;font-size: 14px;margin-top: 3px"
+            >
+              <el-date-picker
+                v-model="sourceForm.createdate"
+                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>
+
+          </div>
+
+          <div style="display: flex;align-items: start;margin-top: 3px;z-index: 2;justify-content: end">
+            <el-button v-waves type="primary" icon="el-icon-search" @click="sourceSearch">鏌ヨ</el-button>
+            <el-button v-waves type="info" icon="el-icon-refresh" @click="sourceReset">閲嶇疆</el-button>
+          </div>
+
+        </el-form>
+        <div
+          class="bodyTopFormExpand"
+        >
+          <svg-icon
+            v-show="mouseHoverTypeDialog==='mouseout'"
+            style="cursor: pointer"
+            :icon-class="!isExpandDialog?'doubleDown3':'doubleUp3'"
+            @mouseenter="mouseHoverTypeDialog=$event.type"
+          />
+          <svg-icon
+            v-show="mouseHoverTypeDialog==='mouseenter'"
+            style="cursor: pointer"
+            :icon-class="!isExpandDialog?'doubleDown':'doubleUp'"
+            @click="isExpandDialog=!isExpandDialog"
+            @mouseout="mouseHoverTypeDialog=$event.type"
+          />
+        </div>
+      </div>
+
+      <div class="elTableDiv">
+        <el-table
+          :data="sourceTableData"
+          :height="isExpandDialog?(tableHeight+60)+'px':(tableHeight+140)+'px'"
+          border
+          :row-class-name="tableRowClassName"
+          :style="{width: 100+'%',height:isExpandDialog?(tableHeight+60)+'px':(tableHeight+140)+'px',}"
+          highlight-current-row
+          :header-cell-style="this.$headerCellStyle"
+          :cell-style="this.$cellStyle"
+          @sort-change="sourceSortChange"
+          @row-click="getCurrentRowSource"
+        >
+          <!--          <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="宸ュ崟鐘舵��"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            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
+            label="宸ュ崟缂栧彿"
+            prop="wo_code"
+            show-tooltip-when-overflow
+            min-width="150"
+            sortable="custom"
+          >
+            <!--            <template slot-scope="{row}">-->
+            <!--              <div v-if="row.m_po">{{ row.m_po }}</div>-->
+            <!--              <div v-else>{{ row.wo_code }}</div>-->
+            <!--            </template>-->
+          </el-table-column>
+          <el-table-column
+            prop="partcode"
+            label="浜у搧缂栫爜"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="150"
+          />
+          <el-table-column
+            prop="partname"
+            label="浜у搧鍚嶇О"
+            sortable="custom"
+            show-tooltip-when-overflow
+            min-width="150"
+          />
+          <el-table-column
+            prop="partspec"
+            label="浜у搧瑙勬牸"
+            show-tooltip-when-overflow
+            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="plan_qty"
+            label="浠诲姟鏁伴噺"
+            width="150"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+
+          <el-table-column
+            prop="bad_qty"
+            label="鎶ュ簾鏁伴噺"
+            width="150"
+            show-tooltip-when-overflow
+            sortable="custom"
+          />
+
+          <!--          <el-table-column-->
+          <!--            prop="relse_qty"-->
+          <!--            show-tooltip-when-overflow-->
+          <!--            label="宸蹭笅鍗曟暟閲�"-->
+          <!--            width="150"-->
+          <!--            sortable="custom"-->
+          <!--          />-->
+          <el-table-column
+            prop="wkshp_name"
+            label="鐢熶骇杞﹂棿"
+            show-tooltip-when-overflow
+            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="plan_startdate"
+            label="棰勮寮�宸ユ椂闂�"
+            show-tooltip-when-overflow
+            sortable="custom"
+            width="130"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.plan_startdate">{{ row.plan_startdate.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="plan_enddate"
+            label="棰勮瀹屽伐鏃堕棿"
+            show-tooltip-when-overflow
+            sortable="custom"
+            width="130"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.plan_enddate">{{ row.plan_enddate.substring(0, 11) }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="lm_user"
+            label="鍒涘缓浜哄憳"
+            show-tooltip-when-overflow
+            sortable="custom"
+            width="150"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.lm_user">{{ row.lm_user }}</div>
+              <div v-else>/</div>
+            </template>
+          </el-table-column>
+          <el-table-column
+            prop="lm_date"
+            label="鍒涘缓鏃堕棿"
+            show-tooltip-when-overflow
+            width="130"
+            sortable="custom"
+          >
+            <template slot-scope="{row}">
+              <div v-if="row.lm_date">{{ row.lm_date.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 v-waves 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="getMesBadOrderSearch"
+      />
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisibleSourceBack">杩� 鍥�</el-button>
+          <el-button v-waves type="primary" @click="dialogVisibleSourceConfirm">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--鎵撳嵃棰勮瀵硅瘽妗�  澶ф爣绛�-->
+    <el-dialog
+      v-el-drag-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="80px"
+              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">
+                  <!--                  {{ localStorage.getItem('username') }}-->
+                  {{ formApprove.routename }}
+                </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:90px;
+            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 v-waves @click="dialogVisibleBackPreview">杩� 鍥�</el-button>
+          <!--            <el-button v-waves v-if="operation==='add'" type="primary" @click="dialogVisibleConfirm">纭� 瀹�</el-button>-->
+          <!--            <el-button v-waves type="primary" @click="dialogVisibleConfirm">纭� 瀹�/鎵� 鍗�</el-button>-->
+          <el-button v-waves v-print="printObj" type="primary">鎵� 鍗�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--鎵撳嵃棰勮椤甸潰  灏忔爣绛�-->
+    <el-dialog
+      v-el-drag-dialog
+      title="棰勮"
+      :visible.sync="dialogVisible2"
+      width="1000"
+      top="10vh"
+      :close-on-click-modal="false"
+      @close="dialogVisible2Close"
+    >
+      <div style="height: 650px;overflow:auto;">
+        <!--      涓嬫媺妗嗛�夋嫨鎵撳嵃灏哄-->
+        <div v-if="!isLastPrint" style="display: flex;align-items: center;margin: 0 0 20px 0">
+          <div>閫夋嫨鎵撳嵃灏哄锛�</div>
+          <el-select
+            v-model="printSize"
+            :popper-append-to-body="false"
+            style="width: 200px"
+            placeholder="璇烽�夋嫨"
+            @change="printSizeChange"
+          >
+
+            <el-option
+              v-for="item in printSizeSelectArr"
+              :key="item.code"
+              :label="item.name"
+              :value="item.code"
+            />
+          </el-select>
+        </div>
+        <!-- 瑕佹墦鍗扮殑鍖哄煙 -->
+        <!--      <div id="printMe2" :style="{paddingLeft:'10px',paddingTop: '5px'}">-->
+        <div v-if="!isLastPrint" :style="printMe2StylePadding(printSize)">
+          <!--      80 * 50-->
+          <div
+            v-if="printSize===0"
+            style="display: flex;width: 280px;height: 160px;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: 96px;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: 32px;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: 32px;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>
+          <!--      78 * 60    -->
+          <div
+            v-if="printSize===1"
+            style="display: flex;width: 280px;height: 160px;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: 96px;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: 32px;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: 32px;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>
+          <!--      60 * 40    -->
+          <div
+            v-if="printSize===2"
+            style="display: flex;width: 220px;height: 130px;border: 1px solid #000;text-align: center;font-size: 12px"
+          >
+
+            <div style="width: 70px;display: flex;flex-direction: column;border-right: 1px solid #000">
+              <div
+                style="display: flex;height: 60%;border-bottom:1px solid #000;
+              justify-content: center;align-items: center;position: relative"
+              >
+                <div
+                  id="qrCode2"
+                  ref="qrCodeDiv2"
+                  style="overflow-y: hidden;height:71%;position: absolute;left: 7px;"
+                />
+              </div>
+              <div
+                style="display: flex;height:  20%;justify-content: flex-start;border-bottom:1px solid #000;align-items: center"
+              >
+                <div style="margin-left: 3px; ">鏁伴噺:{{ qrForm.startqty }}</div>
+              </div>
+              <div style="display: flex;height:  20%;justify-content: flex-start;align-items: center;">
+                <div style="margin-left: 3px; ">鎿嶄綔:{{ qrForm.operator }}</div>
+
+              </div>
+            </div>
+
+            <div style="width:150px;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="margin-left: 3px;">缂栧彿:{{ 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="margin-left: 3px;">浜у搧缂栫爜:{{ 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="margin-left: 3px;">浜у搧鍚嶇О:{{ 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="margin-left: 3px;">涓嬮亾宸ュ簭:{{ qrForm.nextstepname }}</div>
+
+              </div>
+              <div style="display: flex;height: 20%;justify-content: flex-start;align-items: center;text-align: left">
+                <div style=" margin-left: 3px;">鏃堕棿: {{ qrForm.operatorTime }}</div>
+                <!--                <div>{{ qrForm.operatorTime?qrForm.operatorTime.substring(5):'' }}</div>-->
+                <!--                <div>{{ qrForm.operatorTime }}</div>-->
+              </div>
+
+            </div>
+
+          </div>
+          <div
+            v-if="printSize===5"
+            style="display: flex;width: 140px;height: 80px;border: 1px solid #000;text-align: center;font-size: 10px;"
+          >
+
+            <div v-if="false" style="width: 45px;display: flex;flex-direction: column;border-right: 1px solid #000">
+              <div
+                style="display: flex;height: 60px;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: 20px;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: 20px;justify-content: flex-start;align-items: center">
+                <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div>
+                {{ qrForm.operator }}
+              </div>
+            </div>
+
+            <div style="width:100%;display: flex;flex-direction: column;">
+              <div
+                style="display: flex;height: 20%;border-bottom:1px solid #000;justify-content: center;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: center;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: center;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: center;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: center;align-items: center;text-align: left">
+                <!--              <div style="width: 60px;margin-left: 5px;">澶勭悊鏃堕棿:</div>-->
+                <div>{{ qrForm.operatorTime }}</div>
+              </div>
+
+            </div>
+
+          </div>
+        </div>
+
+        <div v-if="isLastPrint" style="display: flex;flex-direction: column">
+
+          <div style="display: flex;font-weight: bold;font-size: 16px;margin-bottom: 20px;">
+            <div style="width: 48%;">
+              璇烽�夋嫨鍏ュ簱鏉$爜
+            </div>
+            <div style="width: 48%;margin-left: 4%;">
+              宸查�変腑鐨勫叆搴撴潯鐮�
+            </div>
+          </div>
+
+          <div style="display: flex;">
+            <!--          璇烽�夋嫨鍏ュ簱鏉$爜-->
+            <div style="display: flex;flex-direction: column;height: 600px;overflow: auto;width: 48%;">
+              <div
+                v-for="(item,index) in lastPrintArr"
+                :key="item.inbarcode"
+                :style="{marginTop:index===0?'':'15px'}"
+                style="display: flex;align-items: center;"
+              >
+
+                <!--          v-if="printSize===0"-->
+                <div style="margin-right:40px">
+                  <el-checkbox
+                    :key="item.inbarcode"
+                    v-model="item.checked"
+                    @change="val=>inbarcodeChange(val,item)"
+                  />
+                </div>
+                <div
+                  style="display: flex;width: 280px;height: 160px;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: 96px;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: 32px;justify-content: flex-start;border-bottom:1px solid #000;align-items: center"
+                    >
+                      <div style="margin-left: 5px;width: 28px">鏁伴噺:</div>
+                      {{ item.good_qty }}
+                    </div>
+                    <div style="display: flex;height: 32px;justify-content: flex-start;align-items: center">
+                      <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div>
+                      {{ item.username }}
+                    </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>{{ item.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>{{ item.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>{{ item.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>{{ item.partspec ? item.partspec : '/' }}</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>{{ item.lm_date }}</div>
+                    </div>
+
+                  </div>
+
+                </div>
+
+              </div>
+            </div>
+
+            <!--          宸查�変腑鐨勫叆搴撴潯鐮�-->
+            <div
+              style="display: flex;flex-direction: column;height: 600px;overflow: auto;width: 48%;margin-left: 50px;"
+            >
+              <div id="printMe2">
+                <div
+                  v-for="(item,index) in lastPrintArrSelected"
+                  v-if="item.checked"
+                  :key="item.inbarcode"
+                  :style="{marginTop:index===0?'':'15px'}"
+                  style="display: flex;align-items: center;"
+                >
+                  <div
+                    style="display: flex;width: 280px;height: 160px;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: 96px;border-bottom:1px solid #000;
+                        justify-content: center;align-items: center;position: relative"
+                      >
+                        <div
+                          id="qrCode3"
+                          ref="qrCodeDiv3"
+                          style="overflow-y: hidden;height:60px;position: absolute;left: 14px;"
+                        />
+                      </div>
+                      <div
+                        style="display: flex;height: 32px;justify-content: flex-start;border-bottom:1px solid #000;align-items: center"
+                      >
+                        <div style="margin-left: 5px;width: 28px">鏁伴噺:</div>
+                        {{ item.good_qty }}
+                      </div>
+                      <div style="display: flex;height: 32px;justify-content: flex-start;align-items: center">
+                        <div style="margin-left: 5px;width: 42px">澶勭悊浜�:</div>
+                        {{ item.username }}
+                      </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>{{ item.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>{{ item.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>{{ item.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>{{ item.partspec ? item.partspec : '/' }}</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>{{ item.lm_date }}</div>
+                      </div>
+
+                    </div>
+
+                  </div>
+
+                </div>
+              </div>
+
+            </div>
+
+          </div>
+
+        </div>
+
+      </div>
+      <span slot="footer" class="dialog-footer">
+        <div class="footerButton">
+          <el-button v-waves @click="dialogVisible2 = false;">鍙� 娑�</el-button>
+          <el-button v-waves v-print="printObj2" type="primary">鎵� 鍗�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+    <!--    宸ヨ壓璺嚎瀵硅瘽妗�-->
+    <el-dialog
+      v-el-drag-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="宸ュ簭缂栫爜"
+            show-tooltip-when-overflow
+          />
+          <el-table-column
+            prop="stepname"
+            label="宸ュ簭鍚嶇О"
+            show-tooltip-when-overflow
+          />
+          <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 v-waves @click="routeDialogVisibleCancel">鍙� 娑�</el-button>
+          <el-button v-waves type="primary" @click="routeDialogVisibleConfirm">纭� 瀹�</el-button>
+        </div>
+      </span>
+    </el-dialog>
+
+  </div>
+</template>
 
 <script>
+import Pagination from '@/components/Pagination'
+import { handleDatetime, handleDatetime2, validateCode } from '@/utils/global'
+import { getCookie } from '@/utils/auth'
+import QRCode from 'qrcodejs2'
+import $ from 'jquery'
+import elDragDialog from '@/directive/el-drag-dialog'
+import waves from '@/directive/waves'
+import {
+  AddMesOrderCodeSearch,
+  AddUpdateMesOrder, DeleteMesOrder,
+  MesBadOrderSearch, MesOrderDistribution,
+  MesOrderSearch,
+  UpdateMesOrderStepSearch
+} from '@/api/WorkOrder'
+import { PartSelect } from '@/api/ProductModel'
+import { PrentOrganization, PrentOrganizationNoCompany, StepData } from '@/api/GeneralBasicData'
+import Sortable from 'sortablejs'
+import ElDragSelect from '@/components/DragSelect'
+import { MesOrderPrintSearch } from '@/api/GridReport' // base on element-ui
+
 export default {
-  name: 'WorkOrderSend'
+  name: 'WorkOrderList',
+  components: {
+    Pagination, ElDragSelect
+  },
+  directives: { elDragDialog, waves },
+  data() {
+    return {
+      mouseHoverType: 'mouseout',
+      mouseHoverTypeDialog: 'mouseout',
+      isExpandForm: false,
+      isIpad: false,
+      mainHeight: 0,
+      tableHeight: 0,
+      username: '',
+      form: {
+        wkshopcode: '',
+        mesorderstus: 'ALLO', // 宸ュ崟鐘舵�佺爜
+        mesordercode: '', // 宸ュ崟缂栧彿
+        partcode: '', // 浜у搧缂栫爜
+        ordertype: '', // ordertype
+        sourceorder: '', // 婧愬崟鍗曞彿
+        saleordercode: '', // 閿�鍞鍗�
+        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: '瀹屽伐' }
+        // { code: 'NOSCHED', name: '寰呮帓绋�' },
+        // { code: 'SCHED', name: '宸叉帓绋�' }
+      ],
+      wkshopcodeArr: [],
+      total: 10,
+      tableData: [],
+      dialogVisible: false,
+      dialogForm: {
+        mesorderstus: 'NEW', // 宸ュ崟鐘舵�佺爜
+        mesordercode: '', // 宸ュ崟缂栧彿
+        ordertype: 'PO', // 宸ュ崟绫诲瀷
+        sourceorderid: '', // 婧愬崟id
+        sourceorder: '', // 婧愬崟鍗曞彿
+
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+
+        mesqty: '', // 宸ュ崟鏁伴噺
+        wkshopcode: '', // 鐢熶骇杞﹂棿缂栫爜
+        wkshopname: '', // 鐢熶骇杞﹂棿鍚嶇О
+
+        deliverydate: '', // 浜や粯鏃堕棿
+        data_sources: '', // 鏁版嵁鏉ユ簮
+
+        mesmaxqty: 0// 宸ュ崟鐨勬渶澶у��
+      },
+      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'] }
+        ],
+        deliverydate: [
+          { 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'] }
+        ],
+        isAps: [
+          { required: true, message: '璇烽�夋嫨鏄惁鎺掔▼', trigger: ['blur', 'change'] }
+        ],
+        bomId: [
+          { 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: {
+        mesordercode: '', // 宸ュ崟缂栧彿
+        sourceorder: '', // 璁㈠崟缂栧彿
+        saleordercode: '', // 閿�鍞鍗曞彿
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+        creatuser: '', // 鍒涘缓浜哄憳
+        // paystartdate: '', // 浜や粯鏃堕棿
+        // paystartdate: '', // 棰勮寮�宸ユ椂闂�
+        // payenddate: '', // 棰勮瀹屽伐鏃堕棿
+        createdate: '', // 鍒涘缓鏃堕棿
+
+        prop: 'lm_date', // 鎺掑簭瀛楁
+        order: 'desc', // 鎺掑簭瀛楁
+        page: 1, // 绗嚑椤�
+        rows: 20 // 姣忛〉澶氬皯鏉�
+      },
+      sourceFormTotal: 10,
+      radioSelectedId: '',
+      isExpandDialog: false, // 瀵硅瘽妗嗚〃鍗曟槸鍚﹀睍寮�锛岄粯璁や笉灞曞紑
+      dialogVisibleRoute: false,
+      dialogFormRoute: {
+        projectName: '', // 浜у搧鍚嶇О
+        projectCode: '', // 浜у搧浠g爜
+        routeOperationArr: [] // 宸ヨ壓璺嚎闆嗗悎
+      },
+      defaultroute_code: '', // 榛樿宸ヨ壓璺嚎閫変腑鍊�
+      defaultroute_codeArr: '', // 榛樿宸ヨ壓璺嚎鏁扮粍
+      projectTableData: [], // 璁惧鍒楄〃
+      tableDataDetail: [], // 鐐瑰嚮宸ュ崟琛ㄧ殑琛� 鏄剧ず璇︾粏淇℃伅
+      printSize: 0,
+      printSizeSelectArr: [// 瀹�*楂�
+        { code: 0, name: '80*50' },
+        { code: 1, name: '78*60' },
+        { code: 2, name: '60*40' }
+        // { code: 2, name: '50*60' },
+        // { code: 3, name: '50*40' },
+        // { code: 4, name: '50*80' },
+        // { code: 5, name: '40*30' }
+      ],
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() < Date.now() - 8.64e7
+        }
+      },
+
+      isLastPrint: false, // 鏄惁鏄湯閬撴墦鍗�
+      lastPrintArr: [], // 鏈亾鎵撳嵃鐨勬暟缁�(鎵�鏈�)
+      lastPrintArrSelected: [], // 鏈亾鎵撳嵃鐨勬暟缁�(閫変腑)
+
+      switchButton: false,
+
+      routeStepArr: '',
+
+      stepTableData: [],
+      sortable: null,
+      stepSelectArr: [], // 宸ュ簭涓嬫媺鏁版嵁
+      stepSelectedValue: [], // 涓嬫媺閫変腑鍊�
+
+      multipleSelection: []
+    }
+  },
+  watch: {
+    'stepSelectedValue': {
+      // deep: true,
+      handler: function(val) {
+        // do something with the new and old value of stepSelectedValue
+        console.log(val, 1)
+        const arr = JSON.parse(JSON.stringify(this.stepTableData))
+        const arrStepcode = arr.map(i => i.stepcode)
+        this.stepTableData = []
+        val.forEach(i => {
+          this.stepTableData.push(
+            {
+              stepcode: i,
+              stepname: this.stepSelectArr.find(j => j.stepcode === i).stepname,
+              stepprice: arrStepcode.includes(i) ? arr.find(j => j.stepcode === i).stepprice : 0
+            }
+          )
+        })
+      }
+    }
+  },
+  created() {
+    this.handleRequest()
+  },
+  mounted() {
+    window.addEventListener('resize', this.getHeight)
+    this.getHeight()
+
+    // this.$nextTick(() => {
+    //   this.setSort()
+    // })
+  },
+  methods: {
+    setSort() {
+      const el = this.$refs.stepTableDataRef.$el.querySelectorAll('.el-table__body-wrapper > table > tbody')[0]
+      this.sortable = Sortable.create(el, {
+        ghostClass: 'sortable-ghost', // Class name for the drop placeholder,
+        setData: function(dataTransfer) {
+          // to avoid Firefox bug
+          // Detail see : https://github.com/RubaXa/Sortable/issues/1012
+          dataTransfer.setData('Text', '')
+        },
+        onEnd: evt => {
+          const targetRow = this.stepTableData.splice(evt.oldIndex, 1)[0]
+          this.stepTableData.splice(evt.newIndex, 0, targetRow)
+
+          this.stepSelectedValue = this.stepTableData.map(i => i.stepcode)
+          // for show the changes, you can delete in you code
+          // const tempIndex = this.newList.splice(evt.oldIndex, 1)[0]
+          // this.newList.splice(evt.newIndex, 0, tempIndex)
+        }
+      })
+    },
+    tableRowClassName({ row, rowIndex }) {
+      return 'custom-row'
+    },
+    handleRequest() {
+      this.getMesOrderSearch().then(res => {
+        if (res.code === '200') {
+          this.getSelect()
+          this.getPrentOrganizationNoCompany()
+        }
+      })
+    },
+    async getPrentOrganizationNoCompany() {
+      const { data: res } = await PrentOrganizationNoCompany()
+      this.wkshopcodeArr = res
+    },
+    async getMesOrderSearch() {
+      // let tempDate = this.form.createdate
+      // if (tempDate.length > 0) {
+      //   tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      // }
+
+      const data = {
+        wkshopcode: this.form.wkshopcode, //
+        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, // 婧愬崟鍗曞彿
+        saleordercode: this.form.saleordercode, // 閿�鍞鍗�
+        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
+
+      // 鑾峰彇缁勭粐
+      const { data: res2 } = await PrentOrganization()
+      this.wkshopArr = res2
+
+      // 鑾峰彇宸ュ簭
+      const { data: res3 } = await StepData()
+      this.stepSelectArr = res3
+    },
+    // 璁㈠崟鐘舵�佹敼鍙樻椂
+    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.getMesBadOrderSearch()
+    },
+    // 鏌ヨ
+    search() {
+      this.getMesOrderSearch()
+    },
+
+    // 閲嶇疆
+    reset(val) {
+      this.form.wkshopcode = ''
+      this.form.mesorderstus = 'ALLO'
+      this.form.mesordercode = ''
+      this.form.partcode = ''
+      this.form.partname = ''
+      this.form.partspec = ''
+      this.form.paydate = ''
+      this.form.creatuser = ''
+      this.form.sourceorder = ''
+      this.form.ordertype = ''
+      this.form.createdate = ''
+      this.getMesOrderSearch()
+    },
+    // 鏂板鎸夐挳
+    async add(operation) {
+      const { data: res } = await AddMesOrderCodeSearch()
+      this.dialogForm.mesordercode = res
+      this.operation = operation
+      this.dialogVisible = true
+      this.dialogForm.data_sources = 'MES'
+
+      this.$nextTick(() => {
+        this.setSort()
+      })
+    },
+    // 宸ュ簭浠诲姟
+    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
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val.map(i => i.wo_code)
+    },
+
+    selected(row, index) {
+      return row.status === 'NEW' && row.isstep === 'Y'
+    },
+    // 娲惧彂
+    send() {
+      this.$confirm('鏄惁纭娲惧彂?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        MesOrderDistribution(this.multipleSelection).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('娲惧彂鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getMesOrderSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堟淳鍙�')
+      })
+    },
+    // 鍒犻櫎鎸夐挳
+    async del(row) {
+      if (row.status === 'START' || row.status === 'CLOSED' || row.status === 'SCHED') {
+        return this.$message.info('姝ゅ伐鍗曚笉鍙垹闄わ紒')
+      }
+      this.$confirm('鏄惁纭鍒犻櫎?', '鎻愮ず', {
+        confirmButtonText: '纭畾',
+        cancelButtonText: '鍙栨秷',
+        type: 'warning'
+      }).then(() => {
+        const data = {
+          souceid: row.sourceid ? row.sourceid : '',
+          wocode: row.wo_code,
+          m_po: row.m_po,
+          orderqty: row.plan_qty
+        }
+        DeleteMesOrder(data).then(res => {
+          if (res.code === '200') {
+            this.$notify.success('鍒犻櫎鎴愬姛!')
+            if (this.form.page > 1 && this.tableData.length === 1) {
+              this.form.page--
+            }
+            this.getMesOrderSearch()
+          }
+        })
+      }).catch(() => {
+        this.$notify.info('宸插彇娑堝垹闄�')
+      })
+    },
+
+    // 淇敼鎸夐挳
+    async edit(operation, row) {
+      this.operation = operation
+
+      this.dialogForm.data_sources = row.data_sources
+      this.dialogForm.mesorderstus = row.status
+      this.dialogForm.mesordercode = row.wo_code
+      this.dialogForm.ordertype = row.wotype
+      this.dialogForm.sourceorderid = row.sourceid
+      this.dialogForm.sourceorder = row.m_po
+      this.dialogForm.partcode = row.partcode
+      this.dialogForm.partname = row.partname
+      this.dialogForm.partspec = row.partspec
+      this.dialogForm.wkshopcode = row.wkshp_code
+      this.dialogForm.deliverydate = row.saleOrderDeliveryDate.substring(0, 11)
+      this.dialogForm.mesqty = row.plan_qty
+
+      const data = {
+        sourceid: this.dialogForm.sourceorderid,
+        sourcewo: this.dialogForm.sourceorder,
+        wocode: this.dialogForm.mesordercode,
+        data_sources: this.dialogForm.data_sources
+      }
+      const { data: res } = await UpdateMesOrderStepSearch(data)
+      this.dialogForm.mesmaxqty = res.canupdate_qty
+      this.stepTableData = res.stepdata
+      // res.stepdata.forEach(i => {
+      //   this.stepTableData.push(
+      //     {
+      //       stepcode: i.step_code,
+      //       stepname: i.stepname,
+      //       stepprice: i.stepprice
+      //     }
+      //   )
+      // })
+      // this.stepSelectedValue = this.stepTableData.map(i => i.stepcode)
+
+      this.dialogVisible = true
+    },
+    // 宸ュ崟鍏抽棴浜嬩欢
+    orderClose() {
+      console.log('宸ュ崟鍏抽棴浜嬩欢')
+    },
+    // 瀵硅瘽妗嗕骇鍝佷俊鎭�兼敼鍙�
+    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
+    },
+    // 瀵硅瘽妗嗗叧闂簨浠�
+    handleClose() {
+      this.dialogForm = {
+        mesorderstus: 'NEW', // 宸ュ崟鐘舵�佺爜
+        mesordercode: '', // 宸ュ崟缂栧彿
+        ordertype: 'PO', // 宸ュ崟绫诲瀷
+        sourceorderid: '', // 婧愬崟id
+        sourceorder: '', // 婧愬崟鍗曞彿
+
+        partcode: '', // 浜у搧缂栫爜
+        partname: '', // 浜у搧鍚嶇О
+        partspec: '', // 浜у搧瑙勬牸
+
+        mesqty: '', // 宸ュ崟鏁伴噺
+        wkshopcode: '', // 鐢熶骇杞﹂棿缂栫爜
+        wkshopname: '', // 鐢熶骇杞﹂棿鍚嶇О
+
+        deliverydate: '', // 浜や粯鏃堕棿
+        data_sources: '' // 鏁版嵁鏉ユ簮
+      }
+      this.stepSelectedValue = []
+      this.stepTableData = []
+      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('婧愬崟鍗曞彿涓嶈兘涓虹┖锛�')
+          }
+
+          if (this.dialogForm.data_sources === 'ERP' && this.dialogForm.mesmaxqty < this.dialogForm.mesqty) {
+            return this.$message.info('姝ゅ伐鍗曠殑鏈�澶т慨鏀规暟鍊间负锛�' + this.dialogForm.mesmaxqty)
+          }
+
+          const workListSub = []
+          this.stepTableData.forEach((i, j) => {
+            workListSub.push(
+              {
+                stepseq: j + 1,
+                stepcode: i.stepcode,
+                stepprice: i.stepprice,
+                isbott: j === 0 ? 'Y' : 'N',
+                isend: j === this.stepTableData.length - 1 ? 'Y' : 'N'
+              }
+            )
+          })
+
+          const data = {
+            wostatus: this.dialogForm.mesorderstus, // 宸ュ崟鐘舵��
+            wocode: this.dialogForm.mesordercode, // 宸ュ崟鍙�
+            wotype: this.dialogForm.ordertype, // 宸ュ崟绫诲瀷
+            sourceid: this.dialogForm.sourceorderid, // 婧愬崟id
+            sourcewo: this.dialogForm.sourceorder, // 婧愬崟鍗曞彿
+            partcode: this.dialogForm.partcode, // 浜у搧缂栧彿
+            wkshopcode: this.dialogForm.wkshopcode,
+            woqty: this.dialogForm.mesqty, // 宸ュ崟鏁伴噺
+            deliverydate: this.dialogForm.deliverydate, // 浜や粯鏃堕棿
+            data_sources: this.dialogForm.data_sources, // 鏁版嵁鏉ユ簮
+            isstep: workListSub.length > 0 ? 'Y' : 'N', //
+            workListSub
+          }
+
+          this.$store.state.app.buttonIsDisabled = true
+          AddUpdateMesOrder(data, this.operation === 'add' ? 'Add' : 'Update').then(res => {
+            if (res.code === '200') {
+              this.dialogVisible = false
+              // this.handlePrint()
+              this.$message.success(this.operation === 'add' ? '娣诲姞鎴愬姛锛�' : '娲惧彂鎴愬姛锛�')
+              this.getMesOrderSearch()
+              this.$store.state.app.buttonIsDisabled = false
+            } 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 - 245
+        if (window.innerHeight < 769) {
+          this.tableHeight = this.tableHeight - 20
+        }
+        this.isIpad = window.innerHeight < 769 && window.innerWidth < 1367
+        this.$refs.tableDataRef.doLayout()
+      })
+    },
+    // 宸ヨ壓璺嚎鏀惧ぇ闀滅偣鍑�
+    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(wo_code) {
+      // const number = Math.random() * Math.random()
+      // this.number = number === 0 ? (10 + Math.random()) : number
+      // console.log(number)
+
+      const data2 = {
+        mesordercode: wo_code || this.dialogForm.mesordercode
+      }
+      MesOrderPrintSearch(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 = localStorage.getItem('username') // 鎵撳嵃浜哄憳
+          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 = {}
+      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,
+            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.tableDataDetail.length ? item.stepname : this.tableDataDetail[item.seq].stepname,
+            operator: getCookie('username'),
+            operatorTime: handleDatetime2(new Date())
+          }
+          this.$nextTick(() => {
+            console.log(this.qrForm.qrvalue, 3333)
+            this.bindQRCode2(this.qrForm.qrvalue)
+
+            const div = document.getElementById('qrCode2')
+            // 杩欎箞澶氫唬鐮佸彧闇�瑕佽繖涓�鍙ュ疄鐜版垜浠墍闇�瑕佺殑鍔熻兘锛屽畾浣峝iv婊氬姩鏉′綅缃湪搴曢儴锛宻crollHeight璁$畻鍑篸iv鐨勯珮搴︼紝鍐峴crollTop 璁剧疆婊氬姩鏉$殑楂樺害涓哄灏�
+            div.scrollTop = div.scrollHeight // 婊氬姩鏉′綅浜庢渶搴曢儴
+            // div.scrollTop = 0 // 婊氬姩鏉′綅浜庢渶椤堕儴
+          })
+        }
+      })
+
+      // this.dialogVisibleTask = false
+      this.dialogVisible2 = true
+      console.log(this.qrForm, 1111)
+    },
+    // 琛ユ墦鐢熶骇鍏ュ簱鏉$爜
+    async getProductInHouseLabCode(ordercode) {
+      const res = await ProductInHouseLabCode({ ordercode })
+      console.log(res)
+      this.isLastPrint = true
+
+      this.lastPrintArr = res.data
+
+      this.dialogVisible2 = true
+
+      // 鐢熶骇浜岀淮鐮�
+      this.$nextTick(() => {
+        this.lastPrintArr.forEach((i, index) => {
+          i.checked = false
+          new QRCode(this.$refs.qrCodeDiv2[index], {
+            text: i.inbarcode,
+            width: this.printSize !== 2 ? 60 : 55,
+            height: this.printSize !== 2 ? 60 : 55,
+            colorDark: '#000', // 浜岀淮鐮侀鑹�
+            colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊
+            correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H
+          })
+        })
+      })
+    },
+    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 = ''
+      this.isLastPrint = false
+      this.lastPrintArr = []
+      this.lastPrintArrSelected = []
+    },
+    // 鐢熸垚浜岀淮鐮�    宸ュ簭鏍囩浜岀淮鐮�
+    bindQRCode2(text) {
+      new QRCode(this.$refs.qrCodeDiv2, {
+        text: text,
+        width: this.printSize !== 2 ? 60 : 55,
+        height: this.printSize !== 2 ? 60 : 55,
+        colorDark: '#000', // 浜岀淮鐮侀鑹�
+        colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊
+        correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H
+      })
+    },
+    // 鎶ュ簾琛ュ崟鎯呭喌涓嬪彲鐐瑰嚮閫夋嫨
+    mesordertsourcesearchclick() {
+      if (this.dialogForm.ordertype === 'PO') {
+        return this.$message.info('宸ュ崟绫诲瀷涓烘姤搴熻ˉ鍗曟儏鍐典笅鍙�夋嫨锛�')
+      }
+
+      this.getMesBadOrderSearch()
+
+      this.dialogVisibleSource = true
+    },
+    async getMesBadOrderSearch() {
+      // let tempDate2 = this.sourceForm.paystartdate
+      // if (tempDate2.length > 0) {
+      //   tempDate2 = handleDatetime(tempDate2[0]) + '~' + handleDatetime(tempDate2[1])
+      // }
+
+      let tempDate = this.sourceForm.createdate
+      if (tempDate.length > 0) {
+        tempDate = handleDatetime(tempDate[0]) + '~' + handleDatetime(tempDate[1])
+      }
+
+      const data = {
+        mesordercode: this.sourceForm.mesordercode, // 宸ュ崟缂栧彿
+        sourceorder: this.sourceForm.sourceorder, // 璁㈠崟璁㈠崟鍙�
+        saleordercode: this.sourceForm.sourceorder, // 璁㈠崟璁㈠崟鍙�
+        partcode: this.sourceForm.partcode, // 浜у搧缂栫爜
+        partname: this.sourceForm.partname, // 浜у搧鍚嶇О
+        partspec: this.sourceForm.partspec, // 浜у搧瑙勬牸
+        // paystartdate: tempDate2, // 浜や粯鏃堕棿
+        // payenddate: tempDate, // 浜や粯鏃堕棿
+        creatuser: this.sourceForm.creatuser, // 鍒涘缓浜哄憳
+        createdate: tempDate, // 鍒涘缓鏃堕棿
+
+        prop: this.sourceForm.prop, // 鎺掑簭瀛楁
+        order: this.sourceForm.order, // 鎺掑簭瀛楁
+        page: this.sourceForm.page, // 绗嚑椤�
+        rows: this.sourceForm.rows // 姣忛〉澶氬皯鏉�
+
+      }
+
+      const res = await MesBadOrderSearch(data)
+      this.sourceTableData = res.data
+      this.sourceFormTotal = res.count
+    },
+    // 鍗曢�夋閫変腑鑾峰彇褰撳墠琛屼俊鎭�
+    // getCurrentRowSource2(id) {
+    //   this.radioSelectedId = id
+    // },
+    // 鍗曢�夋閫変腑鑾峰彇褰撳墠琛屼俊鎭�
+    getCurrentRowSource(row, event, column) {
+      this.radioSelectedId = row.id
+      this.dialogForm.mesqty = row.bad_qty
+    },
+    sourceSearch() {
+      this.getMesBadOrderSearch()
+    },
+    sourceReset() {
+      this.sourceForm.mesordercode = ''
+      this.sourceForm.sourceorder = ''
+      this.sourceForm.partcode = ''
+      this.sourceForm.partname = ''
+      this.sourceForm.partspec = ''
+      // this.sourceForm.paystartdate = ''
+      // this.sourceForm.payenddate = ''
+      this.sourceForm.creatuser = ''
+      this.sourceForm.createdate = ''
+      this.getMesBadOrderSearch()
+    },
+    dialogVisibleSourceClose() {
+      this.radioSelectedId = ''
+
+      this.sourceForm.mesordercode = ''
+      this.sourceForm.sourceorder = ''
+      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_code
+          this.dialogForm.partcode = item.partcode
+          this.dialogForm.partspec = item.partspec
+        }
+      })
+      this.dialogVisibleSource = false
+    },
+    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)
+    },
+    //  琛岀偣鍑讳簨浠�
+    async rowClick(row, event, column) {
+      const data = {
+        sourceid: row.sourceid,
+        sourcewo: row.m_po,
+        wocode: row.wo_code,
+        data_sources: row.data_sources
+      }
+      const { data: res } = await UpdateMesOrderStepSearch(data)
+      this.tableDataDetail = res.stepdata
+    },
+    // 宸ュ簭鍒犻櫎
+    stepDel(row) {
+      console.log(row)
+      const index = this.stepSelectedValue.findIndex(i => i === row.stepcode)
+      this.stepSelectedValue.splice(index, 1)
+    },
+    // 鎵撳嵃宸ュ崟
+    printOrder() {
+
+    },
+    //  閫夋嫨鎵撳嵃灏哄鐨勫ぇ灏忓�兼敼鍙�
+    printSizeChange(val) {
+      this.$nextTick(() => {
+        this.bindQRCode2(this.qrForm.qrvalue)
+      })
+    },
+    printMe2StylePadding(val) {
+      if (val === 0) {
+        return { paddingLeft: '10px', paddingTop: '5px' }
+      }
+      if (val === 5) {
+        return { paddingLeft: '15px', paddingTop: '7px' }
+      }
+    },
+
+    inbarcodeChange(val, item) {
+      // 褰� lastPrintArrSelected涓湭鏈夊綋鍓嶅嬀閫夌殑鍊兼槸  璧皃ush  item  鍚﹀垯璧拌繃婊ゆ帀item
+      if (val) {
+        this.lastPrintArrSelected.push(item)
+      } else {
+        this.lastPrintArrSelected = this.lastPrintArrSelected.filter(i => i.inbarcode !== item.inbarcode)
+      }
+
+      // 鐢熶骇浜岀淮鐮�
+      this.$nextTick(() => {
+        this.lastPrintArrSelected.forEach((i, index) => {
+          console.log(i.inbarcode, 'i.inbarcode')
+          new QRCode(this.$refs.qrCodeDiv3[index], {
+            text: i.inbarcode,
+            width: 60,
+            height: 60,
+            colorDark: '#000', // 浜岀淮鐮侀鑹�
+            colorLight: '#ffffff', // 浜岀淮鐮佽儗鏅壊
+            correctLevel: QRCode.CorrectLevel.L// 瀹归敊鐜囷紝L/M/H
+          })
+        })
+
+        // const div = document.getElementById('qrCode3')
+        // div.scrollTop = 0 // 婊氬姩鏉′綅浜庢渶搴曢儴
+
+        this.$forceUpdate()
+      }, 500)
+    },
+    stepSelectedValueChange(val) {
+      // console.log(val, 123)
+    }
+  }
 }
 </script>
+<style>
+.sortable-ghost {
+  opacity: .8;
+  color: #fff !important;
+  background: #42b983 !important;
+}
+</style>
+<style lang="scss" scoped>
+$main_color: #42b983;
 
-<style scoped>
+.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;
+}
+
+::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;
+}
+
+//::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;
+  //}
+}
+
+::v-deep .el-select__caret {
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
+.tableFixed {
+  ::v-deep .el-table__fixed-right {
+    height: 100% !important;
+  }
+
+  ::v-deep .el-table__fixed {
+    height: 100% !important;
+  }
+}
+</style>
+<style>
+
+.el-table .custom-row {
+  background: #f8f8fa;
+}
 </style>
diff --git a/vue.config.js b/vue.config.js
index b0a451c..82d5a3f 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -52,7 +52,7 @@
     },
     proxy: {
       [process.env.VUE_APP_BASE_API]: {
-        target: 'http://121.196.36.24:8019', // 璇锋眰鐨勭涓夆絽鎺モ紳鍦板潃       鏈湴寮�鍙戞湇鍔″櫒
+        target: 'http://121.196.36.24:8019', // 鏈湴
         changeOrigin: true, // 璇锋眰璺ㄥ煙鏃讹紝闇� 閰嶇疆姝ら」
         pathRewrite: { // 璺緞閲嶅啓,鏇挎崲target涓殑璇锋眰鍦板潃
           ['^' + process.env.VUE_APP_BASE_API]: '/api/'

--
Gitblit v1.9.3