浏览代码

update

master
MSI\derek 1 个月前
父节点
当前提交
370955bf86
共有 10 个文件被更改,包括 68 次插入44 次删除
  1. +11
    -1
      src/app/api/pickOrder/actions.ts
  2. +1
    -0
      src/app/api/pickOrder/index.ts
  3. +0
    -1
      src/app/api/settings/item/actions.ts
  4. +2
    -0
      src/app/api/settings/item/index.ts
  5. +1
    -1
      src/components/PickOrderDetail/ApprovalForm.tsx
  6. +46
    -34
      src/components/PickOrderDetail/PickOrderDetail.tsx
  7. +1
    -1
      src/components/PickOrderDetail/QcForm.tsx
  8. +4
    -4
      src/components/PickOrderSearch/ConsolidatedPickOrders.tsx
  9. +1
    -1
      src/components/PoDetail/PoQcStockInModal.tsx
  10. +1
    -1
      src/components/PoDetail/QrModal.tsx

+ 11
- 1
src/app/api/pickOrder/actions.ts 查看文件

@@ -181,7 +181,7 @@ export const fetchConsoDetail = cache(async (consoCode: string) => {
export const releasePickOrder = async (data: ReleasePickOrderInputs) => {
console.log(data);
console.log(JSON.stringify(data));
const po = await serverFetchJson<{ body: any; status: number }>(
const po = await serverFetchJson<{ consoCode: string }>(
`${BASE_API_URL}/pickOrder/releaseConso`,
{
method: "POST",
@@ -232,3 +232,13 @@ export const completeConsoPickOrder = async (consoCode: string) => {
revalidateTag("pickorder");
return po;
};

export const fetchConsoStatus = cache(async (consoCode: string) => {
return serverFetchJson<{ status: string }>(
`${BASE_API_URL}/stockOut/get-status/${consoCode}`,
{
method: "GET",
next: { tags: ["pickorder"] },
},
);
});

+ 1
- 0
src/app/api/pickOrder/index.ts 查看文件

@@ -80,6 +80,7 @@ export interface PreReleasePickOrderSummary {
}

export interface PickOrderLineWithSuggestedLot {
poStatus: string;
id: number;
itemName: string;
qty: number;


+ 0
- 1
src/app/api/settings/item/actions.ts 查看文件

@@ -37,7 +37,6 @@ export type CreateItemInputs = {
};

export const saveItem = async (data: CreateItemInputs) => {
// try {
const item = await serverFetchJson<CreateItemResponse<CreateItemInputs>>(
`${BASE_API_URL}/items/new`,
{


+ 2
- 0
src/app/api/settings/item/index.ts 查看文件

@@ -35,6 +35,8 @@ export type ItemsResult = {
type: string;
qcChecks: ItemQc[];
action?: any;
fgName?: string;
excludeDate?: string;
};

export type Result = {


+ 1
- 1
src/components/PickOrderDetail/ApprovalForm.tsx 查看文件

@@ -63,7 +63,7 @@ const ApprovalForm: React.FC<Props> = ({
[onClose],
);

const onSubmit = useCallback<SubmitHandler<PickOrderApprovalInput & {}>>(
const onSubmit = useCallback<SubmitHandler<PickOrderApprovalInput>>(
async (data, event) => {
console.log(data);
// checking later


+ 46
- 34
src/components/PickOrderDetail/PickOrderDetail.tsx 查看文件

@@ -28,7 +28,6 @@ import {
GridEditInputCell,
GridRowParams,
} from "@mui/x-data-grid";
import { PlayArrow } from "@mui/icons-material";
import DoneIcon from "@mui/icons-material/Done";
import { GridRowSelectionModel } from "@mui/x-data-grid";
import { useQrCodeScannerContext } from "../QrCodeScannerProvider/QrCodeScannerProvider";
@@ -36,6 +35,7 @@ import {
completeConsoPickOrder,
CreateStockOutLine,
createStockOutLine,
fetchConsoStatus,
fetchPickOrderLineClient,
fetchStockOutLineClient,
PickOrderApprovalInput,
@@ -63,6 +63,7 @@ import AutoFixNormalIcon from "@mui/icons-material/AutoFixNormal";
import ApprovalForm from "./ApprovalForm";
import InfoIcon from "@mui/icons-material/Info";
import VerifiedIcon from "@mui/icons-material/Verified";
import { isNullOrUndefined } from "html5-qrcode/esm/core";

interface Props {
qc: QcItemWithChecks[];
@@ -171,9 +172,16 @@ const PickOrderDetail: React.FC<Props> = ({ consoCode, qc }) => {
headerName: "location",
flex: 1,
renderCell: (params) => {
if (!params.row.warehouse) return <></>;
const warehouseList = JSON.parse(params.row.warehouse) as string[];
return FitAllCell(warehouseList);
// console.log(params.row.warehouse)
return params.row.warehouse;
if (isNullOrUndefined(params.row.warehouse)) {
return <></>;
} else {
const warehouseList = JSON.parse(
`{${params.row.warehouse}}`,
) as string[];
return FitAllCell(warehouseList);
}
},
},
{
@@ -181,7 +189,8 @@ const PickOrderDetail: React.FC<Props> = ({ consoCode, qc }) => {
headerName: "suggestedLotNo",
flex: 1.2,
renderCell: (params) => {
if (!params.row.suggestedLotNo) return <></>;
return params.row.suggestedLotNo;
if (isNullOrUndefined(params.row.suggestedLotNo)) return <></>;
const suggestedLotNoList = JSON.parse(
params.row.suggestedLotNo,
) as string[];
@@ -200,7 +209,14 @@ const PickOrderDetail: React.FC<Props> = ({ consoCode, qc }) => {
[],
);

const [isCompletedOrder, setIsCompletedOrder] = useState(false);
const [isDisableComplete, setIsDisableComplete] = useState(true);
const [status, setStatus] = useState("");

const getConsoStatus = useCallback(async () => {
const status = await fetchConsoStatus(consoCode);
console.log(status);
setStatus(status.status);
}, [fetchConsoStatus]);

const fetchPickOrderLine = useCallback(
async (params: Record<string, any>) => {
@@ -215,9 +231,10 @@ const PickOrderDetail: React.FC<Props> = ({ consoCode, qc }) => {
if (res) {
console.log(res);
console.log(res.records.every((line) => line.status == "completed"));
setIsCompletedOrder(() =>
res.records.every((line) => line.status == "completed"),
);
setIsDisableComplete(res.records[0].poStatus === "completed");
// setIsDisableComplete(() =>
// res.records.every((line) => line.status !== "completed"),
// );
setPickOrderLine(res.records);

setPolTotalCount(res.total);
@@ -233,21 +250,6 @@ const PickOrderDetail: React.FC<Props> = ({ consoCode, qc }) => {
[fetchPickOrderLineClient, consoCode],
);

const buttonData = useMemo(
() => ({
buttonName: "complete",
title: t("Do you want to complete?"),
confirmButtonText: t("Complete"),
successTitle: t("Complete Success"),
errorTitle: t("Complete Fail"),
buttonText: t("Complete Pick Order"),
buttonIcon: <DoneIcon />,
buttonColor: "info",
disabled: true,
}),
[],
);

const [stockOutLine, setStockOutLine] = useState<StockOutLine[]>([]);

const getRowId = useCallback<GridRowIdGetter<StockOutLineRow>>(
@@ -505,6 +507,7 @@ const PickOrderDetail: React.FC<Props> = ({ consoCode, qc }) => {
key="edit"
/>,
<GridActionsCellItem
key={1}
icon={<DoDisturbIcon />}
label="Delete"
sx={{
@@ -593,7 +596,9 @@ const PickOrderDetail: React.FC<Props> = ({ consoCode, qc }) => {
useEffect(() => {
if (!qcOpen || !approvalOpen) {
triggerRefetch();
getConsoStatus();
fetchPickOrderLine(polCriteriaArgs);
// getConsoStatus()
}
if (selectedRow.length > 0) fetchStockOutLine(solCriteriaArgs, selectedRow);
}, [
@@ -603,6 +608,7 @@ const PickOrderDetail: React.FC<Props> = ({ consoCode, qc }) => {
selectedRow,
triggerRefetch,
polCriteriaArgs,
getConsoStatus,
]);

const getLotDetail = useCallback(
@@ -739,32 +745,35 @@ const PickOrderDetail: React.FC<Props> = ({ consoCode, qc }) => {

const handleCompleteOrder = useCallback(async () => {
const res = await completeConsoPickOrder(consoCode);
if (res) {
if (res.message === "completed") {
console.log(res);
// completed
triggerRefetch();
// setIsCompletedOrder(false)
} else {
// not completed
triggerRefetch();
}
}, [consoCode, triggerRefetch]);
}, [consoCode, triggerRefetch, completeConsoPickOrder]);

return (
<>
<Stack spacing={2}>
<Grid container xs={12} justifyContent="start">
<Grid item xs={12}>
<Typography variant="h4" marginInlineEnd={2}>
{consoCode}
{consoCode} - {status}
</Typography>
</Grid>
<Grid item xs={8}>
<Button
// onClick={buttonData.onClick}
disabled={!isCompletedOrder}
color={buttonData.buttonColor as ButtonProps["color"]}
startIcon={buttonData.buttonIcon}
disabled={isDisableComplete}
color={"info"}
startIcon={<DoneIcon />}
onClick={handleCompleteOrder}
>
{buttonData.buttonText}
{t("Complete Pick Order")}
</Button>
</Grid>
<Grid
@@ -774,13 +783,16 @@ const PickOrderDetail: React.FC<Props> = ({ consoCode, qc }) => {
justifyContent="end"
alignItems="end"
>
<Button
{/* <Button
onClick={mannuallyAddRow}
disabled={selectedRow.length === 0}
>
{isOpenScanner ? t("manual scanning") : t("manual scan")}
</Button>
<Button onClick={onOpenScanner} disabled={selectedRow.length === 0}>
</Button> */}
<Button
onClick={onOpenScanner}
disabled={isDisableComplete ?? selectedRow.length === 0}
>
{isOpenScanner ? t("binding") : t("bind")}
</Button>
</Grid>


+ 1
- 1
src/components/PickOrderDetail/QcForm.tsx 查看文件

@@ -60,7 +60,7 @@ const QcForm: React.FC<Props> = ({
[onClose],
);

const onSubmit = useCallback<SubmitHandler<PickOrderQcInput & {}>>(
const onSubmit = useCallback<SubmitHandler<PickOrderQcInput>>(
async (data, event) => {
console.log(data);
console.log(qcDefaultValues);


+ 4
- 4
src/components/PickOrderSearch/ConsolidatedPickOrders.tsx 查看文件

@@ -218,15 +218,15 @@ const ConsolidatedPickOrders: React.FC<Props> = ({ filterArgs }) => {
[],
);

const onSubmit = useCallback<SubmitHandler<ReleasePickOrderInputs & {}>>(
const onSubmit = useCallback<SubmitHandler<ReleasePickOrderInputs>>(
async (data, event) => {
console.log(data);
try {
const res = await releasePickOrder(data);
console.log(res);
console.log(res.status);
if (res.status === 200) {
router.push(`/pickorder/detail?consoCode=${data.consoCode}`);
if (res.consoCode.length > 0) {
console.log(res);
router.push(`/pickorder/detail?consoCode=${res.consoCode}`);
} else {
console.log(res);
}


+ 1
- 1
src/components/PoDetail/PoQcStockInModal.tsx 查看文件

@@ -203,7 +203,7 @@ const PoQcStockInModal: React.FC<Props> = ({
[itemDetail, formProps],
);

const onSubmit = useCallback<SubmitHandler<ModalFormInput & {}>>(
const onSubmit = useCallback<SubmitHandler<ModalFormInput>>(
async (data, event) => {
setBtnIsLoading(true);
setIsUploading(true);


+ 1
- 1
src/components/PoDetail/QrModal.tsx 查看文件

@@ -136,7 +136,7 @@ const QrModal: React.FC<Props> = ({ open, onClose, warehouse }) => {
if (stockInLineId) fetchStockInLine(stockInLineId);
}, [stockInLineId]);

const onSubmit = useCallback<SubmitHandler<ModalFormInput & {}>>(
const onSubmit = useCallback<SubmitHandler<ModalFormInput>>(
async (data, event) => {
const hasErrors = false;
console.log("errors");


正在加载...
取消
保存