| @@ -22,7 +22,32 @@ export function getStatus(params) { | |||||
| return getStatusTag({ text: params.row.status }) | return getStatusTag({ text: params.row.status }) | ||||
| } | } | ||||
| } | |||||
| export function getStatusByText(status) { | |||||
| switch (status) { | |||||
| case "submitted": | |||||
| return getStatusTag({ color: "#f5a83d", text: "已提交" }) | |||||
| case "rejected": | |||||
| return getStatusTag({ color: "#d9372b", text: "已拒絕" }) | |||||
| case "cancelled": | |||||
| return getStatusTag({ color: "#757373", text: "已取消" }) | |||||
| case "accepted": | |||||
| return getStatusTag({ color: "#22a13f", text: "已接受" }) | |||||
| case "confirmed": | |||||
| return getStatusTag({ color: "#22a13f", text: "已確認" }) | |||||
| case "paid": | |||||
| return getStatusTag({ color: "#22a13f", text: "已付費" }) | |||||
| case "published": | |||||
| return getStatusTag({ color: "#f5a83d", text: "已發表" }) | |||||
| case "withdrawn": | |||||
| return getStatusTag({ color: "#8a8784", text: "已撤銷" }) | |||||
| default: | |||||
| return getStatusTag({ text: params.row.status }) | |||||
| } | |||||
| } | } | ||||
| export function getStatusTag({ color = "#000", textColor = "#FFF", text = "" }) { | export function getStatusTag({ color = "#000", textColor = "#FFF", text = "" }) { | ||||
| @@ -8,18 +8,22 @@ import { | |||||
| OutlinedInput, | OutlinedInput, | ||||
| Stack | Stack | ||||
| } from '@mui/material'; | } from '@mui/material'; | ||||
| import MainCard from "../../components/MainCard"; | |||||
| import * as React from "react"; | |||||
| // import MainCard from "../../components/MainCard"; | |||||
| const MainCard = Loadable(lazy(() => import('components/MainCard'))); | |||||
| import {useForm} from "react-hook-form"; | import {useForm} from "react-hook-form"; | ||||
| import { | import { | ||||
| // useEffect, | |||||
| useEffect, | |||||
| useState | useState | ||||
| } from "react"; | } from "react"; | ||||
| // import Checkbox from "@mui/material/Checkbox"; | // import Checkbox from "@mui/material/Checkbox"; | ||||
| import Loadable from 'components/Loadable'; | import Loadable from 'components/Loadable'; | ||||
| import { lazy } from 'react'; | import { lazy } from 'react'; | ||||
| const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent'))); | const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent'))); | ||||
| //import {useParams} from "react-router-dom"; | |||||
| // import {useParams} from "react-router-dom"; | |||||
| import * as HttpUtils from "utils/HttpUtils" | |||||
| import * as StatusUtils from "../PublicNotice/ListPanel/PublicNoteStatusUtils"; | |||||
| import BorderColorOutlinedIcon from '@mui/icons-material/BorderColorOutlined'; | import BorderColorOutlinedIcon from '@mui/icons-material/BorderColorOutlined'; | ||||
| import DoneIcon from '@mui/icons-material/Done'; | import DoneIcon from '@mui/icons-material/Done'; | ||||
| import CloseIcon from '@mui/icons-material/Close'; | import CloseIcon from '@mui/icons-material/Close'; | ||||
| @@ -27,34 +31,46 @@ import EditNoteIcon from '@mui/icons-material/EditNote'; | |||||
| import DownloadIcon from '@mui/icons-material/Download'; | import DownloadIcon from '@mui/icons-material/Download'; | ||||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | // ==============================|| DASHBOARD - DEFAULT ||============================== // | ||||
| const ApplicationDetailCard = ( | const ApplicationDetailCard = ( | ||||
| // {isCollectData, updateUserObject,userData,isNewRecord} | |||||
| { applicationDetailData, | |||||
| // isCollectData, | |||||
| // updateUserObject, | |||||
| // isNewRecord | |||||
| } | |||||
| ) => { | ) => { | ||||
| // const params = useParams(); | // const params = useParams(); | ||||
| const [currentApplicationDetailData, ] = React.useState({}); | |||||
| // const [locked, setLocked] = useState(false); | |||||
| const [onReady,] = useState(true); | |||||
| const [currentApplicationDetailData, setCurrentApplicationDetailData] = useState({}); | |||||
| const [companyName, setCompanyName] = useState({}); | |||||
| const [fileDetail, setfileDetail] = useState({}); | |||||
| const [onReady,setOnReady] = useState(false); | |||||
| const {register, | const {register, | ||||
| // getValues | // getValues | ||||
| } = useForm() | } = useForm() | ||||
| // useEffect(() => { | |||||
| // //if user data from parent are not null | |||||
| // if (Object.keys(userData).length > 0 && userData !== undefined) { | |||||
| // setCurrentUserData(userData.data); | |||||
| // } | |||||
| // }, []); | |||||
| useEffect(() => { | |||||
| //if user data from parent are not null | |||||
| // console.log(applicationDetailData) | |||||
| if (Object.keys(applicationDetailData).length > 0) { | |||||
| setCurrentApplicationDetailData(applicationDetailData.data); | |||||
| setCompanyName(applicationDetailData.companyName); | |||||
| setfileDetail(applicationDetailData.fileDetail); | |||||
| } | |||||
| }, [applicationDetailData]); | |||||
| // useEffect(() => { | |||||
| // //if state data are ready and assign to different field | |||||
| // if (Object.keys(userData).length > 0 &¤tApplicationDetailData !== undefined&¤tApplicationDetailData.id!==undefined) { | |||||
| // setLocked(currentApplicationDetailData.locked); | |||||
| // setOnReady(true); | |||||
| // }else if(isNewRecord){ | |||||
| // setLocked(false); | |||||
| // setOnReady(true); | |||||
| // } | |||||
| // }, [currentApplicationDetailData]); | |||||
| useEffect(() => { | |||||
| //if state data are ready and assign to different field | |||||
| // console.log(currentApplicationDetailData) | |||||
| if (Object.keys(currentApplicationDetailData).length > 0) { | |||||
| setOnReady(true); | |||||
| } | |||||
| }, [currentApplicationDetailData]); | |||||
| const onDownloadClick = () => () => { | |||||
| HttpUtils.fileDownload({ | |||||
| fileId:fileDetail.id, | |||||
| skey:fileDetail.skey, | |||||
| filename:fileDetail.filename, | |||||
| }); | |||||
| }; | |||||
| // useEffect(() => { | // useEffect(() => { | ||||
| // //upload latest data to parent | // //upload latest data to parent | ||||
| // const values = getValues(); | // const values = getValues(); | ||||
| @@ -205,15 +221,7 @@ const ApplicationDetailCard = ( | |||||
| <Grid item xs={12} md={9} lg={9}> | <Grid item xs={12} md={9} lg={9}> | ||||
| <FormControl variant="outlined" fullWidth > | <FormControl variant="outlined" fullWidth > | ||||
| <OutlinedInput | |||||
| fullWidth | |||||
| size="small" | |||||
| {...register("status", | |||||
| { | |||||
| value: currentApplicationDetailData.status, | |||||
| })} | |||||
| id='status' | |||||
| /> | |||||
| {StatusUtils.getStatusByText(currentApplicationDetailData.status)} | |||||
| </FormControl> | </FormControl> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| @@ -230,15 +238,26 @@ const ApplicationDetailCard = ( | |||||
| <Grid item xs={12} md={9} lg={9}> | <Grid item xs={12} md={9} lg={9}> | ||||
| <FormControl variant="outlined" fullWidth > | <FormControl variant="outlined" fullWidth > | ||||
| { currentApplicationDetailData.orgId===null? | |||||
| <OutlinedInput | <OutlinedInput | ||||
| fullWidth | fullWidth | ||||
| size="small" | size="small" | ||||
| {...register("userName", | |||||
| {...register("contactPerson", | |||||
| { | { | ||||
| value: currentApplicationDetailData.userName, | |||||
| value: currentApplicationDetailData.contactPerson, | |||||
| })} | })} | ||||
| id='userName' | |||||
| id='contactPerson' | |||||
| />: | |||||
| <OutlinedInput | |||||
| fullWidth | |||||
| size="small" | |||||
| {...register("companyName", | |||||
| { | |||||
| value: companyName.enCompanyName, | |||||
| })} | |||||
| id='companyName' | |||||
| /> | /> | ||||
| } | |||||
| </FormControl> | </FormControl> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| @@ -251,17 +270,28 @@ const ApplicationDetailCard = ( | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={8} lg={8}> | <Grid item xs={12} md={8} lg={8}> | ||||
| <FormControl variant="outlined" fullWidth > | |||||
| <OutlinedInput | |||||
| fullWidth | |||||
| size="small" | |||||
| {...register("contactTelNo", | |||||
| { | |||||
| value: currentApplicationDetailData.contactTelNo, | |||||
| })} | |||||
| id='contactTelNo' | |||||
| /> | |||||
| </FormControl> | |||||
| <Stack direction="row"> | |||||
| <FormControl variant="outlined" sx={{width:'25%'}}> | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("countryCode", | |||||
| { | |||||
| value: currentApplicationDetailData.contactTelNo.countryCode, | |||||
| })} | |||||
| id='countryCode' | |||||
| /> | |||||
| </FormControl> | |||||
| <FormControl variant="outlined" sx={{width:'100%'}}> | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("phoneNumber", | |||||
| { | |||||
| value: currentApplicationDetailData.contactTelNo.phoneNumber, | |||||
| })} | |||||
| id='phoneNumber' | |||||
| /> | |||||
| </FormControl> | |||||
| </Stack> | |||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| @@ -298,17 +328,28 @@ const ApplicationDetailCard = ( | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={8} lg={8}> | <Grid item xs={12} md={8} lg={8}> | ||||
| <FormControl variant="outlined" fullWidth > | |||||
| <OutlinedInput | |||||
| fullWidth | |||||
| size="small" | |||||
| {...register("contactFaxNo", | |||||
| { | |||||
| value: currentApplicationDetailData.contactFaxNo, | |||||
| })} | |||||
| id='contactFaxNo' | |||||
| /> | |||||
| </FormControl> | |||||
| <Stack direction="row"> | |||||
| <FormControl variant="outlined" sx={{width:'25%'}}> | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("countryCode", | |||||
| { | |||||
| value: currentApplicationDetailData.contactFaxNo.countryCode, | |||||
| })} | |||||
| id='countryCode' | |||||
| /> | |||||
| </FormControl> | |||||
| <FormControl variant="outlined" sx={{width:'100%'}}> | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("faxNumber", | |||||
| { | |||||
| value: currentApplicationDetailData.contactFaxNo.faxNumber, | |||||
| })} | |||||
| id='faxNumber' | |||||
| /> | |||||
| </FormControl> | |||||
| </Stack> | |||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| @@ -331,7 +372,7 @@ const ApplicationDetailCard = ( | |||||
| fullWidth | fullWidth | ||||
| id='fileName' | id='fileName' | ||||
| > | > | ||||
| Manuscript File Final.pdf | |||||
| {fileDetail.filename} | |||||
| </Typography> | </Typography> | ||||
| </FormControl> | </FormControl> | ||||
| </Grid> | </Grid> | ||||
| @@ -339,7 +380,7 @@ const ApplicationDetailCard = ( | |||||
| <Button | <Button | ||||
| size="small" | size="small" | ||||
| variant="contained" | variant="contained" | ||||
| // onClick={handleNewUserClick} | |||||
| onClick={onDownloadClick()} | |||||
| sx={{ | sx={{ | ||||
| textTransform: 'capitalize', | textTransform: 'capitalize', | ||||
| alignItems: 'end', | alignItems: 'end', | ||||
| @@ -349,7 +390,6 @@ const ApplicationDetailCard = ( | |||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| @@ -12,7 +12,7 @@ import MainCard from "../../components/MainCard"; | |||||
| import * as React from "react"; | import * as React from "react"; | ||||
| import {useForm} from "react-hook-form"; | import {useForm} from "react-hook-form"; | ||||
| import { | import { | ||||
| // useEffect, | |||||
| useEffect, | |||||
| useState | useState | ||||
| } from "react"; | } from "react"; | ||||
| // import Checkbox from "@mui/material/Checkbox"; | // import Checkbox from "@mui/material/Checkbox"; | ||||
| @@ -21,35 +21,40 @@ import { lazy } from 'react'; | |||||
| const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent'))); | const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent'))); | ||||
| //import {useParams} from "react-router-dom"; | //import {useParams} from "react-router-dom"; | ||||
| import ContentPasteSearchIcon from '@mui/icons-material/ContentPasteSearch'; | import ContentPasteSearchIcon from '@mui/icons-material/ContentPasteSearch'; | ||||
| import CheckCircleOutline from '@mui/icons-material/CheckCircleOutline'; | |||||
| import HighlightOff from '@mui/icons-material/HighlightOff'; | |||||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | // ==============================|| DASHBOARD - DEFAULT ||============================== // | ||||
| const ClientDetailCard = ( | const ClientDetailCard = ( | ||||
| // {isCollectData, updateUserObject,userData,isNewRecord} | |||||
| { applicationDetailData, | |||||
| // isCollectData, | |||||
| // updateUserObject, | |||||
| // isNewRecord | |||||
| } | |||||
| ) => { | ) => { | ||||
| // const params = useParams(); | // const params = useParams(); | ||||
| const [currentApplicationDetailData, ] = React.useState({}); | |||||
| // const [locked, setLocked] = useState(false); | |||||
| const [onReady,] = useState(true); | |||||
| const [currentApplicationDetailData, setCurrentApplicationDetailData] = useState({}); | |||||
| const [onReady,setOnReady] = useState(false); | |||||
| const [companyName, setCompanyName] = useState({}); | |||||
| const {register, | const {register, | ||||
| // getValues | // getValues | ||||
| } = useForm() | } = useForm() | ||||
| // useEffect(() => { | |||||
| // //if user data from parent are not null | |||||
| // if (Object.keys(userData).length > 0 && userData !== undefined) { | |||||
| // setCurrentUserData(userData.data); | |||||
| // } | |||||
| // }, []); | |||||
| useEffect(() => { | |||||
| //if user data from parent are not null | |||||
| if (Object.keys(applicationDetailData).length > 0 && applicationDetailData !== undefined) { | |||||
| setCurrentApplicationDetailData(applicationDetailData.userData); | |||||
| setCompanyName(applicationDetailData.companyName); | |||||
| } | |||||
| }, [applicationDetailData]); | |||||
| // useEffect(() => { | |||||
| // //if state data are ready and assign to different field | |||||
| // if (Object.keys(userData).length > 0 &¤tApplicationDetailData !== undefined&¤tApplicationDetailData.id!==undefined) { | |||||
| // setLocked(currentApplicationDetailData.locked); | |||||
| // setOnReady(true); | |||||
| // }else if(isNewRecord){ | |||||
| // setLocked(false); | |||||
| // setOnReady(true); | |||||
| // } | |||||
| // }, [currentApplicationDetailData]); | |||||
| useEffect(() => { | |||||
| //if state data are ready and assign to different field | |||||
| // console.log(currentApplicationDetailData) | |||||
| if (Object.keys(currentApplicationDetailData).length > 0) { | |||||
| setOnReady(true); | |||||
| } | |||||
| }, [currentApplicationDetailData]); | |||||
| // useEffect(() => { | // useEffect(() => { | ||||
| // //upload latest data to parent | // //upload latest data to parent | ||||
| @@ -61,7 +66,6 @@ const ClientDetailCard = ( | |||||
| // updateUserObject(objectData); | // updateUserObject(objectData); | ||||
| // }, [isCollectData]); | // }, [isCollectData]); | ||||
| return ( | return ( | ||||
| !onReady ? | !onReady ? | ||||
| <LoadingComponent/> | <LoadingComponent/> | ||||
| @@ -69,9 +73,9 @@ const ClientDetailCard = ( | |||||
| <MainCard elevation={0} | <MainCard elevation={0} | ||||
| border={false} | border={false} | ||||
| content={false} | content={false} | ||||
| > | |||||
| sx={{xs:"12", md:"7"}}> | |||||
| <Grid container spacing={1} direction="row"> | <Grid container spacing={1} direction="row"> | ||||
| <Grid item xs={12} md={7} lg={7} > | |||||
| <Grid item xs={12} md={7} > | |||||
| <Stack | <Stack | ||||
| direction="row" | direction="row" | ||||
| justifyContent="flex-start" | justifyContent="flex-start" | ||||
| @@ -100,9 +104,20 @@ const ClientDetailCard = ( | |||||
| <Grid container direction="column" justifyContent="flex-start" | <Grid container direction="column" justifyContent="flex-start" | ||||
| alignItems="flex-start"> | alignItems="flex-start"> | ||||
| <Grid item xs={12} md={12} lg={12} mb={1} > | <Grid item xs={12} md={12} lg={12} mb={1} > | ||||
| <Typography> | |||||
| {currentApplicationDetailData.status} | |||||
| </Typography> | |||||
| {currentApplicationDetailData.verifiedBy!==null? | |||||
| <Stack direction="row"> | |||||
| <Typography> | |||||
| Verified | |||||
| </Typography> | |||||
| <CheckCircleOutline color="success"/> | |||||
| </Stack>: | |||||
| <Stack direction="row"> | |||||
| <Typography> | |||||
| Not Verified | |||||
| </Typography> | |||||
| <HighlightOff color="error"/> | |||||
| </Stack> | |||||
| } | |||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| <Grid container direction="column" justifyContent="flex-start" | <Grid container direction="column" justifyContent="flex-start" | ||||
| @@ -110,114 +125,221 @@ const ClientDetailCard = ( | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} > | <Grid item xs={12} md={12} lg={12} mb={1} > | ||||
| <FormLabel>Client Type:</FormLabel> | <FormLabel>Client Type:</FormLabel> | ||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={12} lg={12} mb={1} > | |||||
| <FormControl variant="outlined" > | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} sx={{width:'100%'}} > | |||||
| <FormControl variant="outlined" sx={{width:'100%'}} > | |||||
| <OutlinedInput | <OutlinedInput | ||||
| size="small" | size="small" | ||||
| {...register("userType", | |||||
| {...register("type", | |||||
| { | { | ||||
| value: currentApplicationDetailData.userType, | |||||
| value: currentApplicationDetailData.type, | |||||
| })} | })} | ||||
| id='userType' | |||||
| id='type' | |||||
| /> | /> | ||||
| </FormControl> | </FormControl> | ||||
| </Grid> | </Grid> | ||||
| </Grid> | </Grid> | ||||
| <Grid container direction="column" justifyContent="flex-start" | |||||
| alignItems="flex-start"> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} | |||||
| sx={{display: 'flex', alignItems: 'center'}}> | |||||
| <FormLabel>Company Name (English):</FormLabel> | |||||
| </Grid> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} > | |||||
| <FormControl variant="outlined" > | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("enCompanyName", | |||||
| { | |||||
| value: currentApplicationDetailData.enCompanyName, | |||||
| })} | |||||
| id='enCompanyName' | |||||
| /> | |||||
| </FormControl> | |||||
| {currentApplicationDetailData.type==="ORG"? | |||||
| <> | |||||
| <Grid container direction="column" justifyContent="flex-start" | |||||
| alignItems="flex-start"> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} | |||||
| sx={{display: 'flex', alignItems: 'center'}}> | |||||
| <FormLabel>Company Name (English):</FormLabel> | |||||
| </Grid> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} sx={{width:'100%'}} > | |||||
| <FormControl variant="outlined" sx={{width:'100%'}} > | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("enCompanyName", | |||||
| { | |||||
| value: companyName.enCompanyName , | |||||
| })} | |||||
| id='enCompanyName' | |||||
| /> | |||||
| </FormControl> | |||||
| </Grid> | |||||
| </Grid> | </Grid> | ||||
| </Grid> | |||||
| <Grid container direction="column" justifyContent="flex-start" | |||||
| alignItems="flex-start"> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} | |||||
| sx={{display: 'flex', alignItems: 'center'}}> | |||||
| <FormLabel>Company Name (Chinese):</FormLabel> | |||||
| <Grid container direction="column" justifyContent="flex-start" | |||||
| alignItems="flex-start"> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} | |||||
| sx={{display: 'flex', alignItems: 'center'}}> | |||||
| <FormLabel>Company Name (Chinese):</FormLabel> | |||||
| </Grid> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} sx={{width:'100%'}} > | |||||
| <FormControl variant="outlined" sx={{width:'100%'}} > | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("chCompanyName", | |||||
| { | |||||
| value: companyName.chCompanyName, | |||||
| })} | |||||
| id='chCompanyName' | |||||
| /> | |||||
| </FormControl> | |||||
| </Grid> | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={12} lg={12} mb={1} > | |||||
| <FormControl variant="outlined" > | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("chCompanyName", | |||||
| { | |||||
| value: currentApplicationDetailData.chCompanyName, | |||||
| })} | |||||
| id='chCompanyName' | |||||
| /> | |||||
| </FormControl> | |||||
| <Grid container direction="column" justifyContent="flex-start" | |||||
| alignItems="flex-start"> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} | |||||
| sx={{display: 'flex', alignItems: 'center'}}> | |||||
| <FormLabel>English Name:</FormLabel> | |||||
| </Grid> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} sx={{width:'100%'}} > | |||||
| <FormControl variant="outlined" sx={{width:'100%'}} > | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("contactPerson", | |||||
| { | |||||
| value: currentApplicationDetailData.contactPerson, | |||||
| })} | |||||
| id='contactPerson' | |||||
| /> | |||||
| </FormControl> | |||||
| </Grid> | |||||
| </Grid> | </Grid> | ||||
| </Grid> | |||||
| <Grid container direction="column" justifyContent="flex-start" | |||||
| alignItems="flex-start"> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} | |||||
| sx={{display: 'flex', alignItems: 'center'}}> | |||||
| <FormLabel>English Name:</FormLabel> | |||||
| <Grid container direction="column" justifyContent="flex-start" | |||||
| alignItems="flex-start"> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} | |||||
| sx={{display: 'flex', alignItems: 'center'}}> | |||||
| <FormLabel>Contact Phone:</FormLabel> | |||||
| </Grid> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} > | |||||
| <Stack direction="row"> | |||||
| <FormControl variant="outlined" sx={{width:'40%'}}> | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("countryCode", | |||||
| { | |||||
| value: currentApplicationDetailData.contactTel.countryCode, | |||||
| })} | |||||
| id='countryCode' | |||||
| /> | |||||
| </FormControl> | |||||
| <FormControl variant="outlined" sx={{width:'100%'}}> | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("phoneNumber", | |||||
| { | |||||
| value: currentApplicationDetailData.contactTel.phoneNumber, | |||||
| })} | |||||
| id='phoneNumber' | |||||
| /> | |||||
| </FormControl> | |||||
| </Stack> | |||||
| </Grid> | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={12} lg={12} mb={1} > | |||||
| <FormControl variant="outlined" > | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("contactPerson", | |||||
| { | |||||
| value: currentApplicationDetailData.contactPerson, | |||||
| })} | |||||
| id='contactPerson' | |||||
| /> | |||||
| </FormControl> | |||||
| <Grid container direction="column" justifyContent="flex-start" | |||||
| alignItems="flex-start"> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} | |||||
| sx={{display: 'flex', alignItems: 'center'}}> | |||||
| <FormLabel>Email:</FormLabel> | |||||
| </Grid> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} sx={{width:'100%'}} > | |||||
| <FormControl variant="outlined" sx={{width:'100%'}} > | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("emailBus", | |||||
| { | |||||
| value: currentApplicationDetailData.emailBus, | |||||
| })} | |||||
| id='emailBus' | |||||
| /> | |||||
| </FormControl> | |||||
| </Grid> | |||||
| </Grid> | </Grid> | ||||
| </Grid> | |||||
| <Grid container direction="column" justifyContent="flex-start" | |||||
| alignItems="flex-start"> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} | |||||
| sx={{display: 'flex', alignItems: 'center'}}> | |||||
| <FormLabel>Contact Phone:</FormLabel> | |||||
| </>: | |||||
| <> | |||||
| <Grid container direction="column" justifyContent="flex-start" | |||||
| alignItems="flex-start"> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} | |||||
| sx={{display: 'flex', alignItems: 'center'}}> | |||||
| <FormLabel>English Name:</FormLabel> | |||||
| </Grid> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} sx={{width:'100%'}} > | |||||
| <FormControl variant="outlined" sx={{width:'100%'}} > | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("enName", | |||||
| { | |||||
| value: currentApplicationDetailData.enName, | |||||
| })} | |||||
| id='enName' | |||||
| /> | |||||
| </FormControl> | |||||
| </Grid> | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={12} lg={12} mb={1} > | |||||
| <FormControl variant="outlined" > | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("phoneNumber", | |||||
| { | |||||
| value: currentApplicationDetailData.phoneNumber, | |||||
| })} | |||||
| id='phoneNumber' | |||||
| /> | |||||
| </FormControl> | |||||
| <Grid container direction="column" justifyContent="flex-start" | |||||
| alignItems="flex-start"> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} | |||||
| sx={{display: 'flex', alignItems: 'center'}}> | |||||
| <FormLabel>Chinese Name:</FormLabel> | |||||
| </Grid> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} sx={{width:'100%'}} > | |||||
| <FormControl variant="outlined" sx={{width:'100%'}} > | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("chName", | |||||
| { | |||||
| value: currentApplicationDetailData.chName, | |||||
| })} | |||||
| id='chName' | |||||
| /> | |||||
| </FormControl> | |||||
| </Grid> | |||||
| </Grid> | </Grid> | ||||
| </Grid> | |||||
| <Grid container direction="column" justifyContent="flex-start" | |||||
| alignItems="flex-start"> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} | |||||
| sx={{display: 'flex', alignItems: 'center'}}> | |||||
| <FormLabel>Email:</FormLabel> | |||||
| <Grid container direction="column" justifyContent="flex-start" | |||||
| alignItems="flex-start"> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} | |||||
| sx={{display: 'flex', alignItems: 'center'}}> | |||||
| <FormLabel>Contact Phone:</FormLabel> | |||||
| </Grid> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} sx={{width:'100%'}} > | |||||
| <Stack direction="row"> | |||||
| <FormControl variant="outlined" sx={{width:'40%'}}> | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("countryCode", | |||||
| { | |||||
| value: currentApplicationDetailData.mobileNumber.countryCode, | |||||
| })} | |||||
| id='countryCode' | |||||
| /> | |||||
| </FormControl> | |||||
| <FormControl variant="outlined" sx={{width:'100%'}}> | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("phoneNumber", | |||||
| { | |||||
| value: currentApplicationDetailData.mobileNumber.phoneNumber, | |||||
| })} | |||||
| id='phoneNumber' | |||||
| /> | |||||
| </FormControl> | |||||
| </Stack> | |||||
| </Grid> | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={12} lg={12} mb={1} > | |||||
| <FormControl variant="outlined" > | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("emailBus", | |||||
| { | |||||
| value: currentApplicationDetailData.emailBus, | |||||
| })} | |||||
| id='emailBus' | |||||
| /> | |||||
| </FormControl> | |||||
| <Grid container direction="column" justifyContent="flex-start" | |||||
| alignItems="flex-start"> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} | |||||
| sx={{display: 'flex', alignItems: 'center'}}> | |||||
| <FormLabel>Email:</FormLabel> | |||||
| </Grid> | |||||
| <Grid item xs={12} md={12} lg={12} mb={1} sx={{width:'100%'}} > | |||||
| <FormControl variant="outlined" sx={{width:'100%'}} > | |||||
| <OutlinedInput | |||||
| size="small" | |||||
| {...register("emailAddress", | |||||
| { | |||||
| value: currentApplicationDetailData.emailAddress, | |||||
| })} | |||||
| id='emailAddress' | |||||
| /> | |||||
| </FormControl> | |||||
| </Grid> | |||||
| </Grid> | </Grid> | ||||
| </Grid> | |||||
| </> | |||||
| } | |||||
| </form> | </form> | ||||
| </MainCard> | </MainCard> | ||||
| ); | ); | ||||
| @@ -11,7 +11,7 @@ import MainCard from "../../components/MainCard"; | |||||
| import * as React from "react"; | import * as React from "react"; | ||||
| import {useForm} from "react-hook-form"; | import {useForm} from "react-hook-form"; | ||||
| import { | import { | ||||
| // useEffect, | |||||
| useEffect, | |||||
| useState | useState | ||||
| } from "react"; | } from "react"; | ||||
| // import Checkbox from "@mui/material/Checkbox"; | // import Checkbox from "@mui/material/Checkbox"; | ||||
| @@ -19,36 +19,46 @@ import Loadable from 'components/Loadable'; | |||||
| import { lazy } from 'react'; | import { lazy } from 'react'; | ||||
| const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent'))); | const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent'))); | ||||
| //import {useParams} from "react-router-dom"; | //import {useParams} from "react-router-dom"; | ||||
| import * as DateUtils from "utils/DateUtils"; | |||||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | // ==============================|| DASHBOARD - DEFAULT ||============================== // | ||||
| const GazetteDetailCard = ( | const GazetteDetailCard = ( | ||||
| // {isCollectData, updateUserObject,userData,isNewRecord} | |||||
| { applicationDetailData, | |||||
| // isCollectData, | |||||
| // updateUserObject, | |||||
| // isNewRecord | |||||
| } | |||||
| ) => { | ) => { | ||||
| // const params = useParams(); | // const params = useParams(); | ||||
| const [currentApplicationDetailData, ] = React.useState({}); | |||||
| // const [locked, setLocked] = useState(false); | |||||
| const [onReady,] = useState(true); | |||||
| // const [currentApplicationDetailData, setCurrentApplicationDetailData] = useState({}); | |||||
| const [onReady,setOnReady] = useState(false); | |||||
| const [issueNum,setIssueNum] = useState(""); | |||||
| const [issueDate,setIssueDate] = useState(""); | |||||
| const [gazetteCode,setGazetteCode] = useState(""); | |||||
| const [groupTitle,setGroupTitle] = useState(""); | |||||
| const {register, | const {register, | ||||
| // getValues | // getValues | ||||
| } = useForm() | } = useForm() | ||||
| // useEffect(() => { | |||||
| // //if user data from parent are not null | |||||
| // if (Object.keys(userData).length > 0 && userData !== undefined) { | |||||
| // setCurrentUserData(userData.data); | |||||
| // } | |||||
| // }, []); | |||||
| useEffect(() => { | |||||
| //if user data from parent are not null | |||||
| // console.log(applicationDetailData) | |||||
| if (Object.keys(applicationDetailData).length > 0) { | |||||
| setIssueNum(applicationDetailData.gazetteIssueDetail.volume+"/"+applicationDetailData.gazetteIssueDetail.year | |||||
| +" No. "+applicationDetailData.gazetteIssueDetail.issueNo); | |||||
| setIssueDate(DateUtils.dateFormat(applicationDetailData.gazetteIssueDetail.issueDate, "D MMM YYYY (ddd)")); | |||||
| setGazetteCode(applicationDetailData.data.groupNo) | |||||
| setGroupTitle(applicationDetailData.data.groupTitle) | |||||
| } | |||||
| }, [applicationDetailData]); | |||||
| // useEffect(() => { | |||||
| // //if state data are ready and assign to different field | |||||
| // if (Object.keys(userData).length > 0 &¤tApplicationDetailData !== undefined&¤tApplicationDetailData.id!==undefined) { | |||||
| // setLocked(currentApplicationDetailData.locked); | |||||
| // setOnReady(true); | |||||
| // }else if(isNewRecord){ | |||||
| // setLocked(false); | |||||
| // setOnReady(true); | |||||
| // } | |||||
| // }, [currentApplicationDetailData]); | |||||
| useEffect(() => { | |||||
| //if state data are ready and assign to different field | |||||
| // console.log(currentApplicationDetailData) | |||||
| if (issueNum.length > 0) { | |||||
| setOnReady(true); | |||||
| } | |||||
| }, [issueNum]); | |||||
| // useEffect(() => { | // useEffect(() => { | ||||
| // //upload latest data to parent | // //upload latest data to parent | ||||
| @@ -89,11 +99,11 @@ const GazetteDetailCard = ( | |||||
| <OutlinedInput | <OutlinedInput | ||||
| fullWidth | fullWidth | ||||
| size="small" | size="small" | ||||
| {...register("issueNo", | |||||
| {...register("issueNum", | |||||
| { | { | ||||
| value: currentApplicationDetailData.issueNo, | |||||
| value: issueNum, | |||||
| })} | })} | ||||
| id='issueNo' | |||||
| id='issueNum' | |||||
| /> | /> | ||||
| </FormControl> | </FormControl> | ||||
| </Grid> | </Grid> | ||||
| @@ -111,11 +121,11 @@ const GazetteDetailCard = ( | |||||
| <OutlinedInput | <OutlinedInput | ||||
| fullWidth | fullWidth | ||||
| size="small" | size="small" | ||||
| {...register("issueNo", | |||||
| {...register("gazetteCode", | |||||
| { | { | ||||
| value: currentApplicationDetailData.issueNo, | |||||
| value: gazetteCode, | |||||
| })} | })} | ||||
| id='issueNo' | |||||
| id='gazetteCode' | |||||
| /> | /> | ||||
| </FormControl> | </FormControl> | ||||
| </Grid> | </Grid> | ||||
| @@ -138,7 +148,7 @@ const GazetteDetailCard = ( | |||||
| size="small" | size="small" | ||||
| {...register("issueDate", | {...register("issueDate", | ||||
| { | { | ||||
| value: currentApplicationDetailData.issueDate, | |||||
| value: issueDate, | |||||
| })} | })} | ||||
| id='issueDate' | id='issueDate' | ||||
| /> | /> | ||||
| @@ -158,11 +168,11 @@ const GazetteDetailCard = ( | |||||
| <OutlinedInput | <OutlinedInput | ||||
| fullWidth | fullWidth | ||||
| size="small" | size="small" | ||||
| {...register("issueNo", | |||||
| {...register("groupTitle", | |||||
| { | { | ||||
| value: currentApplicationDetailData.issueNo, | |||||
| value: groupTitle, | |||||
| })} | })} | ||||
| id='issueNo' | |||||
| id='groupTitle' | |||||
| /> | /> | ||||
| </FormControl> | </FormControl> | ||||
| </Grid> | </Grid> | ||||
| @@ -1,4 +1,7 @@ | |||||
| // import { useState } from 'react'; | |||||
| import { | |||||
| useEffect, | |||||
| useState | |||||
| } from "react"; | |||||
| // material-ui | // material-ui | ||||
| import { | import { | ||||
| @@ -9,16 +12,29 @@ import { | |||||
| } from '@mui/material'; | } from '@mui/material'; | ||||
| import Loadable from 'components/Loadable'; | import Loadable from 'components/Loadable'; | ||||
| import { lazy } from 'react'; | import { lazy } from 'react'; | ||||
| import { | |||||
| // useNavigate, | |||||
| useParams | |||||
| } from "react-router-dom"; | |||||
| import axios from "axios"; | |||||
| import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' | import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' | ||||
| const ApplicationDetailCard = Loadable(lazy(() => import('./ApplicationDetailCard'))); | const ApplicationDetailCard = Loadable(lazy(() => import('./ApplicationDetailCard'))); | ||||
| const GazetteDetailCard = Loadable(lazy(() => import('./GazetteDetailCard'))); | const GazetteDetailCard = Loadable(lazy(() => import('./GazetteDetailCard'))); | ||||
| const ClientDetailCard = Loadable(lazy(() => import('./ClientDetailCard'))); | const ClientDetailCard = Loadable(lazy(() => import('./ClientDetailCard'))); | ||||
| const TabTableDetail = Loadable(lazy(() => import('./tabTableDetail/TabTable'))); | const TabTableDetail = Loadable(lazy(() => import('./tabTableDetail/TabTable'))); | ||||
| import { | |||||
| GET_PUBLIC_NOTICE_APPLY_DETAIL, | |||||
| } from "utils/ApiPathConst"; | |||||
| // ==============================|| Body - DEFAULT ||============================== // | // ==============================|| Body - DEFAULT ||============================== // | ||||
| const DashboardDefault = () => { | const DashboardDefault = () => { | ||||
| const params = useParams(); | |||||
| const [applicationDetailData, setApplicationDetailData] = useState({}); | |||||
| // const [refApplicationDetailData, setRefApplicationDetailData] = React.useState({}); | |||||
| const BackgroundHead = { | const BackgroundHead = { | ||||
| backgroundImage: `url(${titleBackgroundImg})`, | backgroundImage: `url(${titleBackgroundImg})`, | ||||
| width: '100%', | width: '100%', | ||||
| @@ -30,8 +46,24 @@ const DashboardDefault = () => { | |||||
| const issueNo = "No. 36" | const issueNo = "No. 36" | ||||
| const issueDate = "A001" | const issueDate = "A001" | ||||
| useEffect(() => { | |||||
| if(params.id > 0 ){ | |||||
| axios.get(`${GET_PUBLIC_NOTICE_APPLY_DETAIL}/${params.id}`) | |||||
| .then((response) => { | |||||
| if (response.status === 200) { | |||||
| setApplicationDetailData(response.data); | |||||
| // setRefApplicationDetailData(response.data); | |||||
| } | |||||
| }) | |||||
| .catch(error => { | |||||
| console.log(error); | |||||
| return false; | |||||
| }); | |||||
| } | |||||
| }, []); | |||||
| return ( | return ( | ||||
| <Grid container sx={{maxnHeight: '500vh'}} direction="column"> | |||||
| <Grid container sx={{maxnHeight: '500vh',backgroundColor:'#ffffff'}} direction="column"> | |||||
| <Grid item xs={12}> | <Grid item xs={12}> | ||||
| <div style={BackgroundHead}> | <div style={BackgroundHead}> | ||||
| <Stack direction="row" height='70px' justifyContent="flex-start" alignItems="center"> | <Stack direction="row" height='70px' justifyContent="flex-start" alignItems="center"> | ||||
| @@ -52,7 +84,7 @@ const DashboardDefault = () => { | |||||
| <Box xs={12} ml={4} mt={3} sx={{ p: 2, border: '3px groove grey', borderRadius: '10px'}}> | <Box xs={12} ml={4} mt={3} sx={{ p: 2, border: '3px groove grey', borderRadius: '10px'}}> | ||||
| <ApplicationDetailCard | <ApplicationDetailCard | ||||
| // updateUserObject={updateUserObject} | // updateUserObject={updateUserObject} | ||||
| // userData={userData} | |||||
| applicationDetailData={applicationDetailData} | |||||
| // isCollectData={isCollectData} | // isCollectData={isCollectData} | ||||
| // isNewRecord={isNewRecord} | // isNewRecord={isNewRecord} | ||||
| /> | /> | ||||
| @@ -62,7 +94,7 @@ const DashboardDefault = () => { | |||||
| <Box xs={12} ml={4} mt={1} sx={{ p: 2, border: '3px groove grey', borderRadius: '10px'}}> | <Box xs={12} ml={4} mt={1} sx={{ p: 2, border: '3px groove grey', borderRadius: '10px'}}> | ||||
| <GazetteDetailCard | <GazetteDetailCard | ||||
| // updateUserObject={updateUserObject} | // updateUserObject={updateUserObject} | ||||
| // userData={userData} | |||||
| applicationDetailData={applicationDetailData} | |||||
| // isCollectData={isCollectData} | // isCollectData={isCollectData} | ||||
| // isNewRecord={isNewRecord} | // isNewRecord={isNewRecord} | ||||
| /> | /> | ||||
| @@ -77,11 +109,11 @@ const DashboardDefault = () => { | |||||
| </Grid> | </Grid> | ||||
| <Grid item xs={12} md={2} lg={2}> | <Grid item xs={12} md={2} lg={2}> | ||||
| <Grid container> | <Grid container> | ||||
| <Grid item xs={12} > | |||||
| <Box xs={12} ml={1} mt={3} mr={1} sx={{ p: 2, border: '3px groove grey', borderRadius: '10px'}}> | |||||
| <Grid item xs={12}> | |||||
| <Box ml={1} mt={3} mr={1} height='800px' sx={{ p: 2, border: '3px groove grey', borderRadius: '10px'}}> | |||||
| <ClientDetailCard | <ClientDetailCard | ||||
| // updateUserObject={updateUserObject} | // updateUserObject={updateUserObject} | ||||
| // userData={userData} | |||||
| applicationDetailData={applicationDetailData} | |||||
| // isCollectData={isCollectData} | // isCollectData={isCollectData} | ||||
| // isNewRecord={isNewRecord} | // isNewRecord={isNewRecord} | ||||
| /> | /> | ||||
| @@ -74,7 +74,7 @@ export default function BaseGrid({rows}) { | |||||
| ]; | ]; | ||||
| return ( | return ( | ||||
| <div style={{height: 400, width: '100%'}}> | |||||
| <div style={{height:'20%', width: '100%'}}> | |||||
| <DataGrid | <DataGrid | ||||
| rows={rows} | rows={rows} | ||||
| columns={columns} | columns={columns} | ||||
| @@ -55,6 +55,7 @@ export const POST_PUBLIC_NOTICE_APPLY = apiPath+'/application/apply'; | |||||
| //GLD User | //GLD User | ||||
| export const POST_ADMIN_USER_REGISTER = apiPath+'/user/registry'; | export const POST_ADMIN_USER_REGISTER = apiPath+'/user/registry'; | ||||
| export const DELETE_USER = apiPath+'/user'; | export const DELETE_USER = apiPath+'/user'; | ||||
| export const GET_PUBLIC_NOTICE_APPLY_DETAIL = apiPath+'/application/application-detail'; | |||||
| //User Group | //User Group | ||||
| export const POST_AND_UPDATE_USER_GROUP = apiPath+'/group/save'; | export const POST_AND_UPDATE_USER_GROUP = apiPath+'/group/save'; | ||||