diff --git a/src/modules/first-leg/views/FirstLegOrdersView.vue b/src/modules/first-leg/views/FirstLegOrdersView.vue index b4ac165..22be596 100644 --- a/src/modules/first-leg/views/FirstLegOrdersView.vue +++ b/src/modules/first-leg/views/FirstLegOrdersView.vue @@ -28,6 +28,7 @@ import { useFirstLegOrdersStore } from '@/modules/first-leg/store/firstLegOrders import { useTenantAdministrationStore } from '@/modules/tenant-management/public' import { useAuthStore } from '@/modules/auth/public' import { useUnsavedWorkRegistration } from '@/navigation/workspace-tabs/unsavedWork' +import { useWorkspaceTabsStore } from '@/navigation/workspace-tabs/workspaceTabs' import type { FirstLegPartyRole, FirstLegPartySnapshot } from '@/modules/first-leg/data/firstLegParties' import type { FirstLegCargoItem, FirstLegOrder, FirstLegOrderDraft } from '@/modules/first-leg/types/firstLegOrder' import type { MerchantInboundBilling } from '@/modules/first-leg/types/inboundBilling' @@ -45,6 +46,7 @@ import { createPriceEstimateBreakdown } from '@/modules/first-leg/utils/priceEst const store = useFirstLegOrdersStore() const tenantStore = useTenantAdministrationStore() +const workspace = useWorkspaceTabsStore() const auth = useAuthStore() const route = useRoute() const router = useRouter() @@ -517,7 +519,7 @@ async function loadPageData() { : Promise.resolve() const orderPageRequest = isCreatePage.value ? store.loadWarehouseType('DOMESTIC', true) - : store.load() + : store.load({ includeDrafts: true }) const [ordersResult, companyResult, destinationResult, policyResult] = await Promise.allSettled([ orderPageRequest, companyRequest, @@ -581,6 +583,10 @@ onMounted(() => { void loadPageData() }) +watch(() => auth.isAuthenticated, (authenticated, wasAuthenticated) => { + if (authenticated && !wasAuthenticated && !isCreatePage.value) void loadPageData() +}) + watch(isCreatePage, (isCreate, wasCreate) => { if (!isCreate || wasCreate) return if (routeDraftId.value) return @@ -1500,7 +1506,12 @@ async function submitOrder() { const order = await store.submitSaved(savedOrder.id, knownCompanyAuditStatus) markEditorClean() editorOpen.value = false - if (isCreatePage.value) await router.push({ name: 'first-leg-orders' }) + if (isCreatePage.value) { + workspace.close(['first-leg-order-create', 'first-leg-order-edit']) + await router.push({ name: 'first-leg-orders' }) + ElMessage.success('订单已提交,等待平台审核') + return + } detailId.value = order.id detailOpen.value = true ElMessage.success('订单已提交,等待平台审核') diff --git a/src/modules/first-leg/views/QuickOrderView.vue b/src/modules/first-leg/views/QuickOrderView.vue index 38893b5..15e38ee 100644 --- a/src/modules/first-leg/views/QuickOrderView.vue +++ b/src/modules/first-leg/views/QuickOrderView.vue @@ -11,6 +11,7 @@ import { type MerchantPricingChannel, } from '@/modules/first-leg/api/firstLeg' import { useFirstLegOrdersStore } from '@/modules/first-leg/store/firstLegOrders' +import { useWorkspaceTabsStore } from '@/navigation/workspace-tabs/workspaceTabs' import type { FirstLegOrderDraft } from '@/modules/first-leg/types/firstLegOrder' import { createEmptyCargoItem } from '@/modules/first-leg/utils/firstLegOrder' @@ -55,6 +56,7 @@ interface QuickDraftResult { const router = useRouter() const auth = useAuthStore() const store = useFirstLegOrdersStore() +const workspace = useWorkspaceTabsStore() const loading = ref(false) const submitting = ref(false) const loadError = ref('') @@ -385,11 +387,15 @@ async function submitQuickOrder() { if (successfulIds.has(rows[index].id)) rows.splice(index, 1) } if (rows.length === 0) rows.push(createRow()) - resultDialogOpen.value = successes.length > 0 + resultDialogOpen.value = successes.length > 0 && failures.length > 0 if (failures.length) ElMessage.error(`${failures.length} 张草稿生成失败:${failures[0].errorMessage || '草稿单生成失败'}`) else { activeBatchKey.value = '' - ElMessage.success(`已生成 ${successes.length} 张草稿单`) + await Promise.all(successes.map((item) => store.loadDraftDetail(item.draftId))) + workspace.close(['first-leg-quick-order']) + await router.push({ name: 'first-leg-orders' }) + const orderNumbers = successes.map((item) => item.orderNo || item.draftId).join('、') + ElMessage.success(`已生成 ${successes.length} 张草稿单:${orderNumbers}`) } } catch (error) { ElMessage.error(error instanceof Error ? error.message : '批量草稿生成失败')