From 3db6d5c4d17ab9942a5c89a167c1f06ca485f355 Mon Sep 17 00:00:00 2001
From: zhaowei <zhaowei>
Date: 星期三, 16 七月 2025 21:21:14 +0800
Subject: [PATCH] 二保工单审批调整

---
 src/views/system/modules/UserModal.vue | 1381 ++++++++++++++++++++++++++-------------------------------
 1 files changed, 631 insertions(+), 750 deletions(-)

diff --git a/src/views/system/modules/UserModal.vue b/src/views/system/modules/UserModal.vue
index eecaf7c..ce2b780 100644
--- a/src/views/system/modules/UserModal.vue
+++ b/src/views/system/modules/UserModal.vue
@@ -1,14 +1,5 @@
 <template>
-  <a-drawer
-    :title="title"
-    :maskClosable="true"
-    :width="drawerWidth"
-    placement="right"
-    :closable="true"
-    @close="handleCancel"
-    :visible="visible"
-    style="height: 100%;overflow: auto;padding-bottom: 53px;"
-  >
+  <a-drawer :title="title" :maskClosable="true" :width="drawerWidth" placement="right" :closable="true" @close="handleCancel" :visible="visible" style="height: 100%;overflow: auto;padding-bottom: 53px;">
 
     <template slot="title">
       <div style="width: 100%;">
@@ -25,156 +16,42 @@
     </template>
 
     <a-spin :spinning="confirmLoading">
-      <a-form-model
-        ref="form"
-        :model="model"
-        :rules="validatorRules"
-      >
+      <a-form-model ref="form" :model="model" :rules="validatorRules">
 
-        <a-form-model-item
-          label="鐢ㄦ埛璐﹀彿"
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          prop="username"
-        >
-          <a-input
-            placeholder="璇疯緭鍏ョ敤鎴疯处鍙�"
-            v-model="model.username"
-            :readOnly="!!model.id"
-          />
+        <a-form-model-item label="鐢ㄦ埛璐﹀彿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="username">
+          <a-input placeholder="璇疯緭鍏ョ敤鎴疯处鍙�" v-model="model.username" :readOnly="!!model.id" autocomplete="off"/>
         </a-form-model-item>
 
         <template v-if="!model.id">
-          <a-form-model-item
-            label="鐧诲綍瀵嗙爜"
-            :labelCol="labelCol"
-            :wrapperCol="wrapperCol"
-            prop="password"
-          >
-            <a-input
-              type="password"
-              placeholder="璇疯緭鍏ョ櫥褰曞瘑鐮�"
-              v-model="model.password"
-            />
+          <a-form-model-item label="鐧诲綍瀵嗙爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="password">
+            <a-input type="password" placeholder="璇疯緭鍏ョ櫥褰曞瘑鐮�" v-model="model.password" autocomplete="off"/>
           </a-form-model-item>
 
-          <a-form-model-item
-            label="纭瀵嗙爜"
-            :labelCol="labelCol"
-            :wrapperCol="wrapperCol"
-            prop="confirmpassword"
-          >
-            <a-input
-              type="password"
-              @blur="handleConfirmBlur"
-              placeholder="璇烽噸鏂拌緭鍏ョ櫥褰曞瘑鐮�"
-              v-model="model.confirmpassword"
-            />
+          <a-form-model-item label="纭瀵嗙爜" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="confirmpassword">
+            <a-input type="password" @blur="handleConfirmBlur" placeholder="璇烽噸鏂拌緭鍏ョ櫥褰曞瘑鐮�" v-model="model.confirmpassword"/>
           </a-form-model-item>
         </template>
 
-        <a-form-model-item
-          label="鐢ㄦ埛濮撳悕"
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          prop="realname"
-        >
-          <a-input
-            placeholder="璇疯緭鍏ョ敤鎴峰鍚�"
-            v-model="model.realname"
-          />
+        <a-form-model-item label="鐢ㄦ埛濮撳悕" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="realname">
+          <a-input placeholder="璇疯緭鍏ョ敤鎴峰鍚�" v-model="model.realname"/>
         </a-form-model-item>
 
