Przeglądaj źródła

updated jo efficient

MergeProblem1
CANCERYS\kw093 16 godzin temu
rodzic
commit
6e1c2e3d7c
4 zmienionych plików z 52 dodań i 32 usunięć
  1. +2
    -2
      src/app/(main)/stockOutIssueRecord/detail/page.tsx
  2. +12
    -0
      src/app/api/jo/actions.ts
  3. +2
    -1
      src/components/Jodetail/JodetailSearch.tsx
  4. +36
    -29
      src/components/Jodetail/completeJobOrderRecord.tsx

+ 2
- 2
src/app/(main)/stockOutIssueRecord/detail/page.tsx Wyświetl plik

@@ -1,4 +1,4 @@
import { PreloadPickOrder } from "@/app/api/pickOrder";
import { SearchParams } from "@/app/utils/fetchUtil"; import { SearchParams } from "@/app/utils/fetchUtil";
import PickOrderDetail from "@/components/PickOrderDetail"; import PickOrderDetail from "@/components/PickOrderDetail";
import { getServerI18n, I18nProvider } from "@/i18n"; import { getServerI18n, I18nProvider } from "@/i18n";
@@ -14,7 +14,7 @@ type Props = {} & SearchParams;
const PickOrder: React.FC<Props> = async ({ searchParams }) => { const PickOrder: React.FC<Props> = async ({ searchParams }) => {
const { t } = await getServerI18n("pickOrder"); const { t } = await getServerI18n("pickOrder");


PreloadPickOrder();


return ( return (
<> <>


+ 12
- 0
src/app/api/jo/actions.ts Wyświetl plik

@@ -1044,6 +1044,7 @@ export const fetchCompletedJobOrderPickOrders = cache(async (userId: number) =>
}, },
); );
}); });
/*
// 获取已完成的 Job Order pick orders // 获取已完成的 Job Order pick orders
export const fetchCompletedJobOrderPickOrdersrecords = cache(async () => { export const fetchCompletedJobOrderPickOrdersrecords = cache(async () => {
return serverFetchJson<any>( return serverFetchJson<any>(
@@ -1054,6 +1055,17 @@ export const fetchCompletedJobOrderPickOrdersrecords = cache(async () => {
}, },
); );
}); });
*/
export const fetchCompletedJobOrderPickOrdersrecords = async (completedDate?: string | null) => {
const q =
completedDate && String(completedDate).trim() !== ""
? `?date=${encodeURIComponent(String(completedDate).trim())}`
: "";
return serverFetchJson<any>(`${BASE_API_URL}/jo/completed-job-order-pick-orders-only${q}`, {
method: "GET",
cache: "no-store",
});
};
export const fetchJoForPrintQrCode = cache(async (date: string) => { export const fetchJoForPrintQrCode = cache(async (date: string) => {
return serverFetchJson<JobOrderListForPrintQrCodeResponse[]>( return serverFetchJson<JobOrderListForPrintQrCodeResponse[]>(
`${BASE_API_URL}/jo/joForPrintQrCode/${date}`, `${BASE_API_URL}/jo/joForPrintQrCode/${date}`,


+ 2
- 1
src/components/Jodetail/JodetailSearch.tsx Wyświetl plik

@@ -408,6 +408,7 @@ const JodetailSearch: React.FC<Props> = ({ printerCombo }) => {
setFilteredPickOrders(pickOrders); setFilteredPickOrders(pickOrders);
}, [pickOrders]); }, [pickOrders]);
*/ */
/*
useEffect(() => { useEffect(() => {
if (!isOpenCreateModal) { if (!isOpenCreateModal) {
setTabIndex(1) setTabIndex(1)
@@ -416,7 +417,7 @@ const JodetailSearch: React.FC<Props> = ({ printerCombo }) => {
}, 200) }, 200)
} }
}, [isOpenCreateModal]) }, [isOpenCreateModal])
*/
// 添加处理提料单创建成功的函数 // 添加处理提料单创建成功的函数
const handlePickOrderCreated = useCallback(() => { const handlePickOrderCreated = useCallback(() => {
// 切换到 Assign & Release 标签页 (tabIndex = 1) // 切换到 Assign & Release 标签页 (tabIndex = 1)


+ 36
- 29
src/components/Jodetail/completeJobOrderRecord.tsx Wyświetl plik

@@ -129,7 +129,9 @@ const CompleteJobOrderRecord: React.FC<Props> = ({
const [detailLotDataLoading, setDetailLotDataLoading] = useState(false); const [detailLotDataLoading, setDetailLotDataLoading] = useState(false);
// 修改:搜索状态 // 修改:搜索状态
const [searchQuery, setSearchQuery] = useState<Record<string, any>>({});
const [searchQuery, setSearchQuery] = useState<Record<string, any>>(() => ({
completedDate: dayjs().format("YYYY-MM-DD"),
}));
const [filteredJobOrderPickOrders, setFilteredJobOrderPickOrders] = useState<CompletedJobOrderPickOrder[]>([]); const [filteredJobOrderPickOrders, setFilteredJobOrderPickOrders] = useState<CompletedJobOrderPickOrder[]>([]);
// Use props with fallback // Use props with fallback
@@ -146,30 +148,34 @@ const CompleteJobOrderRecord: React.FC<Props> = ({
const errors = formProps.formState.errors; const errors = formProps.formState.errors;


// 修改:使用新的 Job Order API 获取已完成的 Job Order Pick Orders(仅完成pick的) // 修改:使用新的 Job Order API 获取已完成的 Job Order Pick Orders(仅完成pick的)
const fetchCompletedJobOrderPickOrdersData = useCallback(async () => {
if (!currentUserId) return;
setCompletedJobOrderPickOrdersLoading(true);
try {
console.log("🔍 Fetching completed Job Order pick orders (pick completed only)...");
const completedJobOrderPickOrders = await fetchCompletedJobOrderPickOrdersrecords();
// Fix: Ensure the data is always an array
const safeData = Array.isArray(completedJobOrderPickOrders) ? completedJobOrderPickOrders : [];
setCompletedJobOrderPickOrders(safeData);
setFilteredJobOrderPickOrders(safeData);
console.log(" Fetched completed Job Order pick orders:", safeData);
} catch (error) {
console.error("❌ Error fetching completed Job Order pick orders:", error);
setCompletedJobOrderPickOrders([]);
setFilteredJobOrderPickOrders([]);
} finally {
setCompletedJobOrderPickOrdersLoading(false);
}
}, [currentUserId]);

const fetchCompletedJobOrderPickOrdersData = useCallback(
async (forDate?: string) => {
if (!currentUserId) return;
setCompletedJobOrderPickOrdersLoading(true);
try {
const dateParam =
forDate !== undefined
? forDate
: searchQuery.completedDate
? String(searchQuery.completedDate)
: dayjs().format("YYYY-MM-DD");
const completedJobOrderPickOrders = await fetchCompletedJobOrderPickOrdersrecords(
dateParam.trim() ? dateParam.trim() : null,
);
const safeData = Array.isArray(completedJobOrderPickOrders) ? completedJobOrderPickOrders : [];
setCompletedJobOrderPickOrders(safeData);
setFilteredJobOrderPickOrders(safeData);
} catch (error) {
console.error("❌ Error fetching completed Job Order pick orders:", error);
setCompletedJobOrderPickOrders([]);
setFilteredJobOrderPickOrders([]);
} finally {
setCompletedJobOrderPickOrdersLoading(false);
}
},
[currentUserId, searchQuery.completedDate],
);
// 新增:获取 lot 详情数据(使用新的API) // 新增:获取 lot 详情数据(使用新的API)
const fetchLotDetailsData = useCallback(async (pickOrderId: number) => { const fetchLotDetailsData = useCallback(async (pickOrderId: number) => {
setDetailLotDataLoading(true); setDetailLotDataLoading(true);
@@ -190,10 +196,11 @@ const CompleteJobOrderRecord: React.FC<Props> = ({


// 修改:初始化时获取数据 // 修改:初始化时获取数据
useEffect(() => { useEffect(() => {
if (currentUserId) {
fetchCompletedJobOrderPickOrdersData();
}
}, [currentUserId, fetchCompletedJobOrderPickOrdersData]);
if (!currentUserId) return;
const d = searchQuery?.completedDate;
const dateStr = d != null && String(d).trim() !== "" ? String(d).trim() : "";
void fetchCompletedJobOrderPickOrdersData(dateStr || undefined);
}, [currentUserId, searchQuery?.completedDate, fetchCompletedJobOrderPickOrdersData]);


// 修改:搜索功能(只更新 query;实际过滤交给 useEffect + date filter 统一处理) // 修改:搜索功能(只更新 query;实际过滤交给 useEffect + date filter 统一处理)
const handleSearch = useCallback((query: Record<string, any>) => { const handleSearch = useCallback((query: Record<string, any>) => {


Ładowanie…
Anuluj
Zapisz