Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-sfa-ui
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
sfa
wangxiaolu-sfa-ui
Commits
b84b6c4b
提交
b84b6c4b
authored
5月 19, 2025
作者:
lidongxu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat(role): 用户管理_新增编辑用户设置多个角色
同上
上级
c796cd2d
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
105 行增加
和
71 行删除
+105
-71
selectUser.vue
src/views/system/role/selectUser.vue
+97
-63
index.vue
src/views/system/user/index.vue
+8
-8
没有找到文件。
src/views/system/role/selectUser.vue
浏览文件 @
b84b6c4b
<
template
>
<
template
>
<!-- 授权用户 -->
<!-- 授权用户 -->
<el-dialog
title=
"选择用户"
v-model=
"visible"
top=
"5vh"
append-to-body
>
<el-dialog
title=
"选择用户"
<el-form
:model=
"queryParams"
ref=
"queryRef"
:inline=
"true"
>
v-model=
"visible"
<el-form-item
label=
"用户名称"
prop=
"userName"
>
top=
"5vh"
<el-input
append-to-body
>
v-model=
"queryParams.userName"
<el-form
:model=
"queryParams"
ref=
"queryRef"
:inline=
"true"
>
<el-form-item
label=
"用户名称"
prop=
"userName"
>
<el-input
v-model=
"queryParams.userName"
placeholder=
"请输入用户名称"
placeholder=
"请输入用户名称"
clearable
clearable
style=
"width: 180px"
style=
"width: 180px"
@
input=
"handleQuery"
@
input=
"handleQuery"
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"手机号码"
prop=
"phonenumber"
>
<el-form-item
label=
"手机号码"
<el-input
prop=
"phonenumber"
>
v-model=
"queryParams.phonenumber"
<el-input
v-model=
"queryParams.phonenumber"
placeholder=
"请输入手机号码"
placeholder=
"请输入手机号码"
clearable
clearable
style=
"width: 180px"
style=
"width: 180px"
@
input=
"handleQuery"
@
input=
"handleQuery"
/>
/>
</el-form-item>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
icon=
"Refresh"
@
click=
"resetQuery"
>
重置
</el-button>
<el-button
icon=
"Refresh"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<el-row>
<el-row>
<el-table
@
row-click=
"clickRow"
ref=
"refTable"
:data=
"userList"
@
selection-change=
"handleSelectionChange"
height=
"260px"
>
<el-table
@
row-click=
"clickRow"
<el-table-column
type=
"selection"
width=
"55"
></el-table-column>
ref=
"refTable"
<el-table-column
label=
"用户名称"
prop=
"userName"
:show-overflow-tooltip=
"true"
/>
:data=
"userList"
<el-table-column
label=
"用户昵称"
prop=
"nickName"
:show-overflow-tooltip=
"true"
/>
@
selection-change=
"handleSelectionChange"
>
<el-table-column
label=
"邮箱"
prop=
"email"
:show-overflow-tooltip=
"true"
/>
<el-table-column
type=
"selection"
<el-table-column
label=
"手机"
prop=
"phonenumber"
:show-overflow-tooltip=
"true"
/>
width=
"55"
></el-table-column>
<el-table-column
label=
"状态"
align=
"center"
prop=
"status"
>
<el-table-column
label=
"用户名称"
prop=
"userName"
:show-overflow-tooltip=
"true"
/>
<el-table-column
label=
"用户昵称"
prop=
"nickName"
:show-overflow-tooltip=
"true"
/>
<el-table-column
label=
"邮箱"
prop=
"email"
:show-overflow-tooltip=
"true"
/>
<el-table-column
label=
"手机"
prop=
"phonenumber"
:show-overflow-tooltip=
"true"
/>
<el-table-column
label=
"状态"
align=
"center"
prop=
"status"
>
<template
#
default=
"scope"
>
<template
#
default=
"scope"
>
<dict-tag
:options=
"sys_normal_disable"
:value=
"scope.row.status"
/>
<dict-tag
:options=
"sys_normal_disable"
:value=
"scope.row.status"
/>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
width=
"180"
>
<el-table-column
label=
"创建时间"
align=
"center"
prop=
"createTime"
width=
"180"
>
<
template
#
default=
"scope"
>
<
template
#
default=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
<pagination
<div
class=
"pagination-wrap"
>
v-show=
"total > 0"
<pagination
v-show=
"total > 0"
:total=
"total"
:total=
"total"
v-model:page=
"queryParams.pageNum"
v-model:page=
"queryParams.pageNum"
v-model:limit=
"queryParams.pageSize"
v-model:limit=
"queryParams.pageSize"
@
pagination=
"getList"
@
pagination=
"getList"
/>
/>
</div>
</el-row>
</el-row>
<
template
#
footer
>
<
template
#
footer
>
<div
class=
"dialog-footer"
>
<div
class=
"dialog-footer"
>
<el-button
type=
"primary"
@
click=
"handleSelectUser"
>
确 定
</el-button>
<el-button
type=
"primary"
@
click=
"handleSelectUser"
>
确 定
</el-button>
<el-button
@
click=
"visible = false"
>
取 消
</el-button>
<el-button
@
click=
"visible = false"
>
取 消
</el-button>
</div>
</div>
</
template
>
</
template
>
</el-dialog>
</el-dialog>
</template>
</template>
<
script
setup
name=
"SelectUser"
>
<
script
setup
import
{
authUserSelectAll
,
unallocatedUserList
}
from
"@/api"
;
name=
"SelectUser"
>
import
{
authUserSelectAll
,
unallocatedUserList
}
from
"@/api"
;
const
props
=
defineProps
({
const
props
=
defineProps
({
roleId
:
{
roleId
:
{
type
:
[
Number
,
String
]
type
:
[
Number
,
String
]
}
}
});
});
const
{
proxy
}
=
getCurrentInstance
();
const
{
proxy
}
=
getCurrentInstance
();
const
{
sys_normal_disable
}
=
proxy
.
useDict
(
"sys_normal_disable"
);
const
{
sys_normal_disable
}
=
proxy
.
useDict
(
"sys_normal_disable"
);
const
userList
=
ref
([]);
const
userList
=
ref
([]);
const
visible
=
ref
(
false
);
const
visible
=
ref
(
false
);
const
total
=
ref
(
0
);
const
total
=
ref
(
0
);
const
userIds
=
ref
([]);
const
userIds
=
ref
([]);
const
queryParams
=
reactive
({
const
queryParams
=
reactive
({
pageNum
:
1
,
pageNum
:
1
,
pageSize
:
10
,
pageSize
:
10
,
roleId
:
undefined
,
roleId
:
undefined
,
userName
:
undefined
,
userName
:
undefined
,
phonenumber
:
undefined
phonenumber
:
undefined
});
});
// 显示弹框
// 显示弹框
function
show
()
{
function
show
()
{
queryParams
.
roleId
=
props
.
roleId
;
queryParams
.
roleId
=
props
.
roleId
;
getList
();
getList
();
visible
.
value
=
true
;
visible
.
value
=
true
;
}
}
/**选择行 */
/**选择行 */
function
clickRow
(
row
)
{
function
clickRow
(
row
)
{
proxy
.
$refs
[
"refTable"
].
toggleRowSelection
(
row
);
proxy
.
$refs
[
"refTable"
].
toggleRowSelection
(
row
);
}
}
// 多选框选中数据
// 多选框选中数据
function
handleSelectionChange
(
selection
)
{
function
handleSelectionChange
(
selection
)
{
userIds
.
value
=
selection
.
map
(
item
=>
item
.
userId
);
userIds
.
value
=
selection
.
map
(
item
=>
item
.
userId
);
}
}
// 查询表数据
// 查询表数据
function
getList
()
{
function
getList
()
{
unallocatedUserList
(
queryParams
).
then
(
res
=>
{
unallocatedUserList
(
queryParams
).
then
(
res
=>
{
userList
.
value
=
res
.
data
.
rows
;
userList
.
value
=
res
.
data
.
rows
;
total
.
value
=
res
.
data
.
total
;
total
.
value
=
res
.
data
.
total
;
});
});
}
}
/** 搜索按钮操作 */
/** 搜索按钮操作 */
function
handleQuery
()
{
function
handleQuery
()
{
queryParams
.
pageNum
=
1
;
queryParams
.
pageNum
=
1
;
getList
();
getList
();
}
}
/** 重置按钮操作 */
/** 重置按钮操作 */
function
resetQuery
()
{
function
resetQuery
()
{
proxy
.
resetForm
(
"queryRef"
);
proxy
.
resetForm
(
"queryRef"
);
handleQuery
();
handleQuery
();
}
}
const
emit
=
defineEmits
([
"ok"
]);
const
emit
=
defineEmits
([
"ok"
]);
/** 选择授权用户操作 */
/** 选择授权用户操作 */
function
handleSelectUser
()
{
function
handleSelectUser
()
{
const
roleId
=
queryParams
.
roleId
;
const
roleId
=
queryParams
.
roleId
;
const
uIds
=
userIds
.
value
.
join
(
","
);
const
uIds
=
userIds
.
value
.
join
(
","
);
if
(
uIds
==
""
)
{
if
(
uIds
==
""
)
{
...
@@ -135,9 +160,17 @@ function handleSelectUser() {
...
@@ -135,9 +160,17 @@ function handleSelectUser() {
visible
.
value
=
false
;
visible
.
value
=
false
;
emit
(
"ok"
);
emit
(
"ok"
);
});
});
}
}
defineExpose
({
defineExpose
({
show
,
show
,
});
});
</
script
>
</
script
>
<
style
scoped
style=
"scss"
>
.pagination-wrap
{
width
:
100%
;
display
:
flex
;
justify-content
:
flex-end
;
}
</
style
>
\ No newline at end of file
src/views/system/user/index.vue
浏览文件 @
b84b6c4b
...
@@ -309,13 +309,13 @@
...
@@ -309,13 +309,13 @@
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"角色"
<el-form-item
label=
"角色"
prop=
"roleId"
>
prop=
"roleIds"
>
<!-- multiple
<el-select
v-model=
"form.roleIds"
placeholder=
"请选择"
multiple
clearable
clearable
collapse-tags
collapse-tags
collapse-tags-tooltip -->
collapse-tags-tooltip
>
<el-select
v-model=
"form.roleId"
placeholder=
"请选择"
>
<el-option
v-for=
"item in roleOptions"
<el-option
v-for=
"item in roleOptions"
:key=
"item.roleId"
:key=
"item.roleId"
:label=
"item.roleName"
:label=
"item.roleName"
...
@@ -500,7 +500,7 @@
...
@@ -500,7 +500,7 @@
email
:
[{
type
:
"email"
,
message
:
"请输入正确的邮箱地址"
,
trigger
:
[
"blur"
,
"change"
]
}],
email
:
[{
type
:
"email"
,
message
:
"请输入正确的邮箱地址"
,
trigger
:
[
"blur"
,
"change"
]
}],
phonenumber
:
[{
pattern
:
/^1
[
3|4|5|6|7|8|9
][
0-9
]\d{8}
$/
,
message
:
"请输入正确的手机号码"
,
trigger
:
"blur"
}],
phonenumber
:
[{
pattern
:
/^1
[
3|4|5|6|7|8|9
][
0-9
]\d{8}
$/
,
message
:
"请输入正确的手机号码"
,
trigger
:
"blur"
}],
postId
:
[{
required
:
true
,
message
:
"请选择岗位"
,
trigger
:
"change"
}],
postId
:
[{
required
:
true
,
message
:
"请选择岗位"
,
trigger
:
"change"
}],
roleId
:
[{
required
:
true
,
message
:
"请选择角色"
,
trigger
:
"change"
}],
roleId
s
:
[{
required
:
true
,
message
:
"请选择角色"
,
trigger
:
"change"
}],
privilegeId
:
[{
required
:
true
,
message
:
"请选择促销角色"
,
trigger
:
"change"
}]
privilegeId
:
[{
required
:
true
,
message
:
"请选择促销角色"
,
trigger
:
"change"
}]
}
}
});
});
...
@@ -693,7 +693,7 @@
...
@@ -693,7 +693,7 @@
status
:
"0"
,
status
:
"0"
,
remark
:
undefined
,
remark
:
undefined
,
postId
:
null
,
postId
:
null
,
roleId
:
[],
roleId
s
:
[],
proStatus
:
false
,
// 促销权限
proStatus
:
false
,
// 促销权限
privilegeId
:
undefined
,
privilegeId
:
undefined
,
workCityList
:
[]
// 工作城市
workCityList
:
[]
// 工作城市
...
@@ -741,7 +741,7 @@
...
@@ -741,7 +741,7 @@
// 促销权限 0 开 1 关
// 促销权限 0 开 1 关
response
.
data
.
proStatus
=
response
.
data
.
proStatus
==
1
||
response
.
data
.
proStatus
==
undefined
?
false
:
true
;
response
.
data
.
proStatus
=
response
.
data
.
proStatus
==
1
||
response
.
data
.
proStatus
==
undefined
?
false
:
true
;
// 后台空角色不知道为啥返回 0 不是 null
// 后台空角色不知道为啥返回 0 不是 null
response
.
data
.
roleId
=
response
.
data
.
roleId
==
0
?
[]
:
response
.
data
.
roleId
;
// response.data.roleIds
= response.data.roleId == 0 ? [] : response.data.roleId;
form
.
value
=
response
.
data
;
form
.
value
=
response
.
data
;
postOptions
.
value
=
response
.
posts
;
postOptions
.
value
=
response
.
posts
;
roleOptions
.
value
=
response
.
roles
;
roleOptions
.
value
=
response
.
roles
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论