-        <a-form-model-item
-          label="宸ュ彿"
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          prop="workNo"
-        >
-          <a-input
-            placeholder="璇疯緭鍏ュ伐鍙�"
-            v-model="model.workNo"
-          />
+        <a-form-model-item label="宸ュ彿" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="workNo">
+          <a-input placeholder="璇疯緭鍏ュ伐鍙�" v-model="model.workNo"/>
         </a-form-model-item>
 
-        <!--<a-form-model-item label="鑱屽姟" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
-        <!--<j-select-position placeholder="璇烽�夋嫨鑱屽姟" :multiple="false" v-model="model.post"/>-->
-        <!--</a-form-model-item>-->
-
-        <a-form-model-item
-          label="瑙掕壊鍒嗛厤"
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          v-show="!roleDisabled"
-        >
-          <j-multi-select-tag
-            :disabled="disableSubmit"
-            v-model="model.selectedroles"
-            :options="rolesOptions"
-            placeholder="璇烽�夋嫨瑙掕壊"
-          >
+        <a-form-model-item label="瑙掕壊鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!roleDisabled">
+          <j-multi-select-tag :disabled="disableSubmit" v-model="model.selectedroles" :options="rolesOptions" placeholder="璇烽�夋嫨瑙掕壊">
           </j-multi-select-tag>
         </a-form-model-item>
 
-        <!--閮ㄩ棬鍒嗛厤-->
-        <a-form-model-item
-          v-if="isDepartType== 0"
-          label="閮ㄩ棬鍒嗛厤"
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          v-show="!departDisabled"
-        >
-          <j-select-depart
-            v-model="model.selecteddeparts"
-            :multi="true"
-            @back="backDepartInfo"
-            :backDepart="true"
-            :treeOpera="true"
-          >>
-          </j-select-depart>
+        <a-form-model-item label="宀椾綅" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <!--          <j-select-position placeholder="璇烽�夋嫨宀椾綅" :multiple="false" v-model="model.post"/>-->
+          <j-dict-select-tag placeholder="璇烽�夋嫨宀椾綅" dict-code="sys_position, name, code" v-model="model.post" />
         </a-form-model-item>
 
-        <!--杞﹂棿鍒嗛厤-->
-        <a-form-model-item
-          label="杞﹂棿鍒嗛厤"
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          v-show="!productionDisabled"
-        >
-          <j-select-production
-            v-model="model.selectedProduction"
-            :multi="true"
-            @back="backProductionInfo"
-            :backProduction="true"
-            :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"
-          :wrapperCol="wrapperCol"
-        >
-          <a-radio-group
-            v-model="model.userType"
-            :defaultValue="0"
-          >
+        <a-form-model-item label="棣栭〉鏉冮檺" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-radio-group v-model="model.userType" :defaultValue="0">
             <a-radio :value="4">鍏徃绾�</a-radio>
             <a-radio :value="3">杞﹂棿绾�</a-radio>
             <a-radio :value="2">宸ユ绾�</a-radio>
@@ -183,663 +60,667 @@
           </a-radio-group>
         </a-form-model-item>
 
-        <a-form-model-item
-          label="鐝粍鍒嗛厤"
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          prop="teamId"
-        >
-          <j-dict-select-tag
-            v-model="model.teamId"
-            :triggerChange="true"
-            dictCode="mom_base_team,name,id,del_flag = 0"
-            placeholder="璇风淮鎶ょ彮缁�"
-          ></j-dict-select-tag>
-        </a-form-model-item>
-        <a-form-model-item
-          label="涓績鍒嗛厤"
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          prop="areaId"
-        >
-          <!-- <j-dict-select-tag
-            v-model="model.areaId"
-            :triggerChange="true"
-            dictCode="mom_base_area,name,id,del_flag = 0"
-            placeholder="璇风淮鎶や腑蹇�"
-          ></j-dict-select-tag> -->
-          <j-multi-select-tag
-            :triggerChange="true"
-            v-model="model.areaId"
-            dictCode="mom_base_area,name,id,del_flag = 0 and type = 1"
-            placeholder="璇风淮鎶や腑蹇�"
-          >
-          </j-multi-select-tag>
-        </a-form-model-item>
-        <a-form-model-item
-          label="璐熻矗閮ㄩ棬"
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          v-if="departIdShow==true"
-        >
-          <j-multi-select-tag
-            :disabled="disableSubmit"
-            v-model="model.departIds"
-            :options="nextDepartOptions"
-            placeholder="璇烽�夋嫨璐熻矗閮ㄩ棬"
-          >
-          </j-multi-select-tag>
+        <!--閮ㄩ棬鍒嗛厤-->
+        <a-form-model-item v-if="isDepartType== 0" label="閮ㄩ棬鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled">
+          <j-select-depart v-model="model.selecteddeparts" :multi="true" @back="backDepartInfo" :backDepart="true" :treeOpera="true"/>
         </a-form-model-item>
 
