diff --git a/backend/dvadmin/system/views/role_menu_button_permission.py b/backend/dvadmin/system/views/role_menu_button_permission.py index 604ebe2..d44fab2 100644 --- a/backend/dvadmin/system/views/role_menu_button_permission.py +++ b/backend/dvadmin/system/views/role_menu_button_permission.py @@ -180,51 +180,16 @@ class RoleMenuButtonPermissionViewSet(CustomModelViewSet): :return: menu,btns,columns """ params = request.query_params - role = params.get('role', None) - if role is None: - return ErrorResponse(msg="未获取到角色信息") is_superuser = request.user.is_superuser if is_superuser: queryset = Menu.objects.filter(status=1, is_catalog=True).values('name', 'id').all() else: role_id = request.user.role.values_list('id', flat=True) - menu_list = RoleMenuPermission.objects.filter(role__in=role_id).values_list('id', flat=True) + menu_list = RoleMenuPermission.objects.filter(role__in=role_id).values_list('menu__id', flat=True) queryset = Menu.objects.filter(status=1, is_catalog=True, id__in=menu_list).values('name', 'id').all() serializer = RoleMenuSerializer(queryset, many=True, request=request) data = serializer.data return DetailResponse(data=data) - # data = [] - # if is_superuser: - # queryset = Menu.objects.filter(status=1, is_catalog=False).values('name', 'id').all() - # else: - # role_id = request.user.role.values_list('id', flat=True) - # menu_list = RoleMenuPermission.objects.filter(role__in=role_id).values_list('id', flat=True) - # queryset = Menu.objects.filter(status=1, is_catalog=False, id__in=menu_list).values('name', 'id') - # for item in queryset: - # parent_list = Menu.get_all_parent(item['id']) - # names = [d["name"] for d in parent_list] - # completeName = "/".join(names) - # isCheck = RoleMenuPermission.objects.filter( - # menu__id=item['id'], - # role__id=role, - # ).exists() - # mbCheck = RoleMenuButtonPermission.objects.filter( - # menu_button=OuterRef("pk"), - # role__id=role, - # ) - # btns = MenuButton.objects.filter( - # menu__id=item['id'], - # ).annotate(isCheck=Exists(mbCheck)).values('id', 'name', 'value', 'isCheck', - # data_range=F('menu_button_permission__data_range')) - # dicts = { - # 'name': completeName, - # 'id': item['id'], - # 'isCheck': isCheck, - # 'btns': btns, - # - # } - # data.append(dicts) - # return DetailResponse(data=data) @action(methods=['PUT'], detail=True, permission_classes=[IsAuthenticated]) def set_role_premission(self, request, pk): diff --git a/web/src/views/system/role/components/PermissionComNew/api.ts b/web/src/views/system/role/components/PermissionComNew/api.ts index be37ef5..eee6d2a 100644 --- a/web/src/views/system/role/components/PermissionComNew/api.ts +++ b/web/src/views/system/role/components/PermissionComNew/api.ts @@ -26,7 +26,15 @@ export function setRolePremission(roleId:any,data:object) { }) } -export function getDataPermissionRange() { +export function getDataPermissionRange(query:object) { + return request({ + url: '/api/system/role_menu_button_permission/data_scope/', + method: 'get', + params:query + }) +} + +export function getDataPermissionRangeAll() { return request({ url: '/api/system/role_menu_button_permission/data_scope/', method: 'get', diff --git a/web/src/views/system/role/components/PermissionComNew/index.vue b/web/src/views/system/role/components/PermissionComNew/index.vue index 058f5fc..7770b05 100644 --- a/web/src/views/system/role/components/PermissionComNew/index.vue +++ b/web/src/views/system/role/components/PermissionComNew/index.vue @@ -124,7 +124,7 @@ watch( (val) => { drawerVisible.value = val; getMenuBtnPermission() - fetchData() + } ); const handleDrawerClose = () => { @@ -159,9 +159,9 @@ const getMenuBtnPermission = async () => { menuData.value = resMenu.data } -const fetchData = async () => { +const fetchData = async (btnId) => { try { - const resRange = await getDataPermissionRange(); + const resRange = await getDataPermissionRange({menu_button:btnId}); if (resRange?.code === 2000) { dataPermissionRange.value = resRange.data; } @@ -183,6 +183,7 @@ const handleSettingClick = (record: MenusType, btnId: number) => { menuCurrent.value = record; menuBtnCurrent.value = btnId; dialogVisible.value = true; + fetchData(btnId) }; const handleColumnChange = (val: boolean, record: MenusType, btnType: string) => {