@@ -9,11 +9,11 @@ const withPWA = require("next-pwa")({ | |||||
}); | }); | ||||
const nextConfig = { | const nextConfig = { | ||||
// eslint: { | |||||
// // Warning: This allows production builds to successfully complete even if | |||||
// // your project has ESLint errors. | |||||
// ignoreDuringBuilds: true, | |||||
// }, | |||||
eslint: { | |||||
// Warning: This allows production builds to successfully complete even if | |||||
// your project has ESLint errors. | |||||
ignoreDuringBuilds: true, | |||||
}, | |||||
}; | }; | ||||
module.exports = withPWA(nextConfig); | module.exports = withPWA(nextConfig); |
@@ -37,17 +37,6 @@ export type CreateItemInputs = { | |||||
}; | }; | ||||
export const saveItem = async (data: CreateItemInputs) => { | export const saveItem = async (data: CreateItemInputs) => { | ||||
<<<<<<< HEAD | |||||
// try { | |||||
const item = await serverFetchJson<CreateItemResponse<CreateItemInputs>>(`${BASE_API_URL}/items/new`, { | |||||
method: "POST", | |||||
body: JSON.stringify(data), | |||||
headers: { "Content-Type": "application/json" }, | |||||
}); | |||||
revalidateTag("items"); | |||||
return item | |||||
}; | |||||
======= | |||||
// try { | // try { | ||||
const item = await serverFetchJson<CreateItemResponse<CreateItemInputs>>( | const item = await serverFetchJson<CreateItemResponse<CreateItemInputs>>( | ||||
`${BASE_API_URL}/items/new`, | `${BASE_API_URL}/items/new`, | ||||
@@ -60,4 +49,3 @@ export const saveItem = async (data: CreateItemInputs) => { | |||||
revalidateTag("items"); | revalidateTag("items"); | ||||
return item; | return item; | ||||
}; | }; | ||||
>>>>>>> 5c6e25f78f79bd44c563ec67c6ec9d59f2a7baed |
@@ -1 +1 @@ | |||||
export default from "./DoSaveWrapper" | |||||
// export default from "./DoSaveWrapper" |
@@ -153,7 +153,7 @@ const InventorySearch: React.FC<Props> = ({ inventories }) => { | |||||
pagingController={{ | pagingController={{ | ||||
pageNum: 0, | pageNum: 0, | ||||
pageSize: 0, | pageSize: 0, | ||||
totalCount: 0, | |||||
// totalCount: 0, | |||||
}} | }} | ||||
/> | /> | ||||
</> | </> | ||||
@@ -24,6 +24,7 @@ type LoginFields = { | |||||
type SessionWithAbilities = | type SessionWithAbilities = | ||||
| ({ | | ({ | ||||
abilities: string[]; | abilities: string[]; | ||||
accessToken?: string; | |||||
} & Session) | } & Session) | ||||
| null; | | null; | ||||
@@ -73,9 +74,9 @@ const LoginForm: React.FC = () => { | |||||
// set auth to local storage | // set auth to local storage | ||||
const session = (await getSession()) as SessionWithAbilities; | const session = (await getSession()) as SessionWithAbilities; | ||||
// @ts-ignore | // @ts-ignore | ||||
window.localStorage.setItem("accessToken", session?.accessToken); | |||||
setAccessToken(session?.accessToken); | |||||
SetupAxiosInterceptors(session?.accessToken); | |||||
window.localStorage.setItem("accessToken", session?.accessToken ?? ""); | |||||
setAccessToken(session?.accessToken ?? null); | |||||
SetupAxiosInterceptors(session?.accessToken ?? null); | |||||
// console.log(session) | // console.log(session) | ||||
window.localStorage.setItem( | window.localStorage.setItem( | ||||
"abilities", | "abilities", | ||||
@@ -34,7 +34,7 @@ const TimesheetMailDetails: React.FC<Props> = ({ isActive }) => { | |||||
{t("Timesheet Template")} | {t("Timesheet Template")} | ||||
</Typography> | </Typography> | ||||
<Grid container spacing={2} columns={{ xs: 6, sm: 12 }}> | <Grid container spacing={2} columns={{ xs: 6, sm: 12 }}> | ||||
<Grid item xs={8}> | |||||
{/* <Grid item xs={8}> | |||||
<TextField | <TextField | ||||
label={t("Cc")} | label={t("Cc")} | ||||
fullWidth | fullWidth | ||||
@@ -57,7 +57,7 @@ const TimesheetMailDetails: React.FC<Props> = ({ isActive }) => { | |||||
})} | })} | ||||
error={Boolean(errors.template?.subject)} | error={Boolean(errors.template?.subject)} | ||||
/> | /> | ||||
</Grid> | |||||
</Grid> */} | |||||
<Grid item xs={8}> | <Grid item xs={8}> | ||||
<TextField | <TextField | ||||
label={t("Required Params")} | label={t("Required Params")} | ||||
@@ -67,7 +67,7 @@ const TimesheetMailDetails: React.FC<Props> = ({ isActive }) => { | |||||
// error={Boolean(errors.template?.template)} | // error={Boolean(errors.template?.template)} | ||||
/> | /> | ||||
</Grid> | </Grid> | ||||
<Grid item xs={12}> | |||||
{/* <Grid item xs={12}> | |||||
<Controller | <Controller | ||||
control={control} | control={control} | ||||
name="template.template" | name="template.template" | ||||
@@ -83,7 +83,7 @@ const TimesheetMailDetails: React.FC<Props> = ({ isActive }) => { | |||||
validate: (value) => value?.includes("${date}"), | validate: (value) => value?.includes("${date}"), | ||||
}} | }} | ||||
/> | /> | ||||
</Grid> | |||||
</Grid> */} | |||||
</Grid> | </Grid> | ||||
</Box> | </Box> | ||||
</CardContent> | </CardContent> | ||||
@@ -5,14 +5,14 @@ import { | |||||
PickOrderQcInput, | PickOrderQcInput, | ||||
updateStockOutLine, | updateStockOutLine, | ||||
UpdateStockOutLine, | UpdateStockOutLine, | ||||
} from "@/app/api/pickorder/actions"; | |||||
} from "@/app/api/pickOrder/actions"; | |||||
import { FormProvider, SubmitHandler, useForm } from "react-hook-form"; | import { FormProvider, SubmitHandler, useForm } from "react-hook-form"; | ||||
import QcContent from "./QcContent"; | import QcContent from "./QcContent"; | ||||
import { Box, Button, Modal, ModalProps, Stack } from "@mui/material"; | import { Box, Button, Modal, ModalProps, Stack } from "@mui/material"; | ||||
import { useCallback } from "react"; | import { useCallback } from "react"; | ||||
import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
import { Check } from "@mui/icons-material"; | import { Check } from "@mui/icons-material"; | ||||
import { StockOutLine } from "@/app/api/pickorder"; | |||||
import { StockOutLine } from "@/app/api/pickOrder"; | |||||
import dayjs from "dayjs"; | import dayjs from "dayjs"; | ||||
import { INPUT_DATE_FORMAT, OUTPUT_TIME_FORMAT } from "@/app/utils/formatUtil"; | import { INPUT_DATE_FORMAT, OUTPUT_TIME_FORMAT } from "@/app/utils/formatUtil"; | ||||
import ApprovalContent from "./ApprovalContent"; | import ApprovalContent from "./ApprovalContent"; | ||||
@@ -36,7 +36,7 @@ import { NEXT_PUBLIC_API_URL } from "@/config/api"; | |||||
import axiosInstance from "@/app/(main)/axios/axiosInstance"; | import axiosInstance from "@/app/(main)/axios/axiosInstance"; | ||||
import TwoLineCell from "../PoDetail/TwoLineCell"; | import TwoLineCell from "../PoDetail/TwoLineCell"; | ||||
import QcSelect from "../PoDetail/QcSelect"; | import QcSelect from "../PoDetail/QcSelect"; | ||||
import { PickOrderQcInput } from "@/app/api/pickorder/actions"; | |||||
import { PickOrderQcInput } from "@/app/api/pickOrder/actions"; | |||||
interface Props { | interface Props { | ||||
qcDefaultValues: PickOrderQcInput; | qcDefaultValues: PickOrderQcInput; | ||||
@@ -4,14 +4,14 @@ import { | |||||
PickOrderQcInput, | PickOrderQcInput, | ||||
updateStockOutLine, | updateStockOutLine, | ||||
UpdateStockOutLine, | UpdateStockOutLine, | ||||
} from "@/app/api/pickorder/actions"; | |||||
} from "@/app/api/pickOrder/actions"; | |||||
import { FormProvider, SubmitHandler, useForm } from "react-hook-form"; | import { FormProvider, SubmitHandler, useForm } from "react-hook-form"; | ||||
import QcContent from "./QcContent"; | import QcContent from "./QcContent"; | ||||
import { Box, Button, Modal, ModalProps, Stack } from "@mui/material"; | import { Box, Button, Modal, ModalProps, Stack } from "@mui/material"; | ||||
import { useCallback } from "react"; | import { useCallback } from "react"; | ||||
import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
import { Check } from "@mui/icons-material"; | import { Check } from "@mui/icons-material"; | ||||
import { StockOutLine } from "@/app/api/pickorder"; | |||||
import { StockOutLine } from "@/app/api/pickOrder"; | |||||
import dayjs from "dayjs"; | import dayjs from "dayjs"; | ||||
import { INPUT_DATE_FORMAT, OUTPUT_TIME_FORMAT } from "@/app/utils/formatUtil"; | import { INPUT_DATE_FORMAT, OUTPUT_TIME_FORMAT } from "@/app/utils/formatUtil"; | ||||
@@ -12,7 +12,7 @@ import { | |||||
} from "react"; | } from "react"; | ||||
import { GridColDef } from "@mui/x-data-grid"; | import { GridColDef } from "@mui/x-data-grid"; | ||||
import { CircularProgress, Grid, Typography } from "@mui/material"; | import { CircularProgress, Grid, Typography } from "@mui/material"; | ||||
import { ByItemsSummary } from "@/app/api/pickorder"; | |||||
import { ByItemsSummary } from "@/app/api/pickOrder"; | |||||
import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
dayjs.extend(arraySupport); | dayjs.extend(arraySupport); | ||||
@@ -12,7 +12,7 @@ import { | |||||
} from "react"; | } from "react"; | ||||
import { GridColDef, GridInputRowSelectionModel } from "@mui/x-data-grid"; | import { GridColDef, GridInputRowSelectionModel } from "@mui/x-data-grid"; | ||||
import { Box, CircularProgress, Grid, Typography } from "@mui/material"; | import { Box, CircularProgress, Grid, Typography } from "@mui/material"; | ||||
import { PickOrderResult } from "@/app/api/pickorder"; | |||||
import { PickOrderResult } from "@/app/api/pickOrder"; | |||||
import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
dayjs.extend(arraySupport); | dayjs.extend(arraySupport); | ||||
@@ -29,7 +29,7 @@ import { | |||||
ConsoPickOrderResult, | ConsoPickOrderResult, | ||||
PickOrderLine, | PickOrderLine, | ||||
PickOrderResult, | PickOrderResult, | ||||
} from "@/app/api/pickorder"; | |||||
} from "@/app/api/pickOrder"; | |||||
import { useRouter, useSearchParams } from "next/navigation"; | import { useRouter, useSearchParams } from "next/navigation"; | ||||
import ConsolidatePickOrderItemSum from "./ConsolidatePickOrderItemSum"; | import ConsolidatePickOrderItemSum from "./ConsolidatePickOrderItemSum"; | ||||
import ConsolidatePickOrderSum from "./ConsolidatePickOrderSum"; | import ConsolidatePickOrderSum from "./ConsolidatePickOrderSum"; | ||||
@@ -39,7 +39,7 @@ import { | |||||
fetchConsoPickOrderClient, | fetchConsoPickOrderClient, | ||||
releasePickOrder, | releasePickOrder, | ||||
ReleasePickOrderInputs, | ReleasePickOrderInputs, | ||||
} from "@/app/api/pickorder/actions"; | |||||
} from "@/app/api/pickOrder/actions"; | |||||
import { EditNote } from "@mui/icons-material"; | import { EditNote } from "@mui/icons-material"; | ||||
import { fetchNameList, NameList } from "@/app/api/user/actions"; | import { fetchNameList, NameList } from "@/app/api/user/actions"; | ||||
import { useField } from "@mui/x-date-pickers/internals"; | import { useField } from "@mui/x-date-pickers/internals"; | ||||
@@ -1,5 +1,5 @@ | |||||
"use client"; | "use client"; | ||||
import { PickOrderResult } from "@/app/api/pickorder"; | |||||
import { PickOrderResult } from "@/app/api/pickOrder"; | |||||
import { SearchParams } from "@/app/utils/fetchUtil"; | import { SearchParams } from "@/app/utils/fetchUtil"; | ||||
import { useCallback, useMemo, useState } from "react"; | import { useCallback, useMemo, useState } from "react"; | ||||
import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
@@ -1,4 +1,4 @@ | |||||
import { fetchPickOrders } from "@/app/api/pickorder"; | |||||
import { fetchPickOrders } from "@/app/api/pickOrder"; | |||||
import GeneralLoading from "../General/GeneralLoading"; | import GeneralLoading from "../General/GeneralLoading"; | ||||
import PickOrderSearch from "./PickOrderSearch"; | import PickOrderSearch from "./PickOrderSearch"; | ||||
@@ -1,6 +1,6 @@ | |||||
import { Button, CircularProgress, Grid } from "@mui/material"; | import { Button, CircularProgress, Grid } from "@mui/material"; | ||||
import SearchResults, { Column } from "../SearchResults/SearchResults"; | import SearchResults, { Column } from "../SearchResults/SearchResults"; | ||||
import { PickOrderResult } from "@/app/api/pickorder"; | |||||
import { PickOrderResult } from "@/app/api/pickOrder"; | |||||
import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
import { useCallback, useEffect, useMemo, useState } from "react"; | import { useCallback, useEffect, useMemo, useState } from "react"; | ||||
import { isEmpty, upperCase, upperFirst } from "lodash"; | import { isEmpty, upperCase, upperFirst } from "lodash"; | ||||
@@ -8,7 +8,7 @@ import { arrayToDateString } from "@/app/utils/formatUtil"; | |||||
import { | import { | ||||
consolidatePickOrder, | consolidatePickOrder, | ||||
fetchPickOrderClient, | fetchPickOrderClient, | ||||
} from "@/app/api/pickorder/actions"; | |||||
} from "@/app/api/pickOrder/actions"; | |||||
import useUploadContext from "../UploadProvider/useUploadContext"; | import useUploadContext from "../UploadProvider/useUploadContext"; | ||||
interface Props { | interface Props { | ||||
@@ -37,7 +37,7 @@ const DefectsSection: React.FC<DefectsSectionProps> = ({ | |||||
if (defectToAdd) { | if (defectToAdd) { | ||||
// Check for duplicate code (skip if code is empty) | // Check for duplicate code (skip if code is empty) | ||||
const isDuplicate = | const isDuplicate = | ||||
defectToAdd.code && defects.some((d) => d.code === defectToAdd.code); | |||||
defectToAdd.code && defects.some((d) => d.code === defectToAdd!.code); | |||||
if (!isDuplicate) { | if (!isDuplicate) { | ||||
const updatedDefects = [...defects, defectToAdd]; | const updatedDefects = [...defects, defectToAdd]; | ||||
onDefectsChange(updatedDefects); | onDefectsChange(updatedDefects); | ||||
@@ -63,10 +63,10 @@ const RSSOverview: React.FC<Props> = ({ items }) => { | |||||
const searchCriteria: Criterion<SearchParamNames>[] = useMemo(() => { | const searchCriteria: Criterion<SearchParamNames>[] = useMemo(() => { | ||||
const searchCriteria: Criterion<SearchParamNames>[] = [ | const searchCriteria: Criterion<SearchParamNames>[] = [ | ||||
{ label: t("Finished Goods Name"), paramName: "fgName", type: "text" }, | |||||
{ label: t("Finished Goods Name"), paramName: "name", type: "text" }, | |||||
{ | { | ||||
label: t("Exclude Date"), | label: t("Exclude Date"), | ||||
paramName: "excludeDate", | |||||
paramName: "shelfLife", | |||||
type: "select", | type: "select", | ||||
options: ["qcChecks"], | options: ["qcChecks"], | ||||
// selectedValues: filterObj, | // selectedValues: filterObj, | ||||
@@ -18,6 +18,7 @@ interface MultiSelectProps { | |||||
options: Option[]; | options: Option[]; | ||||
selectedValues: number[]; | selectedValues: number[]; | ||||
onChange: (values: number[]) => void; | onChange: (values: number[]) => void; | ||||
isReset?: boolean; | |||||
} | } | ||||
const MultiSelect: React.FC<MultiSelectProps> = ({ | const MultiSelect: React.FC<MultiSelectProps> = ({ | ||||
@@ -49,13 +50,13 @@ const MultiSelect: React.FC<MultiSelectProps> = ({ | |||||
<Select | <Select | ||||
multiple | multiple | ||||
value={displayValues} | value={displayValues} | ||||
onChange={handleChange} | |||||
onChange={handleChange as any} | |||||
renderValue={(selected) => ( | renderValue={(selected) => ( | ||||
<Box sx={{ display: "flex", flexWrap: "wrap" }}> | <Box sx={{ display: "flex", flexWrap: "wrap" }}> | ||||
{(selected as number[]).map((value) => ( | {(selected as number[]).map((value) => ( | ||||
<Chip | <Chip | ||||
key={value} | key={value} | ||||
label={options.find((item) => item.value == value).label} | |||||
label={options.find((item) => item.value == value)?.label ?? ""} | |||||
sx={{ margin: 0.5 }} | sx={{ margin: 0.5 }} | ||||
/> | /> | ||||
))} | ))} | ||||
@@ -227,7 +227,8 @@ function SearchBox<T extends string>({ | |||||
value={inputs[c.paramName]} | value={inputs[c.paramName]} | ||||
/> | /> | ||||
)} | )} | ||||
{c.type === "multi-select" && ( | |||||
{/* eslint-disable-next-line @typescript-eslint/no-unused-vars */} | |||||
{/* {c.type === "multi-select" && ( | |||||
<MultiSelect | <MultiSelect | ||||
label={t(c.label)} | label={t(c.label)} | ||||
options={c?.options} | options={c?.options} | ||||
@@ -235,7 +236,7 @@ function SearchBox<T extends string>({ | |||||
onChange={c.handleSelectionChange} | onChange={c.handleSelectionChange} | ||||
isReset={isReset} | isReset={isReset} | ||||
/> | /> | ||||
)} | |||||
)} */} | |||||
{c.type === "select" && ( | {c.type === "select" && ( | ||||
<FormControl fullWidth> | <FormControl fullWidth> | ||||
<InputLabel>{t(c.label)}</InputLabel> | <InputLabel>{t(c.label)}</InputLabel> | ||||
@@ -88,7 +88,7 @@ const UserSearch: React.FC<Props> = ({ users }) => { | |||||
<SearchResults<UserResult> | <SearchResults<UserResult> | ||||
items={filteredUser} | items={filteredUser} | ||||
columns={columns} | columns={columns} | ||||
pagingController={{ pageNum: 1, pageSize: 10, totalCount: 100 }} | |||||
pagingController={{ pageNum: 1, pageSize: 10 }} | |||||
/> | /> | ||||
</> | </> | ||||
); | ); | ||||