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.
 
 

128 line
4.4 KiB

  1. // material-ui
  2. import * as React from "react";
  3. import * as HttpUtils from "utils/HttpUtils";
  4. import * as UrlUtils from "utils/ApiPathConst";
  5. import * as FormatUtils from "utils/FormatUtils";
  6. import * as DateUtils from "utils/DateUtils";
  7. import { useIntl } from "react-intl";
  8. import {
  9. Grid,
  10. Radio,
  11. FormControlLabel
  12. } from '@mui/material';
  13. import Loadable from 'components/Loadable';
  14. import { lazy } from 'react';
  15. const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingComponent')));
  16. const PublicNoticeApplyForm = Loadable(lazy(() => import('./PublicNoticeApplyForm')));
  17. import {
  18. // isORGLoggedIn,
  19. isDummyLoggedIn,
  20. // isCreditorLoggedIn
  21. } from "utils/Utils";
  22. // ==============================|| DASHBOARD - DEFAULT ||============================== //
  23. const ApplyForm = () => {
  24. const [userData, setUserData] = React.useState(null);
  25. const [gazetteIssueList, setGazetteIssueList] = React.useState([]);
  26. const [selections, setSelection] = React.useState([]);
  27. const [isLoading, setLoding] = React.useState(true);
  28. const intl = useIntl();
  29. const { locale } = intl;
  30. React.useEffect(() => {
  31. loadUserData();
  32. }, []);
  33. const loadUserData = () => {
  34. setLoding(true);
  35. HttpUtils.get({
  36. url: `${UrlUtils.GET_PUBLIC_NOTICE_getApplyUser}`,
  37. onSuccess: function (response) {
  38. response["tel_countryCode"] = response?.contactTelNo?.countryCode;
  39. response["phoneNumber"] = response?.contactTelNo?.phoneNumber;
  40. response["fax_countryCode"] = response?.contactFaxNo?.countryCode;
  41. response["faxNumber"] = response?.contactFaxNo?.faxNumber;
  42. response["issueId"] = response?.gazetteIssueList[0].id;
  43. response["remarks"] = "";
  44. if (isDummyLoggedIn()){
  45. response["contactPerson"] = "";
  46. }
  47. var selection = [];
  48. for (var i = 0; i < response?.gazetteIssueList?.length; i++) {
  49. let data = response.gazetteIssueList[i];
  50. //let label = getIssueLabel(data);
  51. selection.push(<FormControlLabel value={data.id} control={<Radio />} label={getIssueLabel(data)} />);
  52. }
  53. setGazetteIssueList(response?.gazetteIssueList);
  54. setSelection(selection);
  55. setUserData(response);
  56. }
  57. });
  58. };
  59. React.useEffect(() => {
  60. if(gazetteIssueList?.length>0){
  61. var selection = [];
  62. for (var i = 0; i < gazetteIssueList?.length; i++) {
  63. let data = gazetteIssueList[i];
  64. let label = getIssueLabel(data);
  65. selection.push(<FormControlLabel value={data.id} control={<Radio />} label={label} />);
  66. }
  67. setSelection(selection);
  68. }
  69. }, [locale]);
  70. const getIssueLabel=(data)=> {
  71. let issueYear = data.issueYear
  72. let volume = data.volume;
  73. let issueNo = data.issueNo;
  74. let issueDate = data.issueDate;
  75. if (locale === 'zh-HK') {
  76. return issueYear
  77. + " 第" + volume + "卷,"
  78. + " 第" + issueNo + "期,"
  79. + " " + DateUtils.dateFormat(issueDate, "YYYY年MM月DD日")
  80. + " (" + DateUtils.getWeekdayStr_ZH(issueDate) + ")";
  81. } else if (locale === 'zh-CN') {
  82. return issueYear
  83. + " 第" + volume + "卷,"
  84. + " 第" + issueNo + "期,"
  85. + " " + DateUtils.dateFormat(issueDate, "YYYY年MM月DD日")
  86. + " (" + DateUtils.getWeekdayStr_CN(issueDate) + ")";
  87. }
  88. return issueYear
  89. + " Vol. " + FormatUtils.zeroPad(volume, 3)
  90. + ", No. " + FormatUtils.zeroPad(issueNo, 2)
  91. + ", " + DateUtils.dateFormat(issueDate, "D MMM YYYY (ddd)");
  92. }
  93. React.useEffect(() => {
  94. if (userData !== null) setLoding(false);
  95. }, [userData]);
  96. return (
  97. isLoading ?
  98. <Grid container sx={{ minHeight: '87vh', mb: 3 }} direction="column" justifyContent="center" alignItems="center">
  99. <Grid item>
  100. <LoadingComponent />
  101. </Grid>
  102. </Grid>
  103. :
  104. <PublicNoticeApplyForm
  105. loadedData={userData}
  106. _selections={selections}
  107. gazetteIssueList = {gazetteIssueList}
  108. />
  109. );
  110. };
  111. export default ApplyForm;