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 }) => ( + + ), + )} ), )}