@@ -2,7 +2,9 @@ | |||||
import { | import { | ||||
Typography, | Typography, | ||||
} from '@mui/material'; | } from '@mui/material'; | ||||
import { | |||||
isORGLoggedIn, | |||||
} from "utils/Utils"; | |||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import * as FormatUtils from "utils/FormatUtils" | import * as FormatUtils from "utils/FormatUtils" | ||||
import { FiDataGrid } from "components/FiDataGrid"; | import { FiDataGrid } from "components/FiDataGrid"; | ||||
@@ -26,11 +28,12 @@ export default function SearchPublicNoticeTable({ recordList }) { | |||||
{ | { | ||||
id: 'appNo', | id: 'appNo', | ||||
field: 'appNo', | field: 'appNo', | ||||
headerName: '申請編號/我的備註', | |||||
headerName: isORGLoggedIn()?'申請編號/Care Of/我的備註':'申請編號/我的備註', | |||||
flex: 1, | flex: 1, | ||||
renderCell: (params) => { | renderCell: (params) => { | ||||
let appNo = params.row.appNo; | let appNo = params.row.appNo; | ||||
return <div style={{ margin: 4 }}>{appNo}<br/>{params.row.remarks}</div> | |||||
console.log(params) | |||||
return <div style={{ margin: 4 }}>{appNo}<br/>{isORGLoggedIn()?<>{params.row.careOf}<br /></>:null}{params.row.remarks}</div> | |||||
}, | }, | ||||
}, | }, | ||||
{ | { | ||||
@@ -8,6 +8,9 @@ import * as FormatUtils from "utils/FormatUtils" | |||||
import * as ProofStatus from "utils/statusUtils/ProofStatus"; | 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"; | ||||
import { | |||||
isORGLoggedIn, | |||||
} from "utils/Utils"; | |||||
// ==============================|| EVENT TABLE ||============================== // | // ==============================|| EVENT TABLE ||============================== // | ||||
export default function SearchPublicNoticeTable({ recordList }) { | export default function SearchPublicNoticeTable({ recordList }) { | ||||
@@ -69,17 +72,18 @@ export default function SearchPublicNoticeTable({ recordList }) { | |||||
{ | { | ||||
id: 'appId', | id: 'appId', | ||||
field: 'appId', | field: 'appId', | ||||
headerName: '申請編號 / 憲報期數 / 我的備註', | |||||
headerName: isORGLoggedIn()?"憲報期數 / Care Of/ 我的備註":"憲報期數 / 我的備註", | |||||
flex: 1, | flex: 1, | ||||
renderCell: (params) => { | renderCell: (params) => { | ||||
let appNo = params.row.appNo; | |||||
// let appNo = params.row.appNo; | |||||
// let code = params.row.groupNo; | // let code = params.row.groupNo; | ||||
let isssue = params.row.issueYear | let isssue = params.row.issueYear | ||||
+ " Vol. " + FormatUtils.zeroPad(params.row.issueVolume, 3) | + " Vol. " + FormatUtils.zeroPad(params.row.issueVolume, 3) | ||||
+ ", No. " + FormatUtils.zeroPad(params.row.issueNo, 2) | + ", No. " + FormatUtils.zeroPad(params.row.issueNo, 2) | ||||
+ ", " + DateUtils.dateFormat(params.row.issueDate, "D MMM YYYY (ddd)"); | + ", " + DateUtils.dateFormat(params.row.issueDate, "D MMM YYYY (ddd)"); | ||||
return <div style={{ margin: 4 }}>{appNo}<br />{isssue}<br />{params.row.appRemarks}</div> | |||||
// return <div style={{ margin: 4 }}>{appNo}<br />{isssue}<br />{params.row.appRemarks}</div> | |||||
return <div style={{ margin: 4 }}>{isssue}<br />{isORGLoggedIn()?<>{params.row.appCareOf}<br /></>:null}{params.row.appRemarks}</div> | |||||
}, | }, | ||||
}, | }, | ||||
{ | { | ||||
@@ -15,6 +15,9 @@ import * as UrlUtils from "utils/ApiPathConst"; | |||||
import * as FieldUtils from "utils/FieldUtils"; | import * as FieldUtils from "utils/FieldUtils"; | ||||
import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' | import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' | ||||
import ForwardIcon from '@mui/icons-material/Forward'; | import ForwardIcon from '@mui/icons-material/Forward'; | ||||
import { | |||||
isORGLoggedIn, | |||||
} from "utils/Utils"; | |||||
import { useNavigate } from "react-router-dom"; | import { useNavigate } from "react-router-dom"; | ||||
import { notifyActionSuccess } from 'utils/CommonFunction'; | import { notifyActionSuccess } from 'utils/CommonFunction'; | ||||
@@ -38,7 +41,7 @@ const PublicNoticeApplyForm = ({ loadedData, selections }) => { | |||||
backgroundColor: '#0C489E', | backgroundColor: '#0C489E', | ||||
backgroundPosition: 'right' | backgroundPosition: 'right' | ||||
} | } | ||||
// React.useEffect(()=>{ | // React.useEffect(()=>{ | ||||
// loadedData.careOf = loadedData.contactPerson | // loadedData.careOf = loadedData.contactPerson | ||||
// },[]); | // },[]); | ||||
@@ -225,14 +228,16 @@ const PublicNoticeApplyForm = ({ loadedData, selections }) => { | |||||
</Grid> | </Grid> | ||||
</Grid> | </Grid> | ||||
</Grid> | </Grid> | ||||
<Grid item xs={12} md={12} lg={12} sx={{ mb: 1 }}> | |||||
{FieldUtils.getTextField({ | |||||
label: "代理人:", | |||||
valueName: "careOf", | |||||
form: formik, | |||||
// disabled: true | |||||
})} | |||||
</Grid> | |||||
{isORGLoggedIn()? | |||||
<Grid item xs={12} md={12} lg={12} sx={{ mb: 1 }}> | |||||
{FieldUtils.getTextField({ | |||||
label: "Care Of:", | |||||
valueName: "careOf", | |||||
form: formik, | |||||
// disabled: true | |||||
})} | |||||
</Grid>:null | |||||
} | |||||
<Grid item xs={12} md={12} lg={12}> | <Grid item xs={12} md={12} lg={12}> | ||||
{FieldUtils.getTextArea({ | {FieldUtils.getTextArea({ | ||||
label: "備註:", | label: "備註:", | ||||
@@ -513,6 +513,19 @@ const ApplicationDetailCard = ( | |||||
</Grid> | </Grid> | ||||
</Grid> | </Grid> | ||||
</Grid> | </Grid> | ||||
{currentApplicationDetailData.orgId === null ? null: | |||||
<Grid item xs={12} md={6} lg={6} sx={{ mb: 1, paddingTop: 2 }}> | |||||
<Grid container alignItems={"center"}> | |||||
<Grid item xs={12} md={3} lg={3} | |||||
sx={{ display: 'flex', alignItems: 'center' }}> | |||||
<FormLabel><Typography variant="h5">Care Of:</Typography></FormLabel> | |||||
</Grid> | |||||
<Grid item xs={12} md={9} lg={9}> | |||||
<Typography variant="h5">{currentApplicationDetailData.careOf}</Typography> | |||||
</Grid> | |||||
</Grid> | |||||
</Grid> | |||||
} | |||||
<Grid item xs={12} md={6} lg={6} sx={{ mb: 1, paddingTop: 2 }}> | <Grid item xs={12} md={6} lg={6} sx={{ mb: 1, paddingTop: 2 }}> | ||||
<Grid container alignItems={"center"}> | <Grid container alignItems={"center"}> | ||||
<Grid item xs={12} md={3} lg={3} | <Grid item xs={12} md={3} lg={3} | ||||
@@ -2,12 +2,15 @@ | |||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import {FiDataGrid} from "components/FiDataGrid"; | import {FiDataGrid} from "components/FiDataGrid"; | ||||
import { | import { | ||||
Button | |||||
Button, | |||||
Typography | |||||
} from '@mui/material'; | } from '@mui/material'; | ||||
import * as DateUtils from "utils/DateUtils" | import * as DateUtils from "utils/DateUtils" | ||||
import * as StatusUtils from "utils/statusUtils/PublicNoteStatusUtils"; | import * as StatusUtils from "utils/statusUtils/PublicNoteStatusUtils"; | ||||
import {useNavigate} from "react-router-dom"; | import {useNavigate} from "react-router-dom"; | ||||
import { | |||||
isORGLoggedIn, | |||||
} from "utils/Utils"; | |||||
// ==============================|| EVENT TABLE ||============================== // | // ==============================|| EVENT TABLE ||============================== // | ||||
export default function BaseGrid({rows}) { | export default function BaseGrid({rows}) { | ||||
@@ -17,6 +20,8 @@ export default function BaseGrid({rows}) { | |||||
navigate('/publicNotice/'+ params.id); | navigate('/publicNotice/'+ params.id); | ||||
}; | }; | ||||
// const remarkHeadername = rows.orgId===null?"我的備註":"Care Of / 我的備註" | |||||
const columns = [ | const columns = [ | ||||
{ | { | ||||
id: 'appNo', | id: 'appNo', | ||||
@@ -62,8 +67,18 @@ export default function BaseGrid({rows}) { | |||||
{ | { | ||||
id: 'remarks', | id: 'remarks', | ||||
field: 'remarks', | field: 'remarks', | ||||
headerName: '我的備註', | |||||
headerName: isORGLoggedIn()?"Care Of / 我的備註":"我的備註", | |||||
flex: 3, | flex: 3, | ||||
renderCell: (params) => ( | |||||
params.row.orgId === null? | |||||
<div> | |||||
<Typography>{params.row.remarks}</Typography> | |||||
</div>: | |||||
<div> | |||||
<Typography>Care Of: {params.row.careOf}</Typography> | |||||
<Typography>我的備註: {params.row.remarks}</Typography> | |||||
</div> | |||||
) | |||||
}, | }, | ||||
{ | { | ||||
id: 'status', | id: 'status', | ||||
@@ -11,11 +11,15 @@ import * as DateUtils from "utils/DateUtils" | |||||
import * as FormatUtils from "utils/FormatUtils" | import * as FormatUtils from "utils/FormatUtils" | ||||
import * as StatusUtils from "utils/statusUtils/PublicNoteStatusUtils"; | import * as StatusUtils from "utils/statusUtils/PublicNoteStatusUtils"; | ||||
import { useNavigate } from "react-router-dom"; | import { useNavigate } from "react-router-dom"; | ||||
import { | |||||
isORGLoggedIn, | |||||
} from "utils/Utils"; | |||||
// ==============================|| EVENT TABLE ||============================== // | // ==============================|| EVENT TABLE ||============================== // | ||||
export default function SubmittedTab({ rows }) { | export default function SubmittedTab({ rows }) { | ||||
const [selectedRowItems, setSelectedRowItems] = React.useState([]); | const [selectedRowItems, setSelectedRowItems] = React.useState([]); | ||||
const [isPopUp, setIsPopUp] = React.useState(false); | const [isPopUp, setIsPopUp] = React.useState(false); | ||||
const [checkCareOf, setCheckCareOf] = React.useState(false); | |||||
//const [amount, setAmount] = React.useState(0); | //const [amount, setAmount] = React.useState(0); | ||||
const navigate = useNavigate() | const navigate = useNavigate() | ||||
@@ -68,9 +72,18 @@ export default function SubmittedTab({ rows }) { | |||||
{ | { | ||||
id: 'remarks', | id: 'remarks', | ||||
field: 'remarks', | field: 'remarks', | ||||
headerName: '我的備註', | |||||
headerName: isORGLoggedIn()?"Care Of / 我的備註":"我的備註", | |||||
flex: 3, | flex: 3, | ||||
renderCell: (params) => ( | |||||
params.row.orgId === null? | |||||
<div> | |||||
<Typography>{params.row.remarks}</Typography> | |||||
</div>: | |||||
<div> | |||||
<Typography>Care Of: {params.row.careOf}</Typography> | |||||
<Typography>我的備註: {params.row.remarks}</Typography> | |||||
</div> | |||||
) | |||||
}, | }, | ||||
{ | { | ||||
id: 'fee', | id: 'fee', | ||||
@@ -135,11 +148,23 @@ export default function SubmittedTab({ rows }) { | |||||
const datas = rows?.filter((row) => | const datas = rows?.filter((row) => | ||||
selectedRowItems.includes(row.id) | selectedRowItems.includes(row.id) | ||||
); | ); | ||||
console.log(datas) | |||||
for (var i = 0; i < datas?.length; i++) { | for (var i = 0; i < datas?.length; i++) { | ||||
totalAmount += datas[i].fee; | totalAmount += datas[i].fee; | ||||
appIdList.push(datas[i].id); | appIdList.push(datas[i].id); | ||||
} | } | ||||
navigate('/paymentPage', { state: { amount: totalAmount, appIdList: appIdList } }); | |||||
console.log(appIdList) | |||||
console.log(totalAmount) | |||||
const firstCareOf = datas[0].careOf; | |||||
const areAllCareOfEqual = datas.every(obj => obj.careOf === firstCareOf); | |||||
if (appIdList.length>0&&areAllCareOfEqual){ | |||||
navigate('/paymentPage', { state: { amount: totalAmount, appIdList: appIdList } }); | |||||
}else{ | |||||
setCheckCareOf(true); | |||||
console.log("The selected applications should be from the same Care of.") | |||||
} | |||||
} | } | ||||
return ( | return ( | ||||
@@ -180,6 +205,23 @@ export default function SubmittedTab({ rows }) { | |||||
</DialogActions> | </DialogActions> | ||||
</Dialog> | </Dialog> | ||||
</div> | </div> | ||||
<div> | |||||
<Dialog open={checkCareOf} onClose={() => setCheckCareOf(false)} > | |||||
<DialogTitle></DialogTitle> | |||||
{/* <Typography variant="h2" style={{ padding: '16px' }}>確認付款</Typography> */} | |||||
<DialogContent style={{ display: 'flex', }}> | |||||
<Stack direction="column" justifyContent="space-between"> | |||||
<Typography variant="h5" color="error"> | |||||
The selected applications should be from the same Care of. | |||||
</Typography> | |||||
</Stack> | |||||
</DialogContent> | |||||
<DialogActions> | |||||
<Button onClick={() => setCheckCareOf(false)}><Typography variant="h5">確認</Typography></Button> | |||||
</DialogActions> | |||||
</Dialog> | |||||
</div> | |||||
</> | </> | ||||
); | ); | ||||
@@ -11,6 +11,9 @@ import { useForm } from "react-hook-form"; | |||||
import * as React from "react"; | import * as React from "react"; | ||||
import * as ComboData from "utils/ComboData"; | import * as ComboData from "utils/ComboData"; | ||||
import * as DateUtils from "utils/DateUtils"; | import * as DateUtils from "utils/DateUtils"; | ||||
import { | |||||
isORGLoggedIn, | |||||
} from "utils/Utils"; | |||||
// ==============================|| DASHBOARD - DEFAULT ||============================== // | // ==============================|| DASHBOARD - DEFAULT ||============================== // | ||||
@@ -37,6 +40,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||||
dateFrom: data.dateFrom, | dateFrom: data.dateFrom, | ||||
dateTo: data.dateTo, | dateTo: data.dateTo, | ||||
contact: data.contact, | contact: data.contact, | ||||
careOf: data.careOf?data.careOf:"", | |||||
status: (data.status === "" || data.status.includes('all')) ? "" : data.status, | status: (data.status === "" || data.status.includes('all')) ? "" : data.status, | ||||
}; | }; | ||||
applySearch(temp); | applySearch(temp); | ||||
@@ -111,6 +115,20 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||||
}} | }} | ||||
/> | /> | ||||
</Grid> | </Grid> | ||||
{isORGLoggedIn()? | |||||
<Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||||
<TextField | |||||
fullWidth | |||||
{...register("careOf")} | |||||
id="careOf" | |||||
label="Care Of" | |||||
defaultValue={searchCriteria.careOf} | |||||
InputLabelProps={{ | |||||
shrink: true | |||||
}} | |||||
/> | |||||
</Grid>:null | |||||
} | |||||
<Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | ||||
<TextField | <TextField | ||||
@@ -1,12 +1,16 @@ | |||||
// material-ui | // material-ui | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { | import { | ||||
Button | |||||
Button, | |||||
Typography | |||||
} from '@mui/material'; | } from '@mui/material'; | ||||
import * as DateUtils from "utils/DateUtils"; | import * as DateUtils from "utils/DateUtils"; | ||||
import * as StatusUtils from "utils/statusUtils/PublicNoteStatusUtils"; | import * as StatusUtils from "utils/statusUtils/PublicNoteStatusUtils"; | ||||
import {useNavigate} from "react-router-dom"; | import {useNavigate} from "react-router-dom"; | ||||
import {FiDataGrid} from "components/FiDataGrid"; | import {FiDataGrid} from "components/FiDataGrid"; | ||||
import { | |||||
isORGLoggedIn, | |||||
} from "utils/Utils"; | |||||
// ==============================|| EVENT TABLE ||============================== // | // ==============================|| EVENT TABLE ||============================== // | ||||
export default function SearchPublicNoticeTable({ recordList }) { | export default function SearchPublicNoticeTable({ recordList }) { | ||||
@@ -66,8 +70,18 @@ export default function SearchPublicNoticeTable({ recordList }) { | |||||
{ | { | ||||
id: 'remarks', | id: 'remarks', | ||||
field: 'remarks', | field: 'remarks', | ||||
headerName: '我的備註', | |||||
headerName: isORGLoggedIn()?"Care Of / 我的備註":"我的備註", | |||||
flex: 3, | flex: 3, | ||||
renderCell: (params) => ( | |||||
params.row.orgId === null? | |||||
<div> | |||||
<Typography>{params.row.remarks}</Typography> | |||||
</div>: | |||||
<div> | |||||
<Typography>Care Of: {params.row.careOf}</Typography> | |||||
<Typography>我的備註: {params.row.remarks}</Typography> | |||||
</div> | |||||
) | |||||
}, | }, | ||||
{ | { | ||||
id: 'status', | id: 'status', | ||||