From 008245cbe95c63a80f9a255378a5ffbe25d15085 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期三, 16 七月 2025 21:16:56 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/system/modules/UserModal.vue | 327 ++++++++++++++++++------------------------------------ 1 files changed, 111 insertions(+), 216 deletions(-) diff --git a/src/views/system/modules/UserModal.vue b/src/views/system/modules/UserModal.vue index 375d389..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,104 +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" - autocomplete="off" - /> + <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" - autocomplete="off" - /> + <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" - 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 - label="棣栭〉鏉冮檺" - :labelCol="labelCol" - :wrapperCol="wrapperCol" - > - <a-radio-group - v-model="model.userType" - :defaultValue="0" - > + <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"> + <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> @@ -132,143 +61,48 @@ </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 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> <!--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" - ></j-select-production> + <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="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 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="EAM涓績鍒嗛厤" - :labelCol="labelCol" - :wrapperCol="wrapperCol" - prop="areaId" - > - <j-multi-select-tag - :triggerChange="true" - 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 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="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 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" - v-show="!repairDepartDisabled" - > - <j-select-repair-depart - v-model="model.selectedRepairDeparts" - :multi="true" - @back="backRepairDepartInfo" - :backRepairDepart="true" - :treeRepairDepartOpera="true" - ></j-select-repair-depart> + <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" - 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 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> @@ -285,13 +119,17 @@ 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: { + JSelectBaseFactory, SelectDeviceModal, JSelectProduction, - JSelectRepairDepart + JSelectRepairDepart, + SelectEamDeviceModal }, data() { return { @@ -309,12 +147,12 @@ validatorRules: { username: [{ required: true, message: '璇疯緭鍏ョ敤鎴疯处鍙�!' }, { validator: this.validateUsername }], - password: [{ - required: true, - pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/, - message: '瀵嗙爜鐢�8浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!' - }, - { validator: this.validateToNextPassword, trigger: 'change' }], + // 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: '璇疯緭鍏ョ敤鎴峰悕绉�!' }], @@ -350,17 +188,20 @@ 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: '' + selectedRepairDeparts: '', + selectedBaseFactory:'', } } }, @@ -379,6 +220,17 @@ } // 濡傛灉娓呯┖杞﹂棿鍊煎垯閲嶇疆閫夋嫨璁惧 if (newVal === '') this.model.equipmentIds = '' + } + }, + 'model.selectedBaseFactory': { + handler(newVal, oldVal) { + if (newVal && this.$refs.selectEamDeviceModal) { + // 濡傛灉杞﹂棿閫夋嫨鍓嶅悗涓嶄竴鑷村垯閲嶇疆閫夋嫨璁惧 + if ((oldVal && newVal !== oldVal)) this.model.eamEquipmentIds = '' + this.$refs.selectEamDeviceModal.queryTreeData(newVal) + } + // 濡傛灉娓呯┖杞﹂棿鍊煎垯閲嶇疆閫夋嫨璁惧 + if (newVal === '') this.model.eamEquipmentIds = '' } } }, @@ -434,6 +286,7 @@ selectedroles: '', selecteddeparts: '', selectedProduction: '', + selectedBaseFactory:'', selectedRepairDeparts: '' }) }, @@ -457,6 +310,7 @@ that.getUserDeparts(record.id) that.getUserProductions(record.id) that.getUserRepairDeparts(record.id) + this.getUserBaseFactorys(record.id) } }, isDisabledAuth(code) { @@ -572,6 +426,27 @@ } }) }, + 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) => { @@ -582,6 +457,13 @@ 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 }) @@ -598,6 +480,7 @@ this.userId = '' this.nextDepartOptions = [] this.nextProductionOptions = [] + this.nextBaseFactoryOptions = [] this.nextRepairDepartOptions = [] this.departIdShow = false }, @@ -606,6 +489,7 @@ this.visible = false this.disableSubmit = false this.nextDepartOptions = [] + this.nextProductionOptions = [] this.nextProductionOptions = [] this.nextRepairDepartOptions = [] this.departIdShow = false @@ -784,6 +668,13 @@ 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(',') : [] + }, + /** * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂 * @param data 宸查�夋嫨鐨勮澶囨暟缁� @@ -791,6 +682,10 @@ 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(',')) } } } -- Gitblit v1.9.3