From 330dcab62e1e08e9137a617d0df2b5ca26a0ce1e Mon Sep 17 00:00:00 2001 From: 27942 <1313123@342> Date: Sat, 31 Jan 2026 13:23:50 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=87=AA=E5=8A=A8=E5=BB=BA?= =?UTF-8?q?=E6=A1=88=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- User/utils.py | 7 ++++--- User/views.py | 6 ++++++ business/views.py | 18 ++++++++++++------ 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/User/utils.py b/User/utils.py index d722165..4e574b5 100644 --- a/User/utils.py +++ b/User/utils.py @@ -710,11 +710,12 @@ def process_approval_flow(approval, business_record, current_approver, state, return True, None - # 申请人待查看阶段:当前步骤是申请人待查看,申请人查看后完成(投标/立项不再给财务部) + # 申请人待查看阶段:当前步骤是申请人待查看,申请人查看后完成(投标/立项/案件变更等) applicant = getattr(approval, 'applicant', None) if approval.state == "待查看" and applicant and approval.personincharge == applicant: - # 已通过、已查看、未传 state 均视为申请人已查看完成 - if state == "已通过" or state == "已查看" or (state is None or state == ""): + # 已通过、已查看、未传 state 或前端传 undefined/null 等均视为申请人已查看完成 + state_str = (state or "").strip().lower() if isinstance(state, str) else "" + if state == "已通过" or state == "已查看" or state is None or state == "" or state_str in ("undefined", "null"): approval.state = "已通过" # 立项登记在进入待查看时已写入 completeTiem(最后审批人通过时间),此处不改写;其他类型或未写时补写 if not approval.completeTiem: diff --git a/User/views.py b/User/views.py index d51ba26..5b8e755 100644 --- a/User/views.py +++ b/User/views.py @@ -2104,6 +2104,12 @@ class approvalProcessing(APIView): if approval.state == "审核中" and not state: return Response({'status': 'error', 'message': '缺少参数state(审核状态:已通过/未通过)', 'code': 1}, status=status.HTTP_400_BAD_REQUEST) + # 申请人待查看阶段:只传 type/id、或 state=已通过/已查看、或不传/undefined 时,视为申请人查看完成(更新为已通过,消除待办) + if approval.state == "待查看" and getattr(approval, 'applicant', None) and approval.personincharge == approval.applicant: + state_normalized = (state or "").strip().lower() if isinstance(state, str) else "" + if state in (None, "", "已通过", "已查看") or state_normalized in ("undefined", "null"): + state = "已通过" + from User.utils import process_approval_flow current_approver = approval.personincharge is_completed, error = process_approval_flow( diff --git a/business/views.py b/business/views.py index 8ad57d8..2cdb9c0 100644 --- a/business/views.py +++ b/business/views.py @@ -3800,15 +3800,16 @@ class CaseChangeRequestCreate(APIView): class CaseChangeRequestList(APIView): """ 案件变更申请列表查询。 - 变更申请表格:仅展示审批通过的数据,传 state=已通过 或 approved_only=true。 - 我的申请/全部:不传 state 或传具体状态可查全部或按状态筛选。 + 默认仅展示审批通过的数据(审批通过后才进变更申请表格)。 + 我的申请/全部:传 show_all=true 或 state=审核中,待查看,已通过,未通过 可查全部或按状态筛选。 """ def post(self, request, *args, **kwargs): page = request.data.get('page') per_page = request.data.get('per_page') case_id = request.data.get('case_id') # 可选:按案件ID筛选 - state = request.data.get('state') # 可选:按状态筛选,如 已通过(变更申请表格仅看已通过) - approved_only = request.data.get('approved_only') # 可选:为 true 时仅返回已通过,等同 state=已通过 + state = request.data.get('state') # 可选:按状态筛选;不传且不传 show_all 时默认只返回已通过 + approved_only = request.data.get('approved_only') # 可选:为 true 时仅返回已通过 + show_all = request.data.get('show_all') # 可选:为 true 时返回全部状态(我的申请用),不传则默认只返回已通过 # 参数验证和默认值处理 try: @@ -3829,8 +3830,10 @@ class CaseChangeRequestList(APIView): Q_obj = Q(is_deleted=False) if case_id: Q_obj &= Q(case_id=case_id) - # 变更申请表格:仅展示审批通过的数据 - if approved_only in (True, 'true', '1', 1) or state == '已通过': + # 变更申请表格:默认只展示审批通过的数据;传 show_all=true 可查全部(我的申请) + if show_all in (True, 'true', '1', 1): + pass # 不按状态筛选,返回全部 + elif approved_only in (True, 'true', '1', 1) or state == '已通过': Q_obj &= Q(state='已通过') elif state: # 支持单状态或逗号分隔多状态 @@ -3840,6 +3843,9 @@ class CaseChangeRequestList(APIView): Q_obj &= Q(state__in=states) else: Q_obj &= Q(state=state) + else: + # 默认:仅展示已通过,数据审批通过后才进变更申请表格 + Q_obj &= Q(state='已通过') queryset = CaseChangeRequest.objects.filter(Q_obj).order_by('-id') total = queryset.count()