-        <!--<a-form-model-item-->
-        <!--label="澶村儚"-->
-        <!--:labelCol="labelCol"-->
-        <!--:wrapperCol="wrapperCol"-->
-        <!--&gt;-->
-        <!--<j-image-upload-->
-        <!--class="avatar-uploader"-->
-        <!--text="涓婁紶"-->
-        <!--v-model="model.avatar"-->
-        <!--&gt;</j-image-upload>-->
-        <!--</a-form-model-item>-->
+        <!--MDC杞﹂棿鍒嗛厤-->
+        <a-form-model-item label="MDC杞﹂棿鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!productionDisabled">
+          <j-select-production v-model="model.selectedProduction" :multi="true" @back="backProductionInfo" :backProduction="true" :treeProductOpera="true"/>
+        </a-form-model-item>
 
-        <!--<a-form-model-item-->
-        <!--label="鐢熸棩"-->
-        <!--:labelCol="labelCol"-->
-        <!--:wrapperCol="wrapperCol"-->
-        <!--&gt;-->
-        <!--<a-date-picker-->
-        <!--style="width: 100%"-->
-        <!--placeholder="璇烽�夋嫨鐢熸棩"-->
-        <!--v-model="model.birthday"-->
-        <!--:format="dateFormat"-->
-        <!--:getCalendarContainer="node => node.parentNode"-->
-        <!--/>-->
-        <!--</a-form-model-item>-->
+        <a-form-model-item label="MDC璁惧鍒嗛厤" :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"-->
-        <!--:wrapperCol="wrapperCol"-->
-        <!--&gt;-->
-        <!--<a-select-->
-        <!--v-model="model.sex"-->
-        <!--placeholder="璇烽�夋嫨鎬у埆"-->
-        <!--:getPopupContainer="(target) => target.parentNode"-->
-        <!--&gt;-->
-        <!--<a-select-option :value="1">鐢�</a-select-option>-->
-        <!--<a-select-option :value="2">濂�</a-select-option>-->
-        <!--</a-select>-->
-        <!--</a-form-model-item>-->
+        <a-form-model-item label="EAM涓績鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="eamFactoryIds">
+          <JSelectBaseFactory v-model="model.selectedBaseFactory" :multi="true" @back="backBaseFactoryInfo" :backProduction="true" :treeProductOpera="true"/>
+        </a-form-model-item>
 
-        <!--<a-form-model-item-->
-        <!--label="閭"-->
-        <!--:labelCol="labelCol"-->
-        <!--:wrapperCol="wrapperCol"-->
-        <!--prop="email"-->
-        <!--&gt;-->
-        <!--<a-input-->
-        <!--placeholder="璇疯緭鍏ラ偖绠�"-->
-        <!--v-model="model.email"-->
-        <!--/>-->
-        <!--</a-form-model-item>-->
+        <a-form-model-item label="EAM璁惧鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!productionDisabled">
+          <a-input-search :readOnly="true" v-model="model.eamEquipmentIds" @search="eamDeviceSearch" enter-button placeholder="璇烽�夋嫨EAM璁惧" :disabled="!model.selectedBaseFactory"/>
+        </a-form-model-item>
 
