From 52190152691bc217844d4f87b700274c297b104e Mon Sep 17 00:00:00 2001
From: qushaowei <qushaowei@163.com>
Date: 星期四, 25 七月 2024 09:55:53 +0800
Subject: [PATCH] 设备管理修改

---
 src/views/system/modules/UserModal.vue | 1004 ++++++++++++++++++++++++++++++----------------------------
 1 files changed, 514 insertions(+), 490 deletions(-)

diff --git a/src/views/system/modules/UserModal.vue b/src/views/system/modules/UserModal.vue
index cc451b0..eecaf7c 100644
--- a/src/views/system/modules/UserModal.vue
+++ b/src/views/system/modules/UserModal.vue
@@ -156,12 +156,25 @@
           :wrapperCol="wrapperCol"
           v-show="!productionDisabled"
         >
-          <a-input-search :readOnly="true" v-model="model.equipmentIds" @search="deviceSearch" enter-button
-                          placeholder="璇烽�夋嫨璁惧" :disabled="!model.selectedProduction"/>
+          <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>
@@ -189,12 +202,19 @@
           :wrapperCol="wrapperCol"
           prop="areaId"
         >
-          <j-dict-select-tag
+          <!-- <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-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="璐熻矗閮ㄩ棬"
@@ -314,508 +334,512 @@
       </a-button>
     </div>
 
-    <select-device-modal ref="selectDeviceModal" @selectFinished="selectOK" :title="'閫夋嫨璁惧'"/>
+    <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 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 { mapActions } from 'vuex'
+import { ajaxGetDictItems, getDictItemsFromCache } from '@/api/api'
+import SelectDeviceModal from './SelectDeviceModal'
 
-  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浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!'
-          },
-            { 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: '璇风淮鎶ょ彮缁�' }]
+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浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!'
         },
-        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')
-        }
+        { 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: '璇风淮鎶ょ彮缁�' }]
       },
-      '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(() => {
-        })
+      departIdShow: false,
+      title: '鎿嶄綔',
+      visible: false,
+      model: {},
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 5 }
       },
-      add() {
-        this.refresh()
-        this.edit({
-          activitiSync: '1',
-          userType: 0,
-          userIdentity: 1,
-          selectedroles: '',
-          selecteddeparts: '',
-          selectedProduction: ''
-        })
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 16 }
       },
-      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)
-        }
+      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'
       },
-      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
-          }
-        })
-
-        // 鑾峰彇杞﹂棿鍒嗛厤
-        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
-          }
-        })
-        //杞﹂棿鐨剈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(','))
+      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
+            })
+          }
+
+          this.$set(this.model, 'selecteddeparts', selectDepartKeys.join(','))
+          that.nextDepartOptions = departOptions
+        }
+      })
+
+      // 鑾峰彇杞﹂棿鍒嗛厤
+      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
+        }
+      })
+      //杞﹂棿鐨剈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;
-  }
+.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