From 8cfd3f8292d3eb3fbb46baef7f85573325543687 Mon Sep 17 00:00:00 2001 From: jingchuan Date: Wed, 19 Aug 2026 09:34:54 +0800 Subject: [PATCH] fix(supply-chain): preserve new product overview entry --- .../supply-chain/config/supply-chain-menu.ts | 5 ++ .../new-products/overview/page.tsx | 49 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 furniture-3d-system/src/app/supply-chain/new-products/overview/page.tsx diff --git a/furniture-3d-system/src/app/supply-chain/config/supply-chain-menu.ts b/furniture-3d-system/src/app/supply-chain/config/supply-chain-menu.ts index e2fdf5b2..c2b4157a 100644 --- a/furniture-3d-system/src/app/supply-chain/config/supply-chain-menu.ts +++ b/furniture-3d-system/src/app/supply-chain/config/supply-chain-menu.ts @@ -54,6 +54,11 @@ export const SUPPLY_CHAIN_MENU: SupplyChainMenuModule[] = [ label: '新品管理', icon: 'PackagePlus', sections: [ + { + items: [ + { label: '新品经营总览', route: '/supply-chain/new-products/overview', targetKey: 'newProductOverview' }, + ], + }, { title: '公共数据源', items: [ diff --git a/furniture-3d-system/src/app/supply-chain/new-products/overview/page.tsx b/furniture-3d-system/src/app/supply-chain/new-products/overview/page.tsx new file mode 100644 index 00000000..39845d5c --- /dev/null +++ b/furniture-3d-system/src/app/supply-chain/new-products/overview/page.tsx @@ -0,0 +1,49 @@ +import { redirect } from 'next/navigation' +import NewProductManagementDashboard from '@/app/intake/new-product-management/NewProductManagementDashboard' +import { requireSession } from '@/lib/server-session' +import { OA_BOARD_DEFAULT_TRACKED_STATUSES } from '@/server/services/oa-board.constants' +import { + createEmptyOaBoardDashboard, + oaBoardService, +} from '@/server/services/oa-board.service' +import { supplyChainPermissionSettingsService } from '@/server/services/supply-chain-permission-settings.service' + +export const dynamic = 'force-dynamic' +export const metadata = { title: '新品经营总览 · 供应链中心' } + +export default async function NewProductOverviewPage() { + const { authUser } = await requireSession('/login') + const access = await supplyChainPermissionSettingsService.getUserAccess( + authUser, + 'newProductOverview', + ) + if (!access.view) redirect('/supply-chain') + + const result = await oaBoardService + .getDashboard({ + overallStatus: [...OA_BOARD_DEFAULT_TRACKED_STATUSES], + }) + .then((dashboard) => ({ + dashboard, + loadErrorMessage: null as string | null, + })) + .catch((error) => { + console.error('Failed to load supply chain new product overview', error) + return { + dashboard: createEmptyOaBoardDashboard(), + loadErrorMessage: + error instanceof Error + ? `新品管理数据读取失败:${error.message}` + : '新品管理数据读取失败,请稍后重试。', + } + }) + + return ( +
+ +
+ ) +}