From a84da888ce277bd7d96797419cc54cf88bab1f3e Mon Sep 17 00:00:00 2001 From: 27942 Date: Tue, 27 Jan 2026 01:12:24 +0800 Subject: [PATCH] hahagahaha --- User/utils.py | 12 +++++++++--- User/views.py | 8 +++++--- finance/views.py | 3 ++- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/User/utils.py b/User/utils.py index 54068f5..e2e61ce 100644 --- a/User/utils.py +++ b/User/utils.py @@ -232,9 +232,11 @@ def create_team_approval(team_name, title, content, approval_type, user_id, requ 根据团队类型创建审批流程 规则: - - 个人团队(personal):不需要审核人,直接抄送财务(personincharge设为"财务") + - 个人团队(personal):不需要审核人,直接抄送财务(personincharge设为财务部ID) - 团队(team):需要指定审核人(可以多个),审核通过后才抄送财务 + 注意:personincharge字段统一使用财务部ID(优先)或回退到"财务"字符串 + Args: team_name: 团队名称 title: 审批标题 @@ -258,11 +260,13 @@ def create_team_approval(team_name, title, content, approval_type, user_id, requ if team.team_type == 'personal': # 个人团队:直接抄送财务,不需要审核人 + # 使用财务部ID(优先)或回退到"财务"字符串 + finance_personincharge = get_finance_personincharge_value() approval = Approval.objects.create( title=title, content=content, times=today, - personincharge='财务', # 直接抄送财务 + personincharge=finance_personincharge, # 使用财务部ID state='已抄送财务', # 直接标记为已抄送财务 type=approval_type, user_id=str(user_id) @@ -719,10 +723,12 @@ def create_approval_with_team_logic(team_name, approvers, title, content, approv 根据团队类型创建审批记录(统一逻辑) 规则: - - 个人团队(personal):直接抄送财务(personincharge="财务",state="已抄送财务") + - 个人团队(personal):直接抄送财务(personincharge=财务部ID,state="已抄送财务") - 团队(team):需要审核人,按顺序审核,最后抄送财务 - 无团队:直接抄送财务 + 注意:personincharge字段统一使用财务部ID(优先)或回退到"财务"字符串 + Args: team_name: 团队名称 approvers: 审核人列表(可以是数组或字符串,多人团队时需要) diff --git a/User/views.py b/User/views.py index add1864..2f47c9c 100644 --- a/User/views.py +++ b/User/views.py @@ -771,8 +771,9 @@ class roxyExhibition(APIView): user_departments = user.department.values_list('username', flat=True) user_department_names = list(user_departments) - # 判断用户是否是财务部人员:只通过部门名称判断 - is_finance_user = '财务部' in user_department_names + # 判断用户是否是财务部人员:通过部门名称判断(包含"财务"关键词) + # 这与 get_finance_personincharge_candidates() 中的查询条件保持一致 + is_finance_user = any('财务' in name for name in user_department_names) finance_personincharge_candidates = get_finance_personincharge_candidates() # 构建查询条件: @@ -2604,7 +2605,8 @@ class ApprovalStatusCheck(APIView): current_user = User.objects.prefetch_related('department').get(token=token, is_deleted=False) user_departments = current_user.department.values_list('username', flat=True) user_department_names = list(user_departments) - is_finance_user = '财务部' in user_department_names + # 判断是否是财务部人员:包含"财务"关键词的部门 + is_finance_user = any('财务' in name for name in user_department_names) # 如果是财务部人员,且当前审批状态是"已抄送财务",则自动标记为已查看(已通过) # 财务部只需要查看,不需要审批,查看后直接完成 diff --git a/finance/views.py b/finance/views.py index d79fcd6..d394f90 100644 --- a/finance/views.py +++ b/finance/views.py @@ -1447,10 +1447,11 @@ class confirmdisplay(APIView): user_department_names = list(user_departments) # 判断是否有权限查看所有数据:管委会角色或财务部角色或财务部部门 + # 使用模糊匹配"财务"关键词,与 get_finance_personincharge_candidates() 保持一致 has_all_permission = ( '管委会' in user_role_names or '财务部' in user_role_names or - '财务部' in user_department_names + any('财务' in name for name in user_department_names) ) # 构建查询条件