Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
1532635456
gin-vue-admin
提交
8e8bdc5d
G
gin-vue-admin
项目概览
1532635456
/
gin-vue-admin
落后 Fork 源项目 1212 个版本
Fork自
FLIPPED-AURORA / gin-vue-admin
通知
6
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gin-vue-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
8e8bdc5d
编写于
4月 16, 2020
作者:
Mr.奇淼(
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
增加删除用户功能 修正一些细节bug
上级
a4b0802f
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
247 addition
and
168 deletion
+247
-168
server/api/v1/sys_user.go
server/api/v1/sys_user.go
+19
-0
server/router/sys_user.go
server/router/sys_user.go
+1
-0
server/service/sys_base_menu.go
server/service/sys_base_menu.go
+10
-1
server/service/sys_user.go
server/service/sys_user.go
+13
-0
web/src/api/user.js
web/src/api/user.js
+17
-0
web/src/style/main.scss
web/src/style/main.scss
+162
-159
web/src/view/superAdmin/api/api.vue
web/src/view/superAdmin/api/api.vue
+1
-1
web/src/view/superAdmin/menu/menu.vue
web/src/view/superAdmin/menu/menu.vue
+1
-6
web/src/view/superAdmin/user/user.vue
web/src/view/superAdmin/user/user.vue
+23
-1
未找到文件。
server/api/v1/sys_user.go
浏览文件 @
8e8bdc5d
...
...
@@ -229,3 +229,22 @@ func SetUserAuthority(c *gin.Context) {
response
.
OkWithMessage
(
"修改成功"
,
c
)
}
}
// @Tags SysUser
// @Summary 删除用户
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.SetUserAuth true "删除用户"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"修改成功"}"
// @Router /user/deleteUser [delete]
func
DeleteUser
(
c
*
gin
.
Context
)
{
var
reqId
request
.
GetById
_
=
c
.
ShouldBindJSON
(
&
reqId
)
err
:=
service
.
DeleteUser
(
reqId
.
Id
)
if
err
!=
nil
{
response
.
FailWithMessage
(
fmt
.
Sprintf
(
"删除失败,%v"
,
err
),
c
)
}
else
{
response
.
OkWithMessage
(
"删除成功"
,
c
)
}
}
server/router/sys_user.go
浏览文件 @
8e8bdc5d
...
...
@@ -13,5 +13,6 @@ func InitUserRouter(Router *gin.RouterGroup) {
UserRouter
.
POST
(
"uploadHeaderImg"
,
v1
.
UploadHeaderImg
)
//上传头像
UserRouter
.
POST
(
"getUserList"
,
v1
.
GetUserList
)
// 分页获取用户列表
UserRouter
.
POST
(
"setUserAuthority"
,
v1
.
SetUserAuthority
)
//设置用户权限
UserRouter
.
DELETE
(
"deleteUser"
,
v1
.
DeleteUser
)
//删除用户
}
}
server/service/sys_base_menu.go
浏览文件 @
8e8bdc5d
...
...
@@ -35,6 +35,7 @@ func DeleteBaseMenu(id float64) (err error) {
// @return err errorgetMenu
func
UpdateBaseMenu
(
menu
model
.
SysBaseMenu
)
(
err
error
)
{
var
oldMenu
model
.
SysBaseMenu
upDateMap
:=
make
(
map
[
string
]
interface
{})
upDateMap
[
"keep_alive"
]
=
menu
.
KeepAlive
upDateMap
[
"default_menu"
]
=
menu
.
DefaultMenu
...
...
@@ -46,7 +47,15 @@ func UpdateBaseMenu(menu model.SysBaseMenu) (err error) {
upDateMap
[
"title"
]
=
menu
.
Title
upDateMap
[
"icon"
]
=
menu
.
Icon
upDateMap
[
"sort"
]
=
menu
.
Sort
err
=
global
.
GVA_DB
.
Where
(
"id = ?"
,
menu
.
ID
)
.
Find
(
&
model
.
SysBaseMenu
{})
.
Updates
(
upDateMap
)
.
Error
db
:=
global
.
GVA_DB
.
Where
(
"id = ?"
,
menu
.
ID
)
.
Find
(
&
oldMenu
)
if
oldMenu
.
Name
!=
menu
.
Name
{
notSame
:=
global
.
GVA_DB
.
Where
(
"id <> ? AND name = ?"
,
menu
.
ID
,
menu
.
Name
)
.
First
(
&
model
.
SysBaseMenu
{})
.
RecordNotFound
()
if
!
notSame
{
global
.
GVA_LOG
.
Debug
(
"存在相同name修改失败"
)
return
errors
.
New
(
"存在相同name修改失败"
)
}
}
err
=
db
.
Updates
(
upDateMap
)
.
Error
global
.
GVA_LOG
.
Debug
(
"菜单修改时候,关联菜单err:%v"
,
err
)
return
err
}
...
...
server/service/sys_user.go
浏览文件 @
8e8bdc5d
...
...
@@ -95,6 +95,19 @@ func SetUserAuthority(uuid uuid.UUID, authorityId string) (err error) {
return
err
}
// @title SetUserAuthority
// @description set the authority of a certain user, 设置一个用户的权限
// @auth (2020/04/05 20:22)
// @param uuid UUID
// @param authorityId string
// @return err error
func
DeleteUser
(
id
float64
)
(
err
error
)
{
var
user
model
.
SysUser
err
=
global
.
GVA_DB
.
Where
(
"id = ?"
,
id
)
.
Delete
(
&
user
)
.
Error
return
err
}
// @title UploadHeaderImg
// @description upload avatar, 用户头像上传更新地址
// @auth (2020/04/05 20:22)
...
...
web/src/api/user.js
浏览文件 @
8e8bdc5d
...
...
@@ -77,4 +77,21 @@ export const setUserAuthority = (data) => {
method
:
'
post
'
,
data
:
data
})
}
// @Tags SysUser
// @Summary 删除用户
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body request.SetUserAuth true "删除用户"
// @Success 200 {string} string "{"success":true,"data":{},"msg":"修改成功"}"
// @Router /user/deleteUser [delete]
export
const
deleteUser
=
(
data
)
=>
{
return
service
({
url
:
"
/user/deleteUser
"
,
method
:
'
delete
'
,
data
:
data
})
}
\ No newline at end of file
web/src/style/main.scss
浏览文件 @
8e8bdc5d
...
...
@@ -530,11 +530,12 @@ ol,
li
{
list-style-type
:
none
;
}
.el-table__body-wrapper
{
tr
{
td
{
.cell
{
.el-button
+
.el-button
{
.el-table__body-wrapper
{
tr
{
td
{
.cell
{
.el-button
+
.el-button
{
margin-left
:
0
;
}
}
...
...
@@ -542,210 +543,204 @@ li {
}
}
// navbar
.aside
{
.el-scrollbar
{
.el-scrollbar__view
{
.el-menu-vertical
{
background-color
:
#001529
;
}
.el-menu-item
:hover
i
,
.el-menu-item
:hover
span
{
color
:
#fff
;
}
li
{
background-color
:
#001529
;
ul
{
.el-menu-item
{
background-color
:
#000408
;
height
:
44px
;
line-height
:
44px
;
}
.is-active
{
background-color
:
#1890ff
;
}
}
}
.el-submenu__title
:hover
{
background-color
:
#001529
;
}
.el-submenu__title
:hover
i
,
.el-submenu__title
:hover
span
{
color
:
#fff
;
}
.el-menu--inline
{
border-left
:
5px
solid
#2c3b41
;
}
}
}
}
// layout
.layout-cont
{
.main-cont
{
position
:
relative
;
&
.el-main
{
background-color
:
#ecf0f5
;
padding
:
0
;
.aside
{
.el-scrollbar
{
.el-scrollbar__view
{
.el-menu-vertical
{
background-color
:
#001529
;
}
.breadcrumb
{
background-color
:
#fff
;
padding
:
0
0
15px
15px
;
.el-menu-item
:hover
i
,
.el-menu-item
:hover
span
{
color
:
#fff
;
}
li
{
background-color
:
#001529
;
ul
{
.el-menu-item
{
background-color
:
#000408
;
height
:
44px
;
line-height
:
44px
;
}
.is-active
{
background-color
:
#1890ff
;
}
}
}
.el-submenu__title
:hover
{
background-color
:
#001529
;
}
.el-submenu__title
:hover
i
,
.el-submenu__title
:hover
span
{
color
:
#fff
;
}
.el-menu--inline
{
border-left
:
5px
solid
#2c3b41
;
}
}
}
}
.admin-box
{
padding
:
15px
20px
;
.el-button
{
padding
:
7px
10px
;
}
.el-input__inner
{
height
:
30px
;
line-height
:
30px
;
// layout
.layout-cont
{
.main-cont
{
position
:
relative
;
&
.el-main
{
background-color
:
#ecf0f5
;
padding
:
0
;
}
.el-input__icon
{
line-height
:
30px
;
.breadcrumb
{
background-color
:
#fff
;
padding
:
0
0
15px
15px
;
}
}
.button-box
{
background
:
#fff
;
border
:
1px
solid
#ebeef5
;
border-bottom
:
none
;
}
.admin-box
{
padding
:
15px
20px
;
.el-button
{
padding
:
7px
10px
;
}
.search-term
{
background
:
#fff
;
padding
:
0
15px
;
border-left
:
1px
solid
#ebeef5
;
border-right
:
1px
solid
#ebeef5
;
.el-input__inner
{
height
:
30px
;
line-height
:
30px
;
}
.el-input__icon
{
line-height
:
30px
;
}
}
.button-box
{
background
:
#fff
;
border
:
1px
solid
#ebeef5
;
border-bottom
:
none
;
}
.search-term
{
background
:
#fff
;
padding
:
0
15px
;
border-left
:
1px
solid
#ebeef5
;
border-right
:
1px
solid
#ebeef5
;
}
// table
.has-gutter
{
tr
{
th
{
.has-gutter
{
tr
{
th
{
background-color
:
#fafafa
;
}
}
}
.el-table--striped
{
.el-table__body
{
tr
.el-table__row--striped
{
td
{
.el-table--striped
{
.el-table__body
{
tr
.el-table__row--striped
{
td
{
background
:
#fff
!
important
;
}
}
}
}
.el-table
th
,
.el-table
tr
{
}
.el-table
th
,
.el-table
tr
{
background-color
:
#fafafa
;
}
.el-pagination
{
.el-pagination
{
.btn-prev
,
.btn-next
{
.btn-next
{
border
:
1px
solid
#ddd
;
border-radius
:
4px
;
}
.el-pager
{
li
{
.el-pager
{
li
{
color
:
#666
;
font-size
:
12px
;
margin
:
0
5px
;
border
:
1px
solid
#ddd
;
border-radius
:
4px
;
}
}
}
}
// el-form
.el-form
{
.el-form
{
background-color
:
#fff
;
padding
:
10px
0
;
}
.el-row
{
.el-row
{
padding
:
10px
0
;
.el-col
>
label
{
line-height
:
30px
;
text-align
:
right
;
width
:
80%
;
padding-right
:
15px
;
display
:
inline-block
;
.el-col
>
label
{
line-height
:
30px
;
text-align
:
right
;
width
:
80%
;
padding-right
:
15px
;
display
:
inline-block
;
}
.line
{
.line
{
line-height
:
30px
;
text-align
:
center
;
}
}
// edit_container
.edit_container
{
.edit_container
{
background-color
:
#fff
;
padding
:
15px
;
.el-button
{
margin
:
15px
0
;
}
}
.edit
{
.edit
{
background-color
:
#fff
;
padding
:
15px
;
padding
:
15px
;
.el-button
{
margin
:
15px
0
;
}
}
// upload-demo
.upload-demo
,
.upload
{
.upload
{
background-color
:
#fff
;
padding
:
15px
;
.el-upload-list__item-status-label
{
padding
:
15px
;
.el-upload-list__item-status-label
{
right
:
0
;
left
:
120px
;
}
.el-upload__tip
{
.el-upload__tip
{
margin
:
10px
0
;
}
}
}
// system
.system
{
.system
{
padding
:
15px
;
.el-input__inner
{
.el-input__inner
{
width
:
80%
;
}
}
// 导航
#app
{
.el-container
{
.el-container
{
position
:
relative
;
height
:
100%
;
width
:
100%
;
}
.el-container.mobile.openside
{
position
:
fixed
;
top
:
0
;
}
.hideside
{
.aside
{
.hideside
{
.aside
{
width
:
54px
!
important
;
}
}
.el-aside
{
.el-aside
{
-webkit-transition
:
width
.2s
;
transition
:
width
.2s
;
width
:
220px
;
...
...
@@ -759,66 +754,57 @@ li {
z-index
:
1001
;
overflow
:
hidden
;
}
.mobile.hideside
{
.el-aside
{
.mobile.hideside
{
.el-aside
{
// pointer-events: none;
-webkit-transition-duration
:
.2s
;
transition-duration
:
.2s
;
-webkit-transform
:
translate3d
(
-210px
,
0
,
0
);
transform
:
translate3d
(
-220px
,
0
,
0
);
-webkit-transform
:
translate3d
(
-210px
,
0
,
0
);
transform
:
translate3d
(
-220px
,
0
,
0
);
}
}
.mobile
{
.el-aside
{
.mobile
{
.el-aside
{
-webkit-transition
:
-
webkit-transform
.28s
;
transition
:
-
webkit-transform
.28s
;
transition
:
transform
.28s
;
transition
:
transform
.28s
,-
webkit-transform
.28s
;
transition
:
transform
.28s
,
-
webkit-transform
.28s
;
width
:
210px
!
important
}
}
.el-container
{
.el-container
{
position
:
relative
;
height
:
100%
;
width
:
100%
;
.el-aside
{
.el-aside
{
// transition: none;
.aside
{
.aside
{
background
:
#000
;
.el-menu
{
.el-menu
{
border-right
:
none
;
}
}
}
}
.main-cont.el-main
{
.main-cont.el-main
{
min-height
:
100%
;
-webkit-transition
:
margin-left
.28s
;
transition
:
margin-left
.28s
;
margin-left
:
220px
;
position
:
relative
;
}
.hideside
{
.main-cont.el-main
{
.hideside
{
.main-cont.el-main
{
margin-left
:
54px
;
}
}
.mobile
{
.main-cont.el-main
{
.mobile
{
.main-cont.el-main
{
margin-left
:
0px
;
}
}
.openside.mobile
{
.shadowBg
{
.openside.mobile
{
.shadowBg
{
background
:
#000
;
opacity
:
.3
;
width
:
100%
;
...
...
@@ -829,22 +815,39 @@ li {
left
:
0
;
}
}
}
.el-menu--vertical
{
.el-menu
{
.el-menu
.el-menu--inline
{
background
:
#2c3b41
;
}
.el-submenu
.el-submenu
{
background-color
:
#000408
!
important
;
}
.aside
.el-scrollbar
.el-scrollbar__view
.el-submenu__title
:hover
{
background-color
:
#000408
!
important
;
}
.el-submenu
{
.aside
.el-scrollbar
.el-scrollbar__view
.el-submenu__title
:hover
{
background-color
:
#000408
!
important
;
}
}
.el-menu--vertical
{
.el-menu
{
margin-left
:
-8px
;
background-color
:
rgb
(
48
,
65
,
86
)
;
.el-menu-item
{
background-color
:
rgb
(
48
,
65
,
86
)
;
background-color
:
rgb
(
48
,
65
,
86
);
.el-menu-item
{
background-color
:
rgb
(
48
,
65
,
86
);
}
.el-menu-item
:focus
,
.el-menu-item
:hover
{
.el-menu-item
:focus
,
.el-menu-item
:hover
{
background-color
:
#263445
;
color
:
#fff
;
}
}
}
// 导航*****
// 导航*****
\ No newline at end of file
web/src/view/superAdmin/api/api.vue
浏览文件 @
8e8bdc5d
...
...
@@ -259,7 +259,7 @@ export default {
if
(
res
.
code
==
0
)
{
this
.
$message
({
type
:
'
success
'
,
message
:
'
添加
成功
'
,
message
:
'
编辑
成功
'
,
showClose
:
true
})
}
...
...
web/src/view/superAdmin/menu/menu.vue
浏览文件 @
8e8bdc5d
...
...
@@ -225,14 +225,9 @@ export default {
if
(
res
.
code
==
0
)
{
this
.
$message
({
type
:
'
success
'
,
message
:
'
添加成功!
'
message
:
this
.
isEdit
?
'
编辑成功
'
:
'
添加成功!
'
})
this
.
getTableData
()
}
else
{
this
.
$message
({
type
:
'
error
'
,
message
:
'
添加失败!
'
})
}
this
.
initForm
()
this
.
dialogFormVisible
=
false
...
...
web/src/view/superAdmin/user/user.vue
浏览文件 @
8e8bdc5d
...
...
@@ -30,6 +30,21 @@
</el-select>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
min-width=
"150"
>
<
template
slot-scope=
"scope"
>
<el-popover
placement=
"top"
width=
"160"
v-model=
"scope.row.visible"
>
<p>
确定要删除此用户吗
</p>
<div
style=
"text-align: right; margin: 0"
>
<el-button
size=
"mini"
type=
"text"
@
click=
"scope.row.visible = false"
>
取消
</el-button>
<el-button
type=
"primary"
size=
"mini"
@
click=
"deleteUser(scope.row)"
>
确定
</el-button>
</div>
<el-button
type=
"text"
size=
"small"
slot=
"reference"
>
删除
</el-button>
</el-popover>
</
template
>
</el-table-column>
</el-table>
<el-pagination
:current-page=
"page"
...
...
@@ -89,7 +104,7 @@
<
script
>
// 获取列表内容封装在mixins内部 getTableData方法 初始化已封装完成
const
path
=
process
.
env
.
VUE_APP_BASE_API
import
{
getUserList
,
setUserAuthority
,
register
}
from
'
@/api/user
'
import
{
getUserList
,
setUserAuthority
,
register
,
deleteUser
}
from
'
@/api/user
'
import
{
getAuthorityList
}
from
'
@/api/authority
'
import
infoList
from
'
@/components/mixins/infoList
'
import
{
mapGetters
}
from
'
vuex
'
...
...
@@ -127,6 +142,13 @@ export default {
...
mapGetters
(
'
user
'
,
[
'
token
'
])
},
methods
:
{
async
deleteUser
(
row
){
const
res
=
await
deleteUser
({
id
:
row
.
ID
})
if
(
res
.
code
==
0
){
this
.
getTableData
()
row
.
visible
=
false
}
},
getAuthorityList
(
AuthorityData
){
AuthorityData
.
map
(
item
=>
{
this
.
authOptions
.
push
({
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录