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

Cancel Pick Order

production
CANCERYS\kw093 преди 2 дни
родител
ревизия
8b44670414
променени са 4 файла, в които са добавени 62 реда и са изтрити 2 реда
  1. +13
    -0
      src/app/api/pickOrder/actions.ts
  2. +45
    -2
      src/components/PickOrderSearch/AssignAndRelease.tsx
  3. +2
    -0
      src/i18n/en/pickOrder.json
  4. +2
    -0
      src/i18n/zh/pickOrder.json

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

@@ -1064,6 +1064,19 @@ export const newassignPickOrder = async (data: AssignPickOrderInputs) => {
return response;
};

export const cancelPickOrders = async (pickOrderIds: number[]) => {
const response = await serverFetchJson<PostPickOrderResponse>(
`${BASE_API_URL}/pickOrder/cancel`,
{
method: "POST",
body: JSON.stringify({ pickOrderIds }),
headers: { "Content-Type": "application/json" },
},
);
revalidateTag("pickorder");
return response;
};

// Missing function 2: releaseAssignedPickOrders
export const releaseAssignedPickOrders = async (data: AssignPickOrderInputs) => {
const response = await serverFetchJson<PostPickOrderResponse>(


+ 45
- 2
src/components/PickOrderSearch/AssignAndRelease.tsx Целия файл

@@ -19,7 +19,7 @@ import {
Checkbox,
TablePagination,
} from "@mui/material";
import { useCallback, useEffect, useMemo, useState } from "react";
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
import { useTranslation } from "react-i18next";
import {
newassignPickOrder,
@@ -27,6 +27,7 @@ import {
releaseAssignedPickOrders,
assignPickOrderWorkbenchV2,
releasePickOrderWorkbenchV2,
cancelPickOrders,
} from "@/app/api/pickOrder/actions";
import { fetchNameList, NameList ,fetchNewNameList, NewNameList} from "@/app/api/user/actions";
import { FormProvider, useForm } from "react-hook-form";
@@ -92,6 +93,8 @@ const AssignAndRelease: React.FC<Props> = ({ filterArgs }) => {
const [selectedPickOrderIds, setSelectedPickOrderIds] = useState<number[]>([]);
const [filteredItems, setFilteredItems] = useState<ItemRow[]>([]);
const [isLoadingItems, setIsLoadingItems] = useState(false);
const [isCancelling, setIsCancelling] = useState(false);
const cancelInFlightRef = useRef(false);
const [pagingController, setPagingController] = useState({
pageNum: 1,
pageSize: 10,
@@ -398,6 +401,38 @@ const AssignAndRelease: React.FC<Props> = ({ filterArgs }) => {
formProps.reset();
}, [formProps]);

const handleCancelPickOrders = useCallback(async () => {
if (selectedPickOrderIds.length === 0) return;
if (cancelInFlightRef.current) return;
if (!window.confirm(t("Confirm Cancel Pick Order"))) return;

cancelInFlightRef.current = true;
setIsCancelling(true);
setIsUploading(true);
try {
const res = await cancelPickOrders(selectedPickOrderIds);
if (res && res.code === "SUCCESS") {
setSelectedPickOrderIds([]);
fetchNewPageItems(pagingController, filterArgs);
} else {
console.error("Cancel pick orders failed:", res);
}
} catch (error) {
console.error("Error cancelling pick orders:", error);
} finally {
setIsCancelling(false);
setIsUploading(false);
cancelInFlightRef.current = false;
}
}, [
selectedPickOrderIds,
setIsUploading,
fetchNewPageItems,
pagingController,
filterArgs,
t,
]);

// 组件挂载时加载数据
useEffect(() => {
console.log("=== Component mounted ===");
@@ -549,7 +584,7 @@ const AssignAndRelease: React.FC<Props> = ({ filterArgs }) => {
)}
</Grid>
<Grid item xs={12}>
<Box sx={{ display: "flex", justifyContent: "flex-start", mt: 2 }}>
<Box sx={{ display: "flex", gap: 2, justifyContent: "flex-start", mt: 2 }}>
<Button
disabled={selectedPickOrderIds.length < 1}
variant="outlined"
@@ -557,6 +592,14 @@ const AssignAndRelease: React.FC<Props> = ({ filterArgs }) => {
>
{t("Assign")}
</Button>
<Button
disabled={selectedPickOrderIds.length < 1 || isCancelling}
variant="outlined"
color="error"
onClick={handleCancelPickOrders}
>
{t("Cancel Pick Order")}
</Button>
</Box>
</Grid>
</Grid>


+ 2
- 0
src/i18n/en/pickOrder.json Целия файл

@@ -228,6 +228,8 @@
"Selected": "Selected",
"Select Items": "Select Items",
"Assign": "Assign",
"Cancel Pick Order": "Cancel Pick Order",
"Confirm Cancel Pick Order": "Cancel the selected pick order(s)? They will no longer appear on this page.",
"Release": "Release",
"Pick Execution": "Pick Execution",
"Create Pick Order": "Create Pick Order",


+ 2
- 0
src/i18n/zh/pickOrder.json Целия файл

@@ -230,6 +230,8 @@
"Selected": "已選",
"Select Items": "選擇貨品",
"Assign": "分派提料單",
"Cancel Pick Order": "取消提料單",
"Confirm Cancel Pick Order": "確定取消已選提料單?取消後將不再顯示於此頁。",
"Release": "放單",
"Pick Execution": "進行提料",
"Create Pick Order": "建立貨品提料單",


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