From 0cd1631ceaa93e6483908fd692d2cb693b85324b Mon Sep 17 00:00:00 2001 From: 石广澎 <shiguangpeng@163.com> Date: 星期二, 02 一月 2024 14:26:01 +0800 Subject: [PATCH] 增加图片验证码和登录日志 权限管理优化 --- admin-web/src/views/systemManger/server/user/edit.vue | 476 ++++++++++++++++++++++++++++++---------------------------- 1 files changed, 245 insertions(+), 231 deletions(-) diff --git a/admin-web/src/views/systemManger/server/user/edit.vue b/admin-web/src/views/systemManger/server/user/edit.vue index 9e4d187..6d62fa2 100644 --- a/admin-web/src/views/systemManger/server/user/edit.vue +++ b/admin-web/src/views/systemManger/server/user/edit.vue @@ -1,5 +1,5 @@ <template> - <win-sm :title="setting.title" @close="close" :width="'800px'"> + <win-sm :title="setting.title" @close="close" :width="'800px'" :loading="loading"> <el-alert style="margin-bottom: 10px" title="娓╅Θ鎻愮ず锛氱敤鎴峰垵濮嬪瘑鐮佷负123456" @@ -13,17 +13,18 @@ </el-form-item> <el-form-item label="閮ㄩ棬" prop="sysDeptId"> <el-select v-model="formData.sysDeptId"> - <el-option v-for="(item,index) in deptmentOptions" :key="index" :label="item.name" :value="item.id"></el-option> + <el-option v-for="(item,index) in deptmentOptions" :key="index" :label="item.name" + :value="item.id"></el-option> </el-select> </el-form-item> <el-form-item label="浜哄憳濮撳悕" prop="userName"> <el-input v-model="formData.userName" clearable maxlength="20" show-word-limit style="width: 250px"/> </el-form-item> - <el-form-item label="鍛樺伐缂栧彿" prop="userCode"> + <el-form-item label="鐧诲綍鍚�" prop="userCode"> <el-input v-model="formData.userCode" clearable maxlength="20" show-word-limit style="width: 250px"/> </el-form-item> <el-form-item label="鎵嬫満鍙�" prop="userPhone"> - <el-input v-model="formData.userPhone" clearable maxlength="20" show-word-limit + <el-input v-model="formData.userPhone" clearable maxlength="20" show-word-limit style="width: 250px"/> </el-form-item> <el-form-item label="鎬у埆" prop="sex"> @@ -54,7 +55,7 @@ <el-checkbox v-model="checkAll" @change="handleCheckAllChange">鍏ㄩ��</el-checkbox> <div style="margin: 15px 0;"></div> <el-checkbox-group v-model="checkedList" @change="handleCheckedCitiesChange"> - <el-checkbox v-for="(r,i) in roleOptions" :label="r.role_id" :key="r.role_id">{{r.role_name}}</el-checkbox> + <el-checkbox v-for="(r,i) in roleOptions" :label="r.role_id" :key="r.role_id">{{ r.role_name }}</el-checkbox> </el-checkbox-group> </el-form-item> </el-form> @@ -74,231 +75,244 @@ import {departmentListAll} from "@/api/system/deptment"; export default { - components: {winSm, myButton}, - props: { - // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍 - // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦 - // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁 - setting: { - type: Object, - default: () => { - } - } - }, - data() { - return { - deptmentOptions:[], - checkAll: false, - checkedList: [], - roleList: [ - {'id': 1, label: '鐜嬫兜1'}, - {'id': 2, label: '鐜嬫兜2'} - ], - // 鏌ヨ鍙傛暟 - queryParams: { - pageNum: 1, - pageSize: 10, - roleName: undefined, - roleKey: undefined, - status: undefined, - orgId: 1 - }, - roleOptions: [],// 閫夋嫨椤� - roleCheckStrictly: true, - defaultProps: { - children: 'childList', - label: 'name', - }, - formData: { - sysDeptId:'', - userName: '', - userCode: '', - userPhone: '', - sex: 1, - status: 1, - remark: '', - seq: null, - }, - rules: { - sysDeptId: [ - {required: true, message: '璇烽�夋嫨閮ㄩ棬', trigger: 'change'} - ], - userName: [ - {required: true, message: '璇疯緭鍏ヤ汉鍛樺鍚�', trigger: 'blur'} - ], - userCode: [ - {required: true, message: '璇疯緭鍏ュ憳宸ョ紪鍙�', trigger: 'blur'} - ], - userPhone: [ - {required: true, message: '璇疯緭鍏ユ墜鏈哄彿', trigger: 'blur'} - ], - sex: [ - {required: true, message: '璇烽�夋嫨鎬у埆', trigger: 'change'} - ], - seq: [ - {required: true, message: '璇疯緭鍏ラ『搴忓彿', trigger: 'blur'} - ], - } - } - }, - created() { - this.getInfo() - this.getAllRole() - this.getDeptmentOptions() - }, - methods: { - // 鑾峰彇鎵�鏈夎鑹� - getAllRole() { - // const user = this.$store.getters.userInfo - // this.data_scope = 1 - // if (user.lv == 1) { - // this.data_scope = 1 - // } - // if (user.lv == 2) { - // this.data_scope = 2 - // } - // if (user.lv == 3) { - // this.data_scope = 3 - // } - this.data_scope = 1 - role.listRoleByDataScope({dataScope: this.data_scope}).then(response => { - if (response) { - this.roleOptions = response; - } else { - this.roleOptions = []; - } - this.loading = false; - } - ); - }, - getDeptmentOptions(){ - departmentListAll({tenantId:this.setting.tenantId}).then(res=>{ - this.deptmentOptions = res - }) - }, - handleCheckAllChange(val) { - if (val) { - this.checkedList = this.roleOptions.map(x => { - return x.role_id - }) - } else { - this.checkedList = [] - } - }, - handleCheckedCitiesChange(value) { - let checkedCount = value.length; - this.checkAll = checkedCount === this.roleOptions.length; - }, - getInfo() { - this.title = this.setting.title - if (this.setting.id != null) { - // 鏌ヨ鏁版嵁 - user.getUser({id: this.setting.id}).then(res => { - const data = res.data - this.formData = Object.assign(this.formData, data) - if (this.formData.projectStart != null && this.formData.projectStart > 0) { - this.formData.projectStart = DateFormatter.LongToDateTime(this.formData.projectStart) - } - if (this.formData.projectEnd != null && this.formData.projectEnd > 0) { - this.formData.projectEnd = DateFormatter.LongToDateTime(this.formData.projectEnd) - } - this.checkedList = res.list.map(x => { - return x.role_id - }) - if (res.list.length == this.roleOptions.length) { - this.handleCheckedCitiesChange(res.list) - } - }) - } - }, - close() { - this.formData = { - projectName: '', - projectSubName: '', - projectCode: '', - projectContact: '', - projectTel: '', - projectEmail: '', - projectStart: null, - projectEnd: null, - projectDesc: '', - status: 1 - }, - this.$emit('close') - }, - save() { - - this.$refs.ruleForm.validate((valid) => { - if (valid) { - const params = Object.assign({}, this.formData) - params.roleList = this.checkedList - // 鍖哄煙id - params.tenantId = this.setting.tenantId - params.tenantCode = this.setting.tenantCode - if (params.ctiStatus == 0) { - params.agentJid = '' - params.workgroupJid = '' - params.clientNumber = '' - params.clientPwd = '' - } - if (params.projectStart != null && params.projectEnd != null) { - params.projectStart = DateFormatter.DateToLong(params.projectStart) - params.projectEnd = DateFormatter.DateToLong(params.projectEnd) - if (params.projectStart >= params.projectEnd) { - this.$message.error('鏈嶅姟缁撴潫鏃堕棿涓嶈兘灏忎簬鎴栬�呯瓑浜庢湇鍔″紑濮嬫椂闂�') - return - } - } - if ((params.projectStart == null && params.projectEnd != null) || (params.projectStart != null && params.projectEnd == null)) { - this.$message.error('鏈嶅姟寮�濮嬫椂闂村拰鏈嶅姟缁撴潫鏃堕棿蹇呴』鎴愬鍑虹幇') - return - } - if (params.id) { - user.upd(params).then(res => { - if (res) { - this.$message.success('淇濆瓨鎴愬姛锛�') - this.close() - this.$emit('search') - } else { - this.$message.error('淇濆瓨澶辫触') - } - }) - } else { - user.add(params).then(res => { - if (res) { - this.$message.success('淇濆瓨鎴愬姛锛�') - this.close() - this.$emit('search') - } else { - this.$message.error('淇濆瓨澶辫触') - } - }) - } - } else { - this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��') - } - }) - }, - getWorkgroupsAll(){ - callCenter.getWorkgroupsAll().then(res => { - this.workgroups = res.workgroups - }) - }, - getWorkgroupAgents(workgroupName){ - this.formData.agentJid = '' - this.formData.clientNumber = '' - this.formData.clientPwd = '' - this.agentExtendEntiry.agentId = '' - this.formData.workgroupJid = this.workgroup.workgroupJID - callCenter.getWorkgroupAgents(workgroupName).then(res => { - this.agents = res.agents - }) - }, - onClickAgent(agent){ - this.formData.agentJid = agent.agentExtendEntiry.agentId - this.formData.clientNumber = agent.agentExtendEntiry.ccClientNumber - this.formData.clientPwd = agent.agentExtendEntiry.ccClientPWD - } - } + components: {winSm, myButton}, + props: { + // setting 涓』鑷冲皯鍖呭惈鎺у埗dialog鏄剧ず鎴栭殣钘忕殑灞炴��,鍏朵綑灞炴�у彲鎷撳睍 + // 灏嗘坊鍔�/淇敼鐨勫ぇ閲忔暟鎹強閫昏緫浠庡垪琛ㄩ〉闈腑鍒嗙鍑烘潵,閬垮厤鍒楄〃椤甸潰浠g爜杩囧,瀹℃煡鍥伴毦 + // 鑻ユ椤甸潰椤诲洖浼犳暟鎹嚦鐖堕〉闈�,鍙湪寮曠敤缁勪欢鏃舵坊鍔犱簨浠�,鏈〉闈娇鐢╰his.$emit('浜嬩欢鍚�',鍙傛暟1,鍙傛暟2...)鍥炰紶鏁版嵁 + setting: { + type: Object, + default: () => { + } } + }, + data() { + // 鍙傛暟1: rule 瀵硅薄, 鏄牎楠岃鍒�, 涓�鑸笉鐢� + // 鍙傛暟2: value 鏍¢獙椤圭殑鏁版嵁 + // 鍙傛暟3: callback 鍥炶皟鍑芥暟, 鍐冲畾鏄惁鏍¢獙閫氳繃 + const checkedListCheck = (rule, value, callback) => { + if (this.checkedList.length < 1) { + callback(new Error('鑷冲皯閫夋嫨涓�涓�')) + } else { + callback() + } + } + return { + deptmentOptions: [], + loading: true, + checkAll: false, + checkedList: [], + roleList: [ + {'id': 1, label: '鐜嬫兜1'}, + {'id': 2, label: '鐜嬫兜2'} + ], + // 鏌ヨ鍙傛暟 + queryParams: { + pageNum: 1, + pageSize: 10, + roleName: undefined, + roleKey: undefined, + status: undefined, + orgId: 1 + }, + roleOptions: [],// 閫夋嫨椤� + roleCheckStrictly: true, + defaultProps: { + children: 'childList', + label: 'name', + }, + formData: { + sysDeptId: '', + userName: '', + userCode: '', + userPhone: '', + sex: 1, + status: 1, + remark: '', + seq: null, + }, + rules: { + sysDeptId: [ + {required: true, message: '璇烽�夋嫨閮ㄩ棬', trigger: 'change'} + ], + userName: [ + {required: true, message: '璇疯緭鍏ヤ汉鍛樺鍚�', trigger: 'blur'} + ], + userCode: [ + {required: true, message: '璇疯緭鍏ョ櫥褰曞悕', trigger: 'blur'} + ], + userPhone: [ + {required: true, message: '璇疯緭鍏ユ墜鏈哄彿', trigger: 'blur'} + ], + sex: [ + {required: true, message: '璇烽�夋嫨鎬у埆', trigger: 'change'} + ], + seq: [ + {required: true, message: '璇疯緭鍏ラ『搴忓彿', trigger: 'blur'} + ], + // 瑙掕壊閰嶇疆鐨勯獙璇� + roleSetting: [ + {validator: checkedListCheck, required: true, trigger: 'blur'}, + ], + } + } + }, + async created() { + this.title = this.setting.title + if (this.setting.id != null) { + await this.getInfo() + } + + await this.getAllRole() + await this.getDeptmentOptions() + this.loading = false + }, + methods: { + // 鑾峰彇鎵�鏈夎鑹� + async getAllRole() { + this.data_scope = this.$store.getters.userInfo ? this.$store.getters.userInfo.lv : '' + await role.listRoleByDataScope({dataScope: this.setting.data_scope}).then(response => { + if (response) { + this.roleOptions = response; + } else { + this.roleOptions = []; + } + this.loading = false; + } + ); + }, + async getDeptmentOptions() { + await departmentListAll({tenantId: this.setting.tenantId}).then(res => { + this.deptmentOptions = res + }) + }, + handleCheckAllChange(val) { + if (val) { + this.checkedList = this.roleOptions.map(x => { + return x.role_id + }) + } else { + this.checkedList = [] + } + }, + handleCheckedCitiesChange(value) { + let checkedCount = value.length; + this.checkAll = checkedCount === this.roleOptions.length; + }, + async getInfo() { + this.title = this.setting.title + // 鏌ヨ鏁版嵁 + await user.getUser({id: this.setting.id}).then(res => { + const data = res.data + this.formData = Object.assign(this.formData, data) + if (this.formData.projectStart != null && this.formData.projectStart > 0) { + this.formData.projectStart = DateFormatter.LongToDateTime(this.formData.projectStart) + } + if (this.formData.projectEnd != null && this.formData.projectEnd > 0) { + this.formData.projectEnd = DateFormatter.LongToDateTime(this.formData.projectEnd) + } + this.checkedList = res.list.map(x => { + return x.role_id + }) + if (res.list.length == this.roleOptions.length) { + this.handleCheckedCitiesChange(res.list) + } + }) + }, + close() { + this.formData = { + sysDeptId: '', + userName: '', + userCode: '', + userPhone: '', + sex: 1, + status: 1, + remark: '', + seq: null, + } + this.$emit('close') + }, + save() { + + this.$refs.ruleForm.validate((valid) => { + if (valid) { + const params = Object.assign({}, this.formData) + params.roleList = this.checkedList + // 鍖哄煙id + params.tenantId = this.setting.tenantId + params.tenantCode = this.setting.tenantCode + if (params.ctiStatus == 0) { + params.agentJid = '' + params.workgroupJid = '' + params.clientNumber = '' + params.clientPwd = '' + } + if (params.projectStart != null && params.projectEnd != null) { + params.projectStart = DateFormatter.DateToLong(params.projectStart) + params.projectEnd = DateFormatter.DateToLong(params.projectEnd) + if (params.projectStart >= params.projectEnd) { + this.$message.error('鏈嶅姟缁撴潫鏃堕棿涓嶈兘灏忎簬鎴栬�呯瓑浜庢湇鍔″紑濮嬫椂闂�') + return + } + } + if ((params.projectStart == null && params.projectEnd != null) || (params.projectStart != null && params.projectEnd == null)) { + this.$message.error('鏈嶅姟寮�濮嬫椂闂村拰鏈嶅姟缁撴潫鏃堕棿蹇呴』鎴愬鍑虹幇') + return + } + if (this.loading) return; + this.loading = true + if (params.id) { + user.upd(params).then(res => { + this.loading = false + if (res) { + this.$message.success('淇濆瓨鎴愬姛锛�') + this.close() + this.$emit('search') + } else { + this.$message.error('淇濆瓨澶辫触') + } + }).catch(() => { + this.loading = false + }) + } else { + user.add(params).then(res => { + this.loading = false + if (res) { + this.$message.success('淇濆瓨鎴愬姛锛�') + this.close() + this.$emit('search') + } else { + this.$message.error('淇濆瓨澶辫触') + } + }).catch(() => { + this.loading = false + }) + } + } else { + this.$message.error('鏍¢獙鏈�氳繃锛岃妫�鏌ャ��') + } + }) + }, + getWorkgroupsAll() { + callCenter.getWorkgroupsAll().then(res => { + this.workgroups = res.workgroups + }) + }, + getWorkgroupAgents(workgroupName) { + this.formData.agentJid = '' + this.formData.clientNumber = '' + this.formData.clientPwd = '' + this.agentExtendEntiry.agentId = '' + this.formData.workgroupJid = this.workgroup.workgroupJID + callCenter.getWorkgroupAgents(workgroupName).then(res => { + this.agents = res.agents + }) + }, + onClickAgent(agent) { + this.formData.agentJid = agent.agentExtendEntiry.agentId + this.formData.clientNumber = agent.agentExtendEntiry.ccClientNumber + this.formData.clientPwd = agent.agentExtendEntiry.ccClientPWD + } + } +} </script> -- Gitblit v1.9.1