提交 1821468a 编写于 作者: Mr.奇淼('s avatar Mr.奇淼(

提供了前端分页mixin解决方案

上级 86a9129c
...@@ -5,6 +5,7 @@ import ( ...@@ -5,6 +5,7 @@ import (
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"main/controller/servers" "main/controller/servers"
"main/model/dbModel" "main/model/dbModel"
"main/model/modelInterface"
) )
type CreateApiParams struct { type CreateApiParams struct {
...@@ -54,3 +55,51 @@ func DeleteApi(c *gin.Context) { ...@@ -54,3 +55,51 @@ func DeleteApi(c *gin.Context) {
servers.ReportFormat(c, true, "删除成功", gin.H{}) servers.ReportFormat(c, true, "删除成功", gin.H{})
} }
} }
type AuthAndPathIn struct {
AuthorityId string `json:"authorityId"`
Apis []dbModel.Api `json:"apis"`
}
// @Tags Api
// @Summary 创建api和角色关系
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body api.AuthAndPathIn true "创建api和角色关系"
// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /api/setAuthAndPath [post]
func SetAuthAndPath(c *gin.Context){
var authAndPathIn AuthAndPathIn
_ = c.BindJSON(&authAndPathIn)
err:=new(dbModel.ApiAuthority).SetAuthAndPath(authAndPathIn.AuthorityId,authAndPathIn.Apis)
if err != nil {
servers.ReportFormat(c, false, fmt.Sprintf("添加失败:%v", err), gin.H{})
} else {
servers.ReportFormat(c, true, "添加成功", gin.H{})
}
}
// @Tags api
// @Summary 分页获取角色列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body modelInterface.PageInfo true "分页获取用户列表"
// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /api/getApiList [post]
func GetApiList(c *gin.Context) {
var pageInfo modelInterface.PageInfo
_ = c.BindJSON(&pageInfo)
err, list, total := new(dbModel.Api).GetInfoList(pageInfo)
if err != nil {
servers.ReportFormat(c, false, fmt.Sprintf("获取数据失败,%v", err), gin.H{})
} else {
servers.ReportFormat(c, true, "获取数据成功", gin.H{
"list": list,
"total": total,
"page": pageInfo.Page,
"pageSize": pageInfo.PageSize,
})
}
}
\ No newline at end of file
...@@ -76,7 +76,7 @@ func GetAuthorityList(c *gin.Context){ ...@@ -76,7 +76,7 @@ func GetAuthorityList(c *gin.Context){
servers.ReportFormat(c, false, fmt.Sprintf("获取数据失败,%v", err), gin.H{}) servers.ReportFormat(c, false, fmt.Sprintf("获取数据失败,%v", err), gin.H{})
} else { } else {
servers.ReportFormat(c, true, "获取数据成功", gin.H{ servers.ReportFormat(c, true, "获取数据成功", gin.H{
"authList": list, "list": list,
"total": total, "total": total,
"page": pageInfo.Page, "page": pageInfo.Page,
"pageSize": pageInfo.PageSize, "pageSize": pageInfo.PageSize,
......
...@@ -43,7 +43,7 @@ func GetMenuList(c *gin.Context) { ...@@ -43,7 +43,7 @@ func GetMenuList(c *gin.Context) {
servers.ReportFormat(c, false, fmt.Sprintf("获取数据失败,%v", err), gin.H{}) servers.ReportFormat(c, false, fmt.Sprintf("获取数据失败,%v", err), gin.H{})
} else { } else {
servers.ReportFormat(c, true, "获取数据成功", gin.H{ servers.ReportFormat(c, true, "获取数据成功", gin.H{
"menuList": menuList, "list": menuList,
"total": total, "total": total,
"page": pageInfo.Page, "page": pageInfo.Page,
"pageSize": pageInfo.PageSize, "pageSize": pageInfo.PageSize,
......
...@@ -2,13 +2,14 @@ package dbModel ...@@ -2,13 +2,14 @@ package dbModel
import ( import (
"github.com/jinzhu/gorm" "github.com/jinzhu/gorm"
"github.com/pkg/errors"
"main/controller/servers" "main/controller/servers"
"main/init/qmsql" "main/init/qmsql"
"main/model/modelInterface" "main/model/modelInterface"
) )
type Api struct { type Api struct {
gorm.Model `json:"-"` gorm.Model
Path string `json:"path"` Path string `json:"path"`
Description string `json:"description"` Description string `json:"description"`
} }
...@@ -16,7 +17,7 @@ type Api struct { ...@@ -16,7 +17,7 @@ type Api struct {
func (a *Api) CreateApi() (err error) { func (a *Api) CreateApi() (err error) {
findOne := qmsql.DEFAULTDB.Where("path = ?", a.Path).Find(&Menu{}).Error findOne := qmsql.DEFAULTDB.Where("path = ?", a.Path).Find(&Menu{}).Error
if findOne != nil { if findOne != nil {
return errors.New("存在相同api")
} else { } else {
err = qmsql.DEFAULTDB.Create(a).Error err = qmsql.DEFAULTDB.Create(a).Error
} }
...@@ -29,7 +30,8 @@ func (a *Api) DeleteApi() (err error) { ...@@ -29,7 +30,8 @@ func (a *Api) DeleteApi() (err error) {
} }
func (a *Api) EditApi() (err error) { func (a *Api) EditApi() (err error) {
err = qmsql.DEFAULTDB.Update(a).Update(&Authority{}).Error err = qmsql.DEFAULTDB.Update(a).Error
err = qmsql.DEFAULTDB.Where("path = ?",a.Path).Update("path",a.Path).Error
return err return err
} }
......
package dbModel package dbModel
import "main/init/qmsql"
type ApiAuthority struct { type ApiAuthority struct {
AuthorityId string `json:"-"` AuthorityId string `json:"-"`
Api Path string `json:"_"`
} }
//创建角色api关联关系
func (a *ApiAuthority)SetAuthAndPath(authId string,apis []Api)(err error){
err = qmsql.DEFAULTDB.Where("authority_id = ?",authId).Delete(&ApiAuthority{}).Error
for _,v := range apis{
err = qmsql.DEFAULTDB.Create(&ApiAuthority{AuthorityId:authId,Path:v.Path}).Error
if (err!=nil){
return err
}
}
return nil
}
\ No newline at end of file
...@@ -7,9 +7,11 @@ import ( ...@@ -7,9 +7,11 @@ import (
) )
func InitApiRouter(Router *gin.Engine) { func InitApiRouter(Router *gin.Engine) {
UserRouter := Router.Group("api").Use(middleware.JWTAuth()) ApiRouter := Router.Group("api").Use(middleware.JWTAuth())
{ {
UserRouter.POST("createApi", api.CreateApi) ApiRouter.POST("createApi", api.CreateApi)
UserRouter.POST("deleteApi", api.DeleteApi) ApiRouter.POST("deleteApi", api.DeleteApi)
ApiRouter.POST("setAuthAndPath",api.SetAuthAndPath)
ApiRouter.POST("getApiList",api.GetApiList)
} }
} }
...@@ -6,9 +6,9 @@ import ( ...@@ -6,9 +6,9 @@ import (
) )
func InitBaseRouter(Router *gin.Engine) { func InitBaseRouter(Router *gin.Engine) {
UserRouter := Router.Group("base") BaseRouter := Router.Group("base")
{ {
UserRouter.POST("regist", api.Regist) BaseRouter.POST("regist", api.Regist)
UserRouter.POST("login", api.Login) BaseRouter.POST("login", api.Login)
} }
} }
import service from '@/utils/request'
// @Tags api
// @Summary 分页获取角色列表
// @Security ApiKeyAuth
// @accept application/json
// @Produce application/json
// @Param data body modelInterface.PageInfo true "分页获取用户列表"
// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}"
// @Router /api/getApiList [post]
// {
// page int
// pageSize int
// }
export const getApiList = (data) => {
return service({
url: "/api/getApiList",
method: 'post',
data
})
}
\ No newline at end of file
<template> <template>
<div> <div>
新建api <div class="button-box clearflex">
<el-button @click="addApi" type="primary">新增api</el-button>
</div> </div>
<el-table :data="tableData" border stripe>
<el-table-column label="id" min-width="180" prop="ID"></el-table-column>
<el-table-column label="api路径" min-width="180" prop="path"></el-table-column>
<el-table-column label="api简介" min-width="180" prop="description"></el-table-column>
<el-table-column fixed="right" label="操作" width="200">
<template slot-scope="scope">
<el-button @click="editApi(scope.row)" size="small" type="text">编辑</el-button>
<el-button @click="deleteApi(scope.row)" size="small" type="text">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="page"
:page-size="pageSize"
:page-sizes="[10, 30, 50, 100]"
:style="{float:'right',padding:'20px'}"
:total="total"
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
hide-on-single-page
layout="total, sizes, prev, pager, next, jumper"
></el-pagination>
</div>
</template> </template>
<script> <script>
import { getApiList } from '@/api/api'
import infoList from '@/view/superAdmin/mixins/infoList'
export default { export default {
name:"Api", name: 'Api',
mixins:[infoList],
data() {
return {
listApi: getApiList,
listKey:'list'
}
},
methods: {
addApi() {},
editApi() {},
deleteApi() {}
},
created() {
this.getTableData()
}
} }
</script> </script>
<style lang="scss"> <style scoped lang="scss">
.button-box {
padding: 10px 20px;
.el-button {
float: right;
}
}
</style> </style>
\ No newline at end of file
...@@ -67,15 +67,15 @@ import { ...@@ -67,15 +67,15 @@ import {
createAuthority createAuthority
} from '@/api/authority' } from '@/api/authority'
import { getBaseMenuTree, addMenuAuthority, getMenuAuthority } from '@/api/menu' import { getBaseMenuTree, addMenuAuthority, getMenuAuthority } from '@/api/menu'
import infoList from '@/view/superAdmin/mixins/infoList'
export default { export default {
name: 'Authority', name: 'Authority',
mixins:[infoList],
data() { data() {
return { return {
listApi: getAuthorityList,
listKey:'list',
activeUserId: 0, activeUserId: 0,
page: 1,
total: 10,
pageSize: 10,
tableData: [],
treeData: [], treeData: [],
treeIds: [], treeIds: [],
defaultProps: { defaultProps: {
...@@ -91,16 +91,6 @@ export default { ...@@ -91,16 +91,6 @@ export default {
} }
}, },
methods: { methods: {
// 条数
handleSizeChange(val) {
this.pageSize = val
this.getAuthList()
},
// 页码
handleCurrentChange(val) {
this.page = val
this.getAuthList()
},
// 删除角色 // 删除角色
deleteAuth(row) { deleteAuth(row) {
this.$confirm('此操作将永久删除该角色, 是否继续?', '提示', { this.$confirm('此操作将永久删除该角色, 是否继续?', '提示', {
...@@ -115,7 +105,7 @@ export default { ...@@ -115,7 +105,7 @@ export default {
type: 'success', type: 'success',
message: '删除成功!' message: '删除成功!'
}) })
this.getAuthList() this.getTableData()
} }
}) })
.catch(() => { .catch(() => {
...@@ -145,7 +135,7 @@ export default { ...@@ -145,7 +135,7 @@ export default {
type: 'success', type: 'success',
message: '添加成功!' message: '添加成功!'
}) })
this.getAuthList() this.getTableData()
this.closeDialog() this.closeDialog()
} }
this.initForm() this.initForm()
...@@ -155,11 +145,7 @@ export default { ...@@ -155,11 +145,7 @@ export default {
addAuthority() { addAuthority() {
this.dialogFormVisible = true this.dialogFormVisible = true
}, },
// 获取用户列表
async getAuthList(page = this.page, pageSize = this.pageSize) {
const table = await getAuthorityList({ page, pageSize })
this.tableData = table.data.authList
},
// 关联用户列表关系 // 关联用户列表关系
async addAuthMenu(row) { async addAuthMenu(row) {
const res1 = await getMenuAuthority({ authorityId: row.authorityId }) const res1 = await getMenuAuthority({ authorityId: row.authorityId })
...@@ -194,11 +180,11 @@ export default { ...@@ -194,11 +180,11 @@ export default {
// 获取基础menu树 // 获取基础menu树
}, },
created() { created() {
this.getAuthList() this.getTableData()
} }
} }
</script> </script>
<style lang="scss"> <style scoped lang="scss">
.button-box { .button-box {
padding: 10px 20px; padding: 10px 20px;
.el-button { .el-button {
......
...@@ -80,14 +80,14 @@ ...@@ -80,14 +80,14 @@
<script> <script>
import { getMenuList, addBaseMenu, deleteBaseMenu } from '@/api/menu' import { getMenuList, addBaseMenu, deleteBaseMenu } from '@/api/menu'
import infoList from '@/view/superAdmin/mixins/infoList'
export default { export default {
name: 'Menus', name: 'Menus',
mixins:[infoList],
data() { data() {
return { return {
page: 1, listApi:getMenuList,
total: 10, listKey:'list',
pageSize: 10,
tableData: [],
dialogFormVisible: false, dialogFormVisible: false,
form: { form: {
path: '', path: '',
...@@ -103,14 +103,6 @@ export default { ...@@ -103,14 +103,6 @@ export default {
} }
}, },
methods: { methods: {
handleSizeChange(val) {
this.pageSize = val
this.getMenuList()
},
handleCurrentChange(val) {
this.page = val
this.getMenuList()
},
deleteMenu(ID) { deleteMenu(ID) {
this.$confirm('此操作将永久删除所有角色下该菜单, 是否继续?', '提示', { this.$confirm('此操作将永久删除所有角色下该菜单, 是否继续?', '提示', {
confirmButtonText: '确定', confirmButtonText: '确定',
...@@ -124,7 +116,7 @@ export default { ...@@ -124,7 +116,7 @@ export default {
type: 'success', type: 'success',
message: '删除成功!' message: '删除成功!'
}) })
this.getMenuList() this.getTableData()
} }
}) })
.catch(() => { .catch(() => {
...@@ -158,7 +150,7 @@ export default { ...@@ -158,7 +150,7 @@ export default {
type: 'success', type: 'success',
message: '添加成功!' message: '添加成功!'
}) })
this.getAuthList() this.getTableData()
this.closeDialog() this.closeDialog()
} else { } else {
this.$message({ this.$message({
...@@ -174,17 +166,11 @@ export default { ...@@ -174,17 +166,11 @@ export default {
this.form.parentId = String(id) this.form.parentId = String(id)
this.dialogFormVisible = true this.dialogFormVisible = true
}, },
async getMenuList(page = this.page, pageSize = this.pageSize) {
const table = await getMenuList({ page, pageSize })
this.tableData = table.data.menuList
}
},
created() {
this.getMenuList()
} }
} }
</script> </script>
<style lang="scss"> <style scoped lang="scss">
.button-box { .button-box {
padding: 10px 20px; padding: 10px 20px;
.el-button { .el-button {
......
export default {
data() {
return {
page: 1,
total: 10,
pageSize: 10,
tableData: [],
}
},
methods: {
handleSizeChange(val) {
this.pageSize = val
this.getTableData()
},
handleCurrentChange(val) {
this.page = val
this.getTableData()
},
async getTableData(page = this.page, pageSize = this.pageSize) {
const table = await this.listApi({ page, pageSize })
this.tableData = table.data[this.listKey]
}
},
created() {
this.getTableData()
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册