-        <!--<a-form-model-item-->
-        <!--label="鎵嬫満鍙风爜"-->
-        <!--:labelCol="labelCol"-->
-        <!--:wrapperCol="wrapperCol"-->
-        <!--prop="phone"-->
-        <!--&gt;-->
-        <!--<a-input-->
-        <!--placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�"-->
-        <!--v-model="model.phone"-->
-        <!--/>-->
-        <!--</a-form-model-item>-->
+        <a-form-model-item label="缁翠慨閮ㄩ棬/鐝粍鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!repairDepartDisabled">
+          <j-select-repair-depart v-model="model.selectedRepairDeparts" :multi="true" @back="backRepairDepartInfo" :backRepairDepart="true" :treeRepairDepartOpera="true"/>
+        </a-form-model-item>
 
-        <!--<a-form-model-item-->
-        <!--label="搴ф満"-->
-        <!--:labelCol="labelCol"-->
-        <!--:wrapperCol="wrapperCol"-->
-        <!--prop="telephone"-->
-        <!--&gt;-->
-        <!--<a-input-->
-        <!--placeholder="璇疯緭鍏ュ骇鏈�"-->
-        <!--v-model="model.telephone"-->
-        <!--/>-->
-        <!--</a-form-model-item>-->
-        <!--<a-form-model-item label="宸ヤ綔娴佸紩鎿�" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
-        <!--<j-dict-select-tag  v-model="model.activitiSync"  placeholder="璇烽�夋嫨鏄惁鍚屾宸ヤ綔娴佸紩鎿�" :type="'radio'" dictCode="activiti_sync"/>-->
-        <!--</a-form-model-item>-->
-
+        <a-form-model-item label="璐熻矗閮ㄩ棬" :labelCol="labelCol" :wrapperCol="wrapperCol" v-if="departIdShow==true">
+          <j-multi-select-tag :disabled="disableSubmit" v-model="model.departIds" :options="nextDepartOptions" placeholder="璇烽�夋嫨璐熻矗閮ㄩ棬"/>
+        </a-form-model-item>
       </a-form-model>
     </a-spin>
 
-    <div
-      class="drawer-bottom-button"
-      v-show="!disableSubmit"
-    >
-      <a-popconfirm
-        title="纭畾鏀惧純缂栬緫锛�"
-        @confirm="handleCancel"
-        okText="纭畾"
-        cancelText="鍙栨秷"
-      >
+    <div class="drawer-bottom-button" v-show="!disableSubmit">
+      <a-popconfirm title="纭畾鏀惧純缂栬緫锛�" @confirm="handleCancel" okText="纭畾" cancelText="鍙栨秷">
         <a-button style="margin-right: .8rem">鍙栨秷</a-button>
       </a-popconfirm>
-      <a-button
-        @click="handleSubmit"
-        type="primary"
-        :loading="confirmLoading"
-      >鎻愪氦
-      </a-button>
+      <a-button @click="handleSubmit" type="primary" :loading="confirmLoading">鎻愪氦</a-button>
     </div>
 
-    <select-device-modal
-      ref="selectDeviceModal"
-      @selectFinished="selectOK"
-      :title="'閫夋嫨璁惧'"
-    />
+    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
+
+    <select-eam-device-modal ref="selectEamDeviceModal" @selectFinished="selectEamOK" :title="'閫夋嫨EAM璁惧'"/>
+
   </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 SelectDeviceModal from './SelectDeviceModal'
+  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 JSelectRepairDepart from '../../../components/jeecgbiz/JSelectRepairDepart'
+  import { mapActions } from 'vuex'
+  import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api'
+  import SelectDeviceModal from './SelectDeviceModal'
+  import SelectEamDeviceModal from './SelectEamDeviceModal'
+  import JSelectBaseFactory from "@comp/jeecgbiz/JSelectBaseFactory.vue";
 
