Browse Source

update

master
cyril.tsui 2 weeks ago
parent
commit
ebb55fa853
9 changed files with 76 additions and 31 deletions
  1. +1
    -1
      src/components/JoSave/InfoCard.tsx
  2. +1
    -2
      src/components/JoSave/PickTable.tsx
  3. +34
    -17
      src/components/PoSearch/PoSearch.tsx
  4. +2
    -1
      src/components/RoughSchedule/RoughSchedileSearchView.tsx
  5. +1
    -2
      src/components/RoughSchedule/RoughScheduleWrapper.tsx
  6. +10
    -8
      src/components/SearchResults/SearchResults.tsx
  7. +1
    -0
      src/i18n/zh/common.json
  8. +19
    -0
      src/i18n/zh/jo.json
  9. +7
    -0
      src/i18n/zh/purchaseOrder.json

+ 1
- 1
src/components/JoSave/InfoCard.tsx View File

@@ -12,7 +12,7 @@ type Props = {
const InfoCard: React.FC<Props> = ({ const InfoCard: React.FC<Props> = ({


}) => { }) => {
const { t } = useTranslation();
const { t } = useTranslation("jo");


const { control, getValues, register, watch } = useFormContext<JoDetail>(); const { control, getValues, register, watch } = useFormContext<JoDetail>();




+ 1
- 2
src/components/JoSave/PickTable.tsx View File

@@ -55,13 +55,12 @@ const PickTable: React.FC<Props> = ({
align: "left", align: "left",
headerAlign: "left", headerAlign: "left",
}, },

{ {
field: "status", field: "status",
headerName: t("Status"), headerName: t("Status"),
flex: 1, flex: 1,
renderCell: (row) => { renderCell: (row) => {
return upperFirst(row.value)
return t(upperFirst(row.value))
}, },
}, },
], []) ], [])


+ 34
- 17
src/components/PoSearch/PoSearch.tsx View File

