diff --git a/furniture-3d-system/src/app/intake/brand-filing/BrandFilingPlanningTableDialog.tsx b/furniture-3d-system/src/app/intake/brand-filing/BrandFilingPlanningTableDialog.tsx index ec73d9f7..0c3b6991 100644 --- a/furniture-3d-system/src/app/intake/brand-filing/BrandFilingPlanningTableDialog.tsx +++ b/furniture-3d-system/src/app/intake/brand-filing/BrandFilingPlanningTableDialog.tsx @@ -16,6 +16,10 @@ import { type BrandFilingPlanningLineItem, type BrandFilingPlanningRecord, } from "@/app/intake/brand-filing/brandFilingTypes"; +import { + buildRequiredFieldsMessage, + validateBrandFilingPlanningRequiredFields, +} from "@/app/intake/brand-filing/brandFilingRequiredValidation"; import type { NonIntegratedProductRecord } from "@/app/intake/non-integrated/nonIntegratedStorage"; export function BrandFilingPlanningTableDialog({ @@ -156,6 +160,23 @@ function BrandFilingPlanningTableDialogContent({ ); }; + const getMissingRequiredFields = () => + validateBrandFilingPlanningRequiredFields(form, lineItems); + + const handleSaveDraft = () => { + onSave(form, lineItems, completed && getMissingRequiredFields().length === 0); + }; + + const handleSaveAndConfirm = () => { + const missingFields = getMissingRequiredFields(); + if (missingFields.length > 0) { + window.alert(buildRequiredFieldsMessage("企划表", missingFields)); + return; + } + + onSave(form, lineItems, true); + }; + return (
onSave(form, lineItems, completed)} + onClick={handleSaveDraft} className="inline-flex h-8 items-center rounded-[6px] border border-[var(--obs-shell-border)] bg-white px-4 text-[12px] font-apple-semibold text-[var(--obs-shell-control-text)] transition hover:bg-[var(--obs-shell-hover-bg)] hover:text-[var(--obs-shell-title)] disabled:cursor-not-allowed disabled:opacity-50" > 保存 @@ -229,7 +250,7 @@ function BrandFilingPlanningTableDialogContent({