You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

158 lines
7.4 KiB

  1. // material-ui
  2. import {
  3. FormControl,
  4. Button,
  5. Grid,
  6. Typography, FormLabel,
  7. } from '@mui/material';
  8. import * as React from "react";
  9. import * as HttpUtils from "utils/HttpUtils";
  10. import * as DateUtils from "utils/DateUtils";
  11. import * as StatusUtils from "utils/statusUtils/DnStatus";
  12. import Loadable from 'components/Loadable';
  13. const MainCard = Loadable(React.lazy(() => import('components/MainCard')));
  14. import DownloadIcon from '@mui/icons-material/Download';
  15. import { notifyDownloadSuccess } from 'utils/CommonFunction';
  16. // ==============================|| DASHBOARD - DEFAULT ||============================== //
  17. const DnDetailCard = ({ data }) => {
  18. const [dnData, setDnData] = React.useState({});
  19. React.useEffect(() => {
  20. if (Object.keys(data).length > 0) {
  21. setDnData(data)
  22. }
  23. }, [data]);
  24. const onDownloadClick = () => () => {
  25. HttpUtils.fileDownload({
  26. fileId: dnData.fileId,
  27. skey: dnData.skey,
  28. filename: dnData.filename,
  29. onResponse: function () {
  30. notifyDownloadSuccess();
  31. }
  32. });
  33. };
  34. const getDisplayField = (label, value) => {
  35. return <Grid item xs={12} md={6} lg={6} sx={{ mb: 1 }}>
  36. <Grid container alignItems={"center"}>
  37. <Grid item xs={12} md={3} lg={3}
  38. sx={{ display: 'flex', alignItems: 'center' }}>
  39. <FormLabel><Typography variant="h5">{label}:</Typography></FormLabel>
  40. </Grid>
  41. <Grid item xs={12} md={9} lg={9}>
  42. <Typography variant="h5">
  43. {value}
  44. </Typography>
  45. </Grid>
  46. </Grid>
  47. </Grid>
  48. }
  49. return (
  50. <MainCard elevation={0}
  51. border={false}
  52. content={false}
  53. >
  54. <Typography variant="h4" xs={12} md={12} sx={{ mb: 2, borderBottom: "1px solid black" }}>
  55. Demand Note
  56. </Typography>
  57. <Grid container direction="column">
  58. <Grid item xs={12} md={12}>
  59. <Grid container direction="row" justifyContent="space-between" alignItems="center">
  60. {getDisplayField("DN No.", dnData.dnNo)}
  61. <Grid item xs={12} md={6} lg={6} sx={{ mb: 1}}>
  62. <Grid container alignItems={"center"}>
  63. <Grid item xs={12} md={3} lg={3}
  64. sx={{ display: 'flex', alignItems: 'center' }}>
  65. <FormLabel><Typography variant="h5">Status:</Typography></FormLabel>
  66. </Grid>
  67. <Grid item xs={12} md={9} lg={9}>
  68. <FormControl variant="outlined">
  69. {StatusUtils.getStatus_Eng(dnData.status)}
  70. </FormControl>
  71. </Grid>
  72. </Grid>
  73. </Grid>
  74. </Grid>
  75. <Grid container direction="row" justifyContent="space-between" alignItems="center">
  76. {getDisplayField("Issue Date", dnData.issueDate)}
  77. {getDisplayField("DN Sent", dnData?.sentDate ? dnData.sentDate + " - " + (dnData.sentBy == null ? "System" : dnData.sentBy) : "--")}
  78. </Grid>
  79. <Grid container direction="row" justifyContent="space-between" alignItems="center">
  80. <Grid item xs={12} md={6} lg={6} mt={1}>
  81. <Grid container direction="row" justifyContent="flex-start">
  82. <Grid item xs={12} md={3} lg={3}
  83. sx={{ display: 'flex', alignItems: 'center' }}>
  84. <FormLabel><Typography variant="h5">File:</Typography></FormLabel>
  85. </Grid>
  86. <Grid item xs={12} md={5} lg={5} sx={{ display: 'flex', alignItems: 'center' }}>
  87. <Typography variant="h5">{dnData.filename} </Typography>
  88. </Grid>
  89. <Grid item md={4} lg={4}>
  90. {dnData.filename ?
  91. <Button
  92. size="small"
  93. variant="contained"
  94. onClick={onDownloadClick()}
  95. sx={{
  96. textTransform: 'capitalize',
  97. alignItems: 'end',
  98. }}>
  99. <DownloadIcon />
  100. </Button>
  101. : <></>
  102. }
  103. </Grid>
  104. </Grid>
  105. </Grid>
  106. </Grid>
  107. <Grid container direction="row" justifyContent="space-between" alignItems="center">
  108. {getDisplayField("Reminder Schedule", "")}
  109. {getDisplayField("Sent on", "")}
  110. </Grid>
  111. <Grid container direction="row" justifyContent="space-between" alignItems="center">
  112. {getDisplayField("Reminder 1", dnData?.expectReminder1 ? DateUtils.dateStr(dnData.expectReminder1):"--")}
  113. {getDisplayField("Reminder 1", dnData?.reminder1 ? DateUtils.datetimeStr(dnData.reminder1) : "--")}
  114. </Grid>
  115. <Grid container direction="row" justifyContent="space-between" alignItems="center">
  116. {getDisplayField("Reminder 2", dnData?.expectReminder2 ? DateUtils.dateStr(dnData.expectReminder2):"--")}
  117. {getDisplayField("Reminder 2", dnData?.reminder2 ? DateUtils.datetimeStr(dnData.reminder2) : "--")}
  118. </Grid>
  119. <Grid container direction="row" justifyContent="space-between" alignItems="center">
  120. {getDisplayField("Reminder 3", dnData?.expectReminder3 ? DateUtils.dateStr(dnData.expectReminder3):"--")}
  121. {getDisplayField("Reminder 3", dnData?.reminder3 ? DateUtils.datetimeStr(dnData.reminder3) : "--")}
  122. </Grid>
  123. <Grid container direction="row" justifyContent="space-between" alignItems="center">
  124. {getDisplayField("Reminder 4", dnData?.expectReminder4 ? DateUtils.dateStr(dnData.expectReminder4):"--")}
  125. {getDisplayField("Reminder 4", dnData?.reminder4 ? DateUtils.datetimeStr(dnData.reminder4) : "--")}
  126. </Grid>
  127. <Grid container direction="row" justifyContent="space-between" alignItems="center">
  128. {getDisplayField("Reminder Final", dnData?.expectReminderFinal ? DateUtils.dateStr(dnData.expectReminderFinal):"--")}
  129. {getDisplayField("Reminder Final", dnData?.reminderFinal ? DateUtils.datetimeStr(dnData.reminderFinal) : "--")}
  130. </Grid>
  131. </Grid>
  132. </Grid>
  133. </MainCard>
  134. );
  135. };
  136. export default DnDetailCard;