Преглед на файлове

updated jo efficient

MergeProblem1
CANCERYS\kw093 преди 16 часа
родител
ревизия
6e1c2e3d7c
променени са 4 файла, в които са добавени 52 реда и са изтрити 32 реда
  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 Целия файл

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

PreloadPickOrder();

return (
<>


+ 12
- 0
src/app/api/jo/actions.ts Целия файл

@@ -1044,6 +1044,7 @@ export const fetchCompletedJobOrderPickOrders = cache(async (userId: number) =>
},
);
});
/*
// 获取已完成的 Job Order pick orders
export const fetchCompletedJobOrderPickOrdersrecords = cache(async () => {
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) => {
return serverFetchJson<JobOrderListForPrintQrCodeResponse[]>(
`${BASE_API_URL}/jo/joForPrintQrCode/${date}`,


+ 2
- 1
src/components/Jodetail/JodetailSearch.tsx Целия файл

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


+ 36
- 29
src/components/Jodetail/completeJobOrderRecord.tsx Целия файл

@@ -129,7 +129,9 @@ const CompleteJobOrderRecord: React.FC<Props> = ({
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[]>([]);
// Use props with fallback
@@ -146,30 +148,34 @@ const CompleteJobOrderRecord: React.FC<Props> = ({
const errors = formProps.formState.errors;

// 修改:使用新的 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)
const fetchLotDetailsData = useCallback(async (pickOrderId: number) => {
setDetailLotDataLoading(true);
@@ -190,10 +196,11 @@ const CompleteJobOrderRecord: React.FC<Props> = ({

// 修改:初始化时获取数据
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 统一处理)
const handleSearch = useCallback((query: Record<string, any>) => {


Зареждане…
Отказ
Запис