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.
 
 

321 regels
15 KiB

  1. // material-ui
  2. import {
  3. FormControl,
  4. Grid,
  5. Typography,
  6. FormLabel,
  7. TextField,
  8. Button,
  9. Stack,
  10. Dialog, DialogTitle, DialogContent, DialogActions,
  11. } from '@mui/material';
  12. import { useFormik } from 'formik';
  13. import {isGranted} from "auth/utils";
  14. import {useState,useEffect,lazy} from "react";
  15. import * as HttpUtils from "utils/HttpUtils"
  16. import * as UrlUtils from "utils/ApiPathConst"
  17. import * as DateUtils from "utils/DateUtils"
  18. import * as FormatUtils from "utils/FormatUtils"
  19. import { useParams } from "react-router-dom";
  20. import Loadable from 'components/Loadable';
  21. const MainCard = Loadable(lazy(() => import('components/MainCard')));
  22. import * as StatusUtils from "utils/statusUtils/PublicNoteStatusUtils";
  23. import FileList from "components/FileList"
  24. // ==============================|| DASHBOARD - DEFAULT ||============================== //
  25. const ApplicationDetailCard = ({
  26. formData,
  27. showCancelBtn,
  28. showProofBtn
  29. // setBackButtonPos
  30. }) => {
  31. const params = useParams();
  32. const [data, setData] = useState({});
  33. const [cancelPopUp, setCancelPopUp] = useState(false);
  34. useEffect(() => {
  35. if (formData) {
  36. setData(formData);
  37. }
  38. }, [formData]);
  39. const formik = useFormik({
  40. enableReinitialize: true,
  41. initialValues: data,
  42. });
  43. const DisplayField = ({ name, width }) => {
  44. return <TextField
  45. fullWidth
  46. disabled
  47. size="small"
  48. onChange={formik.handleChange}
  49. id={name}
  50. name={name}
  51. value={formik.values[name]}
  52. variant="outlined"
  53. sx={
  54. {
  55. "& .MuiInputBase-input.Mui-disabled": {
  56. WebkitTextFillColor: "#000000",
  57. background: "#f8f8f8",
  58. },
  59. width: width ? width : '100%'
  60. }
  61. }
  62. />;
  63. }
  64. const confirmCancel = () => {
  65. setCancelPopUp(false);
  66. HttpUtils.get({
  67. url: UrlUtils.CANCEL_PROOF + "/" + params.id,
  68. onSuccess: function () {
  69. window.location.reload(false);
  70. }
  71. });
  72. }
  73. const doCancel = () => {
  74. setCancelPopUp(true);
  75. }
  76. const genProof = () => {
  77. HttpUtils.fileDownload({
  78. url: UrlUtils.GEN_GAZETTE_PROOF + "/" + params.id
  79. });
  80. }
  81. return (
  82. <MainCard
  83. id={"applicationDetailsMainCard"}
  84. border={false}
  85. content={false}
  86. >
  87. <Typography variant="h4" sx={{ textAlign: "left", mb: 2, borderBottom: "1px solid black" }}>
  88. <Stack
  89. direction="row"
  90. justifyContent="space-between"
  91. alignItems="center"
  92. >
  93. Public Notice: Proofreading Reply
  94. <Button
  95. component="span"
  96. variant="contained"
  97. size="large"
  98. disabled={!showProofBtn}
  99. onClick={genProof}
  100. >
  101. <Typography variant="h5">Proof Slip</Typography>
  102. </Button>
  103. {
  104. isGranted(["MAINTAIN_PROOF"]) ? <Button
  105. component="span"
  106. variant="contained"
  107. size="large"
  108. color="error"
  109. disabled={showCancelBtn}
  110. onClick={doCancel}
  111. >
  112. <Typography variant="h5">Cancel</Typography>
  113. </Button> : <></>
  114. }
  115. </Stack>
  116. </Typography>
  117. <form>
  118. <Grid container direction="column">
  119. <Grid item xs={12} md={12} lg={12}>
  120. <Grid container direction="row" justifyContent="space-between"
  121. alignItems="center">
  122. <Grid item xs={12} md={6} lg={6} sx={{ mb: 1 }}>
  123. <Grid container alignItems={"center"}>
  124. <Grid item xs={12} md={3} lg={3}
  125. sx={{ display: 'flex', alignItems: 'center' }}>
  126. <FormLabel><Typography variant="h5">App. No.:</Typography></FormLabel>
  127. </Grid>
  128. <Grid item xs={12} md={9} lg={9}>
  129. <DisplayField name="appNo" />
  130. </Grid>
  131. </Grid>
  132. </Grid>
  133. <Grid item xs={12} md={5} lg={5} sx={{ mb: 1, ml: 1 }}>
  134. <Grid container alignItems={"left"}>
  135. <Grid item xs={12} md={3} lg={3}
  136. sx={{ display: 'flex', alignItems: 'center' }}>
  137. <FormLabel><Typography variant="h5">App. Status:</Typography></FormLabel>
  138. </Grid>
  139. <Grid item xs={12} md={9} lg={9} sx={{ display: 'flex', alignItems: 'center' }}>
  140. <FormControl variant="outlined">
  141. {StatusUtils.getStatusByText(data.appStatus)}
  142. </FormControl>
  143. </Grid>
  144. </Grid>
  145. </Grid>
  146. </Grid>
  147. <Grid container direction="row" justifyContent="space-between"
  148. alignItems="center">
  149. <Grid item xs={12} md={6} lg={6} sx={{ mb: 1 }}>
  150. <Grid container alignItems={"center"}>
  151. <Grid item xs={12} md={3} lg={3}
  152. sx={{ display: 'flex', alignItems: 'center' }}>
  153. <FormLabel><Typography variant="h5">Applicant:</Typography></FormLabel>
  154. </Grid>
  155. <Grid item xs={12} md={9} lg={9}>
  156. <FormControl variant="outlined" fullWidth disabled >
  157. {data.orgId === null ?
  158. <DisplayField name="contactPerson" />
  159. :
  160. <DisplayField name="applicant" />
  161. }
  162. </FormControl>
  163. </Grid>
  164. </Grid>
  165. </Grid>
  166. <Grid item xs={12} md={5} lg={5} sx={{ mb: 1, ml: 1 }}>
  167. <Grid container alignItems={"center"}>
  168. <Grid item xs={12} md={3} lg={3}
  169. sx={{ display: 'flex', alignItems: 'center' }}>
  170. <FormLabel><Typography variant="h5">Issue No:</Typography></FormLabel>
  171. </Grid>
  172. <Grid item xs={12} md={9} lg={9}>
  173. <DisplayField name="issueNoStr" />
  174. </Grid>
  175. </Grid>
  176. </Grid>
  177. </Grid>
  178. <Grid container direction="row" justifyContent="space-between"
  179. alignItems="center">
  180. <Grid item xs={12} md={6} lg={6} sx={{ mb: 1 }}>
  181. <Grid container alignItems={"center"}>
  182. <Grid item xs={12} md={3} lg={3}
  183. sx={{ display: 'flex', alignItems: 'center' }}>
  184. <FormLabel><Typography variant="h5">Contact Person:</Typography></FormLabel>
  185. </Grid>
  186. <Grid item xs={12} md={9} lg={9}>
  187. <DisplayField name="contactPerson" />
  188. </Grid>
  189. </Grid>
  190. </Grid>
  191. <Grid item xs={12} md={5} lg={5} sx={{ mb: 1, ml: 1 }}>
  192. <Grid container alignItems={"center"}>
  193. <Grid item xs={12} md={3} lg={3}
  194. sx={{ display: 'flex', alignItems: 'center' }}>
  195. <FormLabel><Typography variant="h5">Issue Date:</Typography></FormLabel>
  196. </Grid>
  197. <Grid item xs={12} md={9} lg={9}>
  198. <DisplayField name="issueDateStr" />
  199. </Grid>
  200. </Grid>
  201. </Grid>
  202. </Grid>
  203. {/* <Grid container direction="row" justifyContent="space-between"
  204. alignItems="center">
  205. <Grid item xs={12} md={6} lg={6} sx={{ mb: 1, }}>
  206. <Grid container alignItems="left">
  207. <Grid item xs={12} md={3} lg={3}
  208. sx={{ display: 'flex', alignItems: 'center' }}>
  209. <FormLabel>Remarks:</FormLabel>
  210. </Grid>
  211. <Grid item xs={12} md={9} lg={9}>
  212. <Stack direction="row">
  213. <DisplayField name="appRemarks" />
  214. </Stack>
  215. </Grid>
  216. </Grid>
  217. </Grid>
  218. </Grid> */}
  219. <Grid container direction="row" justifyContent="space-between"
  220. alignItems="center">
  221. <Grid item xs={12} md={6} lg={6} sx={{ mb: 1, }}>
  222. <Grid container alignItems={"center"}>
  223. <Grid item xs={12} md={12} lg={12} sx={{ display: 'flex', alignItems: 'center' }}>
  224. <Typography variant="h5">Print file:</Typography>
  225. </Grid>
  226. </Grid>
  227. <FileList
  228. refId={params.id}
  229. refType={"proof"}
  230. dateHideable={true}
  231. disablePagination
  232. disableSelectionOnClick
  233. disableColumnMenu
  234. disableColumnSelector
  235. hideFooter
  236. />
  237. </Grid>
  238. <Grid item xs={12} md={4} lg={4} sx={{ mb: 1, }}>
  239. <Grid container alignItems={"center"}>
  240. <Grid item xs={12} md={12} lg={12}
  241. sx={{ display: 'flex', alignItems: 'center' }}>
  242. <Typography variant="h5">Deadline for proof with revision:</Typography>
  243. </Grid>
  244. <Grid item xs={12} md={12} lg={12} sx={{ mb: 4, display: 'flex', alignItems: 'center' }}>
  245. <Typography variant="h5">Before {DateUtils.datetimeStr(data.reviseDeadline)}</Typography>
  246. </Grid>
  247. <Grid item xs={12} md={12} lg={12}
  248. sx={{ display: 'flex', alignItems: 'center' }}>
  249. <Typography variant="h5">Deadline for confirm proof and payment:</Typography>
  250. </Grid>
  251. <Grid item xs={12} md={12} lg={12} sx={{ mb: 4, display: 'flex', alignItems: 'center' }}>
  252. <Typography variant="h5">Before {DateUtils.datetimeStr(data.proofPaymentDeadline)}</Typography>
  253. </Grid>
  254. <Grid item xs={12} md={3} lg={3}
  255. sx={{ mb: 1, display: 'flex', alignItems: 'center' }}>
  256. <Typography variant="h5">Fee:</Typography>
  257. </Grid>
  258. <Grid item xs={12} md={9} lg={9} sx={{ mb: 1, display: 'flex', alignItems: 'center' }}>
  259. <Typography variant="h5" style={{ color: "blue", fontWeight: "bold", }}>{FormatUtils.currencyFormat(data.fee)}</Typography>
  260. </Grid>
  261. <Grid item xs={12} md={12} lg={12} sx={{ mb: 4, display: 'flex', alignItems: 'center' }}>
  262. {
  263. formik.values.groupType == "Private Bill"
  264. ?
  265. <Typography variant="h5">( {data.noOfPages} page x $6,552 )</Typography>
  266. :
  267. <Typography variant="h5">( {data.length} cm x {data.colCount == 2 ? "$364 Double Column" : "$182 Single Column"} )</Typography>
  268. }
  269. </Grid>
  270. </Grid>
  271. </Grid>
  272. </Grid>
  273. </Grid>
  274. </Grid>
  275. <div>
  276. <Dialog
  277. open={cancelPopUp}
  278. onClose={() => setCancelPopUp(false)}
  279. >
  280. <DialogTitle><Typography variant="h3">Confirm</Typography></DialogTitle>
  281. <DialogContent style={{ display: 'flex', }}>
  282. <Typography variant="h4" style={{ padding: '16px' }}>Are you sure you want to cancel this proof?</Typography>
  283. </DialogContent>
  284. <DialogActions>
  285. <Button onClick={() => setCancelPopUp(false)}><Typography variant="h5">Cancel</Typography></Button>
  286. <Button onClick={() => confirmCancel()}><Typography variant="h5">Confirm</Typography></Button>
  287. </DialogActions>
  288. </Dialog>
  289. </div>
  290. </form>
  291. </MainCard>
  292. );
  293. };
  294. export default ApplicationDetailCard;