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