From 8229ad924847da572f26767970369b7861dafee3 Mon Sep 17 00:00:00 2001 From: luo Date: Sat, 12 Sep 2026 11:45:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=80=80=E6=AC=BE=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E7=94=B3=E8=AF=B7=E9=80=80=E6=AC=BE=E6=98=BE=E7=A4=BA=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/types/api/refund.ts | 15 +++++++++++++- src/views/finance/refund/detail.vue | 32 ++++++++++++++--------------- src/views/finance/refund/index.vue | 25 ++++++++-------------- 3 files changed, 38 insertions(+), 34 deletions(-) diff --git a/src/types/api/refund.ts b/src/types/api/refund.ts index 90e3e84..e732fb8 100644 --- a/src/types/api/refund.ts +++ b/src/types/api/refund.ts @@ -10,6 +10,19 @@ export enum RefundStatus { RETURNED = 4 // 已退回 } +// 审批状态 +export enum RefundApprovalStatus { + SUBMITTING = 0, // 提交中 + APPROVING = 1, // 审批中 + APPROVED = 2, // 已通过 + REJECTED = 3, // 已拒绝 + REVOKED = 4, // 已撤销 + REVOKED_AFTER_APPROVED = 5, // 通过后撤销 + DELETED = 6, // 已删除 + SUBMIT_FAILED = 7, // 提交失败 + RESULT_UNKNOWN = 8 // 提交结果未知 +} + export interface RefundAttachment { file_key: string file_name?: string @@ -70,7 +83,7 @@ export interface Refund { approval_provider?: 'wecom' | null approval_instance_id?: number | null approval_source?: 'none' | 'legacy' | 'wecom' | null // 审批来源 - approval_status?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | null // 审批状态 + approval_status?: RefundApprovalStatus | null // 审批状态 approval_status_name?: string | null // 审批状态名称 current_approver_summary?: string | null // 当前审批人摘要 processing_status?: string | null // 业务处理状态 diff --git a/src/views/finance/refund/detail.vue b/src/views/finance/refund/detail.vue index 9f94e74..886df63 100644 --- a/src/views/finance/refund/detail.vue +++ b/src/views/finance/refund/detail.vue @@ -113,7 +113,13 @@ import DetailPage from '@/components/common/DetailPage.vue' import type { DetailSection } from '@/components/common/DetailPage.vue' import { RefundService } from '@/api/modules' - import type { Refund, ResubmitRefundRequest, RefundAttachment } from '@/types/api' + import { + RefundApprovalStatus, + RefundStatus, + type Refund, + type ResubmitRefundRequest, + type RefundAttachment + } from '@/types/api' import { fenToYuan, formatDateTime, yuanToFen } from '@/utils/business/format' import { toVoucherKeyList, getErrorMessage } from '@/utils/business' import PaymentVoucherDialog from '@/components/business/PaymentVoucherDialog.vue' @@ -456,22 +462,14 @@ resubmitUploadRef.value?.clearFiles(false) } - const canResubmit = (item: Refund) => { - const statusText = [item.approval_status, item.approval_status_name, item.status_name] - .filter(Boolean) - .join(' ') - .toLowerCase() - - return ( - item.status === 3 || - statusText.includes('reject') || - statusText.includes('revoke') || - statusText.includes('delete') || - statusText.includes('驳回') || - statusText.includes('撤销') || - statusText.includes('删除') - ) - } + const canResubmit = (item: Refund) => + item.status === RefundStatus.REJECTED || + item.status === RefundStatus.RETURNED || + item.approval_status === RefundApprovalStatus.REJECTED || + item.approval_status === RefundApprovalStatus.REVOKED || + item.approval_status === RefundApprovalStatus.REVOKED_AFTER_APPROVED || + item.approval_status === RefundApprovalStatus.SUBMIT_FAILED || + item.approval_status === RefundApprovalStatus.RESULT_UNKNOWN const handleShowResubmit = () => { if (!refund.value || !canResubmit(refund.value)) return diff --git a/src/views/finance/refund/index.vue b/src/views/finance/refund/index.vue index c423e7a..76271ec 100644 --- a/src/views/finance/refund/index.vue +++ b/src/views/finance/refund/index.vue @@ -150,6 +150,7 @@ import type { FormInstance, FormRules } from 'element-plus' import { RefundStatus, + RefundApprovalStatus, type Refund, type RefundQueryParams, type ResubmitRefundRequest, @@ -734,22 +735,14 @@ return keys.length ? keys : toVoucherKeyList(row.refund_voucher_key) } - const canResubmit = (row: Refund) => { - const statusText = [row.approval_status, row.approval_status_name, row.status_name] - .filter(Boolean) - .join(' ') - .toLowerCase() - - return ( - row.status === 3 || - statusText.includes('reject') || - statusText.includes('revoke') || - statusText.includes('delete') || - statusText.includes('驳回') || - statusText.includes('撤销') || - statusText.includes('删除') - ) - } + const canResubmit = (row: Refund) => + row.status === RefundStatus.REJECTED || + row.status === RefundStatus.RETURNED || + row.approval_status === RefundApprovalStatus.REJECTED || + row.approval_status === RefundApprovalStatus.REVOKED || + row.approval_status === RefundApprovalStatus.REVOKED_AFTER_APPROVED || + row.approval_status === RefundApprovalStatus.SUBMIT_FAILED || + row.approval_status === RefundApprovalStatus.RESULT_UNKNOWN const canTriggerApproval = (row: Refund) => { const approvalStatusEmpty = row.approval_status === undefined || row.approval_status === null