FPSMS-frontend
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 

121 行
4.2 KiB

  1. "use client";
  2. import { useTranslation } from "react-i18next";
  3. import { ThemeProvider } from "@mui/material/styles";
  4. import theme from "../../theme";
  5. import { TabsProps } from "@mui/material/Tabs";
  6. import React, { useCallback, useEffect, useState } from "react";
  7. import { useRouter } from "next/navigation";
  8. import { Card, CardContent, CardHeader, Grid } from "@mui/material";
  9. import DashboardProgressChart from "./chart/DashboardProgressChart";
  10. import DashboardLineChart from "./chart/DashboardLineChart";
  11. import PendingInspectionChart from "./chart/PendingInspectionChart";
  12. import PendingStorageChart from "./chart/PendingStorageChart";
  13. import ApplicationCompletionChart from "./chart/ApplicationCompletionChart";
  14. import OrderCompletionChart from "./chart/OrderCompletionChart";
  15. import DashboardBox from "./Dashboardbox";
  16. import CollapsibleCard from "../CollapsibleCard";
  17. // import SupervisorQcApproval, { IQCItems } from "./QC/SupervisorQcApproval";
  18. import { EscalationResult } from "@/app/api/escalation";
  19. import EscalationLogTable from "./escalation/EscalationLogTable";
  20. type Props = {
  21. // iqc: IQCItems[] | undefined
  22. escalationLogs: EscalationResult[]
  23. };
  24. const DashboardPage: React.FC<Props> = ({
  25. // iqc,
  26. escalationLogs
  27. }) => {
  28. const { t } = useTranslation("dashboard");
  29. const router = useRouter();
  30. const [escLog, setEscLog] = useState<EscalationResult[]>([]);
  31. const getPendingLog = () => {
  32. return escLog.filter(esc => esc.status == "pending");
  33. };
  34. useEffect(() => {
  35. setEscLog(escalationLogs);
  36. }, [escalationLogs])
  37. return (
  38. <ThemeProvider theme={theme}>
  39. <Grid container spacing={2}>
  40. <Grid item xs={12}>
  41. <CollapsibleCard
  42. title={`${t("Responsible Escalation List")} (${t("pending")} : ${
  43. getPendingLog().length > 0 ? getPendingLog().length : t("No")})`}
  44. showFilter={true}
  45. filterText={t("show completed logs")}
  46. // defaultOpen={getPendingLog().length > 0} // TODO Fix default not opening
  47. >
  48. <CardContent>
  49. <EscalationLogTable items={escLog}/>
  50. </CardContent>
  51. </CollapsibleCard>
  52. </Grid>
  53. <Grid item xs={12}>
  54. <CollapsibleCard title={t("Progress chart")}>
  55. <CardContent>
  56. <Grid container spacing={3}>
  57. <Grid item xs={12} md={4}>
  58. <DashboardProgressChart />
  59. </Grid>
  60. <Grid item xs={12} md={4}>
  61. <PendingInspectionChart />
  62. </Grid>
  63. <Grid item xs={12} md={4}>
  64. <PendingStorageChart />
  65. </Grid>
  66. </Grid>
  67. </CardContent>
  68. </CollapsibleCard>
  69. </Grid>
  70. <Grid item xs={12}>
  71. <CollapsibleCard title={t("Warehouse status")}>
  72. <CardContent>
  73. <Grid container spacing={2}>
  74. <Grid item xs={12} md={6}>
  75. <Grid container spacing={2}>
  76. <Grid item xs={12} sm={6}>
  77. <ApplicationCompletionChart />
  78. </Grid>
  79. <Grid item xs={12} sm={6}>
  80. <OrderCompletionChart />
  81. </Grid>
  82. </Grid>
  83. </Grid>
  84. {/*<Grid item xs={12} md={6}>
  85. <Grid container spacing={2}>
  86. <Grid item xs={12} sm={6}>
  87. <DashboardBox
  88. title={t("Temperature status")}
  89. value="--"
  90. unit="°C"
  91. />
  92. </Grid>
  93. <Grid item xs={12} sm={6}>
  94. <DashboardBox
  95. title={t("Humidity status")}
  96. value="--"
  97. unit="%"
  98. />
  99. </Grid>
  100. <Grid item xs={12}>
  101. <DashboardLineChart />
  102. </Grid>
  103. </Grid>
  104. </Grid>*/}
  105. </Grid>
  106. </CardContent>
  107. </CollapsibleCard>
  108. </Grid>
  109. </Grid>
  110. </ThemeProvider>
  111. );
  112. };
  113. export default DashboardPage;