From 62e6bfc52f75a6a08c5d35d850e22fff41f1432b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Thu, 24 Sep 2026 17:20:42 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=203D=20=E5=AE=9A=E4=BB=B7?= =?UTF-8?q?=E4=B8=A4=E6=A0=8F=E5=BA=95=E4=BB=B7=E8=BE=93=E5=85=A5=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E6=8F=8F=E8=BF=B0=E8=A1=A8=E9=A9=B1=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - apps/admin-web/src/pages/AdminEditorGenerationModel3dPricingSection.tsx:抽出 VERSION_PRICE_FIELDS 描述表,无贴图 / 带贴图两栏共用一段 JSX,字段键与展示名只有一处来源,避免两栏后续改动走偏 --- ...nEditorGenerationModel3dPricingSection.tsx | 93 +++++++++---------- 1 file changed, 44 insertions(+), 49 deletions(-) diff --git a/apps/admin-web/src/pages/AdminEditorGenerationModel3dPricingSection.tsx b/apps/admin-web/src/pages/AdminEditorGenerationModel3dPricingSection.tsx index 569890a1e..9530bd7e1 100644 --- a/apps/admin-web/src/pages/AdminEditorGenerationModel3dPricingSection.tsx +++ b/apps/admin-web/src/pages/AdminEditorGenerationModel3dPricingSection.tsx @@ -1,4 +1,7 @@ -import type { EditorGenerationModel3dPricingPayload } from '../api/adminApiTypes'; +import type { + EditorGenerationModel3dPricingPayload, + EditorGenerationModel3dVersionPricePayload, +} from '../api/adminApiTypes'; import { EDITOR_MODEL3D_ENDPOINT_SECTIONS, editorModel3dAddOnLabel, @@ -6,6 +9,18 @@ import { updateEditorModel3dEndpointPricing, } from './adminEditorGenerationPricing'; +/** + * 一个模型版本的两个底价字段。两栏只有字段键与展示名不同,用描述表驱动渲染, + * 避免两段近乎相同的 JSX 各自演化。 + */ +const VERSION_PRICE_FIELDS = [ + { key: 'noTexture', label: '无贴图' }, + { key: 'texture', label: '带贴图' }, +] as const satisfies ReadonlyArray<{ + key: keyof EditorGenerationModel3dVersionPricePayload; + label: string; +}>; + interface AdminEditorGenerationModel3dPricingSectionProps { model3d: EditorGenerationModel3dPricingPayload; onChange: (next: EditorGenerationModel3dPricingPayload) => void; @@ -51,54 +66,34 @@ export function AdminEditorGenerationModel3dPricingSection({ {version} - - + {VERSION_PRICE_FIELDS.map( + ({ key: field, label: fieldLabel }) => ( + + ), + )} ), )}