| @@ -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 }} | |||||
| /> | /> | ||||
| </> | </> | ||||
| ); | ); | ||||