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.
 
 

117 lines
4.0 KiB

  1. // material-ui
  2. import * as React from 'react';
  3. import {FiDataGrid} from "components/FiDataGrid";
  4. import {
  5. Button,
  6. // Typography,
  7. useMediaQuery
  8. } from '@mui/material';
  9. import * as DateUtils from "utils/DateUtils"
  10. import {useNavigate} from "react-router-dom";
  11. import {
  12. isORGLoggedIn,
  13. } from "utils/Utils";
  14. import {useTheme} from "@emotion/react";
  15. import {getStatusIntl} from "utils/statusUtils/PublicNoteStatusUtils";
  16. import {FormattedMessage, useIntl} from "react-intl";
  17. // ==============================|| EVENT TABLE ||============================== //
  18. export default function BaseGrid({setCount, url}) {
  19. const navigate = useNavigate()
  20. const theme = useTheme();
  21. const isMdOrLg = useMediaQuery(theme.breakpoints.up('md'));
  22. const intl = useIntl();
  23. const handleDetailClick = (params) => () => {
  24. navigate('/publicNotice/'+ params.id);
  25. };
  26. const columns = [
  27. {
  28. id: 'appNo',
  29. field: 'appNo',
  30. headerName: intl.formatMessage({id: 'applicationId'}),
  31. width: isMdOrLg ? 'auto' : 160,
  32. flex: isMdOrLg ? 1 : undefined,
  33. },
  34. {
  35. id: 'created',
  36. field: 'created',
  37. headerName: intl.formatMessage({id: 'submitDate'}),
  38. width: isMdOrLg ? 'auto' : 300,
  39. flex: isMdOrLg ? 1 : undefined,
  40. valueGetter:(params)=>{
  41. return DateUtils.datetimeStr(params?.value);
  42. }
  43. },
  44. {
  45. id: 'remarks',
  46. field: 'remarks',
  47. headerName: isORGLoggedIn()? intl.formatMessage({id: 'gazetteCount2_1'}) : intl.formatMessage({id: 'myRemarks'}),
  48. width: isMdOrLg ? 'auto' : 400,
  49. flex: isMdOrLg ? 3 : undefined,
  50. renderCell: (params) => (
  51. isORGLoggedIn()?
  52. <div>
  53. <FormattedMessage id="gazetteCount" />: {params.row.issueVolume + "/" + params.row.issueYear
  54. + " No. " + params.row.issueNo}<br />
  55. <FormattedMessage id="careOf" />: {params.row.careOf} <br/>
  56. <FormattedMessage variant="pnspsNormalText" id="myRemarks"/>: {params.row.remarks}
  57. </div>:
  58. <div>
  59. <FormattedMessage id="gazetteCount" />: {params.row.issueVolume + "/" + params.row.issueYear
  60. + " No. " + params.row.issueNo}<br />
  61. <FormattedMessage variant="pnspsNormalText" id="myRemarks"/>:{params.row.remarks}
  62. {/* <Typography variant="pnspsNormalText">{params.row.remarks}</Typography> */}
  63. </div>
  64. )
  65. },
  66. {
  67. id: 'status',
  68. field: 'status',
  69. headerName: intl.formatMessage({id: 'status'}),
  70. width: isMdOrLg ? 'auto' : 160,
  71. flex: isMdOrLg ? 1 : undefined,
  72. renderCell: (params) => {
  73. return [getStatusIntl(params,intl)]
  74. },
  75. },
  76. {
  77. field: 'actions',
  78. headerName: '',
  79. width: 160,
  80. cellClassName: 'actions',
  81. renderCell: (params) => {
  82. return <Button aria-label={intl.formatMessage({id: 'viewDetail'})} onClick={handleDetailClick(params)}>
  83. <FormattedMessage id="viewDetail"/>
  84. </Button>;
  85. },
  86. }
  87. ];
  88. function handleRowDoubleClick(params) {
  89. navigate('/publicNotice/'+ params.id);
  90. }
  91. return (
  92. <div style={{minHeight: 400, height:"100%", width: '100%', padding: 4}}>
  93. <FiDataGrid
  94. columns={columns}
  95. customPageSize={10}
  96. onRowDoubleClick={handleRowDoubleClick}
  97. getRowHeight={() => 'auto'}
  98. doLoad={React.useMemo(() => ({
  99. url: url,
  100. params:{},
  101. callback:(responseData)=>{
  102. setCount(responseData.count??0);
  103. }
  104. }), [url])}
  105. />
  106. </div>
  107. );
  108. }