优化
This commit is contained in:
@@ -179,18 +179,19 @@ describe('FinanceCustomerArapView G2 operations', () => {
|
||||
|
||||
it('hides technical source identifiers and versions from list rows', async () => {
|
||||
vi.mocked(listFinanceFeePool).mockResolvedValue([
|
||||
{ poolItemId: 'PAYABLE:358', feeSourceId: '358', customerId: '10001', direction: 'PAYABLE', sourceType: 'CONTAINER_FEE', sourceId: '2088285842638942210', sourceVersion: 1, orderId: null, inboundId: null, containerId: '2088285834627821569', feeItemName: '吊机费', amount: 300, currency: 'CNY', status: 'AVAILABLE', createdAt: '2026-08-14T23:25:19.684' },
|
||||
{ poolItemId: 'PAYABLE:358', feeSourceId: '358', customerId: '10001', direction: 'PAYABLE', sourceType: 'CONTAINER_FEE', sourceId: '2088285842638942210', sourceVersion: 1, orderId: null, inboundId: null, containerId: '2088285834627821569', feeItemName: 'ADMIN-API-20260814152244615-整柜成本', amount: 300, currency: 'CNY', status: 'AVAILABLE', createdAt: '2026-08-14T23:25:19.684' },
|
||||
])
|
||||
const wrapper = await mountView(['platform:finance:customer-arap:list'])
|
||||
await (wrapper.vm as unknown as { load(model: Record<string, string>): Promise<void> }).load({ customerId: '', direction: '', status: '', keyword: '' })
|
||||
const text = wrapper.text()
|
||||
expect(text).toContain('应付费用 · 吊机费')
|
||||
expect(text).toContain('应付费用 · 整柜成本')
|
||||
expect(text).toContain('柜次费用 · 关联柜次')
|
||||
expect(text).toContain('2026/8/14 23:25:19')
|
||||
expect(text).not.toContain('PAYABLE:358')
|
||||
expect(text).not.toContain('2088285842638942210')
|
||||
expect(text).not.toContain('/v1')
|
||||
expect(text).not.toContain('CONTAINER_FEE')
|
||||
expect(text).not.toContain('ADMIN-API-20260814152244615')
|
||||
})
|
||||
|
||||
it.each(['10001', '客户 10001', '客户10001'])('never displays customer id placeholder %s as a customer name', async (customerName) => {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import ElementPlus, { ElMessageBox } from 'element-plus'
|
||||
import { createPinia, setActivePinia } from 'pinia'
|
||||
import { enableAutoUnmount, flushPromises, mount } from '@vue/test-utils'
|
||||
import { createMemoryHistory, createRouter } from 'vue-router'
|
||||
import { afterAll, afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import { useAccessPreviewStore } from '@/core/access/accessPreview'
|
||||
import { useAuthStore } from '@/core/auth/auth'
|
||||
@@ -19,6 +20,7 @@ import {
|
||||
import type { FinanceReconciliationDetail, FinanceSettlementDetail, FinanceStatementReadModel } from '../types'
|
||||
import FinanceCustomerStatementsView from './FinanceCustomerStatementsView.vue'
|
||||
import FinanceFormalSettlementPage from './FinanceFormalSettlementPage.vue'
|
||||
import FinanceSettlementReceivablesView from './FinanceSettlementReceivablesView.vue'
|
||||
|
||||
vi.mock('@/modules/iam', () => ({ listPlatformTenants: vi.fn() }))
|
||||
vi.mock('../api/finance', () => ({
|
||||
@@ -189,6 +191,26 @@ describe('finance G3/G4 page operations', () => {
|
||||
expect(vm.customerName('2088')).toBe('—')
|
||||
})
|
||||
|
||||
it('navigates from the receivable list to its independent detail route', async () => {
|
||||
const pinia = piniaWithPermissions(['platform:finance:settlement-ar:list'])
|
||||
const router = createRouter({
|
||||
history: createMemoryHistory(),
|
||||
routes: [
|
||||
{ path: '/finance/settlement-receivables', component: { template: '<div />' } },
|
||||
{ path: '/finance/settlement-receivables/:settlementId', component: { template: '<div />' } },
|
||||
],
|
||||
})
|
||||
await router.push('/finance/settlement-receivables')
|
||||
await router.isReady()
|
||||
const wrapper = mount(FinanceSettlementReceivablesView, { global: { plugins: [pinia, router, ElementPlus] } })
|
||||
await flushPromises()
|
||||
|
||||
wrapper.findComponent(FinanceFormalSettlementPage).vm.$emit('openDetail', '63')
|
||||
await flushPromises()
|
||||
|
||||
expect(router.currentRoute.value.fullPath).toBe('/finance/settlement-receivables/63')
|
||||
})
|
||||
|
||||
it('keeps settled settlements readable and exportable while hiding receipt actions', async () => {
|
||||
vi.mocked(getFinanceSettlement).mockResolvedValue({ ...receivable, status: 'PAID', paidAmount: 300, outstandingAmount: 0 })
|
||||
const pinia = piniaWithPermissions(['platform:finance:settlement-ar:list', 'platform:finance:receipt:create'])
|
||||
|
||||
@@ -6,7 +6,7 @@ import FinanceFormalSettlementPage from './FinanceFormalSettlementPage.vue'
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
const settlementId = computed(() => String(route.params.settlementId || ''))
|
||||
function openDetail(id: string) { void router.push({ name: 'finance-settlement-receivable-detail', params: { settlementId: id } }) }
|
||||
function openDetail(id: string) { void router.push(`/finance/settlement-receivables/${encodeURIComponent(id)}`) }
|
||||
function back() { void router.push({ name: 'finance-settlement-receivables' }) }
|
||||
</script>
|
||||
<template><FinanceFormalSettlementPage kind="receivable" :settlement-id="settlementId" @open-detail="openDetail" @back="back" /></template>
|
||||
|
||||
Reference in New Issue
Block a user