功能变化: 优化角色管理
parent
977e75dd50
commit
9f523f6eba
|
@ -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])
|
||||
|
|
|
@ -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)
|
|
@ -279,7 +279,6 @@ export default {
|
|||
* @param file
|
||||
*/
|
||||
handleAvatarSuccess (res, file) {
|
||||
console.log(11, res)
|
||||
this.userInfo.avatar = res
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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: {}
|
||||
})
|
||||
}
|
||||
|
|
|
@ -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 })
|
||||
})
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue