Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
N
nse-ui
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Members
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
吴超
nse-ui
Commits
723e4652
Commit
723e4652
authored
Aug 22, 2025
by
周海峰
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
角色
parent
2568419f
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
93 行增加
和
82 行删除
+93
-82
src/api/safetyManagement/roleConfig.js
+10
-0
src/components/PermissionArea.vue
+0
-0
src/components/RoleTransfer.vue
+0
-0
src/views/safetyManagement/roleConfig/edit.vue
+67
-78
src/views/safetyManagement/roleConfig/index.vue
+16
-4
没有找到文件。
src/api/safetyManagement/roleConfig.js
View file @
723e4652
...
@@ -61,4 +61,13 @@ export function del(data) {
...
@@ -61,4 +61,13 @@ export function del(data) {
method
:
'post'
,
method
:
'post'
,
data
:
data
data
:
data
})
})
}
export
function
checkNameExit
(
data
)
{
return
request
({
url
:
'/console/role/checkNameExit'
,
method
:
'post'
,
data
:
data
})
}
}
\ No newline at end of file
src/components/PermissionArea.vue
0 → 100644
View file @
723e4652
src/components/RoleTransfer.vue
0 → 100644
View file @
723e4652
src/views/safetyManagement/roleConfig/edit.vue
View file @
723e4652
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
<el-row
:gutter=
"20"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"角色名"
prop=
"rolename"
>
<el-form-item
label=
"角色名"
prop=
"rolename"
>
<el-input
v-model=
"form.rolename"
placeholder=
"请输入角色名
"
/>
<el-input
v-model=
"form.rolename"
:disabled=
"!!form.id"
placeholder=
"请输入角色名"
@
blur=
"changeCheckNameExit
"
/>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
...
@@ -59,9 +59,10 @@
...
@@ -59,9 +59,10 @@
<
script
setup
>
<
script
setup
>
import
{
ref
,
reactive
,
computed
,
watch
,
nextTick
,
onMounted
}
from
'vue'
import
{
ref
,
reactive
,
computed
,
watch
,
nextTick
,
onMounted
}
from
'vue'
import
{
queryAll
as
queryAllMenu
}
from
'@/api/safetyManagement/menuConfig.js'
import
{
queryAll
as
queryAllMenu
}
from
'@/api/safetyManagement/menuConfig.js'
import
{
initEdit
,
add
,
modify
}
from
'@/api/safetyManagement/roleConfig.js'
import
{
initEdit
,
add
,
modify
,
checkNameExit
}
from
'@/api/safetyManagement/roleConfig.js'
import
{
ArrowRight
,
ArrowDown
}
from
'@element-plus/icons-vue'
import
{
ArrowRight
,
ArrowDown
}
from
'@element-plus/icons-vue'
import
PermissionArea
from
'@/components/PermissionArea/index.vue'
import
PermissionArea
from
'@/components/PermissionArea/index.vue'
import
{
id
}
from
'element-plus/es/locales.mjs'
// 定义组件名称
// 定义组件名称
defineOptions
({
defineOptions
({
name
:
'RoleEdit'
name
:
'RoleEdit'
...
@@ -87,14 +88,9 @@ const formRef = ref(null)
...
@@ -87,14 +88,9 @@ const formRef = ref(null)
// 表单数据
// 表单数据
const
form
=
reactive
({
const
form
=
reactive
({
realname
:
''
,
id
:
null
,
roleName
:
''
,
rolename
:
''
,
password
:
''
,
remark
:
''
confirmPassword
:
''
,
email
:
''
,
userGroup
:
''
,
remark
:
''
,
isDisabled
:
false
})
})
// 表单校验规则
// 表单校验规则
...
@@ -191,18 +187,14 @@ watch(() => props.visible, async (val) => {
...
@@ -191,18 +187,14 @@ watch(() => props.visible, async (val) => {
const
resetForm
=
()
=>
{
const
resetForm
=
()
=>
{
nextTick
(()
=>
{
nextTick
(()
=>
{
formRef
.
value
?.
resetFields
()
formRef
.
value
?.
resetFields
()
form
.
id
=
null
Object
.
assign
(
form
,
{
Object
.
assign
(
form
,
{
id
:
null
,
id
:
null
,
realname
:
''
,
rolename
:
''
,
roleName
:
''
,
remark
:
''
password
:
''
,
confirmPassword
:
''
,
email
:
''
,
userGroup
:
''
,
remark
:
''
,
isDisabled
:
false
})
})
console
.
log
(
'reset form'
,
form
)
})
})
}
}
...
@@ -247,13 +239,11 @@ const handleSubmit = () => {
...
@@ -247,13 +239,11 @@ const handleSubmit = () => {
formRef
.
value
.
validate
((
valid
)
=>
{
formRef
.
value
.
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
// 提交表单逻辑
// 提交表单逻辑
const
params
=
{
...
form
}
const
params
=
{
roles
:
{
rolename
:
form
.
rolename
,
// 如果是编辑模式且没有修改密码,则不提交密码字段
remark
:
form
.
remark
,
if
(
props
.
formData
&&
props
.
formData
.
id
&&
!
params
.
password
)
{
id
:
form
.
id
delete
params
.
password
}
}
delete
params
.
confirmPassword
}
// 收集选中的菜单权限
// 收集选中的菜单权限
const
selectedMenuIds
=
[]
const
selectedMenuIds
=
[]
...
@@ -269,60 +259,48 @@ const handleSubmit = () => {
...
@@ -269,60 +259,48 @@ const handleSubmit = () => {
}
}
collectSelectedMenus
(
permissionList
.
value
)
collectSelectedMenus
(
permissionList
.
value
)
params
.
menuList
=
selectedMenuIds
.
map
(
id
=>
({
id
}))
params
.
idList
=
selectedMenuIds
console
.
log
(
'submit form'
,
params
)
console
.
log
(
'submit form'
,
params
)
// 调用接口保存数据
if
(
form
.
id
){
emit
(
'success'
)
// 调用modify方法
modify
(
params
).
then
(
res
=>
{
if
(
res
.
code
===
'POP_00014'
)
{
console
.
log
(
'角色添加成功'
,
res
);
emit
(
'success'
);
handleClose
();
}
else
{
console
.
error
(
'角色添加失败:'
,
res
.
msg
);
}
}).
catch
(
error
=>
{
console
.
error
(
'角色添加异常:'
,
error
);
});
}
else
{
const
res
=
checkNameExit
({
rolename
:
form
.
rolename
});
if
(
res
.
code
!==
'POP_00014'
)
{
console
.
error
(
'角色名已存在:'
,
res
.
msg
);
return
}
// 调用add方法
add
(
params
).
then
(
res
=>
{
if
(
res
.
code
===
'POP_00014'
)
{
console
.
log
(
'角色添加成功'
,
res
);
emit
(
'success'
);
handleClose
();
}
else
{
console
.
error
(
'角色添加失败:'
,
res
.
msg
);
}
}).
catch
(
error
=>
{
console
.
error
(
'角色添加异常:'
,
error
);
});
}
handleClose
()
handleClose
()
}
}
})
})
}
}
const
handleSelectAll
=
(
val
)
=>
{
if
(
props
.
roles
)
{
props
.
roles
.
forEach
(
role
=>
{
role
.
selected
=
val
})
}
}
const
handleRoleSelect
=
(
role
,
val
)
=>
{
role
.
selected
=
val
allSelected
.
value
=
props
.
roles
?.
every
(
role
=>
role
.
selected
)
||
false
}
const
addSelected
=
()
=>
{
const
selected
=
props
.
roles
?.
filter
(
role
=>
role
.
selected
)
||
[]
selectedRoles
.
value
=
[...
new
Set
([...
selectedRoles
.
value
,
...
selected
])]
// 这里应该更新props.roles,但由于是props,需要通过emit事件通知父组件更新
allSelected
.
value
=
false
}
const
removeSelected
=
()
=>
{
// 这里应该将selectedRoles添加回props.roles,但由于是props,需要通过emit事件通知父组件更新
selectedRoles
.
value
=
[]
}
const
clearSelected
=
()
=>
{
// 这里应该将selectedRoles添加回props.roles,但由于是props,需要通过emit事件通知父组件更新
selectedRoles
.
value
=
[]
}
// 权限相关方法
const
handleAllPermissionsChange
=
(
val
)
=>
{
// 处理全选
permissionList
.
value
.
forEach
(
item
=>
{
item
.
selected
=
val
if
(
item
.
children
)
{
item
.
children
.
forEach
(
child
=>
{
child
.
selected
=
val
})
}
item
.
indeterminate
=
false
})
allPermissionsSelected
.
value
=
val
}
const
handlePermissionChange
=
(
item
,
val
)
=>
{
const
handlePermissionChange
=
(
item
,
val
)
=>
{
// 处理父级权限选择
// 处理父级权限选择
...
@@ -362,16 +340,27 @@ const checkAllPermissionsStatus = () => {
...
@@ -362,16 +340,27 @@ const checkAllPermissionsStatus = () => {
})
})
}
}
const
toggleExpand
=
(
item
)
=>
{
// 展开/收起子菜单
item
.
expanded
=
!
item
.
expanded
}
// 组件挂载后初始化权限列表
// 组件挂载后初始化权限列表
onMounted
(()
=>
{
onMounted
(()
=>
{
// 初始获取权限列表
// 初始获取权限列表
fetchPermissionList
()
fetchPermissionList
()
})
})
// 验证角色名是否存在
const
changeCheckNameExit
=
async
()
=>
{
if
(
form
.
rolename
&&
!
form
.
id
)
{
try
{
const
res
=
await
checkNameExit
({
rolename
:
form
.
rolename
});
if
(
res
.
code
!==
'POP_00014'
)
{
console
.
error
(
'角色名已存在:'
,
res
.
msg
);
}
else
{
console
.
log
(
'角色名可用'
);
}
}
catch
(
error
)
{
console
.
error
(
'验证角色名异常:'
,
error
);
}
}
};
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
...
...
src/views/safetyManagement/roleConfig/index.vue
View file @
723e4652
...
@@ -46,8 +46,8 @@
...
@@ -46,8 +46,8 @@
<span>
删除
</span>
<span>
删除
</span>
</div>
</div>
<div
class=
"operation-btn"
@
click=
"handleEdit(user)"
>
<div
class=
"operation-btn"
@
click=
"handleEdit(user)"
>
<el-icon><
Edit
/></el-icon>
<el-icon><
MessageBox
/></el-icon>
<span>
编辑
</span>
<span>
权限设置
</span>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -83,9 +83,9 @@
...
@@ -83,9 +83,9 @@
<
script
setup
>
<
script
setup
>
import
{
ref
,
reactive
,
onMounted
,
getCurrentInstance
}
from
'vue'
import
{
ref
,
reactive
,
onMounted
,
getCurrentInstance
}
from
'vue'
import
{
ElMessageBox
}
from
'element-plus'
import
{
ElMessageBox
}
from
'element-plus'
import
{
User
,
Delete
,
Edit
}
from
'@element-plus/icons-vue'
import
{
User
,
Delete
,
MessageBox
}
from
'@element-plus/icons-vue'
import
RoleEdit
from
'./edit.vue'
import
RoleEdit
from
'./edit.vue'
import
{
query
as
queryRole
}
from
'@/api/safetyManagement/roleConfig.js'
import
{
query
as
queryRole
,
del
}
from
'@/api/safetyManagement/roleConfig.js'
// 定义组件名称
// 定义组件名称
...
@@ -157,6 +157,18 @@ const handleDelete = (row) => {
...
@@ -157,6 +157,18 @@ const handleDelete = (row) => {
}).
then
(()
=>
{
}).
then
(()
=>
{
// 调用删除接口
// 调用删除接口
console
.
log
(
'删除角色'
,
row
)
console
.
log
(
'删除角色'
,
row
)
// 这里应该调用删除接口
del
({
id
:
row
.
id
}).
then
(
res
=>
{
if
(
res
.
code
===
'POP_00014'
)
{
console
.
log
(
'角色删除成功'
,
res
);
getList
();
}
else
{
console
.
error
(
'角色删除失败:'
,
res
.
msg
);
}
}).
catch
(
error
=>
{
console
.
error
(
'角色删除异常:'
,
error
);
});
}).
catch
(()
=>
{})
}).
catch
(()
=>
{})
}
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论