From d1016345bd38de55a10b3e72023d0d079ffab29f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=98=B1=E8=BE=BE?= Date: Thu, 22 May 2025 18:05:37 +0800 Subject: [PATCH] =?UTF-8?q?feat(user):=20=E4=BC=98=E5=8C=96=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除获取角色列表的冗余代码 - 添加角色列表数据传递和展示 -优化用户表单验证规则 - 美化用户角色展示样式 - 调整 API 请求配置 --- src/api/intelligent-agent/list.js | 3 +- src/assets/sass/renderSass/input.scss | 3 + .../system/user/components/UserDialog.vue | 61 ++++++++----------- src/views/system/user/index.vue | 44 ++++++++++++- 4 files changed, 74 insertions(+), 37 deletions(-) diff --git a/src/api/intelligent-agent/list.js b/src/api/intelligent-agent/list.js index cd552c8..603141a 100644 --- a/src/api/intelligent-agent/list.js +++ b/src/api/intelligent-agent/list.js @@ -85,7 +85,8 @@ const agentEdit = data => { const getAccessToken = data => { return request({ url: getUrl('/third/access_token'), - method: 'get' + method: 'get', + noLoading: true }) } diff --git a/src/assets/sass/renderSass/input.scss b/src/assets/sass/renderSass/input.scss index 9280db2..9cc954c 100644 --- a/src/assets/sass/renderSass/input.scss +++ b/src/assets/sass/renderSass/input.scss @@ -359,3 +359,6 @@ border-color: #fff; padding: 0; } +.el-select-dropdown.is-multiple .el-select-dropdown__item.selected { + color: $--color-primary; +} diff --git a/src/views/system/user/components/UserDialog.vue b/src/views/system/user/components/UserDialog.vue index 91a0920..04c7c05 100644 --- a/src/views/system/user/components/UserDialog.vue +++ b/src/views/system/user/components/UserDialog.vue @@ -118,6 +118,10 @@ export default { type: String, default: '添加用户' }, + roleListData: { + type: Array, + default: () => [] + }, visible: { type: Boolean, default: false @@ -145,14 +149,20 @@ export default { email: '', sysUserRoleDTOs: [] }, - roleListData: [], selectedRoleIds: [], // 新增,用于绑定选中的角色ID数组 rules: { - realName: [ - { required: true, message: '请输入真实姓名', trigger: 'blur' } + realName: [{ required: true, message: '请输入真实姓名' }], + userName: [{ required: true, message: '请输入用户名称' }], + email: [ + { required: true, message: '请输入邮箱' }, + // 邮箱格式校验 正则 + { + type: 'email', + message: '请输入正确的邮箱地址' + } ], - userName: [ - { required: true, message: '请输入用户名称', trigger: 'blur' } + sysUserRoleDTOs: [ + { required: true, message: '请选择用户角色', trigger: 'blur' } ] }, roleOptions: [ @@ -167,31 +177,18 @@ export default { handler(val) { if (val && Object.keys(val).length > 0) { this.form = { ...val } - this.selectedRoleIds = this.form.sysUserRoleDTOs + this.selectedRoleIds = this.form.sysUserRoleDTOs.map(item => { + return item.roleId + }) } }, immediate: true } }, created() { - this.getRoleListData() + // this.getRoleListData() }, methods: { - // 获取角色列表 - getRoleListData() { - this.loading = true - - getRoleList({}) - .then(response => { - this.roleListData = response.content.content || [] - }) - .catch(error => { - this.$message.error('获取角色列表出错', error) - }) - .finally(() => { - this.loading = false - }) - }, handleClose() { this.$refs.form.resetFields() this.$emit('update:visible', false) @@ -205,7 +202,7 @@ export default { this.$refs.form.validate(valid => { if (valid) { - this.loading = true + // this.loading = true const submitData = { ...this.form } // 根据是否是编辑模式调用不同的API @@ -213,24 +210,18 @@ export default { ? updateUser(submitData) : addUser(submitData) - apiRequest - .then(() => { - this.$message.success(this.isEdit ? '修改成功' : '添加成功') - this.$emit('submit', submitData) - this.handleClose() - }) - .catch(() => { - this.$message.error(this.isEdit ? '修改用户出错' : '添加用户出错') - }) - .finally(() => { - this.loading = false - }) + apiRequest.then(() => { + this.$message.success(this.isEdit ? '修改成功' : '添加成功') + this.$emit('submit', submitData) + this.handleClose() + }) } }) }, // 处理角色选择变化 handleRolesChange(roleIds) { this.form.sysUserRoleDTOs = roleIds.map(id => ({ roleId: id })) + this.$refs.form.validateField('sysUserRoleDTOs') }, clearForm() { this.form = {} diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue index dd28b1a..9351ccc 100644 --- a/src/views/system/user/index.vue +++ b/src/views/system/user/index.vue @@ -67,6 +67,7 @@ :title="dialogTitle" :is-edit="isEdit" :is-view="isView" + :roleListData="roleListData" :user-data="currentUserData" @submit="handleSubmit" /> @@ -90,6 +91,7 @@ import { changeUserStatus, resetPassword } from '@/api/generatedApi/system' +import { getRoleList } from '@/api/system/role' export default { name: 'UserManage', @@ -99,6 +101,7 @@ export default { }, data() { return { + roleListData: [], loading: false, dialogVisible: false, resetPasswordVisible: false, @@ -127,7 +130,35 @@ export default { { prop: 'realName', key: '真实姓名' }, { prop: 'mobile', key: '手机号' }, { prop: 'email', key: '邮箱' }, - { prop: 'userRoles', key: '用户角色' }, + { + prop: 'userRoles', + key: '用户角色', + render: (h, p) => { + let text = [] + p.row.sysUserRoleDTOs.map(item => { + this.roleListData.find(role => { + console.log(role, item) + if (role.id === item.roleId) { + text.push(role.roleName) + } + }) + }) + return h('div', [ + text.map(item => { + return h( + 'el-tag', + { + props: { + size: 'mini' + }, + class: 'mr5' + }, + item + ) + }) + ]) + } + }, { prop: 'status', key: '状态', @@ -222,9 +253,20 @@ export default { } }, created() { + this.getRoleListData() this.getUserList() }, methods: { + // 获取角色列表 + getRoleListData() { + this.loading = true + getRoleList({}).then(response => { + if (response) { + this.roleListData = response.content.content || [] + } + }) + }, + // 获取用户列表 getUserList() { this.loading = true