From 1812619e6ca4d3fb8c868dbcfef00601570fa71c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8C=BF=E5=B0=8F=E5=A4=A9?= <1638245306@qq.com> Date: Tue, 7 Feb 2023 20:58:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=8F=98=E5=8C=96:=20?= =?UTF-8?q?=E6=8E=88=E6=9D=83=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/dvadmin/system/models.py | 2 +- .../views/role_menu_button_permission.py | 16 + web/src/views/system/role/curd.tsx | 63 +--- web/src/views/system/rolePermission/api.ts | 25 ++ web/src/views/system/rolePermission/index.vue | 306 ++++++++++-------- 5 files changed, 231 insertions(+), 181 deletions(-) diff --git a/backend/dvadmin/system/models.py b/backend/dvadmin/system/models.py index 7021007..5f58c6c 100644 --- a/backend/dvadmin/system/models.py +++ b/backend/dvadmin/system/models.py @@ -228,7 +228,7 @@ class RoleMenuButtonPermission(CoreModel): ) data_range = models.IntegerField(default=0, choices=DATASCOPE_CHOICES, verbose_name="数据权限范围", help_text="数据权限范围") - dept = models.ManyToManyField(to="Dept", verbose_name="数据权限-关联部门", db_constraint=False, + dept = models.ManyToManyField(to="Dept",blank=True,null=True,verbose_name="数据权限-关联部门", db_constraint=False, help_text="数据权限-关联部门") class Meta: db_table = table_prefix + "role_menu_button_permission" diff --git a/backend/dvadmin/system/views/role_menu_button_permission.py b/backend/dvadmin/system/views/role_menu_button_permission.py index 285b103..abed463 100644 --- a/backend/dvadmin/system/views/role_menu_button_permission.py +++ b/backend/dvadmin/system/views/role_menu_button_permission.py @@ -181,3 +181,19 @@ class RoleMenuButtonPermissionViewSet(CustomModelViewSet): return DetailResponse(data=data) return ErrorResponse(msg="参数错误") + @action(methods=['get'],detail=False) + def menu_to_button(self,request): + params = request.query_params + if params: + menu_id = params.get('menu',None) + if menu_id is None: + return ErrorResponse(msg="未获取到参数") + role_id = params.get('role', None) + if role_id is None: + return ErrorResponse(msg="未获取到参数") + queryset = RoleMenuButtonPermission.objects.filter(role=role_id,menu=menu_id).values( + 'data_range', + 'menu_button' + ) + return DetailResponse(data=queryset) + return ErrorResponse(msg="未获取到参数") \ No newline at end of file diff --git a/web/src/views/system/role/curd.tsx b/web/src/views/system/role/curd.tsx index adf867c..2684f95 100644 --- a/web/src/views/system/role/curd.tsx +++ b/web/src/views/system/role/curd.tsx @@ -1,69 +1,26 @@ import {CrudOptions, AddReq, DelReq, EditReq, dict, CrudExpose} from '@fast-crud/fast-crud'; import _ from 'lodash-es'; +import * as api from "./api"; interface CreateCrudOptionsTypes { crudOptions: CrudOptions; } //此处为crudOptions配置 export const createCrudOptions = function ({crudExpose,rolePermission}: {crudExpose: CrudExpose,rolePermission:any}): CreateCrudOptionsTypes { - //本地模拟后台crud接口方法 ----开始 - const records = [ - { - id: 1, - modifier_name: '超级管理员', - creator_name: '超级管理员', - create_datetime: '2022-04-08 11:02:22', - update_datetime: '2022-05-31 02:09:00', - description: null, - modifier: '1', - dept_belong_id: '1', - name: '管理员', - key: 'admin', - sort: 1, - status: true, - admin: true, - data_range: 3, - remark: null, - creator: 1, - dept: [], - menu: [1, 2, 10, 20, 7, 8, 11, 16, 17, 5, 13, 15, 4, 18, 19, 3, 9], - permission: [ - 53, 4, 8, 13, 18, 32, 37, 42, 45, 49, 55, 2, 6, 11, 16, 21, 26, 30, 35, 40, 52, 1, 7, 12, 17, 22, 27, 31, 36, 41, 46, 50, 54, 3, 9, 14, 19, - 23, 25, 33, 38, 43, 47, 48, 5, 10, 15, 20, 24, 28, 34, 39, 44, 51, 29, - ], - }, - ]; + const pageRequest = async (query: any) => { - return { - records, - currentPage: 1, - pageSize: 20, - total: records.length, - }; + return await api.GetList(query); }; - const editRequest = async (req: EditReq) => { - const target = _.find(records, (item) => { - return req.row.id === item.id; - }); - _.merge(target, req.form); - return target; + const editRequest = async ({ form, row }: EditReq) => { + form.id = row.id; + return await api.UpdateObj(form); }; - const delRequest = async (req: DelReq) => { - _.remove(records, (item) => { - return item.id === req.row.id; - }); + const delRequest = async ({ row }: DelReq) => { + return await api.DelObj(row.id); }; - - const addRequest = async (req: AddReq) => { - const maxRecord = _.maxBy(records, (item) => { - return item.id; - }); - req.form.id = (maxRecord?.id || 0) + 1; - records.push(req.form); - return req.form; + const addRequest = async ({ form }: AddReq) => { + return await api.AddObj(form); }; - //本地模拟后台crud接口方法 ----结束 - return { crudOptions: { diff --git a/web/src/views/system/rolePermission/api.ts b/web/src/views/system/rolePermission/api.ts index 61fcd55..41cd192 100644 --- a/web/src/views/system/rolePermission/api.ts +++ b/web/src/views/system/rolePermission/api.ts @@ -49,3 +49,28 @@ export function GetDataScopeDept () { params: {} }) } + +/*** + * 新增权限 + * @param data + * @constructor + */ +export function CreateObj(data:any) { + return request({ + url: '/api/system/role_menu_button_permission/', + method: 'post', + data:data + }); +} + +/*** + * 根据菜单获取菜单下按钮 + * @param params + */ +export function getObj(params:any) { + return request({ + url: '/api/system/role_menu_button_permission/menu_to_button/', + method: 'get', + params:params + }); +} diff --git a/web/src/views/system/rolePermission/index.vue b/web/src/views/system/rolePermission/index.vue index 0327a15..67b3f1b 100644 --- a/web/src/views/system/rolePermission/index.vue +++ b/web/src/views/system/rolePermission/index.vue @@ -8,90 +8,99 @@ >
- - - - - - - - - -
- 按钮授权 - 新增 - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - + - +