From 19aff1ac87030b21d2b01cdca5d5604c840ba7c0 Mon Sep 17 00:00:00 2001 From: zhaowei <zhaowei> Date: 星期一, 21 七月 2025 21:36:31 +0800 Subject: [PATCH] 维修工单 --- src/views/system/modules/UserModal.vue | 758 +++++++++++++++++++++++++++++++++------------------------ 1 files changed, 437 insertions(+), 321 deletions(-) diff --git a/src/views/system/modules/UserModal.vue b/src/views/system/modules/UserModal.vue index a3f875e..8761b63 100644 --- a/src/views/system/modules/UserModal.vue +++ b/src/views/system/modules/UserModal.vue @@ -1,19 +1,15 @@ <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%;"> <span>{{ title }}</span> <span style="display:inline-block;width:calc(100% - 51px);padding-right:10px;text-align: right"> - <a-button @click="toggleScreen" icon="appstore" style="height:20px;width:20px;border:0px"></a-button> + <a-button + @click="toggleScreen" + icon="appstore" + style="height:20px;width:20px;border:0px" + ></a-button> </span> </div> @@ -23,218 +19,232 @@ <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-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-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-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-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 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> + <a-radio :value="1">鎿嶄綔宸�</a-radio> + <a-radio :value="0">鏃�</a-radio> + </a-radio-group> </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> + <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" 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" 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> - </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> + <!--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"> - <j-image-upload class="avatar-uploader" text="涓婁紶" v-model="model.avatar" ></j-image-upload> + <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"> - <a-date-picker - style="width: 100%" - placeholder="璇烽�夋嫨鐢熸棩" - v-model="model.birthday" - :format="dateFormat" - :getCalendarContainer="node => node.parentNode"/> + <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"> - <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 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="email"> - <a-input placeholder="璇疯緭鍏ラ偖绠�" v-model="model.email" /> +<!-- <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="璇烽�夋嫨璐熻矗閮ㄩ棬"/> </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> - - <div class="drawer-bootom-button" v-show="!disableSubmit"> + <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> </div> + + <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 { 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 { 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 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", + name: 'UserModal', components: { - JSelectProduction + JSelectBaseFactory, + SelectDeviceModal, + JSelectProduction, + // JSelectRepairDepart, + SelectEamDeviceModal }, - data () { + data() { return { departDisabled: false, //鏄惁鏄垜鐨勯儴闂ㄨ皟鐢ㄨ椤甸潰 productionDisabled: false, //鏄惁鏄垜鐨勮溅闂磋皟鐢ㄨ椤甸潰 roleDisabled: false, //鏄惁鏄鑹茬淮鎶よ皟鐢ㄨ椤甸潰 - modalWidth:800, - drawerWidth:700, - modaltoggleFlag:true, + // 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: true, message: '璇风淮鎶ょ彮缁�' }] - + userId: '', //淇濆瓨鐢ㄦ埛id + disableSubmit: false, + dateFormat: 'YYYY-MM-DD', + validatorRules: { + username: [{ required: true, message: '璇疯緭鍏ョ敤鎴疯处鍙�!' }, + { validator: this.validateUsername }], + // password: [{ + // required: true, + // pattern: /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/, + // message: '瀵嗙爜鐢�8浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!' + // }, + // { validator: this.validateToNextPassword, trigger: 'change' }], + confirmpassword: [{ required: true, message: '璇烽噸鏂拌緭鍏ョ櫥褰曞瘑鐮�!' }, + { validator: this.compareToFirstPassword }], + realname: [{ required: true, message: '璇疯緭鍏ョ敤鎴峰悕绉�!' }], + phone: [{ required: false, message: '璇疯緭鍏ユ墜鏈哄彿!' }, { validator: this.validatePhone }], + email: [{ validator: this.validateEmail }], + roles: {}, + workNo: [{ required: true, message: '璇疯緭鍏ュ伐鍙�' }, + { validator: this.validateWorkNo }], + telephone: [{ pattern: /^0\d{2,3}-[1-9]\d{6,7}$/, message: '璇疯緭鍏ユ纭殑搴ф満鍙风爜' }], + teamId: [{ required: false, message: '璇风淮鎶ょ彮缁�' }] }, - departIdShow:false, - title:"鎿嶄綔", + departIdShow: false, + title: '鎿嶄綔', visible: false, model: {}, labelCol: { xs: { span: 24 }, - sm: { span: 5 }, + sm: { span: 5 } }, wrapperCol: { xs: { span: 24 }, - sm: { span: 16 }, + sm: { span: 16 } }, - uploadLoading:false, + uploadLoading: false, confirmLoading: false, - headers:{}, + headers: {}, url: { - fileUpload: window._CONFIG['domianURL']+"sys/common/upload", - userWithDepart: "/sys/user/userDepartList", // 寮曞叆涓烘寚瀹氱敤鎴锋煡鐪嬮儴闂ㄤ俊鎭渶瑕佺殑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' + 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:[], - isDepartType:'', - - } - }, - watch:{ - visible:{ - handler(value){ - if(value) this.initDictData('password_length') + rolesOptions: [], + nextDepartOptions: [], + nextProductionOptions: [], + nextBaseFactoryOptions:[], + nextRepairDepartOptions: [], + isDepartType: '', + model: { + selectedProduction: '', + // selectedRepairDeparts: '', + selectedBaseFactory:'', } } }, - created () { - const token = Vue.ls.get(ACCESS_TOKEN); - this.headers = {"X-Access-Token":token} + 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 = '' + } + }, + '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 = '' + } + } + }, + created() { + const token = Vue.ls.get(ACCESS_TOKEN) + this.headers = { 'X-Access-Token': token } this.initRoleList() this.initTenantList() this.queryTreeData() + this.getRepairDepartTreeDataByApi() }, - computed:{ - uploadAction:function () { - return this.url.fileUpload; + computed: { + uploadAction: function() { + return this.url.fileUpload } }, methods: { @@ -246,101 +256,122 @@ } else { // this.$message.warn(res.message) this.$notification.warning({ - message:'娑堟伅', - description:res.message - }); + message: '娑堟伅', + description: res.message + }) } - }).finally(() =>{ + }).finally(() => { }) }, - add () { - this.refresh(); - this.edit({activitiSync:'1',userIdentity:1}); + // 鑾峰彇缁翠慨鐝粍鏍� + getRepairDepartTreeDataByApi() { + getAction(this.url.repairDepartTreeList) + .then(res => { + if (res.success) { + this.repairDepartTreeData = res.result + } else { + this.$notification.warning({ + message: '娑堟伅', + description: res.message + }) + } + }) }, - edit (record) { - let that = this; - that.visible = true; + 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; - - that.model = Object.assign({},{selectedroles:'',selecteddeparts:''}, record); - that.model = Object.assign({},{selectedroles:'',selectedProduction:''}, record); + 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 (this.model.userIdentity == 2) { + this.departIdShow = true + } else { + this.departIdShow = false } - if(record.hasOwnProperty("id")){ - that.getUserRoles(record.id); - that.getUserDeparts(record.id); + if (record.hasOwnProperty('id')) { + that.getUserRoles(record.id) + that.getUserDeparts(record.id) + that.getUserProductions(record.id) + that.getUserRepairDeparts(record.id) + this.getUserBaseFactorys(record.id) } - console.log('that.model',that.model) }, - isDisabledAuth(code){ - return disabledAuthFilter(code); + isDisabledAuth(code) { + return disabledAuthFilter(code) }, //绐楀彛鏈�澶у寲鍒囨崲 - toggleScreen(){ - if(this.modaltoggleFlag){ - this.modalWidth = window.innerWidth; - }else{ - this.modalWidth = 800; + toggleScreen() { + if (this.modaltoggleFlag) { + this.modalWidth = window.innerWidth + } else { + this.modalWidth = 800 } - this.modaltoggleFlag = !this.modaltoggleFlag; + this.modaltoggleFlag = !this.modaltoggleFlag }, // 鏍规嵁灞忓箷鍙樺寲,璁剧疆鎶藉眽灏哄 - resetScreenSize(){ - let screenWidth = document.body.clientWidth; - if(screenWidth < 500){ - this.drawerWidth = screenWidth; - }else{ - this.drawerWidth = 700; + 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; + initTenantList() { + getAction(this.url.queryTenantList).then(res => { + if (res.success) { + this.tenantsOptions = res.result.map((item, index, arr) => { + let c = { label: item.name, value: item.id + '' } + return c }) - console.log('this.tenantsOptions: ',this.tenantsOptions) } }) }, //鍒濆鍖栬鑹插瓧鍏� - initRoleList(){ - queryall().then((res)=>{ - if(res.success){ - this.rolesOptions = res.result.map((item,index,arr)=>{ - let c = {label:item.roleName, value:item.id} - return c; + initRoleList() { + queryall().then((res) => { + if (res.success) { + this.rolesOptions = res.result.map((item, index, arr) => { + let c = { label: item.roleName, value: item.id } + return c }) - console.log('this.rolesOptions: ',this.rolesOptions) } - }); + }) }, - getUserRoles(userid){ - queryUserRole({userid:userid}).then((res)=>{ - if(res.success){ - this.model.selectedroles = res.result.join(","); - console.log('that.model.selectedroles=',this.model.selectedroles) + 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=[] + 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); + selectDepartKeys.push(res.result[i].key) //鏂板璐熻矗閮ㄩ棬閫夋嫨涓嬫媺妗� departOptions.push({ value: res.result[i].key, @@ -348,20 +379,20 @@ }) } - that.model.selecteddeparts = selectDepartKeys.join(",") - that.model.selectedProduction = selectDepartKeys.join(",") - - that.nextDepartOptions=departOptions; - console.log('that.nextDepartOptions=',that.nextDepartOptions) + 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=[] + }, + 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); + selectProductKeys.push(res.result[i].key) //鏂板璐熻矗閮ㄩ棬閫夋嫨涓嬫媺妗� ProductionOptions.push({ value: res.result[i].key, @@ -369,218 +400,303 @@ }) } - that.model.selectedProduction = selectProductKeys.join(",") - - that.nextProductionOptions=ProductionOptions; - console.log('that.nextProductionOptions=',that.nextProductionOptions) + this.$set(this.model, 'selectedProduction', selectProductKeys.join(',')) + that.nextProductionOptions = ProductionOptions } }) - //杞﹂棿鐨剈rl + }, + // 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; + 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; + 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; + 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 + }) }, - close () { - this.$emit('close'); - this.visible = false; - this.disableSubmit = false; - this.nextDepartOptions=[]; + // 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.departIdShow=false; - this.$refs.form.resetFields(); + 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; + handleSubmit() { + const that = this // 瑙﹀彂琛ㄥ崟楠岃瘉 this.$refs.form.validate(valid => { if (valid) { - that.confirmLoading = true; + that.confirmLoading = true //濡傛灉鏄笂绾ф嫨浼犲叆departIds,鍚﹀垯涓虹┖ - if(this.model.userIdentity!==2){ - this.model.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); + 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); + 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(); + that.confirmLoading = false + that.close() }) - }else{ - return false; + } else { + return false } }) }, - handleCancel () { + handleCancel() { this.close() }, - validateToNextPassword (rule, value, callback) { - const confirmpassword=this.model.confirmpassword; + validateToNextPassword(rule, value, callback) { + const confirmpassword = this.model.confirmpassword if (value && confirmpassword && value !== confirmpassword) { - callback('涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鏍凤紒'); + callback('涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鏍凤紒') } if (value && this.confirmDirty) { - this.$refs.form.validateField(['confirmpassword']); + this.$refs.form.validateField(['confirmpassword']) } - callback(); + callback() }, - compareToFirstPassword (rule, value, callback) { + compareToFirstPassword(rule, value, callback) { if (value && value !== this.model.password) { - callback('涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鏍凤紒'); + callback('涓ゆ杈撳叆鐨勫瘑鐮佷笉涓�鏍凤紒') } else { callback() } }, - validatePhone(rule, value, callback){ - if(!value){ + validatePhone(rule, value, callback) { + if (!value) { callback() - }else{ - if(new RegExp(/^1[3|4|5|7|8|9][0-9]\d{8}$/).test(value)){ + } 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("鎵嬫満鍙峰凡瀛樺湪!") + callback('鎵嬫満鍙峰凡瀛樺湪!') } }) - }else{ - callback("璇疯緭鍏ユ纭牸寮忕殑鎵嬫満鍙风爜!"); + } else { + callback('璇疯緭鍏ユ纭牸寮忕殑鎵嬫満鍙风爜!') } } }, - validateEmail(rule, value, callback){ - if(!value){ + 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)){ + } 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("閭宸插瓨鍦�!") + callback('閭宸插瓨鍦�!') } }) - }else{ - callback("璇疯緭鍏ユ纭牸寮忕殑閭!") + } else { + callback('璇疯緭鍏ユ纭牸寮忕殑閭!') } } }, - validateUsername(rule, value, 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("鐢ㄦ埛鍚嶅凡瀛樺湪!") - } - }) + callback() + } else { + callback('鐢ㄦ埛鍚嶅凡瀛樺湪!') + } + }) }, - validateWorkNo(rule, value, 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("宸ュ彿宸插瓨鍦�!") + callback('宸ュ彿宸插瓨鍦�!') } }) }, handleConfirmBlur(e) { - const value = e.target.value; + 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; + 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; + 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)+",}$"); + const regExp = new RegExp('^(?=.*[a-zA-Z])(?=.*\\\d)(?=.*[~!@#$%^&*()_+`\\-={}:";\'<>?,./]).{' + Number(res.result[0].value) + ',}$') - this.validatorRules.password[0]={ - required:true, + this.validatorRules.password[0] = { + required: true, pattern: regExp, - message: `瀵嗙爜鐢�${res.result[0].value}浣嶆暟瀛椼�佸ぇ灏忓啓瀛楁瘝鍜岀壒娈婄鍙风粍鎴�!`, + 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(',') : [] + }, + + /** + * 閫夋嫨宸叉湁璁惧鍚庣偣鍑荤‘瀹氭椂瑙﹀彂 + * @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; + width: 104px; + height: 104px; } + .ant-upload-select-picture-card i { font-size: 49px; color: #999; @@ -591,12 +707,12 @@ 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-bootom-button { + .drawer-bottom-button { position: absolute; bottom: -8px; width: 100%; -- Gitblit v1.9.3