-export default {
-  name: 'UserModal',
-  components: {
-    SelectDeviceModal,
-    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浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!'
+  export default {
+    name: 'UserModal',
+    components: {
+      JSelectBaseFactory,
+      SelectDeviceModal,
+      JSelectProduction,
+      JSelectRepairDepart,
+      SelectEamDeviceModal
+    },
+    data() {
+      return {
+        departDisabled: false, //鏄惁鏄垜鐨勯儴闂ㄨ皟鐢ㄨ椤甸潰
+        productionDisabled: false, //鏄惁鏄垜鐨勮溅闂磋皟鐢ㄨ椤甸潰
+        roleDisabled: false, //鏄惁鏄鑹茬淮鎶よ皟鐢ㄨ椤甸潰
+        repairDepartDisabled: 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: '璇风淮鎶ょ彮缁�' }]
         },
-        { 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',
+          userRepairDepartList: '/sys/user/userRepairDepartList',
+          userBaseFactoryList: '/sys/user/userBaseFactoryList',
+          repairDepartTreeList: '/eam/eamBaseRepairDepart/queryTreeList'
+        },
+        tenantsOptions: [],
+        rolesOptions: [],
+        nextDepartOptions: [],
+        nextProductionOptions: [],
+        nextBaseFactoryOptions:[],
+        nextRepairDepartOptions: [],
+        isDepartType: '',
+        model: {
+          selectedProduction: '',
+          selectedRepairDeparts: '',
+          selectedBaseFactory:'',
+        }
+      }
+    },
+    watch: {
+      visible: {
+        handler(value) {
+          if (value) this.initDictData('password_length')
+        }
       },
-      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) {
-        if (newVal && this.$refs.selectDeviceModal) {
-          // 濡傛灉杞﹂棿閫夋嫨鍓嶅悗涓嶄竴鑷村垯閲嶇疆閫夋嫨璁惧
-          if ((oldVal && newVal !== oldVal)) this.model.equipmentIds = ''
-          this.$refs.selectDeviceModal.queryTreeData(newVal)
-        }
-        // 濡傛灉娓呯┖杞﹂棿鍊煎垯閲嶇疆閫夋嫨璁惧
-        if (newVal === '') this.model.equipmentIds = ''
-      }
-    }
-  },
-  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',
-        userType: 0,
-        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)
-      }
-    },
-    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
-          })
-        }
-      })
-    },
-    //鍒濆鍖栬鑹插瓧鍏�
-    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
-          })
-        }
-      })
-    },
-    getUserRoles(userid) {
-      queryUserRole({ userid: userid }).then((res) => {
-        if (res.success) {
-          this.$set(this.model, 'selectedroles', res.result.join(','))
-        }
-      })
-    },
-    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
-            })
+      'model.selectedProduction': {
+        handler(newVal, oldVal) {
+          if (newVal && this.$refs.selectDeviceModal) {
+            // 濡傛灉杞﹂棿閫夋嫨鍓嶅悗涓嶄竴鑷村垯閲嶇疆閫夋嫨璁惧
+            if ((oldVal && newVal !== oldVal)) this.model.equipmentIds = ''
+            this.$refs.selectDeviceModal.queryTreeData(newVal)
           }
-
-          this.$set(this.model, 'selecteddeparts', selectDepartKeys.join(','))
-          that.nextDepartOptions = departOptions
+          // 濡傛灉娓呯┖杞﹂棿鍊煎垯閲嶇疆閫夋嫨璁惧
+          if (newVal === '') this.model.equipmentIds = ''
         }
-      })
-
-      // 鑾峰彇杞﹂棿鍒嗛厤
-      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
-            })
+      },
+      'model.selectedBaseFactory': {
+        handler(newVal, oldVal) {
+          if (newVal && this.$refs.selectEamDeviceModal) {
+            // 濡傛灉杞﹂棿閫夋嫨鍓嶅悗涓嶄竴鑷村垯閲嶇疆閫夋嫨璁惧
+            if ((oldVal && newVal !== oldVal)) this.model.eamEquipmentIds = ''
+            this.$refs.selectEamDeviceModal.queryTreeData(newVal)
           }
-
-          this.$set(this.model, 'selectedProduction', selectProductKeys.join(','))
-          that.nextProductionOptions = ProductionOptions
+          // 濡傛灉娓呯┖杞﹂棿鍊煎垯閲嶇疆閫夋嫨璁惧
+          if (newVal === '') this.model.eamEquipmentIds = ''
         }
-      })
-      //杞﹂棿鐨剈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
-      })
+    created() {
+      const token = Vue.ls.get(ACCESS_TOKEN)
+      this.headers = { 'X-Access-Token': token }
+      this.initRoleList()
+      this.initTenantList()
+      this.queryTreeData()
+      this.getRepairDepartTreeDataByApi()
     },
