功能变化: 优化角色管理
parent
977e75dd50
commit
9f523f6eba
|
@ -156,14 +156,19 @@ class DeptViewSet(CustomModelViewSet):
|
||||||
|
|
||||||
def dept_lazy_tree(self, request, *args, **kwargs):
|
def dept_lazy_tree(self, request, *args, **kwargs):
|
||||||
parent = self.request.query_params.get('parent')
|
parent = self.request.query_params.get('parent')
|
||||||
queryset = self.filter_queryset(self.get_queryset())
|
is_superuser = request.user.is_superuser
|
||||||
if not parent:
|
if is_superuser:
|
||||||
if self.request.user.is_superuser:
|
if parent:
|
||||||
queryset = queryset.filter(parent__isnull=True)
|
queryset = Dept.objects.filter(parent=parent).values('id', 'name', 'parent')
|
||||||
else:
|
else:
|
||||||
queryset = queryset.filter(id=self.request.user.dept_id)
|
queryset = Dept.objects.filter(parent__isnull=True).values('id', 'name', 'parent')
|
||||||
data = queryset.filter(status=True).order_by('sort').values('name', 'id', 'parent')
|
else:
|
||||||
return DetailResponse(data=data, msg="获取成功")
|
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])
|
@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.decorators import action
|
||||||
from rest_framework.permissions import IsAuthenticated
|
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.dept import DeptSerializer
|
||||||
from dvadmin.system.views.menu import MenuSerializer
|
from dvadmin.system.views.menu import MenuSerializer
|
||||||
from dvadmin.system.views.menu_button import MenuButtonSerializer
|
from dvadmin.system.views.menu_button import MenuButtonSerializer
|
||||||
|
@ -62,6 +62,9 @@ class RoleCreateUpdateSerializer(CustomModelSerializer):
|
||||||
return super().validate(attrs)
|
return super().validate(attrs)
|
||||||
|
|
||||||
def save(self, **kwargs):
|
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 = super().save(**kwargs)
|
||||||
data.dept.set(self.initial_data.get('dept', []))
|
data.dept.set(self.initial_data.get('dept', []))
|
||||||
data.menu.set(self.initial_data.get('menu', []))
|
data.menu.set(self.initial_data.get('menu', []))
|
||||||
|
@ -119,7 +122,7 @@ class RoleViewSet(CustomModelViewSet):
|
||||||
else:
|
else:
|
||||||
menu_id_list = request.user.role.values_list('menu',flat=True)
|
menu_id_list = request.user.role.values_list('menu',flat=True)
|
||||||
queryset = Menu.objects.filter(id__in=menu_id_list)
|
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)
|
serializer = MenuPermissonSerializer(queryset, many=True,request=request)
|
||||||
return DetailResponse(data=serializer.data)
|
return DetailResponse(data=serializer.data)
|
||||||
|
|
||||||
|
@ -201,3 +204,14 @@ class RoleViewSet(CustomModelViewSet):
|
||||||
else:
|
else:
|
||||||
data = []
|
data = []
|
||||||
return DetailResponse(data=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
|
* @param file
|
||||||
*/
|
*/
|
||||||
handleAvatarSuccess (res, file) {
|
handleAvatarSuccess (res, file) {
|
||||||
console.log(11, res)
|
|
||||||
this.userInfo.avatar = res
|
this.userInfo.avatar = res
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,7 +156,6 @@ export const crudOptions = (vm) => {
|
||||||
title: '是否管理员',
|
title: '是否管理员',
|
||||||
key: 'admin',
|
key: 'admin',
|
||||||
sortable: true,
|
sortable: true,
|
||||||
|
|
||||||
type: 'radio',
|
type: 'radio',
|
||||||
dict: {
|
dict: {
|
||||||
data: vm.dictionary('button_whether_bool')
|
data: vm.dictionary('button_whether_bool')
|
||||||
|
@ -164,11 +163,12 @@ export const crudOptions = (vm) => {
|
||||||
form: {
|
form: {
|
||||||
value: false,
|
value: false,
|
||||||
component: {
|
component: {
|
||||||
placeholder: '请选择是否管理员'
|
placeholder: '请选择是否管理员',
|
||||||
}
|
show(context){
|
||||||
|
return vm.info.is_superuser?true:false}
|
||||||
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
title: '状态',
|
title: '状态',
|
||||||
key: 'status',
|
key: 'status',
|
||||||
|
|
|
@ -64,12 +64,17 @@ import * as api from './api'
|
||||||
import { crudOptions } from './crud'
|
import { crudOptions } from './crud'
|
||||||
import { d2CrudPlus } from 'd2-crud-plus'
|
import { d2CrudPlus } from 'd2-crud-plus'
|
||||||
import rolePermission from '../rolePermission'
|
import rolePermission from '../rolePermission'
|
||||||
|
import { mapState } from 'vuex'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'role',
|
name: 'role',
|
||||||
mixins: [d2CrudPlus.crud],
|
mixins: [d2CrudPlus.crud],
|
||||||
components: {
|
components: {
|
||||||
rolePermission
|
rolePermission
|
||||||
},
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState('d2admin/user', ['info'])
|
||||||
|
},
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
rolePermissionShow: false,
|
rolePermissionShow: false,
|
||||||
|
|
|
@ -47,7 +47,7 @@ export function DelObj (id) {
|
||||||
// 通过角色id,获取菜单数据
|
// 通过角色id,获取菜单数据
|
||||||
export function GetMenuData (obj) {
|
export function GetMenuData (obj) {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/system/role/' + obj.id + '/roleId_get_menu/',
|
url: '/api/system/role/role_get_menu/',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {}
|
params: {}
|
||||||
}).then(res => {
|
}).then(res => {
|
||||||
|
@ -69,3 +69,16 @@ export function GetDataScope () {
|
||||||
params: {}
|
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 () {
|
getDeptData () {
|
||||||
deptApi.GetListAll().then(ret => {
|
api.GetDataScopeDept().then(ret => {
|
||||||
this.deptOptions = XEUtils.toArrayTree(ret.data, { parentKey: 'parent', strict: false })
|
this.deptOptions = XEUtils.toArrayTree(ret.data, { parentKey: 'parent', strict: false })
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue