From 515f720a59576cc906d14c38b19dedb4e46ee21a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8C=BF=E5=B0=8F=E5=A4=A9?= <1638245306@qq.com> Date: Fri, 18 Aug 2023 00:39:14 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=8F=9C=E5=8D=95=E5=92=8C=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90=E8=8C=83=E5=9B=B4=E6=8E=88=E6=9D=83=E5=AE=8C?= =?UTF-8?q?=E6=88=90;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/role_menu_button_permission.py | 20 +- .../role/components/PermissionComNew/api.ts | 12 + .../components/PermissionComNew/index.vue | 571 +++++++++--------- .../role/components/PermissionComNew/types.ts | 6 +- 4 files changed, 324 insertions(+), 285 deletions(-) diff --git a/backend/dvadmin/system/views/role_menu_button_permission.py b/backend/dvadmin/system/views/role_menu_button_permission.py index f1d5b00..1b3386e 100644 --- a/backend/dvadmin/system/views/role_menu_button_permission.py +++ b/backend/dvadmin/system/views/role_menu_button_permission.py @@ -47,6 +47,7 @@ class RoleButtonPermissionSerializer(CustomModelSerializer): 角色按钮权限 """ isCheck = serializers.SerializerMethodField() + data_range = serializers.SerializerMethodField() def get_isCheck(self, instance): params = self.request.query_params @@ -55,9 +56,20 @@ class RoleButtonPermissionSerializer(CustomModelSerializer): role__id=params.get('role'), ).exists() + def get_data_range(self, instance): + params = self.request.query_params + obj = RoleMenuButtonPermission.objects.filter( + menu_button__id=instance['id'], + role__id=params.get('role'), + ).first() + if obj is None: + return None + return obj.data_range + + class Meta: model = MenuButton - fields = ['id','name','value','isCheck'] + fields = ['id','name','value','isCheck','data_range'] class RoleMenuPermissionSerializer(CustomModelSerializer): """ @@ -122,7 +134,7 @@ class RoleMenuButtonPermissionViewSet(CustomModelViewSet): @action(methods=['PUT'], detail=True, permission_classes=[IsAuthenticated]) def set_role_premission(self,request,pk): """ - 对角色授权: + 对角色的菜单和按钮授权: :param request: :param pk: role :return: @@ -137,10 +149,12 @@ class RoleMenuButtonPermissionViewSet(CustomModelViewSet): RoleMenuPermission.objects.create(role_id=pk, menu_id=menu.get('id')) for btn in menu.get('btns'): if btn.get('isCheck'): - RoleMenuButtonPermission.objects.create(role_id=pk, menu_button_id=btn.get('id')) + instance = RoleMenuButtonPermission.objects.create(role_id=pk, menu_button_id=btn.get('id'),data_range=btn.get('data_range')) + instance.dept.set(btn.get('dept',[])) return DetailResponse(msg="授权成功") + @action(methods=['GET'], detail=False, permission_classes=[IsAuthenticated]) def role_menu_get_button(self, request): """ diff --git a/web/src/views/system/role/components/PermissionComNew/api.ts b/web/src/views/system/role/components/PermissionComNew/api.ts index 12481e5..be37ef5 100644 --- a/web/src/views/system/role/components/PermissionComNew/api.ts +++ b/web/src/views/system/role/components/PermissionComNew/api.ts @@ -45,3 +45,15 @@ export function getDataPermissionMenu() { method: 'get' }) } + +/** + * 设置按钮的数据范围 + */ +export function setBtnDatarange(roleId:number,data:object) { + return request({ + url: `/api/system/role_menu_button_permission/${roleId}/set_btn_datarange/`, + method: 'put', + data + }) +} + diff --git a/web/src/views/system/role/components/PermissionComNew/index.vue b/web/src/views/system/role/components/PermissionComNew/index.vue index 20def79..7bc1d4e 100644 --- a/web/src/views/system/role/components/PermissionComNew/index.vue +++ b/web/src/views/system/role/components/PermissionComNew/index.vue @@ -1,119 +1,134 @@ - + - 当前角色: {{props.roleName}} + + + 当前角色: + {{ props.roleName }} + + + + + 保存菜单授权 + + + + - - 保存菜单授权 + + + + + + + + {{ item.name }} + + + + + {{ btn.name }} + + + + + + + 允许对这些数据有以下操作 + + + {{ btn.data_range!==null ? `${btn.name}(${formatDataRange(btn.data_range)})` : btn.name }} + + + + + + - - - - - - - {{ item.name }} - - - - {{ btn.name }} - - - - - - 允许对这些数据有以下操作 - - - {{ btn.role ? `${btn.label}(${btn.role})` : btn.name }} - - - - - - + + 对这些数据有以下字段权限 - - 对这些数据有以下字段权限 + + 全部字段可查看可编辑 + 全部字段仅可查看不可编辑 + 自定义字段权限 + - - 全部字段可查看可编辑 - 全部字段仅可查看不可编辑 - 自定义字段权限 - + + + + 字段 + - - - - 字段 - + + + {{ btn.label }} + + + - - - {{ btn.label }} - - - + + {{ c_item.name }} + + + + + + + + + - - {{ c_item.name }} - - - - - - - - - - - - - - - - - - - - - 确定 - 取消 - - - - + + + + + + + + + + 确定 + 取消 + + + + diff --git a/web/src/views/system/role/components/PermissionComNew/types.ts b/web/src/views/system/role/components/PermissionComNew/types.ts index e02c980..c336389 100644 --- a/web/src/views/system/role/components/PermissionComNew/types.ts +++ b/web/src/views/system/role/components/PermissionComNew/types.ts @@ -20,10 +20,10 @@ export interface CustomDataPermissionMenuType { } export interface MenuDataType { - key: string; + id: string; name: string; isCheck: boolean; radio: string; - btns: { label: string; value: string; isCheck: boolean; role: string; }[]; + btns: { id:number,label: string; value: string; isCheck: boolean; data_range: number;dept:object }[]; columns: { [key: string]: boolean | string; }[] -} \ No newline at end of file +}
+ + {{ item.name }} + +
允许对这些数据有以下操作
- - {{ item.name }} - -
- {{ btn.role ? `${btn.label}(${btn.role})` : btn.name }} - - - -
对这些数据有以下字段权限