-    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
-      })
+    computed: {
+      uploadAction: function() {
+        return this.url.fileUpload
+      }
     },
-
-    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)
+    methods: {
+      ...mapActions(['QueryDepartTree']),
+      queryTreeData() {
+        this.QueryDepartTree().then(res => {
+          if (res.success) {
+            this.isDepartType = res.result[0].value
           } else {
-            obj = editUser(this.model)
+            // this.$message.warn(res.message)
+            this.$notification.warning({
+              message: '娑堟伅',
+              description: res.message
+            })
           }
-          obj.then((res) => {
+        }).finally(() => {
+        })
+      },
+      // 鑾峰彇缁翠慨鐝粍鏍�
+      getRepairDepartTreeDataByApi() {
+        getAction(this.url.repairDepartTreeList)
+          .then(res => {
             if (res.success) {
-              that.$message.success(res.message)
-              that.$emit('ok')
+              this.repairDepartTreeData = res.result
             } else {
-              that.$message.warning(res.message)
+              this.$notification.warning({
+                message: '娑堟伅',
+                description: res.message
+              })
             }
-          }).finally(() => {
-            that.confirmLoading = false
-            that.close()
           })
+      },
+      add() {
+        this.refresh()
+        this.edit({
+          activitiSync: '1',
+          userType: 0,
+          userIdentity: 1,
+          selectedroles: '',
+          selecteddeparts: '',
+          selectedProduction: '',
+          selectedBaseFactory:'',
+          selectedRepairDeparts: ''
+        })
+      },
+      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)
+          that.getUserProductions(record.id)
+          that.getUserRepairDeparts(record.id)
+          this.getUserBaseFactorys(record.id)
+        }
+      },
+      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
+            })
+          }
+        })
+      },
+      //鍒濆鍖栬鑹插瓧鍏�
+      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
+            })
+          }
+        })
+      },
+      getUserRoles(userid) {
+        queryUserRole({ userid: userid }).then((res) => {
+          if (res.success) {
+            this.$set(this.model, 'selectedroles', res.result.join(','))
+          }
+        })
+      },
+      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
+              })
+            }
+
+            this.$set(this.model, 'selecteddeparts', selectDepartKeys.join(','))
+            that.nextDepartOptions = departOptions
+          }
+        })
+      },
+      getUserProductions(userid) {
+        let that = this
+        // 鑾峰彇杞﹂棿鍒嗛厤
+        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
+              })
+            }
+
+            this.$set(this.model, 'selectedProduction', selectProductKeys.join(','))
+            that.nextProductionOptions = ProductionOptions
+          }
+        })
+      },
+      getUserRepairDeparts(userid) {
+        let that = this
+        // 鑾峰彇缁翠慨閮ㄩ棬/鐝粍鍒嗛厤
+        getAction(that.url.userRepairDepartList, { userId: userid }).then((res) => {
+          if (res.success) {
+            let repairDepartOptions = []
+            let selectedRepairDepartKeys = []
+            for (let i = 0; i < res.result.length; i++) {
+              selectedRepairDepartKeys.push(res.result[i].key)
+              //鏂板璐熻矗缁翠慨閮ㄩ棬/鐝粍閫夋嫨涓嬫媺妗�
+              repairDepartOptions.push({
+                value: res.result[i].key,
+                label: res.result[i].title
+              })
+            }
+
+            this.$set(this.model, 'selectedRepairDeparts', selectedRepairDepartKeys.join(','))
+            that.nextRepairDepartOptions = repairDepartOptions
+          }
+        })
+      },
+      getUserBaseFactorys(userid) {
+        let that = this
+        // 鑾峰彇EAM涓績/宸ュ尯/宸ユ鍒嗛厤
+        getAction(that.url.userBaseFactoryList, { userId: userid }).then((res) => {
+          if (res.success) {
+            let BaseFactoryOptions = []
+            let selectedBaseFactoryOptionsKeys = []
+            for (let i = 0; i < res.result.length; i++) {
+              selectedBaseFactoryOptionsKeys.push(res.result[i].key)
+              //鏂板璐熻矗缁翠慨閮ㄩ棬/鐝粍閫夋嫨涓嬫媺妗�
+              BaseFactoryOptions.push({
+                value: res.result[i].key,
+                label: res.result[i].title
+              })
+            }
+
+            this.$set(this.model, 'selectedBaseFactory', selectedBaseFactoryOptionsKeys.join(','))
+            that.nextBaseFactoryOptions = BaseFactoryOptions
+          }
+        })
+      },
+      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
+        })
+      },
+      backBaseFactoryInfo(info) {
+        this.model.eamFactoryIds = this.model.selectedBaseFactory
+        this.nextBaseFactoryOptions = info.map((item, index, arr) => {
+          let c = { label: item.text, value: item.value + '' }
+          return c
+        })
+      },
+      backRepairDepartInfo(info) {
+        this.model.repairDepartIds = this.model.selectedRepairDeparts
+        this.nextRepairDepartOptions = info.map((item, index, arr) => {
+          let c = { label: item.text, value: item.value + '' }
+          return c
+        })
+      },
+
+      refresh() {
+        this.userId = ''
+        this.nextDepartOptions = []
+        this.nextProductionOptions = []
+        this.nextBaseFactoryOptions = []
+        this.nextRepairDepartOptions = []
+        this.departIdShow = false
+      },
+      close() {
+        this.$emit('close')
+        this.visible = false
+        this.disableSubmit = false
+        this.nextDepartOptions = []
+        this.nextProductionOptions = []
+        this.nextProductionOptions = []
+        this.nextRepairDepartOptions = []
+        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
         }
