From 697082adae9e0225bf5ab20b33353970dd8b3f3a Mon Sep 17 00:00:00 2001
From: zhuzhuanzhuan
Date: 星期一, 04 三月 2024 16:59:31 +0800
Subject: [PATCH] 1、用户管理页面表单填写界面新增选择设备功能 2、避免命名冲突,更改原选择设备组件名称为selectDeviceDrawer,用户管理页面选择设备组件名称为selectDeviceModal

---
 src/views/mdc/base/modules/deviceRepair/DeviceRepairModel.vue                             |   14 
 src/views/mdc/base/modules/mdcPassRate/mdcPassRateModal.vue                               |   14 
 src/views/mdc/base/modules/HolidayManagement/HolidayManagementModal.vue                   |   14 
 src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModal.vue                 |   14 
 src/views/system/WorkshopSignageManagement.vue                                            |   16 
 src/views/system/modules/SelectDeviceDrawer.vue                                           |  225 ++++++++
 src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue           |   14 
 src/views/system/modules/SelectDeviceModal.vue                                            |  304 ++--------
 src/views/mdc/base/modules/UnplannedDowntimemManager/UnplannedDowntimemManagerModal.vue   |   14 
 src/views/system/modules/UserModal.vue                                                    |  964 ++++++++++++++++++----------------
 src/views/mdc/base/modules/comparativeAnalysis/comparativeAnalysismain.vue                |   14 
 src/views/mdc/base/modules/mdcStandardProcessDuration/MdcStandardProcessDurationModal.vue |   14 
 src/views/mdc/base/modules/deviceCalendar/DeviceCalendarModel.vue                         |   14 
 13 files changed, 879 insertions(+), 756 deletions(-)

diff --git a/src/views/mdc/base/modules/HolidayManagement/HolidayManagementModal.vue b/src/views/mdc/base/modules/HolidayManagement/HolidayManagementModal.vue
index 3c952d6..68cce5c 100644
--- a/src/views/mdc/base/modules/HolidayManagement/HolidayManagementModal.vue
+++ b/src/views/mdc/base/modules/HolidayManagement/HolidayManagementModal.vue
@@ -36,7 +36,7 @@
       </a-form>
     </a-spin>
     <holiday-management-modal-list ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></holiday-management-modal-list>
-    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
+    <select-device-drawer ref="selectDeviceDrawer" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
   </a-modal>
 </template>
 
@@ -53,11 +53,11 @@
   import {
     duplicateCheck
   } from '@/api/api'
