| @@ -3,12 +3,14 @@ import { | |||||
| Button, | Button, | ||||
| CardContent, | CardContent, | ||||
| Grid, TextField, | Grid, TextField, | ||||
| Autocomplete, | |||||
| Typography | Typography | ||||
| } from '@mui/material'; | } from '@mui/material'; | ||||
| import MainCard from "components/MainCard"; | import MainCard from "components/MainCard"; | ||||
| import { useForm } from "react-hook-form"; | import { useForm } from "react-hook-form"; | ||||
| import * as React from "react"; | import * as React from "react"; | ||||
| import * as DateUtils from "utils/DateUtils"; | import * as DateUtils from "utils/DateUtils"; | ||||
| import * as ComboData from "utils/ComboData"; | |||||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | // ==============================|| DASHBOARD - DEFAULT ||============================== // | ||||
| @@ -16,6 +18,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||||
| const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); | const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); | ||||
| const [maxDate, setMaxDate] = React.useState(searchCriteria.dateTo); | const [maxDate, setMaxDate] = React.useState(searchCriteria.dateTo); | ||||
| const [status, setStatus] = React.useState(ComboData.paymentStatus[0]); | |||||
| const _sx = { | const _sx = { | ||||
| padding: "4 2 4 2", | padding: "4 2 4 2", | ||||
| @@ -40,6 +43,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||||
| code: data.code, | code: data.code, | ||||
| dateFrom: data.dateFrom, | dateFrom: data.dateFrom, | ||||
| dateTo: data.dateTo, | dateTo: data.dateTo, | ||||
| status : (status?.type && status?.type != 'all') ? status?.type : "", | |||||
| }; | }; | ||||
| applySearch(temp); | applySearch(temp); | ||||
| }; | }; | ||||
| @@ -116,6 +120,33 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||||
| /> | /> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||||
| <Autocomplete | |||||
| {...register("status")} | |||||
| disablePortal={false} | |||||
| id="status" | |||||
| filterOptions={(options) => options} | |||||
| options={ComboData.paymentStatus} | |||||
| value={status} | |||||
| getOptionLabel={(option) => option.label} | |||||
| inputValue={status?.label ? status?.label : ""} | |||||
| onChange={(event, newValue) => { | |||||
| if (newValue !== null) { | |||||
| setStatus(newValue); | |||||
| } | |||||
| }} | |||||
| renderInput={(params) => ( | |||||
| <TextField {...params} | |||||
| label="Status" | |||||
| /> | |||||
| )} | |||||
| InputLabelProps={{ | |||||
| shrink: true | |||||
| }} | |||||
| /> | |||||
| </Grid> | |||||
| </Grid> | </Grid> | ||||
| @@ -3,12 +3,14 @@ import { | |||||
| Button, | Button, | ||||
| CardContent, | CardContent, | ||||
| Grid, TextField, | Grid, TextField, | ||||
| Autocomplete, | |||||
| Typography | Typography | ||||
| } from '@mui/material'; | } from '@mui/material'; | ||||
| import MainCard from "components/MainCard"; | import MainCard from "components/MainCard"; | ||||
| import { useForm } from "react-hook-form"; | import { useForm } from "react-hook-form"; | ||||
| import * as React from "react"; | import * as React from "react"; | ||||
| import * as DateUtils from "utils/DateUtils"; | import * as DateUtils from "utils/DateUtils"; | ||||
| import * as ComboData from "utils/ComboData"; | |||||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | // ==============================|| DASHBOARD - DEFAULT ||============================== // | ||||
| @@ -16,6 +18,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||||
| const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); | const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); | ||||
| const [maxDate, setMaxDate] = React.useState(searchCriteria.dateTo); | const [maxDate, setMaxDate] = React.useState(searchCriteria.dateTo); | ||||
| const [status, setStatus] = React.useState(ComboData.paymentStatus[0]); | |||||
| const _sx = { | const _sx = { | ||||
| padding: "4 2 4 2", | padding: "4 2 4 2", | ||||
| @@ -40,6 +43,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||||
| code: data.code, | code: data.code, | ||||
| dateFrom: data.dateFrom, | dateFrom: data.dateFrom, | ||||
| dateTo: data.dateTo, | dateTo: data.dateTo, | ||||
| status : (status?.type && status?.type != 'all') ? status?.type : "", | |||||
| }; | }; | ||||
| applySearch(temp); | applySearch(temp); | ||||
| }; | }; | ||||
| @@ -116,6 +120,32 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||||
| /> | /> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||||
| <Autocomplete | |||||
| {...register("status")} | |||||
| disablePortal={false} | |||||
| id="status" | |||||
| filterOptions={(options) => options} | |||||
| options={ComboData.paymentStatus} | |||||
| value={status} | |||||
| getOptionLabel={(option) => option.labelCht} | |||||
| inputValue={status?.labelCht ? status?.labelCht : ""} | |||||
| onChange={(event, newValue) => { | |||||
| if (newValue !== null) { | |||||
| setStatus(newValue); | |||||
| } | |||||
| }} | |||||
| renderInput={(params) => ( | |||||
| <TextField {...params} | |||||
| label="狀態" | |||||
| /> | |||||
| )} | |||||
| InputLabelProps={{ | |||||
| shrink: true | |||||
| }} | |||||
| /> | |||||
| </Grid> | |||||
| </Grid> | </Grid> | ||||
| @@ -5,6 +5,7 @@ import { | |||||
| } from '@mui/material'; | } from '@mui/material'; | ||||
| import * as DateUtils from "utils/DateUtils"; | import * as DateUtils from "utils/DateUtils"; | ||||
| import * as FormatUtils from "utils/FormatUtils" | import * as FormatUtils from "utils/FormatUtils" | ||||
| import * as ProofStatus from "utils/statusUtils/ProofStatus"; | |||||
| import { useNavigate } from "react-router-dom"; | import { useNavigate } from "react-router-dom"; | ||||
| import { FiDataGrid } from "components/FiDataGrid"; | import { FiDataGrid } from "components/FiDataGrid"; | ||||
| // ==============================|| EVENT TABLE ||============================== // | // ==============================|| EVENT TABLE ||============================== // | ||||
| @@ -110,15 +111,14 @@ export default function SearchPublicNoticeTable({ recordList }) { | |||||
| return params?.value ? DateUtils.datetimeStr(params?.value) : ""; | return params?.value ? DateUtils.datetimeStr(params?.value) : ""; | ||||
| } | } | ||||
| }, | }, | ||||
| // { | |||||
| // id: 'groupTitle', | |||||
| // field: 'groupTitle', | |||||
| // headerName: '憲報類型', | |||||
| // flex: 1, | |||||
| // valueGetter: (params) => { | |||||
| // return getGroupTitle(params?.value); | |||||
| // } | |||||
| // }, | |||||
| { | |||||
| id: 'actions', | |||||
| headerName: '狀態', | |||||
| flex: 1, | |||||
| renderCell: (params) => { | |||||
| return ProofStatus.getStatus_Cht(params); | |||||
| }, | |||||
| }, | |||||
| { | { | ||||
| id: 'fee', | id: 'fee', | ||||
| field: 'fee', | field: 'fee', | ||||
| @@ -69,4 +69,12 @@ export const proofStatus = [ | |||||
| { key: 0, labelCht: '全部', label: 'All', type: 'all' }, | { key: 0, labelCht: '全部', label: 'All', type: 'all' }, | ||||
| { key: 1, labelCht: '已回覆', label:'Replied', type: 'T' }, // submitted and reviewed | { key: 1, labelCht: '已回覆', label:'Replied', type: 'T' }, // submitted and reviewed | ||||
| { key: 2, labelCht: '未回覆', label:'Pending Reply', type: 'F' }, | { key: 2, labelCht: '未回覆', label:'Pending Reply', type: 'F' }, | ||||
| ]; | |||||
| export const paymentStatus = [ | |||||
| { key: 0, labelCht: '全部', label: 'All', type: 'all' }, | |||||
| { key: 1, labelCht: '成功', label:'Success', type: 'APPR' }, | |||||
| { key: 2, labelCht: '拒絕', label:'Reject', type: 'REJT' }, | |||||
| { key: 2, labelCht: '取消', label:'Cancelled', type: 'CANC' }, | |||||
| { key: 2, labelCht: '進行中', label:'In Progress', type: 'INPR' }, | |||||
| ]; | ]; | ||||