功能变化: 部门懒加载优化
parent
b6c12332a1
commit
3b5435cab7
|
@ -120,6 +120,25 @@ class Dept(CoreModel):
|
|||
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:
|
||||
db_table = table_prefix + "system_dept"
|
||||
verbose_name = "部门表"
|
||||
|
|
|
@ -163,7 +163,21 @@ class DeptViewSet(CustomModelViewSet):
|
|||
else:
|
||||
queryset = Dept.objects.filter(parent__isnull=True).values('id', 'name', 'parent')
|
||||
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)
|
||||
else:
|
||||
dept_list = []
|
||||
if parent:
|
||||
queryset = Dept.objects.filter(id__in=dept_list,parent=parent).values('id', 'name', 'parent')
|
||||
else:
|
||||
|
|
Loading…
Reference in New Issue