-  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
+  import SelectDeviceDrawer from '../../../../system/modules/SelectDeviceDrawer'
 
   export default {
     name: 'HolidayManagementModal',
-    components: { SelectDeviceModal, HolidayManagementModalList},
+    components: { SelectDeviceDrawer, HolidayManagementModalList},
     props: {},
     data() {
       return {
@@ -185,10 +185,10 @@
         // })
       },
       deviceSearch() {
-        this.$refs.selectDeviceModal.visible = true
-        this.$refs.selectDeviceModal.selectedRowKeys = []
-        this.$refs.selectDeviceModal.selectedRows = []
-        this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
+        this.$refs.selectDeviceDrawer.visible = true
+        this.$refs.selectDeviceDrawer.selectedRowKeys = []
+        this.$refs.selectDeviceDrawer.selectedRows = []
+        this.$refs.selectDeviceDrawer.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
       },
       //绾ц仈妗唎nChange浜嬩欢
       // onChange(value) {
diff --git a/src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModal.vue b/src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModal.vue
index 5e65299..a0810d5 100644
--- a/src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModal.vue
+++ b/src/views/mdc/base/modules/OvertimeManagement/OvertimeManagementModal.vue
@@ -47,7 +47,7 @@
       </a-form>
     </a-spin>
     <!--<torqueconfiguration-modal-list ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></torqueconfiguration-modal-list>-->
-    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
+    <select-device-drawer ref="selectDeviceDrawer" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
   </a-modal>
 </template>
 
@@ -64,11 +64,11 @@
   import {
     duplicateCheck
   } from '@/api/api'
-  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
+  import SelectDeviceDrawer from '../../../../system/modules/SelectDeviceDrawer'
 
   export default {
     name: 'TorqueconfigurationModal',
-    components: { SelectDeviceModal, TorqueconfigurationModalList},
+    components: { SelectDeviceDrawer, TorqueconfigurationModalList},
     props: {},
     data() {
       return {
@@ -213,10 +213,10 @@
       //   // })
       // },
       deviceSearch() {
-        this.$refs.selectDeviceModal.visible = true
-        this.$refs.selectDeviceModal.selectedRowKeys = []
-        this.$refs.selectDeviceModal.selectedRows = []
-        this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentId') ? this.form.getFieldValue('equipmentId').split(',') : []
+        this.$refs.selectDeviceDrawer.visible = true
+        this.$refs.selectDeviceDrawer.selectedRowKeys = []
+        this.$refs.selectDeviceDrawer.selectedRows = []
+        this.$refs.selectDeviceDrawer.checkedKeys = this.form.getFieldValue('equipmentId') ? this.form.getFieldValue('equipmentId').split(',') : []
       },
       //绾ц仈妗唎nChange浜嬩欢
       // onChange(value) {
diff --git a/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue b/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue
index ea4852a..ee2f506 100644
--- a/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue
+++ b/src/views/mdc/base/modules/TorqueconfigurationList/TorqueconfigurationModal.vue
@@ -40,7 +40,7 @@
         </a-row>
       </a-form>
     </a-spin>
-    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
+    <select-device-drawer ref="selectDeviceDrawer" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
   </a-modal>
 </template>
 
@@ -57,11 +57,11 @@
   import {
     duplicateCheck
   } from '@/api/api'
-  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
+  import SelectDeviceDrawer from '../../../../system/modules/SelectDeviceDrawer'
 
   export default {
     name: 'TorqueconfigurationModal',
-    components: { SelectDeviceModal },
+    components: { SelectDeviceDrawer },
     props: {},
     data() {
       return {
@@ -198,10 +198,10 @@
         // })
       },
       deviceSearch() {
-        this.$refs.selectDeviceModal.visible = true
-        this.$refs.selectDeviceModal.selectedRowKeys = []
-        this.$refs.selectDeviceModal.selectedRows = []
-        this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
+        this.$refs.selectDeviceDrawer.visible = true
+        this.$refs.selectDeviceDrawer.selectedRowKeys = []
+        this.$refs.selectDeviceDrawer.selectedRows = []
+        this.$refs.selectDeviceDrawer.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
       },
       //绾ц仈妗唎nChange浜嬩欢
       // onChange(value) {
diff --git a/src/views/mdc/base/modules/UnplannedDowntimemManager/UnplannedDowntimemManagerModal.vue b/src/views/mdc/base/modules/UnplannedDowntimemManager/UnplannedDowntimemManagerModal.vue
index 9b68f1e..997ced4 100644
--- a/src/views/mdc/base/modules/UnplannedDowntimemManager/UnplannedDowntimemManagerModal.vue
+++ b/src/views/mdc/base/modules/UnplannedDowntimemManager/UnplannedDowntimemManagerModal.vue
@@ -43,7 +43,7 @@
         </a-row>
       </a-form>
     </a-spin>
-    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
+    <select-device-drawer ref="selectDeviceDrawer" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
   </a-modal>
 </template>
 
@@ -59,11 +59,11 @@
   import {
     duplicateCheck
   } from '@/api/api'
-  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
+  import SelectDeviceDrawer from '../../../../system/modules/SelectDeviceDrawer'
 
   export default {
     name: 'UnplannedDowntimemManagerModal',
-    components: { SelectDeviceModal,JDate},
+    components: { SelectDeviceDrawer,JDate},
     props: {},
     data() {
       return {
@@ -200,10 +200,10 @@
         // })
       },
       deviceSearch() {
-        this.$refs.selectDeviceModal.visible = true
-        this.$refs.selectDeviceModal.selectedRowKeys = []
-        this.$refs.selectDeviceModal.selectedRows = []
-        this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
+        this.$refs.selectDeviceDrawer.visible = true
+        this.$refs.selectDeviceDrawer.selectedRowKeys = []
+        this.$refs.selectDeviceDrawer.selectedRows = []
+        this.$refs.selectDeviceDrawer.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
       },
       //绾ц仈妗唎nChange浜嬩欢
       // onChange(value) {
diff --git a/src/views/mdc/base/modules/comparativeAnalysis/comparativeAnalysismain.vue b/src/views/mdc/base/modules/comparativeAnalysis/comparativeAnalysismain.vue
index a3a6eed..11bd91d 100644
--- a/src/views/mdc/base/modules/comparativeAnalysis/comparativeAnalysismain.vue
+++ b/src/views/mdc/base/modules/comparativeAnalysis/comparativeAnalysismain.vue
@@ -61,7 +61,7 @@
       <!-- table鍖哄煙-end -->
     </div>
 
-    <selectDeviceModal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"></selectDeviceModal>
+    <SelectDeviceDrawer ref="selectDeviceDrawer" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"></SelectDeviceDrawer>
   </div>
 </template>
 
@@ -84,7 +84,7 @@
   import Tooltip from 'ant-design-vue/es/tooltip'
   import { ajaxGetDictItems, getDictItemsFromCache, duplicateCheck } from '@/api/api'
   import api from '@/api/mdc'
-  import selectDeviceModal from '../../../../system/modules/SelectDeviceModal.vue'
+  import SelectDeviceDrawer from '../../../../system/modules/SelectDeviceDrawer.vue'
 
   export default {
     name: 'comparativeAnalysismain',
@@ -98,7 +98,7 @@
       JInput,
       JDate,
       JEllipsis,
-      selectDeviceModal
+      SelectDeviceDrawer
     },
     props: { nodeTree: '', Type: '', nodePeople: '' },
     data() {
@@ -438,10 +438,10 @@
       // },
       deviceSearch() {
         console.log('瑙﹀彂')
-        this.$refs.selectDeviceModal.visible = true
-        this.$refs.selectDeviceModal.selectedRowKeys = []
-        this.$refs.selectDeviceModal.selectedRows = []
-        this.$refs.selectDeviceModal.checkedKeys = this.queryParam.equipmentId.split(',')
+        this.$refs.selectDeviceDrawer.visible = true
+        this.$refs.selectDeviceDrawer.selectedRowKeys = []
+        this.$refs.selectDeviceDrawer.selectedRows = []
+        this.$refs.selectDeviceDrawer.checkedKeys = this.queryParam.equipmentId.split(',')
       },
 
       /**
diff --git a/src/views/mdc/base/modules/deviceCalendar/DeviceCalendarModel.vue b/src/views/mdc/base/modules/deviceCalendar/DeviceCalendarModel.vue
index 01f0c63..6d15f94 100644
--- a/src/views/mdc/base/modules/deviceCalendar/DeviceCalendarModel.vue
+++ b/src/views/mdc/base/modules/deviceCalendar/DeviceCalendarModel.vue
@@ -44,7 +44,7 @@
         </a-form>
       </a-spin>
       <device-calend-list-model ref="deviceRepairListModel" @sendSelectionRows="getDeviceRows"></device-calend-list-model>
-      <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
+      <select-device-drawer ref="selectDeviceDrawer" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
     </a-modal>
   </div>
 </template>
@@ -63,11 +63,11 @@
   } from '@/api/api'
 
   import Calendar from 'vue-calendar-component';
-  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
+  import SelectDeviceDrawer from '../../../../system/modules/SelectDeviceDrawer'
 
   export default {
     name: 'ShiftInfoModel',
-    components: { SelectDeviceModal, DeviceCalendListModel,Calendar},
+    components: { SelectDeviceDrawer, DeviceCalendListModel,Calendar},
     props: {},
     data() {
       return {
@@ -241,10 +241,10 @@
         this.value = value;
       },
       deviceSearch() {
-        this.$refs.selectDeviceModal.visible = true
-        this.$refs.selectDeviceModal.selectedRowKeys = []
-        this.$refs.selectDeviceModal.selectedRows = []
-        this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentId') ? this.form.getFieldValue('equipmentId').split(',') : []
+        this.$refs.selectDeviceDrawer.visible = true
+        this.$refs.selectDeviceDrawer.selectedRowKeys = []
+        this.$refs.selectDeviceDrawer.selectedRows = []
+        this.$refs.selectDeviceDrawer.checkedKeys = this.form.getFieldValue('equipmentId') ? this.form.getFieldValue('equipmentId').split(',') : []
       },
       getDeviceRows(val) {
         console.log("========",val);
diff --git a/src/views/mdc/base/modules/deviceRepair/DeviceRepairModel.vue b/src/views/mdc/base/modules/deviceRepair/DeviceRepairModel.vue
index 99823a2..64f0cbd 100644
--- a/src/views/mdc/base/modules/deviceRepair/DeviceRepairModel.vue
+++ b/src/views/mdc/base/modules/deviceRepair/DeviceRepairModel.vue
@@ -74,7 +74,7 @@
         <!--</a-row>-->
       </a-form>
     </a-spin>
-    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
+    <select-device-drawer ref="selectDeviceDrawer" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
   </a-modal>
 </template>
 
@@ -91,11 +91,11 @@
     duplicateCheck
   } from '@/api/api'
   import Vue from 'vue'
-  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
+  import SelectDeviceDrawer from '../../../../system/modules/SelectDeviceDrawer'
 
   export default {
     name: 'DeviceRepairModel',
-    components: { SelectDeviceModal, JDate },
+    components: { SelectDeviceDrawer, JDate },
     props: {
       equipmentId: {
         type: String
@@ -273,10 +273,10 @@
         // })
       },
       deviceSearch() {
-        this.$refs.selectDeviceModal.visible = true
-        this.$refs.selectDeviceModal.selectedRowKeys = []
-        this.$refs.selectDeviceModal.selectedRows = []
-        this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
+        this.$refs.selectDeviceDrawer.visible = true
+        this.$refs.selectDeviceDrawer.selectedRowKeys = []
+        this.$refs.selectDeviceDrawer.selectedRows = []
+        this.$refs.selectDeviceDrawer.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
       },
       //绾ц仈妗唎nChange浜嬩欢
       // onChange(value) {
diff --git a/src/views/mdc/base/modules/mdcPassRate/mdcPassRateModal.vue b/src/views/mdc/base/modules/mdcPassRate/mdcPassRateModal.vue
index dffd018..ec5eb17 100644
--- a/src/views/mdc/base/modules/mdcPassRate/mdcPassRateModal.vue
+++ b/src/views/mdc/base/modules/mdcPassRate/mdcPassRateModal.vue
@@ -39,7 +39,7 @@
         </a-row>
       </a-form>
     </a-spin>
-    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
+    <select-device-drawer ref="selectDeviceDrawer" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
   </a-modal>
 </template>
 
@@ -55,11 +55,11 @@
   import {
     duplicateCheck
   } from '@/api/api'
-  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
+  import SelectDeviceDrawer from '../../../../system/modules/SelectDeviceDrawer'
 
   export default {
     name: 'mdcPassRateModal',
-    components: { SelectDeviceModal},
+    components: { SelectDeviceDrawer},
     props: {},
     data() {
       return {
@@ -196,10 +196,10 @@
         // })
       },
       deviceSearch() {
-        this.$refs.selectDeviceModal.visible = true
-        this.$refs.selectDeviceModal.selectedRowKeys = []
-        this.$refs.selectDeviceModal.selectedRows = []
-        this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
+        this.$refs.selectDeviceDrawer.visible = true
+        this.$refs.selectDeviceDrawer.selectedRowKeys = []
+        this.$refs.selectDeviceDrawer.selectedRows = []
+        this.$refs.selectDeviceDrawer.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
       },
       //绾ц仈妗唎nChange浜嬩欢
       // onChange(value) {
diff --git a/src/views/mdc/base/modules/mdcStandardProcessDuration/MdcStandardProcessDurationModal.vue b/src/views/mdc/base/modules/mdcStandardProcessDuration/MdcStandardProcessDurationModal.vue
index 0cc0796..097c031 100644
--- a/src/views/mdc/base/modules/mdcStandardProcessDuration/MdcStandardProcessDurationModal.vue
+++ b/src/views/mdc/base/modules/mdcStandardProcessDuration/MdcStandardProcessDurationModal.vue
@@ -44,7 +44,7 @@
         </a-row>
       </a-form>
     </a-spin>
-    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
+    <select-device-drawer ref="selectDeviceDrawer" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
 
   </a-modal>
 </template>
@@ -61,11 +61,11 @@
   import {
     duplicateCheck
   } from '@/api/api'
-  import SelectDeviceModal from '../../../../system/modules/SelectDeviceModal'
+  import SelectDeviceDrawer from '../../../../system/modules/SelectDeviceDrawer'
 
   export default {
     name: 'MdcStandardProcessDurationModal',
-    components: { SelectDeviceModal },
+    components: { SelectDeviceDrawer },
     props: {},
     data() {
       return {
@@ -210,10 +210,10 @@
         // })
       },
       deviceSearch() {
-        this.$refs.selectDeviceModal.visible = true
-        this.$refs.selectDeviceModal.selectedRowKeys = []
-        this.$refs.selectDeviceModal.selectedRows = []
-        this.$refs.selectDeviceModal.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
+        this.$refs.selectDeviceDrawer.visible = true
+        this.$refs.selectDeviceDrawer.selectedRowKeys = []
+        this.$refs.selectDeviceDrawer.selectedRows = []
+        this.$refs.selectDeviceDrawer.checkedKeys = this.form.getFieldValue('equipmentIds') ? this.form.getFieldValue('equipmentIds').split(',') : []
       },
       //绾ц仈妗唎nChange浜嬩欢
       // onChange(value) {
diff --git a/src/views/system/WorkshopSignageManagement.vue b/src/views/system/WorkshopSignageManagement.vue
index 380e6d3..1c02197 100644
--- a/src/views/system/WorkshopSignageManagement.vue
+++ b/src/views/system/WorkshopSignageManagement.vue
@@ -150,14 +150,14 @@
     <!-- 琛ㄥ崟鍖哄煙 -->
     <workshop-modal ref="modalForm" @ok="modalFormOk"></workshop-modal>
     <!--鏂板杞﹂棿-->
-    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'娣诲姞宸叉湁璁惧'"></select-device-modal>
+    <select-device-drawer ref="selectDeviceDrawer" @selectFinished="selectOK" :title="'娣诲姞宸叉湁璁惧'"></select-device-drawer>
     <!--宸叉湁璁惧-->
   </a-row>
 </template>
 <script>
 import { JeecgListMixin } from '@/mixins/JeecgListMixin'
 import { deleteAction, postAction, getAction } from '@/api/manage'
-import SelectDeviceModal from './modules/SelectDeviceModal'
+import SelectDeviceDrawer from './modules/SelectDeviceDrawer'
 import WorkshopModal from './modules/WorkshopModal'
 import { filterObj } from '@/utils/util'
 import moment from 'moment'
@@ -166,7 +166,7 @@
   name: 'WorkshopSignageManagement',
   mixins: [JeecgListMixin],
   components: {
-    SelectDeviceModal,
+    SelectDeviceDrawer,
     WorkshopModal,
     moment,
   },
@@ -475,11 +475,11 @@
       if (this.currentWorkshopId == '') {
         this.$message.error('璇烽�夋嫨涓�涓溅闂�!')
       } else {
-        this.$refs.selectDeviceModal.visible = true
-        this.$refs.selectDeviceModal.selectedRowKeys = []
-        this.$refs.selectDeviceModal.selectedRows = []
-        this.$refs.selectDeviceModal.checkedKeys = []
-        this.$refs.selectDeviceModal.expandAll()
+        this.$refs.selectDeviceDrawer.visible = true
+        this.$refs.selectDeviceDrawer.selectedRowKeys = []
+        this.$refs.selectDeviceDrawer.selectedRows = []
+        this.$refs.selectDeviceDrawer.checkedKeys = []
+        this.$refs.selectDeviceDrawer.expandAll()
       }
     },
 
diff --git a/src/views/system/modules/SelectDeviceDrawer.vue b/src/views/system/modules/SelectDeviceDrawer.vue
new file mode 100644
index 0000000..5d49708
--- /dev/null
+++ b/src/views/system/modules/SelectDeviceDrawer.vue
@@ -0,0 +1,225 @@
+<template>
+  <a-drawer
+    :title="title"
+    :visible="visible"
+    width="650"
+    @ok="handleOk"
+    @close="handleCancel"
+  >
+
+    <a-spin :spinning="loading">
+      <!-- showLine -->
+      <a-form>
+        <a-form-item label="杞﹂棿灞傜骇锛�">
+          <a-tree showLine ref="tree" :expandedKeys.sync="expandedKeys"
+                  :treeData="treeDataSource" checkable @check="onCheck" v-model="checkedKeys"
+                  @expand="onExpand">
+          </a-tree>
+        </a-form-item>
+      </a-form>
+
+    </a-spin>
+
+
+    <div class="drawer-bottom-button">
+      <a-dropdown
+        style="float: left"
+        :trigger="['click']"
+        placement="topCenter"
+      >
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="expandAll">灞曞紑鎵�鏈�</a-menu-item>
+          <a-menu-item key="2" @click="closeAll">鍚堝苟鎵�鏈�</a-menu-item>
+          <a-menu-item key="3" @click="refreshTree">鍒锋柊</a-menu-item>
+        </a-menu>
+        <a-button>
+          鏍戞搷浣�
+          <a-icon type="up"/>
+        </a-button>
+      </a-dropdown>
+      <a-popconfirm title="纭畾鏀惧純缂栬緫锛�" @confirm="handleCancel" okText="纭畾" cancelText="鍙栨秷">
+        <a-button style="margin-right: .8rem">鍏抽棴</a-button>
+      </a-popconfirm>
+      <a-button
+        @click="handleOk"
+        type="primary"
+      >纭畾
+      </a-button>
+    </div>
+
+  </a-drawer>
+</template>
+
+<script>
+  import {
+    getAction,
+    postAction,
+    deleteAction
+  } from '@/api/manage'
+  import BaseTree from '@/views/mdc/common/BaseTree'
+  import DepartTree from '@/views/mdc/base/modules/DepartList/DepartListTree/DepartTree'
+  import { mapActions } from 'vuex'
+
+  export default {
+    name: 'SelectDeviceDrawer',
+    components: {
+      BaseTree, DepartTree
+    },
+    props: {
+      editDisable: {
+        type: Boolean,
+        default() {
+          return true
+        }
+      },
+      title: {
+        type: String
+      }
+    },
+    data() {
+      return {
+        cardLoading: false,
+        loading: false,
+        treeDataSource: [],
+        expandedKeys: [],
+        checkedKeys: [],
+        url: {
+          getBaseTree: '/mdc/mdcEquipment/queryTreeListByProduction'
+        },
+        dataList: [],
+        allTreeKeys: [],
+        visible: false,
+        dataSource: []
+      }
+    },
+    created() {
+      this.queryTreeData()
+      this.closeAll()
+    },
+    methods: {
+      ...mapActions(['QueryProduction']),
+      onExpand(expandedKeys) {
+        this.expandedKeys = expandedKeys
+        this.autoExpandParent = false
+      },
+
+      queryTreeData() {
+        this.loading = true
+        this.cardLoading = true
+        this.QueryProduction().then(res => {
+          if (res.success) {
+            this.dataList = []
+            this.allTreeKeys = []
+            this.getTreeDataSouce(res.result)
+            this.treeDataSource = res.result
+            this.generateList(this.treeDataSource)
+            console.log('treeDataSource', this.treeDataSource)
+            this.expandedKeys = this.allTreeKeys
+          } else {
+            this.$message.warn(res.message)
+          }
+        }).finally(() => {
+          this.loading = false
+          this.cardLoading = false
+        })
+      },
+
+      generateList(data) {
+        for (let i = 0; i < data.length; i++) {
+          const node = data[i]
+          const key = node.key
+          const title = node.title
+          this.dataList.push({
+            key,
+            title: title
+          })
+          this.allTreeKeys.push(key)
+          if (node.children) {
+            this.generateList(node.children)
+          }
+        }
+      },
+
+      getTreeDataSouce(data) {
+        data.forEach(item => {
+          if (item.children && item.children.length > 0) {
+            this.getTreeDataSouce(item.children)
+          }
+          item.key = item.equipmentId ? item.equipmentId : item.key
+          item.value = item.equipmentId ? item.equipmentId : item.value
+        })
+      },
+      expandAll() {
+        this.expandedKeys = this.allTreeKeys
+      },
+      closeAll() {
+        this.expandedKeys = ['-1']
+      },
+      refreshTree() {
+        this.queryTreeData()
+      },
+      onCheck(value, obj) {
+        this.checkedKeys = value
+        console.log('obj,', obj)
+        this.deviceNodes = obj.checkedNodes.filter(item => item.data.props.equipmentId).map(item => item.data.props.equipmentId)
+        console.log(this.deviceNodes)
+      },
+      handleCancel() {
+        this.visible = false
+      },
+      handleOk() {
+        this.$emit('selectFinished', this.deviceNodes)
+        this.visible = false
+      }
+
+    }
+  }
+</script>
+<style lang="less" scoped>
+  /deep/ .ant-modal {
+    /*transform-origin: 337px 50px;*/
+  }
+
+  .ant-card-body .table-operator {
+    margin-bottom: 18px;
+  }
+
+  .ant-table-tbody .ant-table-row td {
+    padding-top: 15px;
+    padding-bottom: 15px;
+  }
+
+  .anty-row-operator button {
+    margin: 0 5px
+  }
+
+  .ant-btn-danger {
+    background-color: #ffffff
+  }
+
+  .ant-modal-cust-warp {
+    height: 100%
+  }
+
+  .ant-modal-cust-warp .ant-modal-body {
+    height: calc(100% - 110px) !important;
+    overflow-y: auto
+  }
+
+  .ant-modal-cust-warp .ant-modal-content {
+    height: 90% !important;
+    overflow-y: hidden
+  }
+
+  .drawer-bottom-button {
+    position: absolute;
+    bottom: 0;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>
\ No newline at end of file
diff --git a/src/views/system/modules/SelectDeviceModal.vue b/src/views/system/modules/SelectDeviceModal.vue
index f91e1d4..4b28bc2 100644
--- a/src/views/system/modules/SelectDeviceModal.vue
+++ b/src/views/system/modules/SelectDeviceModal.vue
@@ -1,65 +1,26 @@
 <template>
-  <div>
-    <a-drawer
-      :title="title"
-      :visible="visible"
-      width="650"
-      @ok="handleOk"
-      @close="handleCancel"
-    >
+  <a-modal
+    :title="title"
+    :visible="visible"
+    @ok="handleOk"
+    @cancel="handleCancel"
+  >
 
-      <!--&lt;!&ndash; 鏌ヨ鍖哄煙 &ndash;&gt;-->
-      <!--<div class="table-page-search-wrapper">-->
-      <!--<a-form layout="inline" @keyup.enter.native="searchQuery">-->
-      <!--<a-row :gutter="24">-->
+    <a-spin :spinning="loading">
+      <!-- showLine -->
+      <a-form>
+        <a-form-item label="杞﹂棿灞傜骇锛�">
+          <a-tree showLine ref="tree" :expandedKeys.sync="expandedKeys"
+                  :treeData="treeDataSource" checkable @check="onCheck" v-model="checkedKeys"
+                  @expand="onExpand">
+          </a-tree>
+        </a-form-item>
+      </a-form>
 
-      <!--<a-col :span="10">-->
-      <!--<a-form-item label="璁惧鍚嶇О">-->
-      <!--<a-input placeholder="璇疯緭鍏ヨ澶囧悕绉�" v-model="queryParam.equipmentName"></a-input>-->
-      <!--</a-form-item>-->
-      <!--</a-col>-->
-      <!--<a-col :span="8">-->
-      <!--<span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">-->
-      <!--<a-button type="primary" @click="searchQuery" icon="search">鏌ヨ</a-button>-->
-      <!--<a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">閲嶇疆</a-button>-->
-      <!--</span>-->
-      <!--</a-col>-->
+    </a-spin>
 
-      <!--</a-row>-->
-      <!--</a-form>-->
-      <!--</div>-->
-      <!--&lt;!&ndash; table鍖哄煙-begin &ndash;&gt;-->
-      <!--<div>-->
-      <!--<a-table-->
-      <!--size="small"-->
-      <!--bordered-->
-      <!--rowKey="equipmentId"-->
-      <!--:columns="columns1"-->
-      <!--:dataSource="dataSource1"-->
-      <!--:pagination="ipagination"-->
-      <!--:loading="loading"-->
-      <!--:scroll="{ y: 240 }"-->
-      <!--:rowSelection="{selectedRowKeys: selectedRowKeys,onSelectAll:onSelectAll,onSelect:onSelect,onChange: onSelectChange}"-->
-      <!--@change="handleTableChange">-->
-      <!--</a-table>-->
-      <!--</div>-->
-      <!--&lt;!&ndash; table鍖哄煙-end &ndash;&gt;-->
-
-      <a-spin :spinning="loading">
-        <!-- showLine -->
-        <a-form>
-          <a-form-item label="杞﹂棿灞傜骇锛�">
-            <a-tree showLine ref="tree" :expandedKeys.sync="expandedKeys"
-                    :treeData="treeDataSource" checkable @check="onCheck" v-model="checkedKeys"
-                    @expand="onExpand">
-            </a-tree>
-          </a-form-item>
-        </a-form>
-
-      </a-spin>
-
-
-      <div class="drawer-bottom-button">
+    <template slot="footer">
+      <div>
         <a-dropdown
           style="float: left"
           :trigger="['click']"
@@ -84,14 +45,12 @@
         >纭畾
         </a-button>
       </div>
+    </template>
 
-    </a-drawer>
-  </div>
+  </a-modal>
 </template>
 
 <script>
-  // import { filterObj } from '@/utils/util'
-  // import { getAction } from '@/api/manage'
   import {
     getAction,
     postAction,
@@ -99,7 +58,6 @@
   } from '@/api/manage'
   import BaseTree from '@/views/mdc/common/BaseTree'
   import DepartTree from '@/views/mdc/base/modules/DepartList/DepartListTree/DepartTree'
-  import { mapActions } from 'vuex'
 
   export default {
     name: 'SelectDeviceModal',
@@ -115,122 +73,83 @@
       },
       title: {
         type: String
+      },
+      selectedProduction: {
+        type: String
       }
     },
     data() {
       return {
-        cardLoading: false,
         loading: false,
         treeDataSource: [],
         expandedKeys: [],
         checkedKeys: [],
         url: {
-          getBaseTree: '/mdc/mdcEquipment/queryTreeListByProduction'
+          getDeviceTree: '/mdc/mdcEquipment/loadTreeListByProductionIds'
         },
+        selectedWorkshopIds: '',
         dataList: [],
         allTreeKeys: [],
         visible: false,
         dataSource: []
-
-        // names: [],
-        // placement: 'right',
-        // description: '',
-        // // 鏌ヨ鏉′欢
-        // queryParam: {},
-        // // 琛ㄥご
-        // columns1: [
-        //   {
-        //     title: '#',
-        //     dataIndex: '',
-        //     key: 'rowIndex',
-        //     width: 50,
-        //     align: 'center',
-        //     customRender: function(t, r, index) {
-        //       return parseInt(index) + 1
-        //     }
-        //   },
-        //   {
-        //     title: '璁惧缂栧彿',
-        //     align: 'center',
-        //     width: 100,
-        //     dataIndex: 'equipmentId'
-        //   },
-        //   {
-        //     title: '璁惧鍚嶇О',
-        //     align: 'center',
-        //     width: 100,
-        //     dataIndex: 'equipmentName'
-        //   },
-        //   {
-        //     title: '璁惧绫诲瀷',
-        //     align: 'center',
-        //     width: 100,
-        //     dataIndex: 'equipmentType'
-        //   },
-        //   {
-        //     title: '椹卞姩绫诲瀷',
-        //     align: 'center',
-        //     width: 100,
-        //     dataIndex: 'driveType'
-        //   }
-        // ],
-        // //鏁版嵁闆�
-        // dataSource1: [],
-        // dataSource2: [],
-        // // 鍒嗛〉鍙傛暟
-        // ipagination: {
-        //   current: 1,
-        //   pageSize: 10,
-        //   pageSizeOptions: ['10', '20', '30'],
-        //   showTotal: (total, range) => {
-        //     return range[0] + '-' + range[1] + ' 鍏�' + total + '鏉�'
-        //   },
-        //   showQuickJumper: true,
-        //   showSizeChanger: true,
-        //   total: 0
-        // },
-        // loading: false,
-        // selectedRowKeys: [],
-        // selectedRows: [],
-        // url: {
-        //   list: '/mdc/mdcEquipment/list'
-        // },
-        // activeKey: '1',
-        // isDepartType: ''
       }
     },
     created() {
-      // this.loadData()
-      this.queryTreeData()
       this.closeAll()
     },
     methods: {
-      ...mapActions(['QueryProduction']),
-
       onExpand(expandedKeys) {
         this.expandedKeys = expandedKeys
         this.autoExpandParent = false
       },
-
-      queryTreeData() {
+      queryTreeData(value) {
+        // this.loading = true
+        // this.cardLoading = true
+        // this.QueryProduction().then(res => {
+        //   if (res.success) {
+        //     this.dataList = []
+        //     this.allTreeKeys = []
+        //     this.getTreeDataSouce(res.result)
+        //     this.treeDataSource = res.result
+        //     this.generateList(this.treeDataSource)
+        //     console.log('treeDataSource', this.treeDataSource)
+        //     this.expandedKeys = this.allTreeKeys
+        //   } else {
+        //     this.$message.warn(res.message)
+        //   }
+        // }).finally(() => {
+        //   this.loading = false
+        //   this.cardLoading = false
+        // })
         this.loading = true
-        this.cardLoading = true
-        this.QueryProduction().then(res => {
-          if (res.success) {
-            this.dataList = []
-            this.allTreeKeys = []
-            this.getTreeDataSouce(res.result)
-            this.treeDataSource = res.result
-            this.generateList(this.treeDataSource)
-            console.log('treeDataSource', this.treeDataSource)
-            this.expandedKeys = this.allTreeKeys
-          } else {
-            this.$message.warn(res.message)
-          }
-        }).finally(() => {
-          this.loading = false
-          this.cardLoading = false
-        })
+        this.selectedWorkshopIds = value
+        getAction(this.url.getDeviceTree, { ids: value })
+          .then(res => {
+            console.log('res===============', res)
+            if (res.success) {
+              this.dataList = []
+              this.allTreeKeys = []
+              this.getTreeDataSouce(res.result)
+              this.treeDataSource = res.result
+              this.generateList(this.treeDataSource)
+              console.log('treeDataSource', this.treeDataSource)
+              this.expandedKeys = this.allTreeKeys
+            } else {
+              this.$notification.warning({
+                message: '娑堟伅',
+                description: res.message
+              })
+            }
+          })
+          .catch(err => {
+            this.$notification.error({
+              message: '娑堟伅',
+              description: err.message
+            })
+          })
+          .finally(() => {
+            this.loading = false
+          })
       },
 
       generateList(data) {
@@ -265,7 +184,7 @@
         this.expandedKeys = ['-1']
       },
       refreshTree() {
-        this.queryTreeData()
+        this.queryTreeData(this.selectedWorkshopIds)
       },
       onCheck(value, obj) {
         this.checkedKeys = value
@@ -280,81 +199,6 @@
         this.$emit('selectFinished', this.deviceNodes)
         this.visible = false
       }
-
-      // add() {
-      //   this.visible = true
-      // },
-      // loadData(arg) {
-      //   //鍔犺浇鏁版嵁 鑻ヤ紶鍏ュ弬鏁�1鍒欏姞杞界涓�椤电殑鍐呭
-      //   if (arg === 1) {
-      //     this.ipagination.current = 1
-      //   }
-      //   var params = this.getQueryParams()//鏌ヨ鏉′欢
-      //   getAction(this.url.list, params).then((res) => {
-      //     if (res.success) {
-      //       this.dataSource1 = res.result.records
-      //       this.ipagination.total = res.result.total
-      //     }
-      //   })
-      // },
-      // getQueryParams() {
-      //   var param = Object.assign({}, this.queryParam, this.isorter)
-      //   param.field = this.getQueryField()
-      //   param.pageNo = this.ipagination.current
-      //   param.pageSize = this.ipagination.pageSize
-      //   return filterObj(param)
-      // },
-      // getQueryField() {
-      //   //TODO 瀛楁鏉冮檺鎺у埗
-      // },
-      // onSelectAll(selected, selectedRows, changeRows) {
-      //   if (selected === true) {
-      //     for (var a = 0; a < changeRows.length; a++) {
-      //       this.dataSource2.push(changeRows[a])
-      //     }
-      //   } else {
-      //     for (var b = 0; b < changeRows.length; b++) {
-      //       this.dataSource2.splice(this.dataSource2.indexOf(changeRows[b]), 1)
-      //     }
-      //   }
-      //   // console.log(selected, selectedRows, changeRows);
-      // },
-      // onSelect(record, selected) {
-      //   console.log(this.selectedRowKeys)
-      //   if (selected === true) {
-      //     this.dataSource2.push(record)
-      //   } else {
-      //     var index = this.dataSource2.indexOf(record)
-      //     //console.log();
-      //     if (index >= 0) {
-      //       this.dataSource2.splice(this.dataSource2.indexOf(record), 1)
-      //     }
-      //   }
-      // },
-      // onSelectChange(selectedRowKeys, selectedRows) {
-      //   console.log('selectedRowKeys', selectedRowKeys)
-      //   this.selectedRowKeys = selectedRowKeys
-      //   this.selectionRows = selectedRows
-      // },
-      // onClearSelected() {
-      //   this.selectedRowKeys = []
-      //   this.selectionRows = []
-      // },
-      // handleDelete: function(record) {
-      //   this.dataSource2.splice(this.dataSource2.indexOf(record), 1)
-      // },
-      // handleTableChange(pagination, filters, sorter) {
-      //   //鍒嗛〉銆佹帓搴忋�佺瓫閫夊彉鍖栨椂瑙﹀彂
-      //   console.log(sorter)
-      //   //TODO 绛涢��
-      //   if (Object.keys(sorter).length > 0) {
-      //     this.isorter.column = sorter.field
-      //     this.isorter.order = 'ascend' == sorter.order ? 'asc' : 'desc'
-      //   }
-      //   this.ipagination = pagination
-      //   this.loadData()
-      // },
-
 
     }
   }
diff --git a/src/views/system/modules/UserModal.vue b/src/views/system/modules/UserModal.vue
index 5543680..05b0da8 100644
--- a/src/views/system/modules/UserModal.vue
+++ b/src/views/system/modules/UserModal.vue
@@ -130,7 +130,8 @@
             @back="backDepartInfo"
             :backDepart="true"
             :treeOpera="true"
-          >></j-select-depart>
+          >>
+          </j-select-depart>
         </a-form-model-item>
 
         <!--杞﹂棿鍒嗛厤-->
@@ -148,6 +149,17 @@
             :treeProductOpera="true"
           ></j-select-production>
         </a-form-model-item>
+
+        <a-form-model-item
+          label="閫夋嫨璁惧"
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          v-show="!productionDisabled"
+        >
+          <a-input-search :readOnly="true" v-model="model.equipmentIds" @search="deviceSearch" enter-button
+                          placeholder="璇烽�夋嫨璁惧" :disabled="!model.selectedProduction"/>
+        </a-form-model-item>
+
         <a-form-model-item
           label="鐝粍鍒嗛厤"
           :labelCol="labelCol"
@@ -289,476 +301,518 @@
         @click="handleSubmit"
         type="primary"
         :loading="confirmLoading"
-      >鎻愪氦</a-button>
+      >鎻愪氦
+      </a-button>
     </div>
+
+    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
   </a-drawer>
 </template>
 
 <script>
-import moment from 'moment'
-import Vue from 'vue'
-import { ACCESS_TOKEN } from "@/store/mutation-types"
-import { getAction } from '@/api/manage'
-import { addUser, editUser, queryUserRole, queryall } from '@/api/api'
-import { disabledAuthFilter } from "@/utils/authFilter"
-import { duplicateCheck } from '@/api/api'
-import JSelectProduction from '../../../components/jeecgbiz/JSelectProduction'
-import { mapActions } from 'vuex'
-import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api'
+  import moment from 'moment'
+  import Vue from 'vue'
+  import { ACCESS_TOKEN } from '@/store/mutation-types'
+  import { getAction } from '@/api/manage'
+  import { addUser, editUser, queryUserRole, queryall } from '@/api/api'
+  import { disabledAuthFilter } from '@/utils/authFilter'
+  import { duplicateCheck } from '@/api/api'
+  import JSelectProduction from '../../../components/jeecgbiz/JSelectProduction'
+  import { mapActions } from 'vuex'
+  import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api'
+  import SelectDeviceModal from './SelectDeviceModal'
 
-export default {
-  name: "UserModal",
-  components: {
-    JSelectProduction
-  },
-  data() {
-    return {
-      departDisabled: false, //鏄惁鏄垜鐨勯儴闂ㄨ皟鐢ㄨ椤甸潰
-      productionDisabled: false, //鏄惁鏄垜鐨勮溅闂磋皟鐢ㄨ椤甸潰
-      roleDisabled: false, //鏄惁鏄鑹茬淮鎶よ皟鐢ㄨ椤甸潰
-      modalWidth: 800,
-      drawerWidth: 700,
-      modaltoggleFlag: true,
-      confirmDirty: false,
-      userId: "", //淇濆瓨鐢ㄦ埛id
-      disableSubmit: false,
-      dateFormat: "YYYY-MM-DD",
-      validatorRules: {
-        username: [{ required: true, message: '璇疯緭鍏ョ敤鎴疯处鍙�!' },
-        { validator: this.validateUsername, }],
-        password: [{ required: true, pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/, message: '瀵嗙爜鐢�8浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!' },
-        { validator: this.validateToNextPassword, trigger: 'change' }],
-        confirmpassword: [{ required: true, message: '璇烽噸鏂拌緭鍏ョ櫥褰曞瘑鐮�!', },
-        { validator: this.compareToFirstPassword, }],
-        realname: [{ required: true, message: '璇疯緭鍏ョ敤鎴峰悕绉�!' }],
-        phone: [{ required: false, message: '璇疯緭鍏ユ墜鏈哄彿!' }, { validator: this.validatePhone }],
-        email: [{ validator: this.validateEmail }],
-        roles: {},
-        workNo: [{ required: true, message: '璇疯緭鍏ュ伐鍙�' },
-        { validator: this.validateWorkNo }],
-        telephone: [{ pattern: /^0\d{2,3}-[1-9]\d{6,7}$/, message: '璇疯緭鍏ユ纭殑搴ф満鍙风爜' },],
-        teamId: [{ required: false, message: '璇风淮鎶ょ彮缁�' }]
-
-      },
-      departIdShow: false,
-      title: "鎿嶄綔",
-      visible: false,
-      model: {},
-      labelCol: {
-        xs: { span: 24 },
-        sm: { span: 5 },
-      },
-      wrapperCol: {
-        xs: { span: 24 },
-        sm: { span: 16 },
-      },
-      uploadLoading: false,
-      confirmLoading: false,
-      headers: {},
-      url: {
-        fileUpload: window._CONFIG['domianURL'] + "sys/common/upload",
-        userWithDepart: "/sys/user/userDepartList", // 寮曞叆涓烘寚瀹氱敤鎴锋煡鐪嬮儴闂ㄤ俊鎭渶瑕佺殑url
-        //寮曞叆涓烘寚瀹氱敤鎴锋煡鐪嬭溅闂翠俊鎭渶瑕佺殑url
-        userProductionList: '/sys/user/userProductionList',
-        userId: "/sys/user/generateUserId", // 寮曞叆鐢熸垚娣诲姞鐢ㄦ埛鎯呭喌涓嬬殑url
-        syncUserByUserName: "/act/process/extActProcess/doSyncUserByUserName",//鍚屾鐢ㄦ埛鍒板伐浣滄祦
-        queryTenantList: '/sys/tenant/queryList'
-      },
-      tenantsOptions: [],
-      rolesOptions: [],
-      nextDepartOptions: [],
-      nextProductionOptions: [],
-      isDepartType: '',
-
-    }
-  },
-  watch: {
-    visible: {
-      handler(value) {
-        if (value) this.initDictData('password_length')
-      }
-    }
-  },
-  created() {
-    const token = Vue.ls.get(ACCESS_TOKEN);
-    this.headers = { "X-Access-Token": token }
-    this.initRoleList()
-    this.initTenantList()
-    this.queryTreeData()
-  },
-  computed: {
-    uploadAction: function () {
-      return this.url.fileUpload;
-    }
-  },
-  methods: {
-    ...mapActions(['QueryDepartTree']),
-    queryTreeData() {
-      this.QueryDepartTree().then(res => {
-        if (res.success) {
-          this.isDepartType = res.result[0].value
-        } else {
-          // this.$message.warn(res.message)
-          this.$notification.warning({
-            message: '娑堟伅',
-            description: res.message
-          });
-        }
-      }).finally(() => {
-      })
+  export default {
+    name: 'UserModal',
+    components: {
+      SelectDeviceModal,
+      JSelectProduction
     },
-    add() {
-      this.refresh();
-      this.edit({ activitiSync: '1', userIdentity: 1 });
-    },
-    edit(record) {
-      let that = this;
-      that.visible = true;
-      //鏍规嵁灞忓箷瀹藉害鑷�傚簲鎶藉眽瀹藉害
-      this.resetScreenSize();
-      that.userId = record.id;
-
-      that.model = Object.assign({}, { selectedroles: '', selecteddeparts: '' }, record);
-      that.model = Object.assign({}, { selectedroles: '', selectedProduction: '' }, record);
-      //韬唤涓轰笂绾ф樉绀鸿礋璐i儴闂紝鍚﹀垯涓嶆樉绀�
-      if (this.model.userIdentity == 2) {
-        this.departIdShow = true;
-      } else {
-        this.departIdShow = false;
-      }
-
-      if (record.hasOwnProperty("id")) {
-        that.getUserRoles(record.id);
-        that.getUserDeparts(record.id);
-      }
-      console.log('that.model', that.model)
-    },
-    isDisabledAuth(code) {
-      return disabledAuthFilter(code);
-    },
-    //绐楀彛鏈�澶у寲鍒囨崲
-    toggleScreen() {
-      if (this.modaltoggleFlag) {
-        this.modalWidth = window.innerWidth;
-      } else {
-        this.modalWidth = 800;
-      }
-      this.modaltoggleFlag = !this.modaltoggleFlag;
-    },
-    // 鏍规嵁灞忓箷鍙樺寲,璁剧疆鎶藉眽灏哄
-    resetScreenSize() {
-      let screenWidth = document.body.clientWidth;
-      if (screenWidth < 500) {
-        this.drawerWidth = screenWidth;
-      } else {
-        this.drawerWidth = 700;
-      }
-    },
-    //鍒濆鍖栫鎴峰瓧鍏�
-    initTenantList() {
-      getAction(this.url.queryTenantList).then(res => {
-        if (res.success) {
-          this.tenantsOptions = res.result.map((item, index, arr) => {
-            let c = { label: item.name, value: item.id + "" }
-            return c;
-          })
-          console.log('this.tenantsOptions: ', this.tenantsOptions)
-        }
-      })
-    },
-    //鍒濆鍖栬鑹插瓧鍏�
-    initRoleList() {
-      queryall().then((res) => {
-        if (res.success) {
-          this.rolesOptions = res.result.map((item, index, arr) => {
-            let c = { label: item.roleName, value: item.id }
-            return c;
-          })
-          console.log('this.rolesOptions: ', this.rolesOptions)
-        }
-      });
-    },
-    getUserRoles(userid) {
-      queryUserRole({ userid: userid }).then((res) => {
-        if (res.success) {
-          this.model.selectedroles = res.result.join(",");
-          console.log('that.model.selectedroles=', this.model.selectedroles)
-        }
-      });
-    },
-    getUserDeparts(userid) {
-      let that = this;
-      //閮ㄩ棬鐨剈rl
-      getAction(that.url.userWithDepart, { userId: userid }).then((res) => {
-        if (res.success) {
-          let departOptions = [];
-          let selectDepartKeys = []
-          for (let i = 0; i < res.result.length; i++) {
-            selectDepartKeys.push(res.result[i].key);
-            //鏂板璐熻矗閮ㄩ棬閫夋嫨涓嬫媺妗�
-            departOptions.push({
-              value: res.result[i].key,
-              label: res.result[i].title
-            })
-          }
-
-          that.model.selecteddeparts = selectDepartKeys.join(",")
-          that.model.selectedProduction = selectDepartKeys.join(",")
-
-          that.nextDepartOptions = departOptions;
-          console.log('that.nextDepartOptions=', that.nextDepartOptions)
-        }
-      })
-
-      getAction(that.url.userProductionList, { userId: userid }).then((res) => {
-        if (res.success) {
-          let ProductionOptions = [];
-          let selectProductKeys = []
-          for (let i = 0; i < res.result.length; i++) {
-            selectProductKeys.push(res.result[i].key);
-            //鏂板璐熻矗閮ㄩ棬閫夋嫨涓嬫媺妗�
-            ProductionOptions.push({
-              value: res.result[i].key,
-              label: res.result[i].title
-            })
-          }
-
-          that.model.selectedProduction = selectProductKeys.join(",")
-
-          that.nextProductionOptions = ProductionOptions;
-          console.log('that.nextProductionOptions=', that.nextProductionOptions)
-        }
-      })
-      //杞﹂棿鐨剈rl
-    },
-    backDepartInfo(info) {
-      this.model.departIds = this.model.selecteddeparts;
-      this.nextDepartOptions = info.map((item, index, arr) => {
-        let c = { label: item.text, value: item.value + "" }
-        return c;
-      })
-    },
-    backProductionInfo(info) {
-      this.model.productionIds = this.model.selectedProduction;
-      this.nextProductionOptions = info.map((item, index, arr) => {
-        let c = { label: item.text, value: item.value + "" }
-        return c;
-      })
-    },
-
-    refresh() {
-      this.userId = ""
-      this.nextDepartOptions = [];
-      this.nextProductionOptions = [];
-      this.departIdShow = false;
-    },
-    close() {
-      this.$emit('close');
-      this.visible = false;
-      this.disableSubmit = false;
-      this.nextDepartOptions = [];
-      this.nextProductionOptions = []
-      this.departIdShow = false;
-      this.$refs.form.resetFields();
-    },
-    moment,
-    handleSubmit() {
-      const that = this;
-      // 瑙﹀彂琛ㄥ崟楠岃瘉
-      this.$refs.form.validate(valid => {
-        if (valid) {
-          that.confirmLoading = true;
-          //濡傛灉鏄笂绾ф嫨浼犲叆departIds,鍚﹀垯涓虹┖
-          if (this.model.userIdentity !== 2) {
-            this.model.departIds = "";
-          }
-          let obj;
-          if (!this.model.id) {
-            this.model.id = this.userId;
-            obj = addUser(this.model);
-          } else {
-            obj = editUser(this.model);
-          }
-          obj.then((res) => {
-            if (res.success) {
-              that.$message.success(res.message);
-              that.$emit('ok');
-            } else {
-              that.$message.warning(res.message);
-            }
-          }).finally(() => {
-            that.confirmLoading = false;
-            that.close();
-          })
-        } else {
-          return false;
-        }
-      })
-    },
-    handleCancel() {
-      this.close()
-    },
-    validateToNextPassword(rule, value, callback) {
-      const confirmpassword = this.model.confirmpassword;
-      if (value && confirmpassword && value !== confirmpassword) {
-        callback('涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鏍凤紒');
-      }
-      if (value && this.confirmDirty) {
-        this.$refs.form.validateField(['confirmpassword']);
-      }
-      callback();
-    },
-    compareToFirstPassword(rule, value, callback) {
-      if (value && value !== this.model.password) {
-        callback('涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鏍凤紒');
-      } else {
-        callback()
-      }
-    },
-    validatePhone(rule, value, callback) {
-      if (!value) {
-        callback()
-      } else {
-        if (new RegExp(/^1[3|4|5|7|8|9][0-9]\d{8}$/).test(value)) {
-          var params = {
-            tableName: 'sys_user',
-            fieldName: 'phone',
-            fieldVal: value,
-            dataId: this.userId
-          };
-          duplicateCheck(params).then((res) => {
-            if (res.success) {
-              callback()
-            } else {
-              callback("鎵嬫満鍙峰凡瀛樺湪!")
-            }
-          })
-        } else {
-          callback("璇疯緭鍏ユ纭牸寮忕殑鎵嬫満鍙风爜!");
-        }
-      }
-    },
-    validateEmail(rule, value, callback) {
-      if (!value) {
-        callback()
-      } else {
-        if (new RegExp(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/).test(value)) {
-          var params = {
-            tableName: 'sys_user',
-            fieldName: 'email',
-            fieldVal: value,
-            dataId: this.userId
-          };
-          duplicateCheck(params).then((res) => {
-            console.log(res)
-            if (res.success) {
-              callback()
-            } else {
-              callback("閭宸插瓨鍦�!")
-            }
-          })
-        } else {
-          callback("璇疯緭鍏ユ纭牸寮忕殑閭!")
-        }
-      }
-    },
-    validateUsername(rule, value, callback) {
-      var params = {
-        tableName: 'sys_user',
-        fieldName: 'username',
-        fieldVal: value,
-        dataId: this.userId
-      };
-      duplicateCheck(params).then((res) => {
-        if (res.success) {
-          callback()
-        } else {
-          callback("鐢ㄦ埛鍚嶅凡瀛樺湪!")
-        }
-      })
-    },
-    validateWorkNo(rule, value, callback) {
-      var params = {
-        tableName: 'sys_user',
-        fieldName: 'work_no',
-        fieldVal: value,
-        dataId: this.userId
-      };
-      duplicateCheck(params).then((res) => {
-        if (res.success) {
-          callback()
-        } else {
-          callback("宸ュ彿宸插瓨鍦�!")
-        }
-      })
-    },
-    handleConfirmBlur(e) {
-      const value = e.target.value;
-      this.confirmDirty = this.confirmDirty || !!value
-    },
-    beforeUpload: function (file) {
-      var fileType = file.type;
-      if (fileType.indexOf('image') < 0) {
-        this.$message.warning('璇蜂笂浼犲浘鐗�');
-        return false;
-      }
-      //TODO 楠岃瘉鏂囦欢澶у皬
-    },
-    identityChange(e) {
-      if (e.target.value === 1) {
-        this.departIdShow = false;
-      } else {
-        this.departIdShow = true;
-      }
-    },
-    initDictData(dictCode) {
-      //鏍规嵁瀛楀吀Code, 鍒濆鍖栧瓧鍏告暟缁�
-      ajaxGetDictItems(dictCode, null).then((res) => {
-        if (res.success) {
-          const regExp = new RegExp("^(?=.*[a-zA-Z])(?=.*\\\d)(?=.*[~!@#$%^&*()_+`\\-={}:\";'<>?,./]).{" + Number(res.result[0].value) + ",}$");
-
-          this.validatorRules.password[0] = {
+    data() {
+      return {
+        departDisabled: false, //鏄惁鏄垜鐨勯儴闂ㄨ皟鐢ㄨ椤甸潰
+        productionDisabled: false, //鏄惁鏄垜鐨勮溅闂磋皟鐢ㄨ椤甸潰
+        roleDisabled: false, //鏄惁鏄鑹茬淮鎶よ皟鐢ㄨ椤甸潰
+        modalWidth: 800,
+        drawerWidth: 700,
+        modaltoggleFlag: true,
+        confirmDirty: false,
+        userId: '', //淇濆瓨鐢ㄦ埛id
+        disableSubmit: false,
+        dateFormat: 'YYYY-MM-DD',
+        validatorRules: {
+          username: [{ required: true, message: '璇疯緭鍏ョ敤鎴疯处鍙�!' },
+            { validator: this.validateUsername }],
+          password: [{
             required: true,
-            pattern: regExp,
-            message: `瀵嗙爜鐢�${res.result[0].value}浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!`,
-          }
+            pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/,
+            message: '瀵嗙爜鐢�8浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!'
+          },
+            { validator: this.validateToNextPassword, trigger: 'change' }],
+          confirmpassword: [{ required: true, message: '璇烽噸鏂拌緭鍏ョ櫥褰曞瘑鐮�!' },
+            { validator: this.compareToFirstPassword }],
+          realname: [{ required: true, message: '璇疯緭鍏ョ敤鎴峰悕绉�!' }],
+          phone: [{ required: false, message: '璇疯緭鍏ユ墜鏈哄彿!' }, { validator: this.validatePhone }],
+          email: [{ validator: this.validateEmail }],
+          roles: {},
+          workNo: [{ required: true, message: '璇疯緭鍏ュ伐鍙�' },
+            { validator: this.validateWorkNo }],
+          telephone: [{ pattern: /^0\d{2,3}-[1-9]\d{6,7}$/, message: '璇疯緭鍏ユ纭殑搴ф満鍙风爜' }],
+          teamId: [{ required: false, message: '璇风淮鎶ょ彮缁�' }]
 
+        },
+        departIdShow: false,
+        title: '鎿嶄綔',
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 }
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 }
+        },
+        uploadLoading: false,
+        confirmLoading: false,
+        headers: {},
+        url: {
+          fileUpload: window._CONFIG['domianURL'] + 'sys/common/upload',
+          userWithDepart: '/sys/user/userDepartList', // 寮曞叆涓烘寚瀹氱敤鎴锋煡鐪嬮儴闂ㄤ俊鎭渶瑕佺殑url
+          //寮曞叆涓烘寚瀹氱敤鎴锋煡鐪嬭溅闂翠俊鎭渶瑕佺殑url
+          userProductionList: '/sys/user/userProductionList',
+          userId: '/sys/user/generateUserId', // 寮曞叆鐢熸垚娣诲姞鐢ㄦ埛鎯呭喌涓嬬殑url
+          syncUserByUserName: '/act/process/extActProcess/doSyncUserByUserName',//鍚屾鐢ㄦ埛鍒板伐浣滄祦
+          queryTenantList: '/sys/tenant/queryList'
+        },
+        tenantsOptions: [],
+        rolesOptions: [],
+        nextDepartOptions: [],
+        nextProductionOptions: [],
+        isDepartType: '',
+        model: {
+          selectedProduction: ''
         }
-      })
+      }
     },
+    watch: {
+      visible: {
+        handler(value) {
+          if (value) this.initDictData('password_length')
+        }
+      },
+      'model.selectedProduction': {
+        handler(newVal, oldVal) {
+          console.log('瑙﹀彂鐩戝惉', 'newVal=', newVal, 'oldVal=', oldVal)
+          // if ((newVal !== oldVal && oldVal) || !newVal) this.model.equipmentIds = ''
+          if (newVal && this.$refs.selectDeviceModal) this.$refs.selectDeviceModal.queryTreeData(newVal)
+        }
+      }
+    },
+    created() {
+      const token = Vue.ls.get(ACCESS_TOKEN)
+      this.headers = { 'X-Access-Token': token }
+      this.initRoleList()
+      this.initTenantList()
+      this.queryTreeData()
+    },
+    computed: {
+      uploadAction: function() {
+        return this.url.fileUpload
+      }
+    },
+    methods: {
+      ...mapActions(['QueryDepartTree']),
+      queryTreeData() {
+        this.QueryDepartTree().then(res => {
+          if (res.success) {
+            this.isDepartType = res.result[0].value
+          } else {
+            // this.$message.warn(res.message)
+            this.$notification.warning({
+              message: '娑堟伅',
+              description: res.message
+            })
+          }
+        }).finally(() => {
+        })
+      },
+      add() {
+        this.refresh()
+        this.edit({
+          activitiSync: '1',
+          userIdentity: 1,
+          selectedroles: '',
+          selecteddeparts: '',
+          selectedProduction: ''
+        })
+      },
+      edit(record) {
+        let that = this
+        that.visible = true
+        //鏍规嵁灞忓箷瀹藉害鑷�傚簲鎶藉眽瀹藉害
+        this.resetScreenSize()
+        that.userId = record.id
+        console.log('record', record)
+        that.model = Object.assign({}, record)
+        //韬唤涓轰笂绾ф樉绀鸿礋璐i儴闂紝鍚﹀垯涓嶆樉绀�
+        if (this.model.userIdentity == 2) {
+          this.departIdShow = true
+        } else {
+          this.departIdShow = false
+        }
+
+        if (record.hasOwnProperty('id')) {
+          that.getUserRoles(record.id)
+          that.getUserDeparts(record.id)
+        }
+        console.log('that.model', that.model)
+      },
+      isDisabledAuth(code) {
+        return disabledAuthFilter(code)
+      },
+      //绐楀彛鏈�澶у寲鍒囨崲
+      toggleScreen() {
+        if (this.modaltoggleFlag) {
+          this.modalWidth = window.innerWidth
+        } else {
+          this.modalWidth = 800
+        }
+        this.modaltoggleFlag = !this.modaltoggleFlag
+      },
+      // 鏍规嵁灞忓箷鍙樺寲,璁剧疆鎶藉眽灏哄
+      resetScreenSize() {
+        let screenWidth = document.body.clientWidth
+        if (screenWidth < 500) {
+          this.drawerWidth = screenWidth
+        } else {
+          this.drawerWidth = 700
+        }
+      },
+      //鍒濆鍖栫鎴峰瓧鍏�
+      initTenantList() {
+        getAction(this.url.queryTenantList).then(res => {
+          if (res.success) {
+            this.tenantsOptions = res.result.map((item, index, arr) => {
+              let c = { label: item.name, value: item.id + '' }
+              return c
+            })
+            console.log('this.tenantsOptions: ', this.tenantsOptions)
+          }
+        })
+      },
+      //鍒濆鍖栬鑹插瓧鍏�
+      initRoleList() {
+        queryall().then((res) => {
+          if (res.success) {
+            this.rolesOptions = res.result.map((item, index, arr) => {
+              let c = { label: item.roleName, value: item.id }
+              return c
+            })
+            console.log('this.rolesOptions: ', this.rolesOptions)
+          }
+        })
+      },
+      getUserRoles(userid) {
+        queryUserRole({ userid: userid }).then((res) => {
+          if (res.success) {
+            // this.model.selectedroles = res.result.join(',')
+            this.$set(this.model, 'selectedroles', res.result.join(','))
+            console.log('that.model.selectedroles=', this.model.selectedroles)
+          }
+        })
+      },
+      getUserDeparts(userid) {
+        let that = this
+        //閮ㄩ棬鐨剈rl 鑾峰彇閮ㄩ棬鍒嗛厤
+        getAction(that.url.userWithDepart, { userId: userid }).then((res) => {
+          if (res.success) {
+            let departOptions = []
+            let selectDepartKeys = []
+            for (let i = 0; i < res.result.length; i++) {
+              selectDepartKeys.push(res.result[i].key)
+              //鏂板璐熻矗閮ㄩ棬閫夋嫨涓嬫媺妗�
+              departOptions.push({
+                value: res.result[i].key,
+                label: res.result[i].title
+              })
+            }
+
+            // that.model.selecteddeparts = selectDepartKeys.join(',')
+            this.$set(this.model, 'selecteddeparts', selectDepartKeys.join(','))
+
+            that.nextDepartOptions = departOptions
+            console.log('that.nextDepartOptions=', that.nextDepartOptions)
+          }
+        })
+
+        // 鑾峰彇杞﹂棿鍒嗛厤
+        getAction(that.url.userProductionList, { userId: userid }).then((res) => {
+          if (res.success) {
+            let ProductionOptions = []
+            let selectProductKeys = []
+            for (let i = 0; i < res.result.length; i++) {
+              selectProductKeys.push(res.result[i].key)
+              //鏂板璐熻矗閮ㄩ棬閫夋嫨涓嬫媺妗�
+              ProductionOptions.push({
+                value: res.result[i].key,
+                label: res.result[i].title
+              })
+            }
+
+            // that.model.selectedProduction = selectProductKeys.join(',')
+            this.$set(this.model, 'selectedProduction', selectProductKeys.join(','))
+            that.nextProductionOptions = ProductionOptions
+            console.log('that.nextProductionOptions=', that.nextProductionOptions)
+          }
+        })
+        //杞﹂棿鐨剈rl
+      },
+      backDepartInfo(info) {
+        this.model.departIds = this.model.selecteddeparts
+        this.nextDepartOptions = info.map((item, index, arr) => {
+          let c = { label: item.text, value: item.value + '' }
+          return c
+        })
+      },
+      backProductionInfo(info) {
+        this.model.productionIds = this.model.selectedProduction
+        this.nextProductionOptions = info.map((item, index, arr) => {
+          let c = { label: item.text, value: item.value + '' }
+          return c
+        })
+      },
+
+      refresh() {
+        this.userId = ''
+        this.nextDepartOptions = []
+        this.nextProductionOptions = []
+        this.departIdShow = false
+      },
+      close() {
+        this.$emit('close')
+        this.visible = false
+        this.disableSubmit = false
+        this.nextDepartOptions = []
+        this.nextProductionOptions = []
+        this.departIdShow = false
+        this.$refs.form.resetFields()
+      },
+      moment,
+      handleSubmit() {
+        const that = this
+        // 瑙﹀彂琛ㄥ崟楠岃瘉
+        this.$refs.form.validate(valid => {
+          if (valid) {
+            that.confirmLoading = true
+            //濡傛灉鏄笂绾ф嫨浼犲叆departIds,鍚﹀垯涓虹┖
+            if (this.model.userIdentity !== 2) {
+              this.model.departIds = ''
+            }
+            let obj
+            if (!this.model.id) {
+              this.model.id = this.userId
+              obj = addUser(this.model)
+            } else {
+              obj = editUser(this.model)
+            }
+            obj.then((res) => {
+              if (res.success) {
+                that.$message.success(res.message)
+                that.$emit('ok')
+              } else {
+                that.$message.warning(res.message)
+              }
+            }).finally(() => {
+              that.confirmLoading = false
+              that.close()
+            })
+          } else {
+            return false
+          }
+        })
+      },
+      handleCancel() {
+        this.close()
+      },
+      validateToNextPassword(rule, value, callback) {
+        const confirmpassword = this.model.confirmpassword
+        if (value && confirmpassword && value !== confirmpassword) {
+          callback('涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鏍凤紒')
+        }
+        if (value && this.confirmDirty) {
+          this.$refs.form.validateField(['confirmpassword'])
+        }
+        callback()
+      },
+      compareToFirstPassword(rule, value, callback) {
+        if (value && value !== this.model.password) {
+          callback('涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鏍凤紒')
+        } else {
+          callback()
+        }
+      },
+      validatePhone(rule, value, callback) {
+        if (!value) {
+          callback()
+        } else {
+          if (new RegExp(/^1[3|4|5|7|8|9][0-9]\d{8}$/).test(value)) {
+            var params = {
+              tableName: 'sys_user',
+              fieldName: 'phone',
+              fieldVal: value,
+              dataId: this.userId
+            }
+            duplicateCheck(params).then((res) => {
+              if (res.success) {
+                callback()
+              } else {
+                callback('鎵嬫満鍙峰凡瀛樺湪!')
+              }
+            })
+          } else {
+            callback('璇疯緭鍏ユ纭牸寮忕殑鎵嬫満鍙风爜!')
+          }
+        }
+      },
+      validateEmail(rule, value, callback) {
+        if (!value) {
+          callback()
+        } else {
+          if (new RegExp(/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/).test(value)) {
+            var params = {
+              tableName: 'sys_user',
+              fieldName: 'email',
+              fieldVal: value,
+              dataId: this.userId
+            }
+            duplicateCheck(params).then((res) => {
+              console.log(res)
+              if (res.success) {
+                callback()
+              } else {
+                callback('閭宸插瓨鍦�!')
+              }
+            })
+          } else {
+            callback('璇疯緭鍏ユ纭牸寮忕殑閭!')
+          }
+        }
+      },
+      validateUsername(rule, value, callback) {
+        var params = {
+          tableName: 'sys_user',
+          fieldName: 'username',
+          fieldVal: value,
+          dataId: this.userId
+        }
+        duplicateCheck(params).then((res) => {
+          if (res.success) {
+            callback()
+          } else {
+            callback('鐢ㄦ埛鍚嶅凡瀛樺湪!')
+          }
+        })
+      },
+      validateWorkNo(rule, value, callback) {
+        var params = {
+          tableName: 'sys_user',
+          fieldName: 'work_no',
+          fieldVal: value,
+          dataId: this.userId
+        }
+        duplicateCheck(params).then((res) => {
+          if (res.success) {
+            callback()
+          } else {
+            callback('宸ュ彿宸插瓨鍦�!')
+          }
+        })
+      },
+      handleConfirmBlur(e) {
+        const value = e.target.value
+        this.confirmDirty = this.confirmDirty || !!value
+      },
+      beforeUpload: function(file) {
+        var fileType = file.type
+        if (fileType.indexOf('image') < 0) {
+          this.$message.warning('璇蜂笂浼犲浘鐗�')
+          return false
+        }
+        //TODO 楠岃瘉鏂囦欢澶у皬
+      },
+      identityChange(e) {
+        if (e.target.value === 1) {
+          this.departIdShow = false
+        } else {
+          this.departIdShow = true
+        }
+      },
+      initDictData(dictCode) {
+        //鏍规嵁瀛楀吀Code, 鍒濆鍖栧瓧鍏告暟缁�
+        ajaxGetDictItems(dictCode, null).then((res) => {
+          if (res.success) {
+            const regExp = new RegExp('^(?=.*[a-zA-Z])(?=.*\\\d)(?=.*[~!@#$%^&*()_+`\\-={}:";\'<>?,./]).{' + Number(res.result[0].value) + ',}$')
+
+            this.validatorRules.password[0] = {
+              required: true,
+              pattern: regExp,
+              message: `瀵嗙爜鐢�${res.result[0].value}浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!`
+            }
+
+          }
+        })
+      },
+
+      deviceSearch() {
+        this.$refs.selectDeviceModal.visible = true
+        this.$refs.selectDeviceModal.selectedRowKeys = []
+        this.$refs.selectDeviceModal.selectedRows = []
+        this.$refs.selectDeviceModal.checkedKeys = this.model.equipmentIds ? this.model.equipmentIds.split(',') : []
+      },
+
+      /**
+       * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂
+       * @param data 宸查�夋嫨鐨勮澶囨暟缁�
+       */
+      selectOK(data) {
+        console.log('data=', data)
+        this.$set(this.model, 'equipmentIds', data.join(','))
+      }
+    }
   }
-}
 </script>
 
 <style scoped>
-.avatar-uploader > .ant-upload {
-  width: 104px;
-  height: 104px;
-}
-.ant-upload-select-picture-card i {
-  font-size: 49px;
-  color: #999;
-}
+  .avatar-uploader > .ant-upload {
+    width: 104px;
+    height: 104px;
+  }
 
-.ant-upload-select-picture-card .ant-upload-text {
-  margin-top: 8px;
-  color: #666;
-}
+  .ant-upload-select-picture-card i {
+    font-size: 49px;
+    color: #999;
+  }
 
-.ant-table-tbody .ant-table-row td {
-  padding-top: 10px;
-  padding-bottom: 10px;
-}
+  .ant-upload-select-picture-card .ant-upload-text {
+    margin-top: 8px;
+    color: #666;
+  }
 
-.drawer-bottom-button {
-  position: absolute;
-  bottom: -8px;
-  width: 100%;
-  border-top: 1px solid #e8e8e8;
-  padding: 10px 16px;
-  text-align: right;
-  left: 0;
-  background: #fff;
-  border-radius: 0 0 2px 2px;
-}
+  .ant-table-tbody .ant-table-row td {
+    padding-top: 10px;
+    padding-bottom: 10px;
+  }
+
+  .drawer-bottom-button {
+    position: absolute;
+    bottom: -8px;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
 </style>
\ No newline at end of file

--
Gitblit v1.9.3