|
- // material-ui
- import * as React from 'react';
- import {
- Button,
- Typography, useMediaQuery
- } from '@mui/material';
- import * as DateUtils from "utils/DateUtils";
- import * as StatusUtils from "utils/statusUtils/PublicNoteStatusUtils";
- import {useNavigate} from "react-router-dom";
- import {FiDataGrid} from "components/FiDataGrid";
- import {
- isORGLoggedIn,
- } from "utils/Utils";
- import {useTheme} from "@emotion/react";
- import {FormattedMessage, useIntl} from "react-intl";
- // ==============================|| EVENT TABLE ||============================== //
-
- export default function SearchPublicNoticeTable({ recordList }) {
- const [rows, setRows] = React.useState([]);
- const navigate = useNavigate()
- const theme = useTheme();
- const isMdOrLg = useMediaQuery(theme.breakpoints.up('md'));
- const intl = useIntl();
-
- const handleDetailClick = (params) => () => {
- navigate('/publicNotice/'+ params.id);
- };
-
- React.useEffect(() => {
- setRows(recordList);
- }, [recordList]);
-
- const columns = [
- {
- id: 'appNo',
- field: 'appNo',
- headerName: intl.formatMessage({id: 'applicationId'}),
- width: isMdOrLg ? 'auto' : 160,
- flex: isMdOrLg ? 1 : undefined,
- },
- {
- id: 'created',
- field: 'created',
- headerName: intl.formatMessage({id: 'submitDate'}),
- width: isMdOrLg ? 'auto' : 160,
- flex: isMdOrLg ? 1 : undefined,
- valueGetter: (params) => {
- return DateUtils.datetimeStr(params?.value);
- }
- },
- // {
- // id: 'contactPerson',
- // field: 'contactPerson',
- // headerName: '聯絡人',
- // flex: 2,
- // renderCell: (params) => {
- // let phone = JSON.parse(params.row.contactTelNo);
- // let faxNo = JSON.parse(params.row.contactFaxNo);
-
- // let contact = "";
- // if (phone) {
- // contact = "電話: " + phone?.countryCode + " " + phone?.phoneNumber
- // }
-
- // if (faxNo && faxNo?.faxNumber) {
- // if (contact != "")
- // contact = contact + ", "
- // contact = contact + "傳真:" + faxNo?.countryCode + " " + faxNo?.faxNumber
- // }
-
- // return (<>
- // {params?.value}<br />
- // {contact}
- // </>);
- // }
- // },
- {
- id: 'remarks',
- field: 'remarks',
- headerName: isORGLoggedIn()?"Care Of / 我的備註": intl.formatMessage({id: 'myRemarks'}),
- width: isMdOrLg ? 'auto' : 400,
- flex: isMdOrLg ? 3 : undefined,
- renderCell: (params) => (
- isORGLoggedIn()?
- <div>
- <Typography>Care Of: {params.row.careOf}</Typography>
- <Typography>
- <FormattedMessage id="myRemarks"/>: {params.row.remarks}
- </Typography>
- </div>:
- <div>
- <Typography>{params.row.remarks}</Typography>
- </div>
- )
- },
- {
- id: 'status',
- field: 'status',
- headerName: intl.formatMessage({id: 'status'}),
- width: 200,
- renderCell: (params) => {
- return [StatusUtils.getStatusIntl(params, intl)]
- },
- },
- {
- field: 'actions',
- type: 'actions',
- headerName: '',
- width: 150,
- cellClassName: 'actions',
- renderCell: (params) => {
- return <Button onClick={handleDetailClick(params)}>
- <FormattedMessage id="viewDetail"/>
- </Button>;
- },
- }
- ];
-
- function handleRowDoubleClick(params) {
- navigate('/publicNotice/'+ params.id);
- }
-
- return (
- <div style={{ minHeight: 400, width: '100%' }}>
- <FiDataGrid
- rows={rows}
- columns={columns}
- initialState={{
- pagination: {
- paginationModel: { page: 0, pageSize: 20 },
- },
- }}
- onRowDoubleClick={handleRowDoubleClick}
- getRowHeight={() => 'auto'}
- />
- </div>
- );
- }
|