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

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

上级 86a9129c
......@@ -5,6 +5,7 @@ import (
"github.com/gin-gonic/gin"
"main/controller/servers"
"main/model/dbModel"
"main/model/modelInterface"
)
type CreateApiParams struct {
......@@ -54,3 +55,51 @@ func DeleteApi(c *gin.Context) {
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){
servers.ReportFormat(c, false, fmt.Sprintf("获取数据失败,%v", err), gin.H{})
} else {
servers.ReportFormat(c, true, "获取数据成功", gin.H{
"authList": list,
"list": list,
"total": total,
"page": pageInfo.Page,
"pageSize": pageInfo.PageSize,
......
......@@ -43,7 +43,7 @@ func GetMenuList(c *gin.Context) {
servers.ReportFormat(c, false, fmt.Sprintf("获取数据失败,%v", err), gin.H{})
} else {
servers.ReportFormat(c, true, "获取数据成功", gin.H{
"menuList": menuList,
"list": menuList,
"total": total,
"page": pageInfo.Page,
"pageSize": pageInfo.PageSize,
......
......@@ -2,13 +2,14 @@ package dbModel
import (
"github.com/jinzhu/gorm"
"github.com/pkg/errors"
"main/controller/servers"
"main/init/qmsql"
"main/model/modelInterface"
)
type Api struct {
gorm.Model `json:"-"`
gorm.Model
Path string `json:"path"`
Description string `json:"description"`
}
......@@ -16,7 +17,7 @@ type Api struct {
func (a *Api) CreateApi() (err error) {
findOne := qmsql.DEFAULTDB.Where("path = ?", a.Path).Find(&Menu{}).Error
if findOne != nil {
return errors.New("存在相同api")
} else {
err = qmsql.DEFAULTDB.Create(a).Error
}
......@@ -29,7 +30,8 @@ func (a *Api) DeleteApi() (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
}
......
package dbModel
import "main/init/qmsql"
type ApiAuthority struct {
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 (
)
func InitApiRouter(Router *gin.Engine) {
UserRouter := Router.Group("api").Use(middleware.JWTAuth())
ApiRouter := Router.Group("api").Use(middleware.JWTAuth())
{
UserRouter.POST("createApi", api.CreateApi)
UserRouter.POST("deleteApi", api.DeleteApi)
ApiRouter.POST("createApi", api.CreateApi)
ApiRouter.POST("deleteApi", api.DeleteApi)
ApiRouter.POST("setAuthAndPath",api.SetAuthAndPath)
ApiRouter.POST("getApiList",api.GetApiList)
}
}
......@@ -6,9 +6,9 @@ import (
)
func InitBaseRouter(Router *gin.Engine) {
UserRouter := Router.Group("base")
BaseRouter := Router.Group("base")
{
UserRouter.POST("regist", api.Regist)
UserRouter.POST("login", api.Login)
BaseRouter.POST("regist", api.Regist)
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>
<div>
新建api
<div>
<div class="button-box clearflex">
<el-button @click="addApi" type="primary">新增api</el-button>
</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>
<script>
import { getApiList } from '@/api/api'
import infoList from '@/view/superAdmin/mixins/infoList'
export default {
name:"Api",
name: 'Api',
mixins:[infoList],
data() {
return {
listApi: getApiList,
listKey:'list'
}
},
methods: {
addApi() {},
editApi() {},
deleteApi() {}
},
created() {
this.getTableData()
}
}
</script>
<style lang="scss">
<style scoped lang="scss">
.button-box {
padding: 10px 20px;
.el-button {
float: right;
}
}
</style>
\ No newline at end of file
......@@ -67,15 +67,15 @@ import {
createAuthority
} from '@/api/authority'
import { getBaseMenuTree, addMenuAuthority, getMenuAuthority } from '@/api/menu'
import infoList from '@/view/superAdmin/mixins/infoList'
export default {
name: 'Authority',
mixins:[infoList],
data() {
return {
listApi: getAuthorityList,
listKey:'list',
activeUserId: 0,
page: 1,
total: 10,
pageSize: 10,
tableData: [],
treeData: [],
treeIds: [],
defaultProps: {
......@@ -91,16 +91,6 @@ export default {
}
},
methods: {
// 条数
handleSizeChange(val) {
this.pageSize = val
this.getAuthList()
},
// 页码
handleCurrentChange(val) {
this.page = val
this.getAuthList()
},
// 删除角色
deleteAuth(row) {
this.$confirm('此操作将永久删除该角色, 是否继续?', '提示', {
......@@ -115,7 +105,7 @@ export default {
type: 'success',
message: '删除成功!'
})
this.getAuthList()
this.getTableData()
}
})
.catch(() => {
......@@ -145,7 +135,7 @@ export default {
type: 'success',
message: '添加成功!'
})
this.getAuthList()
this.getTableData()
this.closeDialog()
}
this.initForm()
......@@ -155,11 +145,7 @@ export default {
addAuthority() {
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) {
const res1 = await getMenuAuthority({ authorityId: row.authorityId })
......@@ -194,11 +180,11 @@ export default {
// 获取基础menu树
},
created() {
this.getAuthList()
this.getTableData()
}
}
</script>
<style lang="scss">
<style scoped lang="scss">
.button-box {
padding: 10px 20px;
.el-button {
......
......@@ -80,14 +80,14 @@
<script>
import { getMenuList, addBaseMenu, deleteBaseMenu } from '@/api/menu'
import infoList from '@/view/superAdmin/mixins/infoList'
export default {
name: 'Menus',
mixins:[infoList],
data() {
return {
page: 1,
total: 10,
pageSize: 10,
tableData: [],
listApi:getMenuList,
listKey:'list',
dialogFormVisible: false,
form: {
path: '',
......@@ -103,14 +103,6 @@ export default {
}
},
methods: {
handleSizeChange(val) {
this.pageSize = val
this.getMenuList()
},
handleCurrentChange(val) {
this.page = val
this.getMenuList()
},
deleteMenu(ID) {
this.$confirm('此操作将永久删除所有角色下该菜单, 是否继续?', '提示', {
confirmButtonText: '确定',
......@@ -124,7 +116,7 @@ export default {
type: 'success',
message: '删除成功!'
})
this.getMenuList()
this.getTableData()
}
})
.catch(() => {
......@@ -158,7 +150,7 @@ export default {
type: 'success',
message: '添加成功!'
})
this.getAuthList()
this.getTableData()
this.closeDialog()
} else {
this.$message({
......@@ -174,17 +166,11 @@ export default {
this.form.parentId = String(id)
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>
<style lang="scss">
<style scoped lang="scss">
.button-box {
padding: 10px 20px;
.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.
先完成此消息的编辑!
想要评论请 注册