Browse Source

update

master
CANCERYS\kw093 2 months ago
parent
commit
a3803b6cdd
4 changed files with 26 additions and 24 deletions
  1. +2
    -16
      src/components/FinishedGoodSearch/FGPickOrderCard.tsx
  2. +10
    -5
      src/components/Jodetail/JobPickExecutionForm.tsx
  3. +4
    -0
      src/components/Jodetail/JobPickExecutionsecondscan.tsx
  4. +10
    -3
      src/components/Jodetail/JobmatchForm.tsx

+ 2
- 16
src/components/FinishedGoodSearch/FGPickOrderCard.tsx View File

@@ -35,14 +35,7 @@ const FGPickOrderCard: React.FC<Props> = ({ fgOrder, onQrCodeClick }) => {
//helperText={fgOrder.pickOrderConsoCode} //helperText={fgOrder.pickOrderConsoCode}
/> />
</Grid> </Grid>
<Grid item xs={6}>
<TextField
label={t("Shop PO Code")}
fullWidth
disabled={true}
value={fgOrder.shopPoNo}
/>
</Grid>

<Grid item xs={6}> <Grid item xs={6}>
<TextField <TextField
label={t("Store ID")} label={t("Store ID")}
@@ -51,14 +44,7 @@ const FGPickOrderCard: React.FC<Props> = ({ fgOrder, onQrCodeClick }) => {
value={fgOrder.storeId} value={fgOrder.storeId}
/> />
</Grid> </Grid>
<Grid item xs={6}>
<TextField
label={t("Shop ID")}
fullWidth
disabled={true}
value={fgOrder.shopCode}
/>
</Grid>

<Grid item xs={6}> <Grid item xs={6}>
<TextField <TextField
label={t("Shop Name")} label={t("Shop Name")}


+ 10
- 5
src/components/Jodetail/JobPickExecutionForm.tsx View File

@@ -20,7 +20,8 @@ import { useCallback, useEffect, useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { GetPickOrderLineInfo, PickExecutionIssueData } from "@/app/api/pickOrder/actions"; import { GetPickOrderLineInfo, PickExecutionIssueData } from "@/app/api/pickOrder/actions";
import { fetchEscalationCombo } from "@/app/api/user/actions"; import { fetchEscalationCombo } from "@/app/api/user/actions";

import { useSession } from "next-auth/react";
import { SessionWithTokens } from "@/config/authConfig";
interface LotPickData { interface LotPickData {
id: number; id: number;
lotId: number; lotId: number;
@@ -82,7 +83,7 @@ const PickExecutionForm: React.FC<PickExecutionFormProps> = ({
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [handlers, setHandlers] = useState<Array<{ id: number; name: string }>>([]); const [handlers, setHandlers] = useState<Array<{ id: number; name: string }>>([]);
const [verifiedQty, setVerifiedQty] = useState<number>(0); const [verifiedQty, setVerifiedQty] = useState<number>(0);
// 计算剩余可用数量
const { data: session } = useSession() as { data: SessionWithTokens | null };
const calculateRemainingAvailableQty = useCallback((lot: LotPickData) => { const calculateRemainingAvailableQty = useCallback((lot: LotPickData) => {
const remainingQty = lot.inQty - lot.outQty; const remainingQty = lot.inQty - lot.outQty;
return Math.max(0, remainingQty); return Math.max(0, remainingQty);
@@ -149,7 +150,7 @@ const PickExecutionForm: React.FC<PickExecutionFormProps> = ({
missQty: 0, missQty: 0,
badItemQty: 0, badItemQty: 0,
issueRemark: '', issueRemark: '',
pickerName: '',
// pickerName: '',
handledBy: undefined, handledBy: undefined,
}); });
} }
@@ -212,7 +213,11 @@ const PickExecutionForm: React.FC<PickExecutionFormProps> = ({
// ✅ Use the verified quantity in the submission // ✅ Use the verified quantity in the submission
const submissionData = { const submissionData = {
...formData, ...formData,
actualPickQty: verifiedQty
actualPickQty: verifiedQty,
lotId: formData.lotId || selectedLot?.lotId || 0,
lotNo: formData.lotNo || selectedLot?.lotNo || '',
pickOrderCode: formData.pickOrderCode || selectedPickOrderLine?.pickOrderCode || '',
pickerName: session?.user?.name || ''
} as PickExecutionIssueData; } as PickExecutionIssueData;
await onSubmit(submissionData); await onSubmit(submissionData);
@@ -278,7 +283,7 @@ const PickExecutionForm: React.FC<PickExecutionFormProps> = ({
onChange={(e) => { onChange={(e) => {
const newValue = parseFloat(e.target.value) || 0; const newValue = parseFloat(e.target.value) || 0;
setVerifiedQty(newValue); setVerifiedQty(newValue);
handleInputChange('actualPickQty', newValue);
// handleInputChange('actualPickQty', newValue);
}} }}
error={!!errors.actualPickQty} error={!!errors.actualPickQty}
helperText={errors.actualPickQty || `${t('Max')}: ${selectedLot?.actualPickQty || 0}`} // ✅ 使用原始接收数量 helperText={errors.actualPickQty || `${t('Max')}: ${selectedLot?.actualPickQty || 0}`} // ✅ 使用原始接收数量


+ 4
- 0
src/components/Jodetail/JobPickExecutionsecondscan.tsx View File

@@ -428,6 +428,8 @@ const JobPickExecution: React.FC<Props> = ({ filterArgs }) => {
// ✅ 使用 Job Order API // ✅ 使用 Job Order API
const jobOrderData = await fetchCompletedJobOrderPickOrders(userIdToUse); const jobOrderData = await fetchCompletedJobOrderPickOrders(userIdToUse);
console.log("✅ Job Order data:", jobOrderData); console.log("✅ Job Order data:", jobOrderData);
console.log("✅ Pick Order Code from API:", jobOrderData.pickOrder?.code);
console.log("✅ Expected Pick Order Code: P-20251003-001");
setJobOrderData(jobOrderData); setJobOrderData(jobOrderData);
@@ -870,6 +872,8 @@ const JobPickExecution: React.FC<Props> = ({ filterArgs }) => {
const handlePickExecutionForm = useCallback((lot: any) => { const handlePickExecutionForm = useCallback((lot: any) => {
console.log("=== Pick Execution Form ==="); console.log("=== Pick Execution Form ===");
console.log("Lot data:", lot); console.log("Lot data:", lot);
console.log("lot.pickOrderCode:", lot.pickOrderCode); // ✅ 添加
console.log("lot.pickOrderId:", lot.pickOrderId);
if (!lot) { if (!lot) {
console.warn("No lot data provided for pick execution form"); console.warn("No lot data provided for pick execution form");


+ 10
- 3
src/components/Jodetail/JobmatchForm.tsx View File

@@ -20,6 +20,8 @@ import { useCallback, useEffect, useState } from "react";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { GetPickOrderLineInfo, PickExecutionIssueData } from "@/app/api/pickOrder/actions"; import { GetPickOrderLineInfo, PickExecutionIssueData } from "@/app/api/pickOrder/actions";
import { fetchEscalationCombo } from "@/app/api/user/actions"; import { fetchEscalationCombo } from "@/app/api/user/actions";
import { useSession } from "next-auth/react";
import { SessionWithTokens } from "@/config/authConfig";


interface LotPickData { interface LotPickData {
id: number; id: number;
@@ -82,6 +84,7 @@ const PickExecutionForm: React.FC<PickExecutionFormProps> = ({
const [loading, setLoading] = useState(false); const [loading, setLoading] = useState(false);
const [handlers, setHandlers] = useState<Array<{ id: number; name: string }>>([]); const [handlers, setHandlers] = useState<Array<{ id: number; name: string }>>([]);
const [verifiedQty, setVerifiedQty] = useState<number>(0); const [verifiedQty, setVerifiedQty] = useState<number>(0);
const { data: session } = useSession() as { data: SessionWithTokens | null };
// 计算剩余可用数量 // 计算剩余可用数量
const calculateRemainingAvailableQty = useCallback((lot: LotPickData) => { const calculateRemainingAvailableQty = useCallback((lot: LotPickData) => {
const remainingQty = lot.inQty - lot.outQty; const remainingQty = lot.inQty - lot.outQty;
@@ -149,7 +152,7 @@ const PickExecutionForm: React.FC<PickExecutionFormProps> = ({
missQty: 0, missQty: 0,
badItemQty: 0, badItemQty: 0,
issueRemark: '', issueRemark: '',
pickerName: '',
// pickerName: '',
handledBy: undefined, handledBy: undefined,
}); });
} }
@@ -216,7 +219,11 @@ const PickExecutionForm: React.FC<PickExecutionFormProps> = ({
// ✅ Use the verified quantity in the submission // ✅ Use the verified quantity in the submission
const submissionData = { const submissionData = {
...formData, ...formData,
actualPickQty: verifiedQty
actualPickQty: verifiedQty,
lotId: formData.lotId || selectedLot?.lotId || 0,
lotNo: formData.lotNo || selectedLot?.lotNo || '',
pickOrderCode: formData.pickOrderCode || selectedPickOrderLine?.pickOrderCode || '',
pickerName: session?.user?.name || ''
} as PickExecutionIssueData; } as PickExecutionIssueData;
await onSubmit(submissionData); await onSubmit(submissionData);
@@ -291,7 +298,7 @@ const PickExecutionForm: React.FC<PickExecutionFormProps> = ({
onChange={(e) => { onChange={(e) => {
const newValue = parseFloat(e.target.value) || 0; const newValue = parseFloat(e.target.value) || 0;
setVerifiedQty(newValue); setVerifiedQty(newValue);
handleInputChange('actualPickQty', newValue);
//handleInputChange('actualPickQty', newValue);
}} }}
error={!!errors.actualPickQty} error={!!errors.actualPickQty}
helperText={errors.actualPickQty || `${t('Max')}: ${selectedLot?.actualPickQty || 0}`} // ✅ 使用原始接收数量 helperText={errors.actualPickQty || `${t('Max')}: ${selectedLot?.actualPickQty || 0}`} // ✅ 使用原始接收数量


Loading…
Cancel
Save