@@ -44,7 +44,15 @@ const PoSearch: React.FC<Props> = ({
const [totalCount, setTotalCount] = useState(initTotalCount); const [totalCount, setTotalCount] = useState(initTotalCount);
const searchCriteria: Criterion<SearchParamNames>[] = useMemo(() => { const searchCriteria: Criterion<SearchParamNames>[] = useMemo(() => {
const searchCriteria: Criterion<SearchParamNames>[] = [ const searchCriteria: Criterion<SearchParamNames>[] = [
{ label: t("Code"), paramName: "code", type: "text" },
{ label: t("Po No."), paramName: "code", type: "text" },
{ label: t("Order Date"), label2: t("Order Date To"), paramName: "orderDate", type: "dateRange" },
{
label: t("Escalated"),
paramName: "escalated",
type: "select",
options: [t("Escalated"), t("NotEscalated")],
},
{ label: t("ETA"), label2: t("ETA To"), paramName: "estimatedArrivalDate", type: "dateRange" },
{ {
label: t("Status"), label: t("Status"),
paramName: "status", paramName: "status",
@@ -55,12 +63,6 @@ const PoSearch: React.FC<Props> = ({
{ label: t(`completed`), value: `completed` }, { label: t(`completed`), value: `completed` },
], ],
}, },
{
label: t("Escalated"),
paramName: "escalated",
type: "select",
options: [t("Escalated"), t("NotEscalated")],
},
]; ];
return searchCriteria; return searchCriteria;
}, [t, po]); }, [t, po]);
@@ -84,22 +86,33 @@ const PoSearch: React.FC<Props> = ({
}, },
{ {
name: "code", name: "code",
label: t("Code"),
label: `${t("Po No.")} &\n${t("Supplier")}`,
renderCell: (params) => {
return <>{params.code}<br/>{params.supplier}</>
},
}, },
{ {
name: "orderDate", name: "orderDate",
label: t("OrderDate"),
label: `${t("Order Date")} &\n${t("ETA")}`,
renderCell: (params) => { renderCell: (params) => {
return (
dayjs(params.orderDate)
.add(-1, "month")
.format(OUTPUT_DATE_FORMAT)
);
// return (
// dayjs(params.estimatedArrivalDate)
// .add(-1, "month")
// .format(OUTPUT_DATE_FORMAT)
// );
return <>{arrayToDateString(params.orderDate)}<br/>{arrayToDateString(params.estimatedArrivalDate)}</>
}, },
}, },
{ {
name: "supplier",
label: t("Supplier"),
name: "itemDetail",
label: t("Item Detail"),
renderCell: (params) => {
if (!params.itemDetail) {
return "N/A"
}
const items = params.itemDetail.split(",")
return items.map((item) => <p>{item}</p>)
},
}, },
{ {
name: "status", name: "status",
@@ -165,7 +178,7 @@ const PoSearch: React.FC<Props> = ({
<Grid container> <Grid container>
<Grid item xs={8}> <Grid item xs={8}>
<Typography variant="h4" marginInlineEnd={2}> <Typography variant="h4" marginInlineEnd={2}>
{t("Purchase Order")}
{t("Purchase Receipt")}
</Typography> </Typography>
</Grid> </Grid>
<Grid item xs={4} display="flex" justifyContent="end" alignItems="end"> <Grid item xs={4} display="flex" justifyContent="end" alignItems="end">
@@ -189,6 +202,10 @@ const PoSearch: React.FC<Props> = ({
query.escalated === "All" query.escalated === "All"
? undefined ? undefined
: query.escalated === t("Escalated"), : query.escalated === t("Escalated"),
estimatedArrivalDate: query.estimatedArrivalDate === "Invalid Date" ? "" : query.estimatedArrivalDate,
estimatedArrivalDateTo: query.estimatedArrivalDateTo === "Invalid Date" ? "" : query.estimatedArrivalDateTo,
orderDate: query.orderDate === "Invalid Date" ? "" : query.orderDate,
orderDateTo: query.orderDateTo === "Invalid Date" ? "" : query.orderDateTo,
}); });
// setFilteredPo((prev) => // setFilteredPo((prev) =>
// po.filter((p) => { // po.filter((p) => {


+ 2
- 1
src/components/RoughSchedule/RoughSchedileSearchView.tsx View File

@@ -19,6 +19,7 @@ import {
ProdScheduleResultByPage, ProdScheduleResultByPage,
SearchProdSchedule, SearchProdSchedule,
fetchProdSchedules, fetchProdSchedules,
fetchRoughProdSchedules,
testDetailedSchedule, testDetailedSchedule,
testRoughSchedule, testRoughSchedule,
} from "@/app/api/scheduling/actions"; } from "@/app/api/scheduling/actions";
@@ -168,7 +169,7 @@ const RSOverview: React.FC<Props> = ({ type, defaultInputs }) => {
pageNum: pagingController.pageNum - 1, pageNum: pagingController.pageNum - 1,
pageSize: pagingController.pageSize, pageSize: pagingController.pageSize,
}; };
const response = await fetchProdSchedules(params);
const response = await fetchRoughProdSchedules(params);


// console.log(response) // console.log(response)
if (response) { if (response) {


+ 1
- 2
src/components/RoughSchedule/RoughScheduleWrapper.tsx View File

@@ -2,8 +2,7 @@ import { fetchAllItems } from "@/app/api/settings/item";
import { RoughScheduleLoading } from "./RoughScheduleLoading"; import { RoughScheduleLoading } from "./RoughScheduleLoading";
import RSOverview from "./RoughSchedileSearchView"; import RSOverview from "./RoughSchedileSearchView";
import { import {
SearchProdSchedule,
fetchProdSchedules,
SearchProdSchedule
} from "@/app/api/scheduling/actions"; } from "@/app/api/scheduling/actions";
import { ScheduleType } from "@/app/api/scheduling"; import { ScheduleType } from "@/app/api/scheduling";




+ 10
- 8
src/components/SearchResults/SearchResults.tsx View File

@@ -281,7 +281,9 @@ function SearchResults<T extends ResultWithId>({
sx={column.sx} sx={column.sx}
key={`${column.name.toString()}${idx}`} key={`${column.name.toString()}${idx}`}
> >
{column.label}
{column.label.split('\n').map((line, index) => (
<div key={index}>{line}</div> // Render each line in a div
))}
</TableCell> </TableCell>
))} ))}
</TableRow> </TableRow>
@@ -297,15 +299,15 @@ function SearchResults<T extends ResultWithId>({
tabIndex={-1} tabIndex={-1}
key={item.id} key={item.id}
onClick={(event) => { onClick={(event) => {
setCheckboxIds
? handleRowClick(event, item, columns)
: undefined
if (onRowClick) {
onRowClick(item)
}
setCheckboxIds
? handleRowClick(event, item, columns)
: undefined

if (onRowClick) {
onRowClick(item)
} }
} }
}
role={setCheckboxIds ? "checkbox" : undefined} role={setCheckboxIds ? "checkbox" : undefined}
> >
{columns.map((column, idx) => { {columns.map((column, idx) => {


+ 1
- 0
src/i18n/zh/common.json View File

@@ -81,5 +81,6 @@
"min": "分鐘", "min": "分鐘",
"mins": "分鐘", "mins": "分鐘",
"Job Order": "工單", "Job Order": "工單",
"Edit Job Order": "編輯工單",
"Production": "生產流程" "Production": "生產流程"
} }

+ 19
- 0
src/i18n/zh/jo.json View File

@@ -0,0 +1,19 @@
{
"Job Order": "工單",
"Create Job Order": "創建工單",
"Edit Job Order Detail": "編輯工單",

"Details": "細節",
"Code": "編號",
"Name": "名稱",
"Req. Qty": "需求數量",
"UoM": "單位",
"Status": "狀態",
"Lot No.": "批號",
"Bom": "物料清單",

"Release": "發佈",

"Pending": "待提料",
"Planning": "計劃中"
}

+ 7
- 0
src/i18n/zh/purchaseOrder.json View File

@@ -1,7 +1,12 @@
{ {
"Purchase Order": "採購訂單", "Purchase Order": "採購訂單",
"Purchase Receipt": "採購來貨",
"Code": "編號", "Code": "編號",
"OrderDate": "下單日期", "OrderDate": "下單日期",
"Order Date": "下單日期",
"Order Date To": "下單日期至",
"ETA": "預計到貨日期",
"ETA To": "預計到貨日期至",
"Details": "詳情", "Details": "詳情",
"Supplier": "供應商", "Supplier": "供應商",
"Status": "狀態", "Status": "狀態",
@@ -20,8 +25,10 @@
"Complete PO": "完成採購訂單", "Complete PO": "完成採購訂單",
"General": "一般", "General": "一般",
"Bind Storage": "綁定倉位", "Bind Storage": "綁定倉位",
"Po No.": "採購訂單編號",
"itemNo": "項目編號", "itemNo": "項目編號",
"itemName": "項目名稱", "itemName": "項目名稱",
"Item Detail": "項目詳情",
"qty": "數量", "qty": "數量",
"uom": "計量單位", "uom": "計量單位",
"total weight": "總重量", "total weight": "總重量",


Loading…
Cancel
Save