Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

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