fix(admin): replace completed preload workspace tab

This commit is contained in:
2026-08-31 17:05:13 +08:00
parent 3cae7e4eb5
commit c7ba96457a
3 changed files with 9 additions and 0 deletions
@@ -6,11 +6,13 @@ import { getPreloadPlan } from '../api/platformLoadingLists'
import PreloadPlanDetailView from './PreloadPlanDetailView.vue'
const routerReplace = vi.hoisted(() => vi.fn())
const removeWorkspaceTabs = vi.hoisted(() => vi.fn())
vi.mock('vue-router', () => ({
useRoute: () => ({ params: { planId: '1900000000000000001' }, query: { warehouseId: '1900000000000000002' } }),
useRouter: () => ({ replace: routerReplace, push: vi.fn(), back: vi.fn() }),
}))
vi.mock('@/core/access/accessPreview', () => ({ useAccessPreviewStore: () => ({ can: () => true }) }))
vi.mock('@/core/workspace-tabs/workspaceTabs', () => ({ useWorkspaceTabsStore: () => ({ removeByIds: removeWorkspaceTabs }) }))
vi.mock('../api/platformLoadingLists', () => ({
confirmPreloadPlan: vi.fn(),
getPreloadPlan: vi.fn(),
@@ -65,6 +67,8 @@ describe('PreloadPlanDetailView lifecycle handoff', () => {
params: { planId: '1900000000000000001' },
query: { warehouseId: '1900000000000000002' },
})
expect(removeWorkspaceTabs).toHaveBeenCalledWith(['preload-plan-detail'])
expect(routerReplace.mock.invocationCallOrder[0]).toBeLessThan(removeWorkspaceTabs.mock.invocationCallOrder[0]!)
expect(message).toHaveBeenCalledWith('装柜已完成,已切换至装柜清单详情')
expect(drawerError(wrapper)).toBeNull()
expect(wrapper.findComponent({ name: 'LoadingListDetailDrawer' }).props('loading')).toBe(false)
@@ -84,6 +88,7 @@ describe('PreloadPlanDetailView lifecycle handoff', () => {
expect(getPreloadPlan).toHaveBeenCalledWith('1900000000000000001', '1900000000000000002')
expect(routerReplace).not.toHaveBeenCalled()
expect(removeWorkspaceTabs).not.toHaveBeenCalled()
expect(drawerError(wrapper)).toBeNull()
})
@@ -25,6 +25,7 @@ describe('PreloadPlanDetailView prototype contract', () => {
expect(source).toContain("lifecycle.detailResource === 'LOADING_LIST'")
expect(source).toContain("lifecycle.planStatus !== 'COMPLETED'")
expect(source).toContain("router.replace({ name: 'loading-list-detail'")
expect(source).toContain("workspace.removeByIds(['preload-plan-detail'])")
expect(source).toContain('装柜已完成,已切换至装柜清单详情')
expect(source).not.toContain("preloadError.code !== 'A0404'")
expect(source).not.toContain('getConfirmedLoadingList')
@@ -9,12 +9,14 @@ import AppDialog from '@/shared/components/AppDialog.vue'
import LoadErrorState from '@/shared/components/LoadErrorState.vue'
import { getApiErrorDetails, http, unwrapApiResponse, type ApiEnvelope, type ApiErrorDetails } from '@/shared/api/http'
import { useAccessPreviewStore } from '@/core/access/accessPreview'
import { useWorkspaceTabsStore } from '@/core/workspace-tabs/workspaceTabs'
import LoadingListDetailDrawer from '../components/LoadingListDetailDrawer.vue'
import { confirmPreloadPlan, getPreloadPlan, updateLoadingItemWarehouseRemark, updatePreloadTransport, type LoadingDetail, type LoadingItem, type PreloadSummary } from '../api/platformLoadingLists'
const route = useRoute()
const router = useRouter()
const access = useAccessPreviewStore()
const workspace = useWorkspaceTabsStore()
const loading = ref(false)
const detail = ref<LoadingDetail<PreloadSummary> | null>(null)
const error = ref<ApiErrorDetails | null>(null)
@@ -93,6 +95,7 @@ async function loadDetail() {
return
}
await router.replace({ name: 'loading-list-detail', params: { planId: planId.value }, query: { warehouseId: warehouseId.value } })
workspace.removeByIds(['preload-plan-detail'])
if (sequence === loadSequence) ElMessage.success('装柜已完成,已切换至装柜清单详情')
return
}