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
64ac5ee9
Commit
64ac5ee9
authored
Aug 19, 2025
by
周海峰
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
应用用户,用户组 页面
parent
8ac047d6
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
750 行增加
和
1 行删除
+750
-1
src/views/safetyManagement/appUserConfig/edit.vue
+133
-0
src/views/safetyManagement/appUserConfig/index.vue
+310
-0
src/views/safetyManagement/groupConfig/edit.vue
+0
-0
src/views/safetyManagement/groupConfig/index.vue
+306
-0
src/views/safetyManagement/roleConfig/edit.vue
+1
-1
没有找到文件。
src/views/safetyManagement/appUserConfig/edit.vue
0 → 100644
View file @
64ac5ee9
<
template
>
<el-dialog
title=
"编辑用户"
:model-value=
"visible"
@
update:model-value=
"$emit('update:visible', $event)"
:close-on-click-modal=
"false"
append-to-body
destroy-on-close
:align-center=
"true"
:fullscreen=
"false"
@
close=
"handleClose"
width=
"600px"
>
<el-form
ref=
"formRef"
:model=
"form"
:rules=
"rules"
label-width=
"100px"
>
<!-- 姓名和用户名 -->
<el-form-item
label=
"唯一标识"
prop=
"useridentifier"
>
<el-input
v-model=
"form.useridentifier"
placeholder=
"请输入真实姓名"
/>
</el-form-item>
<el-form-item
label=
"用户名"
prop=
"username"
>
<el-input
v-model=
"form.username"
placeholder=
"请输入用户名"
/>
</el-form-item>
<!-- 备注 -->
<el-form-item
label=
"备注"
prop=
"remark"
>
<el-input
v-model=
"form.remark"
placeholder=
"请输入备注"
/>
</el-form-item>
<!-- 是否明文和是否脱敏 -->
<el-form-item>
<el-checkbox
v-model=
"form.isoriginal"
>
是否明文
</el-checkbox>
<el-checkbox
v-model=
"form.ismask"
style=
"margin-left: 20px"
>
是否脱敏
</el-checkbox>
</el-form-item>
</el-form>
<template
#
footer
>
<div
class=
"dialog-footer"
>
<div
class=
"footer-buttons"
>
<el-button
@
click=
"handleClose"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"handleSubmit"
>
确 定
</el-button>
</div>
</div>
</
template
>
</el-dialog>
</template>
<
script
>
export
default
{
name
:
'AppUserEdit'
,
props
:
{
visible
:
{
type
:
Boolean
,
default
:
false
},
formData
:
{
type
:
Object
,
default
:
()
=>
null
}
},
emits
:
[
'update:visible'
,
'success'
],
watch
:
{
visible
(
val
)
{
if
(
val
&&
this
.
formData
)
{
this
.
form
=
{
...
this
.
formData
,
password
:
''
,
confirmPassword
:
''
}
}
}
},
data
()
{
return
{
form
:
{
useridentifier
:
''
,
username
:
''
,
remark
:
''
,
isoriginal
:
false
,
ismask
:
false
},
rules
:
{
useridentifier
:
[
{
required
:
true
,
message
:
'请输入唯一标识'
,
trigger
:
'blur'
}
],
username
:
[
{
required
:
true
,
message
:
'请输入用户名'
,
trigger
:
'blur'
}
]
}
}
},
methods
:
{
handleClose
()
{
this
.
$emit
(
'update:visible'
,
false
)
this
.
$refs
.
formRef
?.
resetFields
()
this
.
form
=
{
useridentifier
:
''
,
username
:
''
,
remark
:
''
,
isoriginal
:
false
,
ismask
:
false
}
},
handleSubmit
()
{
this
.
$refs
.
formRef
.
validate
((
valid
)
=>
{
if
(
valid
)
{
// 提交表单逻辑
const
params
=
{
...
this
.
form
}
// 如果是编辑模式且没有修改密码,则不提交密码字段
if
(
this
.
formData
&&
!
params
.
password
)
{
delete
params
.
password
delete
params
.
confirmPassword
}
console
.
log
(
'submit form'
,
params
)
// 调用接口保存数据
this
.
$emit
(
'success'
)
this
.
handleClose
()
}
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
src/views/safetyManagement/appUserConfig/index.vue
0 → 100644
View file @
64ac5ee9
<
template
>
<div
class=
"user-config"
>
<!-- 标题 -->
<div
class=
"title"
>
<el-icon><User
/></el-icon>
应用用户
</div>
<!-- 搜索和操作区域 -->
<div
class=
"search-area"
>
<el-form
:inline=
"true"
:model=
"searchForm"
class=
"search-form"
>
<div
class=
"left-area"
>
<el-form-item
label=
"唯一标识:"
>
<el-input
v-model=
"searchForm.useridentifier"
placeholder=
"请输入唯一标识"
></el-input>
</el-form-item>
<el-form-item
label=
"用户名:"
>
<el-input
v-model=
"searchForm.username"
placeholder=
"请输入用户名"
></el-input>
</el-form-item>
<el-form-item
label=
"备注:"
>
<el-input
v-model=
"searchForm.remark"
placeholder=
"请输入备注"
></el-input>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"Search"
@
click=
"handleSearch"
>
搜索
</el-button>
</el-form-item>
</div>
<div
class=
"right-area"
>
<el-button
type=
"primary"
icon=
"Plus"
@
click=
"handleAdd"
>
新增用户
</el-button>
</div>
</el-form>
</div>
<!-- 用户列表 -->
<div
class=
"user-list"
>
<div
class=
"user-grid"
>
<div
v-for=
"(user, index) in userList"
:key=
"index"
class=
"user-card"
>
<div
class=
"user-info"
>
<div
class=
"avatar"
>
<el-avatar
:size=
"50"
icon=
"User"
></el-avatar>
</div>
<div
class=
"info"
>
<div
class=
"useridentifier"
>
{{
user
.
username
}}
</div>
<div
class=
"username"
>
用户名:
{{
user
.
username
}}
</div>
<div
class=
"remark"
>
备注:
{{
user
.
remark
}}
</div>
</div>
<!-- 遮罩层和操作按钮 -->
<div
class=
"hover-mask"
>
<div
class=
"operation-buttons"
>
<div
class=
"operation-btn"
@
click=
"handleDelete(user)"
>
<i
class=
"el-icon-delete"
></i>
<span>
删除
</span>
</div>
<div
class=
"operation-btn"
@
click=
"handleEdit(user)"
>
<i
class=
"el-icon-edit"
></i>
<span>
编辑
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 分页 -->
<div
class=
"pagination"
>
<div
class=
"pagination-info"
>
共有记录 1条,每页显示 8条,共 1页
</div>
<el-pagination
background
layout=
"prev, pager, next, jumper"
:total=
"total"
:current-page
.
sync=
"currentPage"
:page-size=
"pageSize"
@
current-change=
"handlePageChange"
>
</el-pagination>
</div>
<!-- 编辑弹窗 -->
<app-user-edit
v-model:visible=
"editVisible"
:form-data=
"editData"
@
success=
"handleEditSuccess"
/>
</div>
</
template
>
<
script
>
import
AppUserEdit
from
'./edit.vue'
export
default
{
useridentifier
:
'AppUserConfig'
,
components
:
{
AppUserEdit
},
data
()
{
return
{
searchForm
:
{
useridentifier
:
''
,
username
:
''
,
remark
:
''
},
userList
:
[
{
realname
:
'admin'
,
username
:
'admin'
,
remark
:
''
}
],
total
:
1
,
currentPage
:
1
,
pageSize
:
8
,
editVisible
:
false
,
editData
:
null
}
},
methods
:
{
handleSearch
()
{
// 实现搜索逻辑
},
handleAdd
()
{
// 打开新增用户弹窗
this
.
editData
=
null
this
.
editVisible
=
true
},
handlePageChange
(
page
)
{
// 实现分页逻辑
},
handleDelete
(
row
)
{
// 实现删除用户逻辑
this
.
$confirm
(
'确认删除该用户吗?'
,
'提示'
,
{
type
:
'warning'
}).
then
(()
=>
{
// 调用删除接口
console
.
log
(
'删除用户'
,
row
)
}).
catch
(()
=>
{})
},
handleEdit
(
row
)
{
// 打开编辑用户弹窗
this
.
editData
=
{
...
row
}
this
.
editVisible
=
true
},
handleEditSuccess
()
{
// 编辑成功后的回调
this
.
editVisible
=
false
// 刷新列表数据
this
.
getList
()
},
getList
()
{
// 获取用户列表数据
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.user-config
{
padding
:
20px
;
.title
{
font-size
:
18px
;
color
:
#333
;
margin-bottom
:
20px
;
display
:
flex
;
align-items
:
center
;
i
{
color
:
#409EFF
;
margin-right
:
8px
;
font-size
:
20px
;
}
}
.search-area
{
background
:
#fff
;
padding
:
20px
;
border-radius
:
4px
;
margin-bottom
:
20px
;
.search-form
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
.left-area
{
display
:
flex
;
flex-wrap
:
wrap
;
gap
:
10px
;
}
.right-area
{
margin-left
:
20px
;
}
}
.el-form-item
{
margin-bottom
:
0
;
}
}
.user-list
{
margin-bottom
:
20px
;
.user-grid
{
display
:
grid
;
grid-template-columns
:
repeat
(
auto-fill
,
minmax
(
300px
,
1
fr
));
gap
:
20px
;
}
.user-card
{
background
:
#fff
;
border-radius
:
8px
;
box-shadow
:
0
2px
12px
0
rgba
(
0
,
0
,
0
,
0.1
);
overflow
:
hidden
;
}
.user-info
{
display
:
flex
;
align-items
:
center
;
padding
:
20px
;
position
:
relative
;
cursor
:
pointer
;
height
:
100%
;
.avatar
{
margin-right
:
15px
;
}
.info
{
flex
:
1
;
.useridentifier
{
font-size
:
16px
;
font-weight
:
bold
;
margin-bottom
:
8px
;
color
:
#333
;
}
.username
,
.remark
{
color
:
#666
;
font-size
:
14px
;
margin-bottom
:
5px
;
}
}
.hover-mask
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
background-color
:
rgba
(
0
,
0
,
0
,
0.6
);
display
:
none
;
justify-content
:
center
;
align-items
:
center
;
.operation-buttons
{
display
:
flex
;
gap
:
30px
;
.operation-btn
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
color
:
white
;
cursor
:
pointer
;
i
{
font-size
:
24px
;
margin-bottom
:
8px
;
}
span
{
font-size
:
14px
;
}
&
:hover
{
color
:
#409EFF
;
}
}
}
}
&
:hover
{
.hover-mask
{
display
:
flex
;
}
}
}
.operation-time
{
color
:
#666
;
i
{
margin-right
:
5px
;
}
}
}
.pagination
{
background
:
#fff
;
padding
:
15px
20px
;
border-radius
:
4px
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
.pagination-info
{
color
:
#666
;
font-size
:
14px
;
}
}
}
</
style
>
src/views/safetyManagement/groupConfig/edit.vue
0 → 100644
View file @
64ac5ee9
差异被折叠。
点击展开。
src/views/safetyManagement/groupConfig/index.vue
0 → 100644
View file @
64ac5ee9
<
template
>
<div
class=
"user-config"
>
<!-- 标题 -->
<div
class=
"title"
>
<el-icon><User
/></el-icon>
用户组
</div>
<!-- 搜索和操作区域 -->
<div
class=
"search-area"
>
<el-form
:inline=
"true"
:model=
"searchForm"
class=
"search-form"
>
<div
class=
"left-area"
>
<el-form-item
label=
"用户组名:"
>
<el-input
v-model=
"searchForm.groupname"
placeholder=
"请输入用户组名"
></el-input>
</el-form-item>
<el-form-item
label=
"备注:"
>
<el-input
v-model=
"searchForm.remark"
placeholder=
"请输入备注"
></el-input>
</el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"Search"
@
click=
"handleSearch"
>
搜索
</el-button>
</el-form-item>
</div>
<div
class=
"right-area"
>
<el-button
type=
"primary"
icon=
"Plus"
@
click=
"handleAdd"
>
新增组
</el-button>
</div>
</el-form>
</div>
<!-- 用户列表 -->
<div
class=
"user-list"
>
<div
class=
"user-grid"
>
<div
v-for=
"(user, index) in userList"
:key=
"index"
class=
"user-card"
>
<div
class=
"user-info"
>
<div
class=
"avatar"
>
<el-avatar
:size=
"50"
icon=
"User"
></el-avatar>
</div>
<div
class=
"info"
>
<div
class=
"name"
>
{{
user
.
groupname
}}
</div>
<div
class=
"remark"
>
备注:
{{
user
.
remark
}}
</div>
</div>
<!-- 遮罩层和操作按钮 -->
<div
class=
"hover-mask"
>
<div
class=
"operation-buttons"
>
<div
class=
"operation-btn"
@
click=
"handleDelete(user)"
>
<i
class=
"el-icon-delete"
></i>
<span>
删除
</span>
</div>
<div
class=
"operation-btn"
@
click=
"handleEdit(user)"
>
<i
class=
"el-icon-edit"
></i>
<span>
编辑
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 分页 -->
<div
class=
"pagination"
>
<div
class=
"pagination-info"
>
共有记录 1条,每页显示 8条,共 1页
</div>
<el-pagination
background
layout=
"prev, pager, next, jumper"
:total=
"total"
:current-page
.
sync=
"currentPage"
:page-size=
"pageSize"
@
current-change=
"handlePageChange"
>
</el-pagination>
</div>
<!-- 编辑弹窗 -->
<group-edit
v-model:visible=
"editVisible"
:form-data=
"editData"
@
success=
"handleEditSuccess"
/>
</div>
</
template
>
<
script
>
import
GroupEdit
from
'./edit.vue'
export
default
{
name
:
'GroupConfig'
,
components
:
{
GroupEdit
},
data
()
{
return
{
searchForm
:
{
name
:
''
,
groupname
:
''
,
remark
:
''
},
userList
:
[
{
realname
:
'admin'
,
groupname
:
'admin'
,
remark
:
''
}
],
total
:
1
,
currentPage
:
1
,
pageSize
:
8
,
editVisible
:
false
,
editData
:
null
}
},
methods
:
{
handleSearch
()
{
// 实现搜索逻辑
},
handleAdd
()
{
// 打开新增用户弹窗
this
.
editData
=
null
this
.
editVisible
=
true
},
handlePageChange
(
page
)
{
// 实现分页逻辑
},
handleDelete
(
row
)
{
// 实现删除用户逻辑
this
.
$confirm
(
'确认删除该用户组吗?'
,
'提示'
,
{
type
:
'warning'
}).
then
(()
=>
{
// 调用删除接口
console
.
log
(
'删除用户组'
,
row
)
}).
catch
(()
=>
{})
},
handleEdit
(
row
)
{
// 打开编辑用户弹窗
this
.
editData
=
{
...
row
}
this
.
editVisible
=
true
},
handleEditSuccess
()
{
// 编辑成功后的回调
this
.
editVisible
=
false
// 刷新列表数据
this
.
getList
()
},
getList
()
{
// 获取用户列表数据
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
.user-config
{
padding
:
20px
;
.title
{
font-size
:
18px
;
color
:
#333
;
margin-bottom
:
20px
;
display
:
flex
;
align-items
:
center
;
i
{
color
:
#409EFF
;
margin-right
:
8px
;
font-size
:
20px
;
}
}
.search-area
{
background
:
#fff
;
padding
:
20px
;
border-radius
:
4px
;
margin-bottom
:
20px
;
.search-form
{
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
.left-area
{
display
:
flex
;
flex-wrap
:
wrap
;
gap
:
10px
;
}
.right-area
{
margin-left
:
20px
;
}
}
.el-form-item
{
margin-bottom
:
0
;
}
}
.user-list
{
margin-bottom
:
20px
;
.user-grid
{
display
:
grid
;
grid-template-columns
:
repeat
(
auto-fill
,
minmax
(
300px
,
1
fr
));
gap
:
20px
;
}
.user-card
{
background
:
#fff
;
border-radius
:
8px
;
box-shadow
:
0
2px
12px
0
rgba
(
0
,
0
,
0
,
0.1
);
overflow
:
hidden
;
}
.user-info
{
display
:
flex
;
align-items
:
center
;
padding
:
20px
;
position
:
relative
;
cursor
:
pointer
;
height
:
100%
;
.avatar
{
margin-right
:
15px
;
}
.info
{
flex
:
1
;
.name
{
font-size
:
16px
;
font-weight
:
bold
;
margin-bottom
:
8px
;
color
:
#333
;
}
.groupname
,
.remark
{
color
:
#666
;
font-size
:
14px
;
margin-bottom
:
5px
;
}
}
.hover-mask
{
position
:
absolute
;
top
:
0
;
left
:
0
;
width
:
100%
;
height
:
100%
;
background-color
:
rgba
(
0
,
0
,
0
,
0.6
);
display
:
none
;
justify-content
:
center
;
align-items
:
center
;
.operation-buttons
{
display
:
flex
;
gap
:
30px
;
.operation-btn
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
color
:
white
;
cursor
:
pointer
;
i
{
font-size
:
24px
;
margin-bottom
:
8px
;
}
span
{
font-size
:
14px
;
}
&
:hover
{
color
:
#409EFF
;
}
}
}
}
&
:hover
{
.hover-mask
{
display
:
flex
;
}
}
}
.operation-time
{
color
:
#666
;
i
{
margin-right
:
5px
;
}
}
}
.pagination
{
background
:
#fff
;
padding
:
15px
20px
;
border-radius
:
4px
;
display
:
flex
;
justify-content
:
space-between
;
align-items
:
center
;
.pagination-info
{
color
:
#666
;
font-size
:
14px
;
}
}
}
</
style
>
src/views/safetyManagement/roleConfig/edit.vue
View file @
64ac5ee9
<
template
>
<el-dialog
title=
"编辑
用户
"
title=
"编辑
角色
"
:model-value=
"visible"
@
update:model-value=
"$emit('update:visible', $event)"
width=
"800px"
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论