Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
phsl
/
admin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
7d84f860
authored
Mar 31, 2023
by
YunaiV
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
REVIEW 用户管理(分配用户角色)
parent
643b3873
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
147 additions
and
165 deletions
+147
-165
src/api/system/permission/index.ts
+2
-2
src/api/system/user/index.ts
+2
-2
src/views/system/user/UserAssignRoleForm.vue
+93
-0
src/views/system/user/components/UserAssignRoleForm.vue
+0
-108
src/views/system/user/index.vue
+50
-53
No files found.
src/api/system/permission/index.ts
View file @
7d84f860
...
@@ -32,11 +32,11 @@ export const assignRoleDataScopeApi = async (data: PermissionAssignRoleDataScope
...
@@ -32,11 +32,11 @@ export const assignRoleDataScopeApi = async (data: PermissionAssignRoleDataScope
}
}
// 查询用户拥有的角色数组
// 查询用户拥有的角色数组
export
const
listUserRolesApi
=
async
(
userId
:
number
)
=>
{
export
const
getUserRoleList
=
async
(
userId
:
number
)
=>
{
return
await
request
.
get
({
url
:
'/system/permission/list-user-roles?userId='
+
userId
})
return
await
request
.
get
({
url
:
'/system/permission/list-user-roles?userId='
+
userId
})
}
}
// 赋予用户角色
// 赋予用户角色
export
const
assignUserRole
Api
=
async
(
data
:
PermissionAssignUserRoleReqVO
)
=>
{
export
const
assignUserRole
=
async
(
data
:
PermissionAssignUserRoleReqVO
)
=>
{
return
await
request
.
post
({
url
:
'/system/permission/assign-user-role'
,
data
})
return
await
request
.
post
({
url
:
'/system/permission/assign-user-role'
,
data
})
}
}
src/api/system/user/index.ts
View file @
7d84f860
...
@@ -53,7 +53,7 @@ export const importUserTemplateApi = () => {
...
@@ -53,7 +53,7 @@ export const importUserTemplateApi = () => {
}
}
// 用户密码重置
// 用户密码重置
export
const
resetUserPwd
Api
=
(
id
:
number
,
password
:
string
)
=>
{
export
const
resetUserPwd
=
(
id
:
number
,
password
:
string
)
=>
{
const
data
=
{
const
data
=
{
id
,
id
,
password
password
...
@@ -62,7 +62,7 @@ export const resetUserPwdApi = (id: number, password: string) => {
...
@@ -62,7 +62,7 @@ export const resetUserPwdApi = (id: number, password: string) => {
}
}
// 用户状态修改
// 用户状态修改
export
const
updateUserStatus
Api
=
(
id
:
number
,
status
:
number
)
=>
{
export
const
updateUserStatus
=
(
id
:
number
,
status
:
number
)
=>
{
const
data
=
{
const
data
=
{
id
,
id
,
status
status
...
...
src/views/system/user/UserAssignRoleForm.vue
0 → 100644
View file @
7d84f860
<
template
>
<Dialog
title=
"分配角色"
v-model=
"modelVisible"
>
<el-form
ref=
"formRef"
:model=
"formData"
label-width=
"80px"
v-loading=
"formLoading"
>
<el-form-item
label=
"用户名称"
>
<el-input
v-model=
"formData.username"
:disabled=
"true"
/>
</el-form-item>
<el-form-item
label=
"用户昵称"
>
<el-input
v-model=
"formData.nickname"
:disabled=
"true"
/>
</el-form-item>
<el-form-item
label=
"角色"
>
<el-select
v-model=
"formData.roleIds"
multiple
placeholder=
"请选择角色"
>
<el-option
v-for=
"item in roleList"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
</el-form-item>
</el-form>
<template
#
footer
>
<el-button
@
click=
"submitForm"
type=
"primary"
:disabled=
"formLoading"
>
确 定
</el-button>
<el-button
@
click=
"modelVisible = false"
>
取 消
</el-button>
</
template
>
</Dialog>
</template>
<
script
setup
lang=
"ts"
>
import
*
as
PermissionApi
from
'@/api/system/permission'
import
*
as
UserApi
from
'@/api/system/user'
import
*
as
RoleApi
from
'@/api/system/role'
const
{
t
}
=
useI18n
()
// 国际化
const
message
=
useMessage
()
// 消息弹窗
const
modelVisible
=
ref
(
false
)
// 弹窗的是否展示
const
formLoading
=
ref
(
false
)
// 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
const
formData
=
ref
({
id
:
undefined
,
nickname
:
''
,
username
:
''
,
roleIds
:
[]
})
const
formRef
=
ref
()
// 表单 Ref
const
roleList
=
ref
([])
// 角色的列表
/** 打开弹窗 */
const
open
=
async
(
row
:
UserApi
.
UserVO
)
=>
{
modelVisible
.
value
=
true
resetForm
()
// 设置数据
formData
.
value
.
id
=
row
.
id
formData
.
value
.
username
=
row
.
username
formData
.
value
.
nickname
=
row
.
nickname
// 获得角色拥有的菜单集合
formLoading
.
value
=
true
try
{
formData
.
value
.
roleIds
=
await
PermissionApi
.
getUserRoleList
(
row
.
id
)
}
finally
{
formLoading
.
value
=
false
}
// 获得角色列表
roleList
.
value
=
await
RoleApi
.
getSimpleRoleList
()
}
defineExpose
({
open
})
// 提供 open 方法,用于打开弹窗
/** 提交表单 */
const
emit
=
defineEmits
([
'success'
])
// 定义 success 事件,用于操作成功后的回调
const
submitForm
=
async
()
=>
{
// 校验表单
if
(
!
formRef
)
return
const
valid
=
await
formRef
.
value
.
validate
()
if
(
!
valid
)
return
// 提交请求
formLoading
.
value
=
true
try
{
await
PermissionApi
.
assignUserRole
({
userId
:
formData
.
value
.
id
,
roleIds
:
formData
.
value
.
roleIds
})
message
.
success
(
t
(
'common.updateSuccess'
))
modelVisible
.
value
=
false
// 发送操作成功的事件
emit
(
'success'
,
true
)
}
finally
{
formLoading
.
value
=
false
}
}
/** 重置表单 */
const
resetForm
=
()
=>
{
formData
.
value
=
{
id
:
undefined
,
nickname
:
''
,
username
:
''
,
roleIds
:
[]
}
formRef
.
value
?.
resetFields
()
}
</
script
>
src/views/system/user/components/UserAssignRoleForm.vue
deleted
100644 → 0
View file @
643b3873
<
template
>
<Dialog
title=
"分配角色"
:modelValue=
"showDialog"
width=
"500px"
append-to-body
@
close=
"closeDialog"
>
<el-form
:model=
"formData"
label-width=
"80px"
ref=
"formRef"
>
<el-form-item
label=
"用户名称"
>
<el-input
v-model=
"formData.username"
:disabled=
"true"
/>
</el-form-item>
<el-form-item
label=
"用户昵称"
>
<el-input
v-model=
"formData.nickname"
:disabled=
"true"
/>
</el-form-item>
<el-form-item
label=
"角色"
>
<el-select
v-model=
"formData.roleIds"
multiple
placeholder=
"请选择角色"
>
<el-option
v-for=
"item in roleOptions"
:key=
"item.id"
:label=
"item.name"
:value=
"item.id"
/>
</el-select>
</el-form-item>
</el-form>
<template
#
footer
>
<div
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"submit"
>
确 定
</el-button>
<el-button
@
click=
"cancel"
>
取 消
</el-button>
</div>
</
template
>
</Dialog>
</template>
<
script
setup
lang=
"ts"
>
import
{
assignUserRoleApi
,
listUserRolesApi
,
PermissionAssignUserRoleReqVO
}
from
'@/api/system/permission'
import
{
UserVO
}
from
'@/api/system/user'
import
*
as
RoleApi
from
'@/api/system/role'
const
emits
=
defineEmits
([
'success'
])
const
{
t
}
=
useI18n
()
// 国际化
const
message
=
useMessage
()
// 消息弹窗
// 表单初始化参数
const
initParams
=
{
nickname
:
''
,
id
:
0
,
username
:
''
,
roleIds
:
[]
as
number
[]
}
const
formData
=
ref
<
Recordable
>
({
...
initParams
})
/* 弹框按钮操作 */
// 点击取消
const
cancel
=
()
=>
{
closeDialog
()
}
// 关闭弹窗
const
closeDialog
=
()
=>
{
showDialog
.
value
=
false
}
// 提交
const
submit
=
async
()
=>
{
const
data
=
ref
<
PermissionAssignUserRoleReqVO
>
({
userId
:
formData
.
value
.
id
,
roleIds
:
formData
.
value
.
roleIds
})
try
{
await
assignUserRoleApi
(
data
.
value
)
message
.
success
(
t
(
'common.updateSuccess'
))
emits
(
'success'
,
true
)
closeDialog
()
}
catch
(
error
)
{
console
.
error
(
error
)
}
}
const
roleOptions
=
ref
()
const
userRole
=
reactive
(
initParams
)
const
showDialog
=
ref
(
false
)
const
formRef
=
ref
()
const
openForm
=
async
(
row
:
UserVO
)
=>
{
formRef
.
value
?.
resetFields
()
userRole
.
id
=
row
.
id
userRole
.
username
=
row
.
username
userRole
.
nickname
=
row
.
nickname
// 获得角色列表
const
roleOpt
=
await
RoleApi
.
getSimpleRoleList
()
roleOptions
.
value
=
[...
roleOpt
]
// 获得角色拥有的菜单集合
const
roles
=
await
listUserRolesApi
(
row
.
id
)
userRole
.
roleIds
=
roles
formData
.
value
=
{
...
userRole
}
showDialog
.
value
=
true
}
defineExpose
({
openForm
})
</
script
>
src/views/system/user/index.vue
View file @
7d84f860
...
@@ -193,13 +193,10 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
...
@@ -193,13 +193,10 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
{
dateFormatter
}
from
'@/utils/formatTime'
import
download
from
'@/utils/download'
import
download
from
'@/utils/download'
import
{
CommonStatusEnum
}
from
'@/utils/constants'
import
{
CommonStatusEnum
}
from
'@/utils/constants'
import
{
resetUserPwdApi
,
updateUserStatusApi
,
UserVO
}
from
'@/api/system/user'
import
*
as
UserApi
from
'@/api/system/user'
import
*
as
UserApi
from
'@/api/system/user'
import
UserForm
from
'./components/UserForm.vue'
import
UserForm
from
'./components/UserForm.vue'
import
UserImportForm
from
'./components/UserImportForm.vue'
import
UserImportForm
from
'./components/UserImportForm.vue'
import
UserAssignRoleForm
from
'./
components/
UserAssignRoleForm.vue'
import
UserAssignRoleForm
from
'./UserAssignRoleForm.vue'
import
DeptTree
from
'./DeptTree.vue'
import
DeptTree
from
'./DeptTree.vue'
const
message
=
useMessage
()
// 消息弹窗
const
message
=
useMessage
()
// 消息弹窗
const
{
t
}
=
useI18n
()
// 国际化
const
{
t
}
=
useI18n
()
// 国际化
...
@@ -260,7 +257,40 @@ const handleImport = () => {
...
@@ -260,7 +257,40 @@ const handleImport = () => {
importFormRef
.
value
?.
openForm
()
importFormRef
.
value
?.
openForm
()
}
}
// 操作分发
/** 修改用户状态 */
const
handleStatusChange
=
async
(
row
:
UserApi
.
UserVO
)
=>
{
try
{
// 修改状态的二次确认
const
text
=
row
.
status
===
CommonStatusEnum
.
ENABLE
?
'启用'
:
'停用'
await
message
.
confirm
(
'确认要"'
+
text
+
'""'
+
row
.
username
+
'"用户吗?'
)
// 发起修改状态
await
UserApi
.
updateUserStatus
(
row
.
id
,
row
.
status
)
// 刷新列表
await
getList
()
}
catch
{
// 取消后,进行恢复按钮
row
.
status
=
row
.
status
===
CommonStatusEnum
.
ENABLE
?
CommonStatusEnum
.
DISABLE
:
CommonStatusEnum
.
ENABLE
}
}
/** 导出按钮操作 */
const
exportLoading
=
ref
(
false
)
const
handleExport
=
async
()
=>
{
try
{
// 导出的二次确认
await
message
.
exportConfirm
()
// 发起导出
exportLoading
.
value
=
true
const
data
=
await
UserApi
.
exportUser
(
queryParams
)
download
.
excel
(
data
,
'用户数据.xls'
)
}
catch
{
}
finally
{
exportLoading
.
value
=
false
}
}
/** 操作分发 */
const
handleCommand
=
(
command
:
string
,
index
:
number
,
row
:
UserApi
.
UserVO
)
=>
{
const
handleCommand
=
(
command
:
string
,
index
:
number
,
row
:
UserApi
.
UserVO
)
=>
{
console
.
log
(
index
)
console
.
log
(
index
)
switch
(
command
)
{
switch
(
command
)
{
...
@@ -278,25 +308,6 @@ const handleCommand = (command: string, index: number, row: UserApi.UserVO) => {
...
@@ -278,25 +308,6 @@ const handleCommand = (command: string, index: number, row: UserApi.UserVO) => {
}
}
}
}
// 用户状态修改
const
handleStatusChange
=
(
row
:
UserVO
)
=>
{
let
text
=
row
.
status
===
CommonStatusEnum
.
ENABLE
?
'启用'
:
'停用'
message
.
confirm
(
'确认要"'
+
text
+
'""'
+
row
.
username
+
'"用户吗?'
,
t
(
'common.reminder'
))
.
then
(
async
()
=>
{
row
.
status
=
row
.
status
===
CommonStatusEnum
.
ENABLE
?
CommonStatusEnum
.
ENABLE
:
CommonStatusEnum
.
DISABLE
await
updateUserStatusApi
(
row
.
id
,
row
.
status
)
message
.
success
(
text
+
'成功'
)
// 刷新列表
getList
()
})
.
catch
(()
=>
{
row
.
status
=
row
.
status
===
CommonStatusEnum
.
ENABLE
?
CommonStatusEnum
.
DISABLE
:
CommonStatusEnum
.
ENABLE
})
}
/** 删除按钮操作 */
/** 删除按钮操作 */
const
handleDelete
=
async
(
id
:
number
)
=>
{
const
handleDelete
=
async
(
id
:
number
)
=>
{
try
{
try
{
...
@@ -310,39 +321,25 @@ const handleDelete = async (id: number) => {
...
@@ -310,39 +321,25 @@ const handleDelete = async (id: number) => {
}
catch
{}
}
catch
{}
}
}
/** 导出按钮操作 */
/** 重置密码 */
const
exportLoading
=
ref
(
false
)
const
handleResetPwd
=
async
(
row
:
UserApi
.
UserVO
)
=>
{
const
handleExport
=
async
()
=>
{
try
{
try
{
// 导出的二次确认
// 重置的二次确认
await
message
.
exportConfirm
()
const
result
=
await
message
.
prompt
(
// 发起导出
'请输入"'
+
row
.
username
+
'"的新密码'
,
exportLoading
.
value
=
true
t
(
'common.reminder'
)
const
data
=
await
UserApi
.
exportUser
(
queryParams
)
)
download
.
excel
(
data
,
'用户数据.xls'
)
const
password
=
result
.
value
}
catch
{
// 发起重置
}
finally
{
await
UserApi
.
resetUserPwd
(
row
.
id
,
password
)
exportLoading
.
value
=
false
message
.
success
(
'修改成功,新密码是:'
+
password
)
}
}
catch
{}
}
// 重置密码
const
handleResetPwd
=
(
row
:
UserVO
)
=>
{
message
.
prompt
(
'请输入"'
+
row
.
username
+
'"的新密码'
,
t
(
'common.reminder'
))
.
then
(
async
({
value
})
=>
{
await
resetUserPwdApi
(
row
.
id
,
value
)
message
.
success
(
'修改成功,新密码是:'
+
value
)
})
.
catch
((
e
)
=>
{
console
.
error
(
e
)
})
}
}
/
/ 分配角色
/
** 分配角色 */
const
assignRoleFormRef
=
ref
()
const
assignRoleFormRef
=
ref
()
const
handleRole
=
(
row
:
UserVO
)
=>
{
const
handleRole
=
(
row
:
User
Api
.
User
VO
)
=>
{
assignRoleFormRef
.
value
?.
openForm
(
row
)
assignRoleFormRef
.
value
.
open
(
row
)
}
}
/** 初始化 */
/** 初始化 */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment