From b8e56a7c55cebb5f40867d2893189963fcdbe20f Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期四, 03 七月 2025 15:34:49 +0800 Subject: [PATCH] 1、删除用户管理冗余字段 2、区分MDC和设备管理部门及设备分配 --- src/views/system/modules/UserModal.vue | 1114 +++++++++++++++++++++++++++------------------------------- 1 files changed, 515 insertions(+), 599 deletions(-) diff --git a/src/views/system/modules/UserModal.vue b/src/views/system/modules/UserModal.vue index eecaf7c..0bb2e81 100644 --- a/src/views/system/modules/UserModal.vue +++ b/src/views/system/modules/UserModal.vue @@ -41,6 +41,7 @@ placeholder="璇疯緭鍏ョ敤鎴疯处鍙�" v-model="model.username" :readOnly="!!model.id" + autocomplete="off" /> </a-form-model-item> @@ -55,6 +56,7 @@ type="password" placeholder="璇疯緭鍏ョ櫥褰曞瘑鐮�" v-model="model.password" + autocomplete="off" /> </a-form-model-item> @@ -97,10 +99,6 @@ /> </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" @@ -114,6 +112,23 @@ placeholder="璇烽�夋嫨瑙掕壊" > </j-multi-select-tag> + </a-form-model-item> + + <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> + <a-radio :value="1">鎿嶄綔宸�</a-radio> + <a-radio :value="0">鏃�</a-radio> + </a-radio-group> </a-form-model-item> <!--閮ㄩ棬鍒嗛厤--> @@ -134,9 +149,9 @@ </j-select-depart> </a-form-model-item> - <!--杞﹂棿鍒嗛厤--> + <!--MDC杞﹂棿鍒嗛厤--> <a-form-model-item - label="杞﹂棿鍒嗛厤" + label="MDC杞﹂棿鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!productionDisabled" @@ -151,7 +166,7 @@ </a-form-model-item> <a-form-model-item - label="閫夋嫨璁惧" + label="MDC璁惧鍒嗛厤" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!productionDisabled" @@ -167,55 +182,37 @@ </a-form-model-item> <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> - <a-radio :value="1">鎿嶄綔宸�</a-radio> - <a-radio :value="0">鏃�</a-radio> - </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="涓績鍒嗛厤" + label="EAM涓績鍒嗛厤" :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" + v-model="model.eamFactoryIds" 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="EAM璁惧鍒嗛厤" + :labelCol="labelCol" + :wrapperCol="wrapperCol" + v-show="!productionDisabled" + > + <a-input-search + :readOnly="true" + v-model="model.eamEquipmentIds" + @search="deviceSearch" + enter-button + placeholder="璇烽�夋嫨璁惧" + :disabled="!model.selectedProduction" + /> + </a-form-model-item> + + <a-form-model-item label="璐熻矗閮ㄩ棬" :labelCol="labelCol" @@ -230,87 +227,6 @@ > </j-multi-select-tag> </a-form-model-item> - - <!--<a-form-model-item--> - <!--label="澶村儚"--> - <!--:labelCol="labelCol"--> - <!--:wrapperCol="wrapperCol"--> - <!-->--> - <!--<j-image-upload--> - <!--class="avatar-uploader"--> - <!--text="涓婁紶"--> - <!--v-model="model.avatar"--> - <!--></j-image-upload>--> - <!--</a-form-model-item>--> - - <!--<a-form-model-item--> - <!--label="鐢熸棩"--> - <!--:labelCol="labelCol"--> - <!--:wrapperCol="wrapperCol"--> - <!-->--> - <!--<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="鎬у埆"--> - <!--:labelCol="labelCol"--> - <!--:wrapperCol="wrapperCol"--> - <!-->--> - <!--<a-select--> - <!--v-model="model.sex"--> - <!--placeholder="璇烽�夋嫨鎬у埆"--> - <!--:getPopupContainer="(target) => target.parentNode"--> - <!-->--> - <!--<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="閭"--> - <!--:labelCol="labelCol"--> - <!--:wrapperCol="wrapperCol"--> - <!--prop="email"--> - <!-->--> - <!--<a-input--> - <!--placeholder="璇疯緭鍏ラ偖绠�"--> - <!--v-model="model.email"--> - <!--/>--> - <!--</a-form-model-item>--> - - <!--<a-form-model-item--> - <!--label="鎵嬫満鍙风爜"--> - <!--:labelCol="labelCol"--> - <!--:wrapperCol="wrapperCol"--> - <!--prop="phone"--> - <!-->--> - <!--<a-input--> - <!--placeholder="璇疯緭鍏ユ墜鏈哄彿鐮�"--> - <!--v-model="model.phone"--> - <!--/>--> - <!--</a-form-model-item>--> - - <!--<a-form-model-item--> - <!--label="搴ф満"--> - <!--:labelCol="labelCol"--> - <!--:wrapperCol="wrapperCol"--> - <!--prop="telephone"--> - <!-->--> - <!--<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> </a-spin> @@ -343,503 +259,503 @@ </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浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!' + 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: '璇风淮鎶ょ彮缁�' }] }, - { 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') + } }, - 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 - }) - } - - 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 - }) + created() { + const token = Vue.ls.get(ACCESS_TOKEN) + this.headers = { 'X-Access-Token': token } + this.initRoleList() + this.initTenantList() + this.queryTreeData() }, - 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) => { - if (res.success) { - that.$message.success(res.message) - that.$emit('ok') - } else { - that.$message.warning(res.message) - } - }).finally(() => { - that.confirmLoading = false - that.close() - }) + }).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 } - }) - }, - 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(',') : [] + }, - } - }) - }, - - 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(',')) + } } } -} </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