Browse Source

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

main
pixel 5 years ago
parent
commit
1821468a8c
  1. 49
      QMPlusServer/controller/api/api.go
  2. 2
      QMPlusServer/controller/api/authority.go
  3. 2
      QMPlusServer/controller/api/menu.go
  4. 8
      QMPlusServer/model/dbModel/api.go
  5. 17
      QMPlusServer/model/dbModel/api_authority.go
  6. 8
      QMPlusServer/router/api.go
  7. 6
      QMPlusServer/router/base.go
  8. 20
      QMPlusVuePage/src/api/api.js
  9. 56
      QMPlusVuePage/src/view/superAdmin/api/api.vue
  10. 32
      QMPlusVuePage/src/view/superAdmin/authority/authority.vue
  11. 30
      QMPlusVuePage/src/view/superAdmin/menu/menu.vue
  12. 28
      QMPlusVuePage/src/view/superAdmin/mixins/infoList.js

49
QMPlusServer/controller/api/api.go

@ -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,
})
}
}

2
QMPlusServer/controller/api/authority.go

@ -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,

2
QMPlusServer/controller/api/menu.go

@ -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,

8
QMPlusServer/model/dbModel/api.go

@ -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
}

17
QMPlusServer/model/dbModel/api_authority.go

@ -1,6 +1,21 @@
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
}

8
QMPlusServer/router/api.go

@ -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
QMPlusServer/router/base.go

@ -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)
}
}

20
QMPlusVuePage/src/api/api.js

@ -0,0 +1,20 @@
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
})
}

56
QMPlusVuePage/src/view/superAdmin/api/api.vue

@ -1,14 +1,62 @@
<template>
<div>
新建api
<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'
}
</script>
<style lang="scss">
},
methods: {
addApi() {},
editApi() {},
deleteApi() {}
},
created() {
this.getTableData()
}
}
</script>
<style scoped lang="scss">
.button-box {
padding: 10px 20px;
.el-button {
float: right;
}
}
</style>

32
QMPlusVuePage/src/view/superAdmin/authority/authority.vue

@ -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 {

30
QMPlusVuePage/src/view/superAdmin/menu/menu.vue

@ -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 {

28
QMPlusVuePage/src/view/superAdmin/mixins/infoList.js

@ -0,0 +1,28 @@
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()
}
}
Loading…
Cancel
Save