From 3e56572d05a4960aa1abb45d9468d2a8a4667c14 Mon Sep 17 00:00:00 2001 From: "CANCERYS\\kw093" Date: Fri, 10 Oct 2025 16:35:20 +0800 Subject: [PATCH] update --- src/app/api/jo/actions.ts | 5 ++++- src/app/api/pickOrder/actions.ts | 1 + .../FinishedGoodSearch/GoodPickExecution.tsx | 9 ++++++--- .../GoodPickExecutiondetail.tsx | 6 +++++- src/components/Jodetail/JobPickExecution.tsx | 6 +++++- .../Jodetail/JobPickExecutionsecondscan.tsx | 7 +++++-- src/components/Jodetail/JobmatchForm.tsx | 11 +++++++---- src/components/PickOrderSearch/PickExecution.tsx | 16 +--------------- 8 files changed, 34 insertions(+), 27 deletions(-) diff --git a/src/app/api/jo/actions.ts b/src/app/api/jo/actions.ts index 2957b50..293d51b 100644 --- a/src/app/api/jo/actions.ts +++ b/src/app/api/jo/actions.ts @@ -128,11 +128,14 @@ export const recordSecondScanIssue = cache(async ( pickOrderId: number, itemId: number, data: { - qty: number; + qty: number; // verified qty (actual pick qty) + missQty?: number; // ✅ 添加:miss qty + badItemQty?: number; // ✅ 添加:bad item qty isMissing: boolean; isBad: boolean; reason: string; createdBy: number; + type?: string; // ✅ type 也应该是可选的 } ) => { diff --git a/src/app/api/pickOrder/actions.ts b/src/app/api/pickOrder/actions.ts index 0177e5a..1b44129 100644 --- a/src/app/api/pickOrder/actions.ts +++ b/src/app/api/pickOrder/actions.ts @@ -183,6 +183,7 @@ export const recordFailLot = async (data: PickAnotherLotFormData) => { return result; }; export interface PickExecutionIssueData { + type: string; pickOrderId: number; pickOrderCode: string; pickOrderCreateDate: string; diff --git a/src/components/FinishedGoodSearch/GoodPickExecution.tsx b/src/components/FinishedGoodSearch/GoodPickExecution.tsx index dbad109..80ffe10 100644 --- a/src/components/FinishedGoodSearch/GoodPickExecution.tsx +++ b/src/components/FinishedGoodSearch/GoodPickExecution.tsx @@ -833,9 +833,12 @@ const PickExecution: React.FC = ({ filterArgs, onFgPickOrdersChange }) => const handlePickExecutionFormSubmit = useCallback(async (data: any) => { try { - console.log("Pick execution form submitted:", data); - - const result = await recordPickExecutionIssue(data); + console.log("Pick execution form submitted:", data); + const issueData = { + ...data, + type: "Do", // Delivery Order Record 类型 + }; + const result = await recordPickExecutionIssue(issueData); console.log("Pick execution issue recorded:", result); if (result && result.code === "SUCCESS") { diff --git a/src/components/FinishedGoodSearch/GoodPickExecutiondetail.tsx b/src/components/FinishedGoodSearch/GoodPickExecutiondetail.tsx index 6ad335c..78ebcb1 100644 --- a/src/components/FinishedGoodSearch/GoodPickExecutiondetail.tsx +++ b/src/components/FinishedGoodSearch/GoodPickExecutiondetail.tsx @@ -1151,8 +1151,12 @@ useEffect(() => { const handlePickExecutionFormSubmit = useCallback(async (data: any) => { try { console.log("Pick execution form submitted:", data); + const issueData = { + ...data, + type: "Do", // Delivery Order Record 类型 + }; - const result = await recordPickExecutionIssue(data); + const result = await recordPickExecutionIssue(issueData); console.log("Pick execution issue recorded:", result); if (result && result.code === "SUCCESS") { diff --git a/src/components/Jodetail/JobPickExecution.tsx b/src/components/Jodetail/JobPickExecution.tsx index f79fb32..938b381 100644 --- a/src/components/Jodetail/JobPickExecution.tsx +++ b/src/components/Jodetail/JobPickExecution.tsx @@ -1353,8 +1353,12 @@ const JobPickExecution: React.FC = ({ filterArgs }) => { const handlePickExecutionFormSubmit = useCallback(async (data: any) => { try { console.log("Pick execution form submitted:", data); + const issueData = { + ...data, + type: "Jo", // Delivery Order Record 类型 + }; - const result = await recordPickExecutionIssue(data); + const result = await recordPickExecutionIssue(issueData); console.log("Pick execution issue recorded:", result); if (result && result.code === "SUCCESS") { diff --git a/src/components/Jodetail/JobPickExecutionsecondscan.tsx b/src/components/Jodetail/JobPickExecutionsecondscan.tsx index 5f3e916..e992ef0 100644 --- a/src/components/Jodetail/JobPickExecutionsecondscan.tsx +++ b/src/components/Jodetail/JobPickExecutionsecondscan.tsx @@ -903,11 +903,14 @@ const JobPickExecution: React.FC = ({ filterArgs }) => { selectedLotForExecutionForm.pickOrderId, selectedLotForExecutionForm.itemId, { - qty: data.actualPickQty, + qty: data.actualPickQty, // verified qty + missQty: data.missQty || 0, // ✅ 添加:实际的 miss qty + badItemQty: data.badItemQty || 0, // ✅ 添加:实际的 bad item qty isMissing: data.missQty > 0, isBad: data.badItemQty > 0, reason: data.issueRemark || '', - createdBy: currentUserId + createdBy: currentUserId, + type: "match" } ); console.log("Pick execution issue recorded:", result); diff --git a/src/components/Jodetail/JobmatchForm.tsx b/src/components/Jodetail/JobmatchForm.tsx index b737bb4..1aa4729 100644 --- a/src/components/Jodetail/JobmatchForm.tsx +++ b/src/components/Jodetail/JobmatchForm.tsx @@ -125,7 +125,7 @@ const PickExecutionForm: React.FC = ({ return new Date().toISOString().split('T')[0]; } }; - + // ✅ Initialize verified quantity to the received quantity (actualPickQty) const initialVerifiedQty = selectedLot.actualPickQty || 0; setVerifiedQty(initialVerifiedQty); @@ -148,15 +148,16 @@ const PickExecutionForm: React.FC = ({ lotNo: selectedLot.lotNo, storeLocation: selectedLot.location, requiredQty: selectedLot.requiredQty, - actualPickQty: initialVerifiedQty, // ✅ Use the initial value + actualPickQty: initialVerifiedQty, missQty: 0, badItemQty: 0, issueRemark: '', - // pickerName: '', handledBy: undefined, }); } - }, [open, selectedLot, selectedPickOrderLine, pickOrderId, pickOrderCreateDate]); + // ✅ 修复:只在 open 状态改变时重新初始化,移除其他依赖 + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [open]); const handleInputChange = useCallback((field: keyof PickExecutionIssueData, value: any) => { setFormData(prev => ({ ...prev, [field]: value })); @@ -220,6 +221,8 @@ const PickExecutionForm: React.FC = ({ const submissionData = { ...formData, actualPickQty: verifiedQty, + missQty: formData.missQty || 0, + badItemQty: formData.badItemQty || 0, lotId: formData.lotId || selectedLot?.lotId || 0, lotNo: formData.lotNo || selectedLot?.lotNo || '', pickOrderCode: formData.pickOrderCode || selectedPickOrderLine?.pickOrderCode || '', diff --git a/src/components/PickOrderSearch/PickExecution.tsx b/src/components/PickOrderSearch/PickExecution.tsx index bdf99c8..30cfdbb 100644 --- a/src/components/PickOrderSearch/PickExecution.tsx +++ b/src/components/PickOrderSearch/PickExecution.tsx @@ -67,7 +67,6 @@ import SearchResults, { Column } from "../SearchResults/SearchResults"; import { defaultPagingController } from "../SearchResults/SearchResults"; import SearchBox, { Criterion } from "../SearchBox"; import dayjs from "dayjs"; -import { dummyQCData } from "../PoDetail/dummyQcTemplate"; import { CreateStockOutLine } from "@/app/api/pickOrder/actions"; import LotTable from './LotTable'; import PickOrderDetailsTable from './PickOrderDetailsTable'; // ✅ Import the new component @@ -515,20 +514,7 @@ const PickExecution: React.FC = ({ filterArgs }) => { setSelectedLotForQc(selectedLot); - const transformedDummyData = dummyQCData.map(item => ({ - id: item.id, - code: item.code, - name: item.name, - itemId: line.itemId, - lowerLimit: undefined, - upperLimit: undefined, - description: item.description, - qcPassed: undefined, - failQty: undefined, - remarks: undefined - })); - - setQcItems(transformedDummyData as QcItemWithChecks[]); + let qcResult: any[] = []; try {