diff --git a/User/utils.py b/User/utils.py index 1e98a64..48cddbe 100644 --- a/User/utils.py +++ b/User/utils.py @@ -656,7 +656,8 @@ def process_approval_flow(approval, business_record, current_approver, state, # 申请人待查看阶段:当前步骤是申请人待查看,申请人查看后完成(投标/立项不再给财务部) applicant = getattr(approval, 'applicant', None) if approval.state == "待查看" and applicant and approval.personincharge == applicant: - if state == "已通过" or not state: + # 已通过、已查看、未传 state 均视为申请人已查看完成 + if state == "已通过" or state == "已查看" or (state is None or state == ""): approval.state = "已通过" if "已通过" not in approval.content: approval.content = (approval.content or "") + ",申请人已查看" diff --git a/User/views.py b/User/views.py index df34f1d..8838699 100644 --- a/User/views.py +++ b/User/views.py @@ -1122,6 +1122,21 @@ class roxyExhibition(APIView): user_agents_page = paginator.page(paginator.num_pages) data = [] for info in user_agents_page.object_list: + # 申请人拉取待办列表时,若该条为「待查看」且当前用户是申请人,则视为已查看并更新为已通过(查看即更新状态) + if info.type in ("投标登记", "立项登记") and info.state == "待查看" and getattr(info, 'applicant', None) == user.username and info.personincharge == user.username: + try: + info.state = "已通过" + if "申请人已查看" not in (info.content or ""): + info.content = (info.content or "") + ",申请人已查看" + info.save(update_fields=['state', 'content']) + bid_or_project_id = info.user_id + if info.type == "投标登记": + Bid.objects.filter(id=bid_or_project_id, is_deleted=False).update(state="已通过") + else: + ProjectRegistration.objects.filter(id=bid_or_project_id, is_deleted=False).update(state="已通过") + except (ValueError, TypeError, AttributeError): + pass + title = info.title content = info.content @@ -1985,9 +2000,10 @@ class approvalProcessing(APIView): except ProjectRegistration.DoesNotExist: return Response({'status': 'error', 'message': '立项登记记录不存在或已被删除', 'code': 1}, status=status.HTTP_404_NOT_FOUND) - # 申请人待查看阶段:只传 type 和 id 不传 state 时,视为申请人查看完成(默认已通过) - if approval.state == "待查看" and getattr(approval, 'applicant', None) and approval.personincharge == approval.applicant and not state: - state = "已通过" + # 申请人待查看阶段:只传 type/id、或 state=已通过/已查看 时,视为申请人查看完成(更新为已通过) + if approval.state == "待查看" and getattr(approval, 'applicant', None) and approval.personincharge == approval.applicant: + if state in (None, "", "已通过", "已查看"): + state = "已通过" # 使用统一的审核流程处理函数 from User.utils import process_approval_flow @@ -2013,9 +2029,10 @@ class approvalProcessing(APIView): except Bid.DoesNotExist: return Response({'status': 'error', 'message': '投标登记记录不存在或已被删除', 'code': 1}, status=status.HTTP_404_NOT_FOUND) - # 申请人待查看阶段:只传 type 和 id 不传 state 时,视为申请人查看完成(默认已通过) - if approval.state == "待查看" and getattr(approval, 'applicant', None) and approval.personincharge == approval.applicant and not state: - state = "已通过" + # 申请人待查看阶段:只传 type/id、或 state=已通过/已查看 时,视为申请人查看完成(更新为已通过) + if approval.state == "待查看" and getattr(approval, 'applicant', None) and approval.personincharge == approval.applicant: + if state in (None, "", "已通过", "已查看"): + state = "已通过" # 使用统一的审核流程处理函数 from User.utils import process_approval_flow