diff --git a/web-admin/src/components/business/payment-receipt-confirm-dialog/index.vue b/web-admin/src/components/business/payment-receipt-confirm-dialog/index.vue index d0e4af15..255708c9 100644 --- a/web-admin/src/components/business/payment-receipt-confirm-dialog/index.vue +++ b/web-admin/src/components/business/payment-receipt-confirm-dialog/index.vue @@ -354,7 +354,7 @@ } try { await ElMessageBox.confirm( - '确认提交缴费确认?提交后状态变为「缴费确认中」。', + '确认提交缴费确认?提交后状态变为「付款确认中」。', '提交缴费确认', { confirmButtonText: '确定', diff --git a/web-admin/src/utils/protocol-fq-params-change.ts b/web-admin/src/utils/protocol-fq-params-change.ts index 6f062c85..bcc1bb8a 100644 --- a/web-admin/src/utils/protocol-fq-params-change.ts +++ b/web-admin/src/utils/protocol-fq-params-change.ts @@ -98,7 +98,7 @@ export function evaluateFqParamsChange( if (rows.some((d) => BLOCKING_STATUSES.has(String(d.payStatus || '')))) { return { action: 'blocked', - reason: '存在缴费确认中或退费处理中的明细,请先完成相关流程后再修改分期参数。' + reason: '存在付款确认中或退费处理中的明细,请先完成相关流程后再修改分期参数。' } } diff --git a/web-admin/src/utils/protocol-pay-mode-switch.ts b/web-admin/src/utils/protocol-pay-mode-switch.ts index 822fa70e..ffd0b0b5 100644 --- a/web-admin/src/utils/protocol-pay-mode-switch.ts +++ b/web-admin/src/utils/protocol-pay-mode-switch.ts @@ -150,7 +150,7 @@ export function evaluatePayModeSwitch( if (hasBlockingStatus(rows)) { return { action: 'blocked', - reason: '存在缴费确认中或退费处理中的明细,请先完成相关流程后再切换缴费模式。' + reason: '存在付款确认中或退费处理中的明细,请先完成相关流程后再切换缴费模式。' } } diff --git a/web-admin/src/utils/status-tag-registry.ts b/web-admin/src/utils/status-tag-registry.ts index 497a4902..2a21c8e7 100644 --- a/web-admin/src/utils/status-tag-registry.ts +++ b/web-admin/src/utils/status-tag-registry.ts @@ -138,9 +138,9 @@ export const handleDoneFlagLabel = createLabelGetter(handleDoneFlag) export const handleDoneFlagTagType = createTagTypeGetter(handleDoneFlag) export const payStatus: StatusRegistry = { - dfj: { label: '已缴费', tagType: 'primary' }, - jfqrz: { label: '缴费确认中', tagType: 'warning' }, - yjf: { label: '缴费成功', tagType: 'success' }, + dfj: { label: '已付款', tagType: 'primary' }, + jfqrz: { label: '付款确认中', tagType: 'warning' }, + yjf: { label: '付款完成', tagType: 'success' }, tfqrz: { label: '退费确认中', tagType: 'warning' }, ytf: { label: '已退费', tagType: 'danger' } } @@ -179,10 +179,10 @@ export const periodFinanceAudit: StatusRegistry = { export const periodFinanceAuditLabel = createLabelGetter(periodFinanceAudit) export const periodFinanceAuditTagType = createTagTypeGetter(periodFinanceAudit) -/** 按样本列表整体进度(勿与转账笔 payStatus 混用:payStatus.dfj=已缴费) */ +/** 按样本列表整体进度(勿与转账笔 payStatus 混用:payStatus.dfj=已付款) */ export const samplePaymentProgress: StatusRegistry = { dfj: { label: '待缴费', tagType: 'info' }, - jfqrz: { label: '缴费确认中', tagType: 'warning' }, + jfqrz: { label: '付款确认中', tagType: 'warning' }, bfyj: { label: '部分已缴', tagType: 'primary' }, yjq: { label: '已缴清', tagType: 'success' } } diff --git a/web-admin/src/views/cell-storage/payment-confirm/RefundConfirmTab.vue b/web-admin/src/views/cell-storage/payment-confirm/RefundConfirmTab.vue index ef9b8f2e..bb2a7f8c 100644 --- a/web-admin/src/views/cell-storage/payment-confirm/RefundConfirmTab.vue +++ b/web-admin/src/views/cell-storage/payment-confirm/RefundConfirmTab.vue @@ -650,7 +650,7 @@ async function submitReject() { if (!currentDetailId.value) return try { - await ElMessageBox.confirm('确定退回?退回后状态将变为「缴费成功」。', '退回确认', { + await ElMessageBox.confirm('确定退回?退回后状态将变为「付款完成」。', '退回确认', { type: 'warning' }) } catch { diff --git a/web-admin/src/views/cell-storage/payment-confirm/index.vue b/web-admin/src/views/cell-storage/payment-confirm/index.vue index ba123562..9efd938e 100644 --- a/web-admin/src/views/cell-storage/payment-confirm/index.vue +++ b/web-admin/src/views/cell-storage/payment-confirm/index.vue @@ -1,4 +1,4 @@ - + @@ -582,7 +692,6 @@ import { ref, reactive, onMounted } from 'vue' import { ElMessage, ElMessageBox } from 'element-plus' import { Close, Check, RefreshLeft, Search, View } from '@element-plus/icons-vue' - import { fetchProtocolInvoicePendingCount } from '@/api/collection-protocol' import { fetchPaymentTransferReceiptConfirmList, fetchPaymentTransferReceiptConfirmedList, @@ -616,23 +725,19 @@ presignOrderStatusTagType } from '@/utils/status-tag-registry' import { formatMoneyDisplay } from '@/utils/money-format' - import InvoiceRequestTab from './InvoiceRequestTab.vue' defineOptions({ name: 'CellStoragePaymentConfirm' }) const route = useRoute() - const mainTab = ref<'presign' | 'formal' | 'invoice'>( - String(route.query.tab || '') === 'invoice' - ? 'invoice' - : String(route.query.tab || '') === 'formal' || String(route.query.tab || '') === 'payment' - ? 'formal' - : 'presign' + const mainTab = ref<'presign' | 'formal'>( + String(route.query.tab || '') === 'formal' || String(route.query.tab || '') === 'payment' + ? 'formal' + : 'presign' ) const isPaymentTab = computed(() => mainTab.value === 'presign' || mainTab.value === 'formal') const isPresignTab = computed(() => mainTab.value === 'presign') const presignPendingBadge = ref(0) const formalPendingBadge = ref(0) - const invoicePendingBadge = ref(0) function formatTabBadgeCount(count: number): string { return count > 99 ? '99+' : String(count) @@ -647,19 +752,6 @@ return String(row?.source || '') === 'presign' } - function cardSubtitle(row: Record) { - const parts: string[] = [] - const protocolNo = String(row.protocolNo || '').trim() - if (protocolNo) parts.push(protocolNo) - if (!isPresignRow(row)) { - const sampleCode = String(row.sampleCode || '').trim() - if (sampleCode) parts.push(sampleCode) - const idCard = String(row.motherIdCard || '').trim() - if (idCard) parts.push(maskIdCard(idCard)) - } - return parts.join(' · ') - } - const pendingSearchForm = reactive({ keyword: '' }) const confirmedSearchForm = reactive({ keyword: '' }) const pendingInstallmentDueDateRange = ref<[string, string] | null>(null) @@ -716,14 +808,12 @@ async function loadTabPendingCounts() { try { - const [paymentRes, presignRes, invRes] = await Promise.all([ + const [paymentRes, presignRes] = await Promise.all([ fetchPaymentTransferReceiptConfirmList({ page: 1, pageSize: 1 }), - fetchPresignTransferReceiptConfirmList({ page: 1, pageSize: 1 }), - fetchProtocolInvoicePendingCount() + fetchPresignTransferReceiptConfirmList({ page: 1, pageSize: 1 }) ]) formalPendingBadge.value = paymentRes.total ?? 0 presignPendingBadge.value = presignRes.total ?? 0 - invoicePendingBadge.value = Number(invRes?.count ?? 0) } catch { // 角标加载失败时保留上次数值,避免干扰主流程 } @@ -840,7 +930,7 @@ async function submitReject() { if (!currentDetailId.value) return try { - await ElMessageBox.confirm('确定退回?退回后状态将变为「已缴费」。', '退回确认', { + await ElMessageBox.confirm('确定退回?退回后状态将变为「已付款」。', '退回确认', { type: 'warning' }) } catch { @@ -887,9 +977,8 @@ } }) - watch(mainTab, (tab) => { + watch(mainTab, () => { loadTabPendingCounts() - if (tab === 'invoice') return pendingPagination.page = 1 confirmedPagination.page = 1 loadAll() @@ -921,182 +1010,6 @@ padding-right: 12px; } - .pending-card-section { - min-height: 80px; - padding: 0 0 4px; - } - - .pending-card-grid { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); - gap: 16px; - padding: 16px 24px 8px; - } - - .pending-card { - display: flex; - flex-direction: column; - gap: 14px; - border: 1px solid var(--mint-border, #e2e8f0); - border-radius: 12px; - background: #fff; - padding: 20px 22px 16px; - transition: - border-color 0.15s, - box-shadow 0.15s; - - &:hover { - border-color: #a7f3d0; - box-shadow: 0 4px 14px rgb(15 23 42 / 6%); - } - } - - .pending-card__head { - display: flex; - align-items: flex-start; - justify-content: space-between; - gap: 16px; - } - - .pending-card__name { - font-size: 18px; - font-weight: 600; - color: var(--text, #1e293b); - line-height: 1.3; - } - - .pending-card__sub { - margin-top: 4px; - font-size: 12px; - color: var(--mint-text-muted, #64748b); - line-height: 1.4; - } - - .pending-card__amount { - flex-shrink: 0; - text-align: right; - } - - .pending-card__amount-val { - font-size: 22px; - font-weight: 700; - color: var(--primary-dark, #059669); - font-variant-numeric: tabular-nums; - line-height: 1.2; - } - - .pending-card__amount-label { - margin-top: 4px; - font-size: 12px; - color: var(--mint-text-muted, #64748b); - } - - .pending-card__transfer { - display: flex; - flex-wrap: wrap; - align-items: center; - justify-content: space-between; - gap: 8px 16px; - padding: 10px 12px; - background: var(--primary-bg, #ecfdf5); - border-radius: 8px; - } - - .pending-card__transfer-way { - font-size: 13px; - font-weight: 600; - color: var(--primary-dark, #059669); - } - - .pending-card__transfer-time { - font-size: 13px; - color: var(--mint-text, #334155); - font-variant-numeric: tabular-nums; - white-space: nowrap; - } - - .pending-card__remark { - font-size: 12px; - color: var(--mint-text-muted, #64748b); - word-break: break-all; - } - - .pending-card__facts { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - gap: 12px 24px; - } - - .pending-card__field label { - display: block; - margin-bottom: 4px; - font-size: 12px; - color: var(--mint-text-muted, #64748b); - } - - .pending-card__field span { - font-size: 14px; - color: var(--text, #1e293b); - line-height: 1.4; - word-break: break-word; - } - - .pending-card__field em { - display: inline-block; - margin-left: 6px; - font-size: 12px; - font-style: normal; - color: var(--mint-text-muted, #64748b); - } - - .pending-card__samples { - padding-top: 2px; - - label { - display: block; - margin-bottom: 4px; - font-size: 12px; - color: var(--mint-text-muted, #64748b); - } - - p { - margin: 0; - font-size: 13px; - color: var(--mint-text, #334155); - line-height: 1.55; - } - } - - .pending-card__foot { - display: flex; - align-items: center; - justify-content: space-between; - gap: 12px; - margin-top: 2px; - padding-top: 12px; - border-top: 1px solid #f1f5f9; - } - - .pending-card__meta { - display: flex; - flex-wrap: wrap; - align-items: center; - gap: 8px; - font-size: 12px; - color: var(--mint-text-muted, #64748b); - } - - .pending-pager { - padding: 0 24px; - } - - .finance-empty { - padding: 32px 24px; - text-align: center; - font-size: 13px; - color: var(--mint-text-muted, #64748b); - } - .payment-confirm-table-wrap { overflow-x: auto; } @@ -1137,13 +1050,4 @@ } } - @media (max-width: 900px) { - .pending-card-grid { - grid-template-columns: 1fr; - } - - .pending-card__facts { - grid-template-columns: 1fr; - } - } diff --git a/web-admin/src/views/cell-storage/payment-info/PaymentBySampleTab.vue b/web-admin/src/views/cell-storage/payment-info/PaymentBySampleTab.vue index ff6ab1cd..454022bc 100644 --- a/web-admin/src/views/cell-storage/payment-info/PaymentBySampleTab.vue +++ b/web-admin/src/views/cell-storage/payment-info/PaymentBySampleTab.vue @@ -447,7 +447,7 @@ const progressStatusOptions = [ { value: 'dfj', label: '待缴费' }, - { value: 'jfqrz', label: '缴费确认中' }, + { value: 'jfqrz', label: '付款确认中' }, { value: 'bfyj', label: '部分已缴' }, { value: 'yjq', label: '已缴清' } ] diff --git a/web-admin/src/views/cell-storage/protocol-audit/PaymentInfoTab.vue b/web-admin/src/views/cell-storage/protocol-audit/PaymentInfoTab.vue index d6ca7a5d..f85e5fcb 100644 --- a/web-admin/src/views/cell-storage/protocol-audit/PaymentInfoTab.vue +++ b/web-admin/src/views/cell-storage/protocol-audit/PaymentInfoTab.vue @@ -1,4 +1,4 @@ - +