功能变化: 优化角色管理

pull/84/head
猿小天 2022-12-30 16:57:53 +08:00
parent 977e75dd50
commit 9f523f6eba
7 changed files with 52 additions and 16 deletions

View File

@ -156,14 +156,19 @@ class DeptViewSet(CustomModelViewSet):
def dept_lazy_tree(self, request, *args, **kwargs):
parent = self.request.query_params.get('parent')
queryset = self.filter_queryset(self.get_queryset())
if not parent:
if self.request.user.is_superuser:
queryset = queryset.filter(parent__isnull=True)
is_superuser = request.user.is_superuser
if is_superuser:
if parent:
queryset = Dept.objects.filter(parent=parent).values('id', 'name', 'parent')
else:
queryset = queryset.filter(id=self.request.user.dept_id)
data = queryset.filter(status=True).order_by('sort').values('name', 'id', 'parent')
return DetailResponse(data=data, msg="获取成功")
queryset = Dept.objects.filter(parent__isnull=True).values('id', 'name', 'parent')
else:
dept_list = request.user.role.values_list('dept', flat=True)
if parent:
queryset = Dept.objects.filter(id__in=dept_list,parent=parent).values('id', 'name', 'parent')
else:
queryset = Dept.objects.filter(id__in=dept_list,parent__isnull=True).values('id', 'name', 'parent')
return DetailResponse(data=queryset, msg="获取成功")
@action(methods=["GET"], detail=False, permission_classes=[AnonymousUserPermission])

View File

@ -10,7 +10,7 @@ from rest_framework import serializers
from rest_framework.decorators import action
from rest_framework.permissions import IsAuthenticated
from dvadmin.system.models import Role, Menu, MenuButton
from dvadmin.system.models import Role, Menu, MenuButton, Dept
from dvadmin.system.views.dept import DeptSerializer
from dvadmin.system.views.menu import MenuSerializer
from dvadmin.system.views.menu_button import MenuButtonSerializer
@ -62,6 +62,9 @@ class RoleCreateUpdateSerializer(CustomModelSerializer):
return super().validate(attrs)
def save(self, **kwargs):
is_superuser = self.request.user.is_superuser
if not is_superuser:
self.validated_data.pop('admin')
data = super().save(**kwargs)
data.dept.set(self.initial_data.get('dept', []))
data.menu.set(self.initial_data.get('menu', []))
@ -119,7 +122,7 @@ class RoleViewSet(CustomModelViewSet):
else:
menu_id_list = request.user.role.values_list('menu',flat=True)
queryset = Menu.objects.filter(id__in=menu_id_list)
queryset = self.filter_queryset(queryset)
# queryset = self.filter_queryset(queryset)
serializer = MenuPermissonSerializer(queryset, many=True,request=request)
return DetailResponse(data=serializer.data)
@ -201,3 +204,14 @@ class RoleViewSet(CustomModelViewSet):
else:
data = []
return DetailResponse(data=data)
@action(methods=['GET'], detail=False, permission_classes=[IsAuthenticated])
def data_scope_dept(self,request):
"""根据当前角色获取部门信息"""
is_superuser = request.user.is_superuser
if is_superuser:
queryset = Dept.objects.values('id','name','parent')
else:
dept_list = request.user.role.values_list('dept',flat=True)
queryset = Dept.objects.filter(id__in=dept_list).values('id','name','parent')
return DetailResponse(data=queryset)

View File

@ -279,7 +279,6 @@ export default {
* @param file
*/
handleAvatarSuccess (res, file) {
console.log(11, res)
this.userInfo.avatar = res
}
}

View File

@ -156,7 +156,6 @@ export const crudOptions = (vm) => {
title: '是否管理员',
key: 'admin',
sortable: true,
type: 'radio',
dict: {
data: vm.dictionary('button_whether_bool')
@ -164,11 +163,12 @@ export const crudOptions = (vm) => {
form: {
value: false,
component: {
placeholder: '请选择是否管理员'
}
placeholder: '请选择是否管理员',
show(context){
return vm.info.is_superuser?true:false}
},
}
},
{
title: '状态',
key: 'status',

View File

@ -64,12 +64,17 @@ import * as api from './api'
import { crudOptions } from './crud'
import { d2CrudPlus } from 'd2-crud-plus'
import rolePermission from '../rolePermission'
import { mapState } from 'vuex'
export default {
name: 'role',
mixins: [d2CrudPlus.crud],
components: {
rolePermission
},
computed: {
...mapState('d2admin/user', ['info'])
},
data () {
return {
rolePermissionShow: false,

View File

@ -47,7 +47,7 @@ export function DelObj (id) {
// 通过角色id,获取菜单数据
export function GetMenuData (obj) {
return request({
url: '/api/system/role/' + obj.id + '/roleId_get_menu/',
url: '/api/system/role/role_get_menu/',
method: 'get',
params: {}
}).then(res => {
@ -69,3 +69,16 @@ export function GetDataScope () {
params: {}
})
}
/**
* 获取角色部门
* @returns {*}
* @constructor
*/
export function GetDataScopeDept () {
return request({
url: '/api/system/role/data_scope_dept/',
method: 'get',
params: {}
})
}

View File

@ -215,7 +215,7 @@ export default {
},
//
getDeptData () {
deptApi.GetListAll().then(ret => {
api.GetDataScopeDept().then(ret => {
this.deptOptions = XEUtils.toArrayTree(ret.data, { parentKey: 'parent', strict: false })
})
},