功能变化: 部门懒加载优化
parent
b6c12332a1
commit
3b5435cab7
|
@ -120,6 +120,25 @@ class Dept(CoreModel):
|
||||||
help_text="上级部门",
|
help_text="上级部门",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def recursion_dept_info(cls, dept_id: int, dept_all_list=None, dept_list=None):
|
||||||
|
"""
|
||||||
|
递归获取部门的所有下级部门
|
||||||
|
:param dept_id: 需要获取的id
|
||||||
|
:param dept_all_list: 所有列表
|
||||||
|
:param dept_list: 递归list
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
if not dept_all_list:
|
||||||
|
dept_all_list = Dept.objects.values("id", "parent")
|
||||||
|
if dept_list is None:
|
||||||
|
dept_list = [dept_id]
|
||||||
|
for ele in dept_all_list:
|
||||||
|
if ele.get("parent") == dept_id:
|
||||||
|
dept_list.append(ele.get("id"))
|
||||||
|
cls.recursion_dept_info(ele.get("id"), dept_all_list, dept_list)
|
||||||
|
return list(set(dept_list))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
db_table = table_prefix + "system_dept"
|
db_table = table_prefix + "system_dept"
|
||||||
verbose_name = "部门表"
|
verbose_name = "部门表"
|
||||||
|
|
|
@ -163,7 +163,21 @@ class DeptViewSet(CustomModelViewSet):
|
||||||
else:
|
else:
|
||||||
queryset = Dept.objects.filter(parent__isnull=True).values('id', 'name', 'parent')
|
queryset = Dept.objects.filter(parent__isnull=True).values('id', 'name', 'parent')
|
||||||
else:
|
else:
|
||||||
|
data_range = request.user.role.values_list('data_range', flat=True)
|
||||||
|
user_dept_id = request.user.dept.id
|
||||||
|
dept_list = []
|
||||||
|
data_range_list = list(set(data_range))
|
||||||
|
for item in data_range_list:
|
||||||
|
if item in [0,2]:
|
||||||
|
dept_list = [user_dept_id]
|
||||||
|
elif item == 1:
|
||||||
|
dept_list = Dept.recursion_dept_info(dept_id=user_dept_id)
|
||||||
|
elif item == 3:
|
||||||
|
dept_list = Dept.objects.values_list('id',flat=True)
|
||||||
|
elif item == 4:
|
||||||
dept_list = request.user.role.values_list('dept',flat=True)
|
dept_list = request.user.role.values_list('dept',flat=True)
|
||||||
|
else:
|
||||||
|
dept_list = []
|
||||||
if parent:
|
if parent:
|
||||||
queryset = Dept.objects.filter(id__in=dept_list,parent=parent).values('id', 'name', 'parent')
|
queryset = Dept.objects.filter(id__in=dept_list,parent=parent).values('id', 'name', 'parent')
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue