From a5d728c7b968ce3aeb2e75b1454b87501972d70b Mon Sep 17 00:00:00 2001 From: WuYongJie Date: Fri, 29 May 2026 15:29:23 +0800 Subject: [PATCH 01/14] =?UTF-8?q?@=20feat(draft-groups):=20=E8=8D=89?= =?UTF-8?q?=E7=A8=BF=E7=BB=84=E9=A1=B5=E9=9D=A2=E4=BC=98=E5=8C=96=E4=B8=8E?= =?UTF-8?q?=E9=A2=84=E4=BC=B0=E6=88=90=E6=9C=AC=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 保存品类按钮移到品类同一行,加宽按钮 - 删除草稿组加 try/catch 错误处理 - 预估成本:costPrice 为 null 时回退到 estimatedCostPrice - OpenProductAssetVariant 类型加 estimatedCostPrice - toOpenProductVariants 映射加 estimatedCostPrice - buildSlotSnapshot/buildHardwareSnapshot 用 costPrice ?? estimatedCostPrice - BOM 聚合用 costPrice ?? estimatedCostPrice - 颜色统一为白曜石设计令牌(--obs-shell-color/heading-color/muted/surface-bg/border) - 状态标签颜色改用固定色值,降低饱和度 - 板材/组件/五金件列表每行可点击,弹出只读 Modal 展示完整信息 - 组件详情弹窗增加规格款 ID、资产族 ID、基材 ID、饰面 ID、连接位、3D 模型 URL @ --- .../app/draft-groups/DraftGroupsClient.tsx | 300 ++++++++++-------- .../src/app/draft-groups/draftGroupDisplay.ts | 31 +- .../src/lib/open-product/types.ts | 1 + .../src/server/services/draft-group.mapper.ts | 4 +- .../pre-sku-materialization.service.ts | 2 +- .../single-board-desk-materialization.ts | 4 + 6 files changed, 209 insertions(+), 133 deletions(-) diff --git a/furniture-3d-system/src/app/draft-groups/DraftGroupsClient.tsx b/furniture-3d-system/src/app/draft-groups/DraftGroupsClient.tsx index 7e13cc80..71a7eb0f 100644 --- a/furniture-3d-system/src/app/draft-groups/DraftGroupsClient.tsx +++ b/furniture-3d-system/src/app/draft-groups/DraftGroupsClient.tsx @@ -9,6 +9,7 @@ import { ChevronRight, CircleDashed, CircleDot, + Eye, FolderTree, Layers3, Loader2, @@ -19,6 +20,7 @@ import { import { ModelPreviewPanel } from '@/components/platform/ModelPreviewPanel' import { ViewportToolbarButton } from '@/components/platform/ViewportStageShell' import DeleteConfirmDialog from '@/components/ui/DeleteConfirmDialog' +import Modal from '@/components/ui/Modal' import { canOperateDesignWorkspace as canOperateDesignWorkspaceForUser } from '@/lib/role-scope' import { extractResponseData, isApiFailure, isRecord, parseApiErrorPayload, readJsonSafely } from '@/lib/api-response' import { getApiErrorMessage, cn } from '@/lib/utils' @@ -43,6 +45,7 @@ import { getDraftGroupStatusLabel, getDraftStatusClassName, getPreSkuStatusLabel, + type DraftMaterialItem, } from './draftGroupDisplay' interface DraftGroupsClientProps { @@ -123,11 +126,11 @@ function FieldRows({ return (
{rows.map((row) => ( -
- {row.label} +
+ {row.label} @@ -183,9 +186,9 @@ function DraftGroupCategoryEditor({ } return ( -
-