-      })
-    },
-    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('鎵嬫満鍙峰凡瀛樺湪!')
+        //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}浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!`
             }
-          })
-        } 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(',') : []
+      },
 
-        }
-      })
-    },
+      eamDeviceSearch(){
+        this.$refs.selectEamDeviceModal.visible = true
+        this.$refs.selectEamDeviceModal.selectedRowKeys = []
+        this.$refs.selectEamDeviceModal.selectedRows = []
+        this.$refs.selectEamDeviceModal.checkedKeys = this.model.eamEquipmentIds ? this.model.eamEquipmentIds.split(',') : []
+      },
 
-    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(','))
+      /**
+       * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂
+       * @param data 宸查�夋嫨鐨勮澶囨暟缁�
+       */
+      selectOK(data) {
+        console.log('data=', data)
+        this.$set(this.model, 'equipmentIds', data.join(','))
+      },
+      selectEamOK(data) {
+        console.log('data=', data)
+        this.$set(this.model, 'eamEquipmentIds', data.join(','))
+      }
     }
   }
-}
 </script>
 
 <style scoped>
-.avatar-uploader > .ant-upload {
-  width: 104px;
-  height: 104px;
-}
+  .avatar-uploader > .ant-upload {
+    width: 104px;
+    height: 104px;
+  }
 
-.ant-upload-select-picture-card i {
-  font-size: 49px;
-  color: #999;
-}
+  .ant-upload-select-picture-card i {
+    font-size: 49px;
+    color: #999;
+  }
 
-.ant-upload-select-picture-card .ant-upload-text {
-  margin-top: 8px;
-  color: #666;
-}
+  .ant-upload-select-picture-card .ant-upload-text {
+    margin-top: 8px;
+    color: #666;
+  }
 
-.ant-table-tbody .ant-table-row td {
-  padding-top: 10px;
-  padding-bottom: 10px;
-}
+  .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;
-}
+  .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