diff --git a/src/pages/Cutting.tsx b/src/pages/Cutting.tsx index 52de577..25073fa 100644 --- a/src/pages/Cutting.tsx +++ b/src/pages/Cutting.tsx @@ -16,6 +16,7 @@ type SaveStatus = 'idle' | 'saving' | 'saved' | 'error'; type CutProductIssue = Exclude; type CorrectionIssueFilter = CutProductIssue | 'all'; type SettingsSection = 'rules' | 'corrections'; +type CuttingView = 'plan' | 'families' | 'issues'; const SETTINGS_STORAGE_KEY = 'nexstar_cutting_settings'; const coverageTargetOptions = [7, 15, 30, 60]; @@ -144,6 +145,7 @@ const Cutting = () => { const [itemsPerPage, setItemsPerPage] = useState(10); const [isGeneratingOrders, setIsGeneratingOrders] = useState(false); const [isOrderPreviewOpen, setIsOrderPreviewOpen] = useState(false); + const [activeCuttingView, setActiveCuttingView] = useState('plan'); const [generationMessage, setGenerationMessage] = useState(''); const cutConfigSection = searchParams.get('config'); const targetCorrectionSku = (searchParams.get('sku') || '').trim(); @@ -979,7 +981,59 @@ const Cutting = () => { - {!!issueSummaries.length && ( +
+
+ + + + + +
+
+ + {activeCuttingView === 'issues' && (
@@ -1002,26 +1056,45 @@ const Cutting = () => { Corrigir +
-
- {issueSummaries.map(summary => ( -
-
- {issueLabels[summary.issue]} - {formatNumber(summary.count)} + {issueSummaries.length ? ( +
+ {issueSummaries.map(summary => ( +
+
+ {issueLabels[summary.issue]} + {formatNumber(summary.count)} +
+

{issueHelp[summary.issue]}

-

{issueHelp[summary.issue]}

-
- ))} -
+ ))} +
+ ) : ( +
+

Nenhuma pendência no plano atual.

+

Os SKUs com necessidade já têm os dados mínimos para o cálculo.

+
+ )}
)} - {!!cutPlan.familySummaries.length && ( + {activeCuttingView === 'families' && (
@@ -1030,31 +1103,40 @@ const Cutting = () => {
-
- {cutPlan.familySummaries.map(summary => ( -
-
-
- - {summary.family.materialLabel} - -

{summary.family.label}

+ {cutPlan.familySummaries.length ? ( +
+ {cutPlan.familySummaries.map(summary => ( +
+
+
+ + {summary.family.materialLabel} + +

{summary.family.label}

+
+ {formatNumber(summary.skuCount)} SKUs
- {formatNumber(summary.skuCount)} SKUs +

{formatNumber(summary.suggestedCutQuantity)} un.

+

+ {formatNumber(summary.colorCount)} cores · {summary.estimatedRolls === null ? 'sem rendimento' : `${formatNumber(summary.estimatedRolls)} rolos`} +

-

{formatNumber(summary.suggestedCutQuantity)} un.

-

- {formatNumber(summary.colorCount)} cores · {summary.estimatedRolls === null ? 'sem rendimento' : `${formatNumber(summary.estimatedRolls)} rolos`} -

-
- ))} -
+ ))} +
+ ) : ( +
+

Nenhuma família com necessidade no período.

+

Ajuste o período ou a cobertura alvo para revisar outro cenário.

+
+ )}
)} + {activeCuttingView === 'plan' && ( + <>
@@ -1251,6 +1333,8 @@ const Cutting = () => { />
)} + + )}
); };