| @@ -155,6 +155,11 @@ const GoodsReceiptStatusNew: React.FC = () => { | |||||
| return ( | return ( | ||||
| <Card sx={{ mb: 2 }}> | <Card sx={{ mb: 2 }}> | ||||
| <CardContent> | <CardContent> | ||||
| {/* Title */} | |||||
| <Typography variant="h5" sx={{ fontWeight: 600, mb: 2 }}> | |||||
| {t("Goods Receipt Status New")} | |||||
| </Typography> | |||||
| {/* Header */} | {/* Header */} | ||||
| <Stack direction="row" spacing={2} sx={{ mb: 2 }} alignItems="center" flexWrap="wrap"> | <Stack direction="row" spacing={2} sx={{ mb: 2 }} alignItems="center" flexWrap="wrap"> | ||||
| <Stack direction="row" spacing={1} alignItems="center"> | <Stack direction="row" spacing={1} alignItems="center"> | ||||
| @@ -442,6 +442,11 @@ const TruckScheduleDashboard: React.FC = () => { | |||||
| return ( | return ( | ||||
| <Card sx={{ mb: 2 }}> | <Card sx={{ mb: 2 }}> | ||||
| <CardContent> | <CardContent> | ||||
| {/* Title */} | |||||
| <Typography variant="h5" sx={{ fontWeight: 600, mb: 2 }}> | |||||
| {t("Truck Schedule Dashboard")} | |||||
| </Typography> | |||||
| {/* Filter */} | {/* Filter */} | ||||
| <Stack direction="row" spacing={2} sx={{ mb: 3 }}> | <Stack direction="row" spacing={2} sx={{ mb: 3 }}> | ||||
| <FormControl sx={{ minWidth: 150 }} size="small"> | <FormControl sx={{ minWidth: 150 }} size="small"> | ||||
| @@ -499,9 +504,9 @@ const TruckScheduleDashboard: React.FC = () => { | |||||
| <TableCell sx={{ fontWeight: 600 }}>{t("Truck Schedule")}</TableCell> | <TableCell sx={{ fontWeight: 600 }}>{t("Truck Schedule")}</TableCell> | ||||
| <TableCell sx={{ fontWeight: 600 }}>{t("Time Remaining")}</TableCell> | <TableCell sx={{ fontWeight: 600 }}>{t("Time Remaining")}</TableCell> | ||||
| <TableCell sx={{ fontWeight: 600 }} align="center">{t("No. of Shops")}</TableCell> | <TableCell sx={{ fontWeight: 600 }} align="center">{t("No. of Shops")}</TableCell> | ||||
| <TableCell sx={{ fontWeight: 600 }} align="center">{t("Total Items")}</TableCell> | |||||
| <TableCell sx={{ fontWeight: 600 }} align="center">{t("Tickets Released")}</TableCell> | <TableCell sx={{ fontWeight: 600 }} align="center">{t("Tickets Released")}</TableCell> | ||||
| <TableCell sx={{ fontWeight: 600 }} align="center">{t("Tickets Completed")}</TableCell> | <TableCell sx={{ fontWeight: 600 }} align="center">{t("Tickets Completed")}</TableCell> | ||||
| <TableCell sx={{ fontWeight: 600 }} align="center">{t("Total Items")}</TableCell> | |||||
| <TableCell sx={{ fontWeight: 600 }}>{t("First Ticket Start")}</TableCell> | <TableCell sx={{ fontWeight: 600 }}>{t("First Ticket Start")}</TableCell> | ||||
| <TableCell sx={{ fontWeight: 600 }}>{t("Last Ticket End")}</TableCell> | <TableCell sx={{ fontWeight: 600 }}>{t("Last Ticket End")}</TableCell> | ||||
| <TableCell sx={{ fontWeight: 600 }} align="center">{t("Pick Time (min)")}</TableCell> | <TableCell sx={{ fontWeight: 600 }} align="center">{t("Pick Time (min)")}</TableCell> | ||||
| @@ -145,7 +145,7 @@ const FGPickOrderTicketReleaseTable: React.FC = () => { | |||||
| <Card sx={{ mb: 2 }}> | <Card sx={{ mb: 2 }}> | ||||
| <CardContent> | <CardContent> | ||||
| {/* Title */} | {/* Title */} | ||||
| <Typography variant="h5" sx={{ mb: 3, fontWeight: 600 }}> | |||||
| <Typography variant="h5" sx={{ fontWeight: 600, mb: 2 }}> | |||||
| {t("Ticket Release Table")} | {t("Ticket Release Table")} | ||||
| </Typography> | </Typography> | ||||
| @@ -18,6 +18,7 @@ import { | |||||
| FormControl, | FormControl, | ||||
| Select, | Select, | ||||
| MenuItem, | MenuItem, | ||||
| Stack | |||||
| } from '@mui/material'; | } from '@mui/material'; | ||||
| import { useTranslation } from 'react-i18next'; | import { useTranslation } from 'react-i18next'; | ||||
| import dayjs from 'dayjs'; | import dayjs from 'dayjs'; | ||||
| @@ -228,11 +229,12 @@ const MaterialPickStatusTable: React.FC = () => { | |||||
| <Card sx={{ mb: 2 }}> | <Card sx={{ mb: 2 }}> | ||||
| <CardContent> | <CardContent> | ||||
| {/* Title */} | {/* Title */} | ||||
| <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 3 }}> | |||||
| <Typography variant="h5" sx={{ fontWeight: 600 }}> | |||||
| {t("Material Pick Status")} | |||||
| </Typography> | |||||
| <Typography variant="h5" sx={{ fontWeight: 600, mb: 2 }}> | |||||
| {t("Material Pick Status")} | |||||
| </Typography> | |||||
| {/* Filters */} | |||||
| <Stack direction="row" spacing={2} sx={{ mb: 3 }}> | |||||
| <FormControl size="small" sx={{ minWidth: 160 }}> | <FormControl size="small" sx={{ minWidth: 160 }}> | ||||
| <Select | <Select | ||||
| value={selectedDate} | value={selectedDate} | ||||
| @@ -243,7 +245,7 @@ const MaterialPickStatusTable: React.FC = () => { | |||||
| <MenuItem value={dayjs().subtract(2, "day").format("YYYY-MM-DD")}>{t("Two Days Ago")}</MenuItem> | <MenuItem value={dayjs().subtract(2, "day").format("YYYY-MM-DD")}>{t("Two Days Ago")}</MenuItem> | ||||
| </Select> | </Select> | ||||
| </FormControl> | </FormControl> | ||||
| </Box> | |||||
| </Stack> | |||||
| <Box sx={{ mt: 2 }}> | <Box sx={{ mt: 2 }}> | ||||
| {loading ? ( | {loading ? ( | ||||
| @@ -175,7 +175,7 @@ const EquipmentStatusDashboard: React.FC = () => { | |||||
| return ( | return ( | ||||
| <Box> | <Box> | ||||
| <Box sx={{ display: "flex", justifyContent: "space-between", alignItems: "center", mb: 2 }}> | <Box sx={{ display: "flex", justifyContent: "space-between", alignItems: "center", mb: 2 }}> | ||||
| <Typography variant="h5" sx={{ fontWeight: 600 }}> | |||||
| <Typography variant="h5" sx={{ fontWeight: 600, mb: 2 }}> | |||||
| {t("Production Equipment Status Dashboard")} | {t("Production Equipment Status Dashboard")} | ||||
| </Typography> | </Typography> | ||||
| </Box> | </Box> | ||||
| @@ -15,6 +15,7 @@ import { | |||||
| TableRow, | TableRow, | ||||
| Paper, | Paper, | ||||
| CircularProgress, | CircularProgress, | ||||
| Stack | |||||
| } from '@mui/material'; | } from '@mui/material'; | ||||
| import { useTranslation } from 'react-i18next'; | import { useTranslation } from 'react-i18next'; | ||||
| import dayjs from 'dayjs'; | import dayjs from 'dayjs'; | ||||
| @@ -171,23 +172,24 @@ const JobProcessStatus: React.FC = () => { | |||||
| return ( | return ( | ||||
| <Card sx={{ mb: 2 }}> | <Card sx={{ mb: 2 }}> | ||||
| <CardContent> | <CardContent> | ||||
| <Box sx={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 3 }}> | |||||
| <Typography variant="h5" sx={{ fontWeight: 600 }}> | |||||
| {/* Title */} | |||||
| <Typography variant="h5" sx={{ fontWeight: 600, mb: 2 }}> | |||||
| {t("Job Process Status Dashboard")} | {t("Job Process Status Dashboard")} | ||||
| </Typography> | </Typography> | ||||
| <FormControl size="small" sx={{ minWidth: 160 }}> | |||||
| <Select | |||||
| value={selectedDate} | |||||
| onChange={(e) => setSelectedDate(e.target.value)} | |||||
| > | |||||
| <MenuItem value={dayjs().format("YYYY-MM-DD")}>今天</MenuItem> | |||||
| <MenuItem value={dayjs().subtract(1, "day").format("YYYY-MM-DD")}>昨天</MenuItem> | |||||
| <MenuItem value={dayjs().subtract(2, "day").format("YYYY-MM-DD")}>前天</MenuItem> | |||||
| </Select> | |||||
| </FormControl> | |||||
| </Box> | |||||
| {/* Filters */} | |||||
| <Stack direction="row" spacing={2} sx={{ mb: 3 }}> | |||||
| <FormControl size="small" sx={{ minWidth: 160 }}> | |||||
| <Select | |||||
| value={selectedDate} | |||||
| onChange={(e) => setSelectedDate(e.target.value)} | |||||
| > | |||||
| <MenuItem value={dayjs().format("YYYY-MM-DD")}>今天</MenuItem> | |||||
| <MenuItem value={dayjs().subtract(1, "day").format("YYYY-MM-DD")}>昨天</MenuItem> | |||||
| <MenuItem value={dayjs().subtract(2, "day").format("YYYY-MM-DD")}>前天</MenuItem> | |||||
| </Select> | |||||
| </FormControl> | |||||
| </Stack> | |||||
| <Box sx={{ mt: 2 }}> | <Box sx={{ mt: 2 }}> | ||||
| {loading ? ( | {loading ? ( | ||||
| <Box sx={{ display: 'flex', justifyContent: 'center', p: 3 }}> | <Box sx={{ display: 'flex', justifyContent: 'center', p: 3 }}> | ||||
| @@ -17,6 +17,7 @@ import { | |||||
| FormControl, | FormControl, | ||||
| Select, | Select, | ||||
| MenuItem, | MenuItem, | ||||
| Stack | |||||
| } from "@mui/material"; | } from "@mui/material"; | ||||
| import { useTranslation } from "react-i18next"; | import { useTranslation } from "react-i18next"; | ||||
| import dayjs from "dayjs"; | import dayjs from "dayjs"; | ||||
| @@ -149,11 +150,13 @@ const OperatorKpiDashboard: React.FC = () => { | |||||
| return ( | return ( | ||||
| <Card sx={{ mb: 2 }}> | <Card sx={{ mb: 2 }}> | ||||
| <CardContent> | <CardContent> | ||||
| <Box sx={{ display: "flex", justifyContent: "space-between", alignItems: "center", mb: 3 }}> | |||||
| <Typography variant="h5" sx={{ fontWeight: 600 }}> | |||||
| {t("Operator KPI Dashboard")} | |||||
| </Typography> | |||||
| {/* Title */} | |||||
| <Typography variant="h5" sx={{ fontWeight: 600, mb: 2 }}> | |||||
| {t("Operator KPI Dashboard")} | |||||
| </Typography> | |||||
| {/* Filters */} | |||||
| <Stack direction="row" spacing={2} sx={{ mb: 3 }}> | |||||
| <FormControl size="small" sx={{ minWidth: 160 }}> | <FormControl size="small" sx={{ minWidth: 160 }}> | ||||
| <Select | <Select | ||||
| value={selectedDate} | value={selectedDate} | ||||
| @@ -164,7 +167,7 @@ const OperatorKpiDashboard: React.FC = () => { | |||||
| <MenuItem value={dayjs().subtract(2, "day").format("YYYY-MM-DD")}>{t("Two Days Ago")}</MenuItem> | <MenuItem value={dayjs().subtract(2, "day").format("YYYY-MM-DD")}>{t("Two Days Ago")}</MenuItem> | ||||
| </Select> | </Select> | ||||
| </FormControl> | </FormControl> | ||||
| </Box> | |||||
| </Stack> | |||||
| {loading ? ( | {loading ? ( | ||||
| <Box sx={{ display: "flex", justifyContent: "center", p: 3 }}> | <Box sx={{ display: "flex", justifyContent: "center", p: 3 }}> | ||||