| @@ -48,6 +48,7 @@ | |||
| "react-scripts": "^5.0.1", | |||
| "react-syntax-highlighter": "^15.5.0", | |||
| "react-to-print": "^2.14.13", | |||
| "react-toastify": "^9.1.3", | |||
| "react-window": "^1.8.7", | |||
| "redux": "^4.2.0", | |||
| "simplebar": "^5.3.8", | |||
| @@ -2,6 +2,8 @@ | |||
| import Routes from 'routes'; | |||
| import ThemeCustomization from 'themes'; | |||
| import ScrollTop from 'components/ScrollTop'; | |||
| import {ToastContainer} from "react-toastify"; | |||
| import 'react-toastify/dist/ReactToastify.css'; | |||
| //import {isUserLoggedIn} from 'utils/Utils'; | |||
| //import {DefaultRoute} from 'routes/index' | |||
| // ==============================|| APP - THEME, ROUTER, LOCAL ||============================== // | |||
| @@ -12,6 +14,7 @@ const App = () => ( | |||
| <Routes> | |||
| </Routes> | |||
| </ScrollTop> | |||
| <ToastContainer/> | |||
| </ThemeCustomization> | |||
| ); | |||
| @@ -15,6 +15,7 @@ import * as ComboData from "../../utils/ComboData"; | |||
| const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent'))); | |||
| import Loadable from 'components/Loadable'; | |||
| import { lazy } from 'react'; | |||
| import { notifySaveSuccess } from 'utils/CommonFunction'; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| @@ -83,6 +84,7 @@ const OrganizationCard = ({ userData, loadDataFun, id }) => { | |||
| creditor: vaule.creditor, | |||
| }, | |||
| onSuccess: function () { | |||
| notifySaveSuccess() | |||
| loadDataFun(); | |||
| setEditMode(false); | |||
| } | |||
| @@ -15,6 +15,7 @@ import { useFormik } from 'formik'; | |||
| const LoadingComponent = Loadable(lazy(() => import('../extra-pages/LoadingComponent'))); | |||
| import Loadable from 'components/Loadable'; | |||
| import { lazy } from 'react'; | |||
| import { notifyCreateSuccess } from 'utils/CommonFunction'; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| @@ -81,6 +82,7 @@ const OrganizationCard_loadFromUser = ({ userData, userId }) => { | |||
| }, | |||
| onSuccess: function (responseData) { | |||
| navigate('/org/' + responseData.id); | |||
| notifyCreateSuccess() | |||
| } | |||
| }); | |||
| } | |||
| @@ -18,6 +18,7 @@ import * as React from "react"; | |||
| import { useFormik } from 'formik'; | |||
| import { useNavigate } from "react-router-dom"; | |||
| import Loadable from 'components/Loadable'; | |||
| import { notifySaveSuccess } from 'utils/CommonFunction'; | |||
| const UploadFileTable = Loadable(React.lazy(() => import('./UploadFileTable'))); | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| @@ -118,6 +119,7 @@ const FormPanel = ({ formData }) => { | |||
| }, | |||
| files: attachments, | |||
| onSuccess: function () { | |||
| notifySaveSuccess() | |||
| navigate("/proof/search"); | |||
| } | |||
| }); | |||
| @@ -21,6 +21,7 @@ import { useFormik } from 'formik'; | |||
| import { useNavigate } from "react-router-dom"; | |||
| import * as DateUtils from "utils/DateUtils" | |||
| import Loadable from 'components/Loadable'; | |||
| import { notifyActionSuccess } from 'utils/CommonFunction'; | |||
| const UploadFileTable = Loadable(React.lazy(() => import('./UploadFileTable'))); | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| @@ -76,8 +77,10 @@ const FormPanel = ({ formData }) => { | |||
| files: attachments ? attachments : [], | |||
| onSuccess: function () { | |||
| if (actionValue) { | |||
| notifyActionSuccess("提交成功!") | |||
| navigate("/proof/pay/"+params.id); | |||
| } else { | |||
| notifyActionSuccess("提交成功!") | |||
| navigate("/proof/search"); | |||
| } | |||
| }, | |||
| @@ -17,6 +17,7 @@ import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' | |||
| import { useNavigate } from "react-router-dom"; | |||
| import { notifyActionSuccess } from 'utils/CommonFunction'; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| @@ -90,6 +91,7 @@ const PublicNoticeApplyForm = ({ loadedData, selections }) => { | |||
| }, | |||
| files: [attachment], | |||
| onSuccess: function () { | |||
| notifyActionSuccess('申請成功!') | |||
| navigate("/publicNotice"); | |||
| // location.reload(); | |||
| } | |||
| @@ -27,6 +27,7 @@ import CloseIcon from '@mui/icons-material/Close'; | |||
| import EditNoteIcon from '@mui/icons-material/EditNote'; | |||
| import DownloadIcon from '@mui/icons-material/Download'; | |||
| import ReplayIcon from '@mui/icons-material/Replay'; | |||
| import { notifyDownloadSuccess } from 'utils/CommonFunction'; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const ApplicationDetailCard = ( | |||
| @@ -77,6 +78,7 @@ const ApplicationDetailCard = ( | |||
| skey: fileDetail.skey, | |||
| filename: fileDetail.filename, | |||
| }); | |||
| notifyDownloadSuccess() | |||
| setUploadStatus(true) | |||
| }; | |||
| @@ -59,6 +59,7 @@ const GazetteDetailCard = ( | |||
| +" No. "+applicationDetailData.gazetteIssueDetail.issueNo); | |||
| setIssueDate(DateUtils.dateFormat(applicationDetailData.gazetteIssueDetail.issueDate, "D MMM YYYY (ddd)")); | |||
| setGazetteCode(applicationDetailData.data.groupNo) | |||
| console.log(gazetteCode) | |||
| setGroupTitle(applicationDetailData.data.groupTitle) | |||
| } | |||
| }, [applicationDetailData]); | |||
| @@ -153,6 +154,7 @@ const GazetteDetailCard = ( | |||
| { | |||
| value: issueNum, | |||
| })} | |||
| value={issueNum} | |||
| id='issueNum' | |||
| sx={{ | |||
| "& .MuiInputBase-input.Mui-disabled": { | |||
| @@ -181,6 +183,7 @@ const GazetteDetailCard = ( | |||
| { | |||
| value: gazetteCode, | |||
| })} | |||
| value={gazetteCode} | |||
| id='gazetteCode' | |||
| sx={{ | |||
| "& .MuiInputBase-input.Mui-disabled": { | |||
| @@ -212,6 +215,7 @@ const GazetteDetailCard = ( | |||
| { | |||
| value: issueDate, | |||
| })} | |||
| value={issueDate} | |||
| id='issueDate' | |||
| sx={{ | |||
| "& .MuiInputBase-input.Mui-disabled": { | |||
| @@ -240,6 +244,7 @@ const GazetteDetailCard = ( | |||
| { | |||
| value: groupTitle, | |||
| })} | |||
| value={groupTitle} | |||
| id='groupTitle' | |||
| sx={{ | |||
| "& .MuiInputBase-input.Mui-disabled": { | |||
| @@ -23,7 +23,6 @@ import * as ComboData from "utils/ComboData"; | |||
| import { useFormik, FormikProvider } from 'formik'; | |||
| import * as yup from 'yup'; | |||
| const StatusChangeDialog = (props) => { | |||
| const [content, setContent] = useState(); | |||
| const [dialogTitle, setDialogTitle] = useState("Confirm"); | |||
| @@ -35,6 +35,7 @@ import { | |||
| } from "utils/ApiPathConst"; | |||
| const StatusChangeDialog = Loadable(lazy(() => import('./StatusChangeDialog'))); | |||
| import * as DateUtils from "utils/DateUtils"; | |||
| import { notifyActionSuccess, notifySaveSuccess } from "utils/CommonFunction"; | |||
| // ==============================|| Body - DEFAULT ||============================== // | |||
| @@ -193,7 +194,9 @@ const PublicNoticeDetail_GLD = () => { | |||
| if (response.status === 204) { | |||
| setOpen(false); | |||
| handleClose(); | |||
| location.reload(); | |||
| // location.reload(); | |||
| loadApplicationDetail() | |||
| notifyActionSuccess("Gen Gazette Code Success!") | |||
| } | |||
| }) | |||
| .catch(error => { | |||
| @@ -211,7 +214,9 @@ const PublicNoticeDetail_GLD = () => { | |||
| onSuccess: function () { | |||
| setOpen(false); | |||
| handleClose(); | |||
| location.reload(); | |||
| // location.reload(); | |||
| loadApplicationDetail() | |||
| notifySaveSuccess() | |||
| } | |||
| }); | |||
| } | |||
| @@ -223,7 +228,9 @@ const PublicNoticeDetail_GLD = () => { | |||
| if (response.status === 204) { | |||
| setOpen(false); | |||
| handleClose(); | |||
| location.reload(); | |||
| // location.reload(); | |||
| loadApplicationDetail() | |||
| notifySaveSuccess() | |||
| } | |||
| }) | |||
| .catch(error => { | |||
| @@ -240,7 +247,8 @@ const PublicNoticeDetail_GLD = () => { | |||
| if (response.status === 204) { | |||
| setOpen(false); | |||
| handleClose(); | |||
| location.reload(); | |||
| loadApplicationDetail() | |||
| notifyActionSuccess("Withdrawn Success!") | |||
| } | |||
| }) | |||
| .catch(error => { | |||
| @@ -257,7 +265,9 @@ const PublicNoticeDetail_GLD = () => { | |||
| if (response.status === 204) { | |||
| setOpen(false); | |||
| handleClose(); | |||
| location.reload(); | |||
| // location.reload(); | |||
| loadApplicationDetail() | |||
| notifySaveSuccess() | |||
| } | |||
| }) | |||
| .catch(error => { | |||
| @@ -20,6 +20,8 @@ const UserAuthorityCard = Loadable(lazy(() => import('./UserAuthorityCard'))); | |||
| import { | |||
| GeneralConfirmWindow, | |||
| getDeletedRecordWithRefList, | |||
| notifyDeleteSuccess, | |||
| notifySaveSuccess, | |||
| } from "../../../utils/CommonFunction"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| @@ -71,7 +73,7 @@ const UserMaintainPage = () => { | |||
| ) | |||
| .then((response) => { | |||
| if (response.status === 204) { | |||
| // notifyDeleteSuccess(); | |||
| notifyDeleteSuccess(); | |||
| setIsWindowOpen(false); | |||
| navigate('/userSearchview'); | |||
| } | |||
| @@ -148,7 +150,7 @@ const UserMaintainPage = () => { | |||
| }, | |||
| ).then((response) => { | |||
| if (response.status === 204) { | |||
| // notifySaveSuccess(); | |||
| notifySaveSuccess(); | |||
| navigate('/userSearchview'); | |||
| } | |||
| }) | |||
| @@ -173,7 +175,7 @@ const UserMaintainPage = () => { | |||
| }, | |||
| ).then((response) => { | |||
| if (response.status === 200) { | |||
| // notifySaveSuccess(); | |||
| notifySaveSuccess(); | |||
| navigate('/userSearchview'); | |||
| } | |||
| }) | |||
| @@ -15,6 +15,7 @@ import * as ComboData from "../../../utils/ComboData"; | |||
| const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingComponent'))); | |||
| import Loadable from 'components/Loadable'; | |||
| import { lazy } from 'react'; | |||
| import { notifyActiveSuccess, notifyLockSuccess, notifySaveSuccess, notifyVerifySuccess } from 'utils/CommonFunction'; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| @@ -80,6 +81,7 @@ const UserInformationCard_Individual = ({ formData, loadDataFun }) => { | |||
| }, | |||
| }, | |||
| onSuccess: function () { | |||
| notifySaveSuccess(); | |||
| loadDataFun(); | |||
| } | |||
| }); | |||
| @@ -106,6 +108,7 @@ const UserInformationCard_Individual = ({ formData, loadDataFun }) => { | |||
| HttpUtils.get({ | |||
| url: UrlUtils.GET_IND_USER_VERIFY + "/" + formData.id, | |||
| onSuccess: function () { | |||
| notifyVerifySuccess() | |||
| loadDataFun(); | |||
| } | |||
| }); | |||
| @@ -115,6 +118,7 @@ const UserInformationCard_Individual = ({ formData, loadDataFun }) => { | |||
| HttpUtils.get({ | |||
| url: UrlUtils.GET_USER_LOCK + "/" + formData.id, | |||
| onSuccess: function () { | |||
| notifyLockSuccess() | |||
| loadDataFun(); | |||
| } | |||
| }); | |||
| @@ -124,6 +128,7 @@ const UserInformationCard_Individual = ({ formData, loadDataFun }) => { | |||
| HttpUtils.get({ | |||
| url: UrlUtils.GET_USER_UNLOCK + "/" + formData.id, | |||
| onSuccess: function () { | |||
| notifyActiveSuccess() | |||
| loadDataFun(); | |||
| } | |||
| }); | |||
| @@ -16,6 +16,7 @@ import * as yup from 'yup'; | |||
| const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingComponent'))); | |||
| import Loadable from 'components/Loadable'; | |||
| import { lazy } from 'react'; | |||
| import { notifyActiveSuccess, notifyLockSuccess, notifySaveSuccess, notifyVerifySuccess } from 'utils/CommonFunction'; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| @@ -86,6 +87,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
| }, | |||
| onSuccess: function () { | |||
| notifySaveSuccess() | |||
| loadDataFun(); | |||
| } | |||
| }); | |||
| @@ -119,6 +121,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
| HttpUtils.get({ | |||
| url: UrlUtils.GET_IND_USER_VERIFY + "/" + userData.id, | |||
| onSuccess: function () { | |||
| notifyVerifySuccess() | |||
| loadDataFun(); | |||
| } | |||
| }); | |||
| @@ -136,6 +139,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
| HttpUtils.get({ | |||
| url: UrlUtils.GET_USER_LOCK + "/" + userData.id, | |||
| onSuccess: function () { | |||
| notifyLockSuccess() | |||
| loadDataFun(); | |||
| } | |||
| }); | |||
| @@ -152,6 +156,7 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => | |||
| HttpUtils.get({ | |||
| url: UrlUtils.GET_USER_UNLOCK + "/" + userData.id, | |||
| onSuccess: function () { | |||
| notifyActiveSuccess() | |||
| loadDataFun(); | |||
| } | |||
| }); | |||
| @@ -31,9 +31,9 @@ const UserMaintainPage_Organization = () => { | |||
| loadData(); | |||
| },[]); | |||
| const reloadPage=()=>{ | |||
| window.location.reload(false); | |||
| } | |||
| // const reloadPage=()=>{ | |||
| // window.location.reload(false); | |||
| // } | |||
| const loadData = ()=>{ | |||
| setLoding(true); | |||
| @@ -107,7 +107,7 @@ const UserMaintainPage_Organization = () => { | |||
| <Grid item xs={12} md={12} lg={12}> | |||
| <UserInformationCard | |||
| userData={userData} | |||
| loadDataFun={reloadPage} | |||
| loadDataFun={loadData} | |||
| orgData={orgData} | |||
| /> | |||
| </Grid> | |||
| @@ -34,6 +34,7 @@ import { EyeOutlined, EyeInvisibleOutlined } from '@ant-design/icons'; | |||
| import axios from "axios"; | |||
| import {useDispatch} from "react-redux"; | |||
| import {handleLogin} from "auth/index"; | |||
| import { notifyActionSuccess } from 'utils/CommonFunction'; | |||
| // ============================|| FIREBASE - LOGIN ||============================ // | |||
| const AuthLogin = () => { | |||
| @@ -83,7 +84,6 @@ const AuthLogin = () => { | |||
| const data = {...userData, accessToken: response.data.accessToken, refreshToken: response.data.refreshToken} | |||
| dispatch(handleLogin(data)) | |||
| navigate('/dashboard'); | |||
| //history.push(getHomeRouteForLoggedInUser("user")) | |||
| @@ -12,8 +12,9 @@ import { | |||
| GeneralConfirmWindow, | |||
| getDeletedRecordWithRefList, | |||
| getIdList, | |||
| notifyDeleteSuccess, | |||
| // notifyDeleteSuccess, | |||
| // notifySaveSuccess | |||
| notifySaveSuccess | |||
| } from "../../utils/CommonFunction"; | |||
| import {POST_AND_UPDATE_USER_GROUP,GET_GROUP_LIST_PATH } from "../../utils/ApiPathConst"; | |||
| @@ -58,7 +59,7 @@ const UserMaintainPage = () => { | |||
| ) | |||
| .then((response) => { | |||
| if (response.status === 204) { | |||
| // notifyDeleteSuccess(); | |||
| notifyDeleteSuccess() | |||
| setIsWindowOpen(false); | |||
| navigate('/usergroupSearchview'); | |||
| } | |||
| @@ -142,8 +143,8 @@ const UserMaintainPage = () => { | |||
| ) | |||
| .then((response) => { | |||
| if (response.status === 200) { | |||
| // notifySaveSuccess(); | |||
| navigate('/usergroupSearchview'); | |||
| notifySaveSuccess() | |||
| } | |||
| }) | |||
| .catch(error => { | |||
| @@ -6,6 +6,7 @@ import DialogActions from "@mui/material/DialogActions"; | |||
| import {Button} from "@mui/material"; | |||
| import Dialog from "@mui/material/Dialog"; | |||
| import * as React from "react"; | |||
| import { toast } from "react-toastify"; | |||
| export function getDeletedRecordWithRefList(referenceList, updatedList){ | |||
| return referenceList.filter(x => !updatedList.includes(x)) ; | |||
| @@ -48,18 +49,97 @@ export function getDateString(queryDateArray) { | |||
| ) | |||
| } | |||
| // export const notifySaveSuccess = () => toast.success('Save success!', { | |||
| // position: "bottom-right", | |||
| // autoClose: 5000, | |||
| // hideProgressBar: false, | |||
| // closeOnClick: true, | |||
| // pauseOnHover: true, | |||
| // draggable: true, | |||
| // progress: undefined, | |||
| // theme: "light", | |||
| // }); | |||
| export const notifySaveSuccess = () => { | |||
| const userType = JSON.parse(localStorage.getItem("userData")).type | |||
| toast.success(userType === "GLD" ? 'Save success!' : "儲存成功!", { | |||
| position: "bottom-right", | |||
| autoClose: 5000, | |||
| hideProgressBar: false, | |||
| closeOnClick: true, | |||
| pauseOnHover: true, | |||
| draggable: true, | |||
| progress: undefined, | |||
| theme: "light", | |||
| })}; | |||
| export const notifyDeleteSuccess = () => toast.success('Delete Success!', { | |||
| export const notifyCreateSuccess = () => { | |||
| const userType = JSON.parse(localStorage.getItem("userData")).type | |||
| toast.success(userType === "GLD" ? 'Create success!' : "創建成功!", { | |||
| position: "bottom-right", | |||
| autoClose: 5000, | |||
| hideProgressBar: false, | |||
| closeOnClick: true, | |||
| pauseOnHover: true, | |||
| draggable: true, | |||
| progress: undefined, | |||
| theme: "light", | |||
| })}; | |||
| export const notifyVerifySuccess = () => { | |||
| const userType = JSON.parse(localStorage.getItem("userData")).type | |||
| toast.success(userType === "GLD" ? 'Verify success!' : "驗證成功!", { | |||
| position: "bottom-right", | |||
| autoClose: 5000, | |||
| hideProgressBar: false, | |||
| closeOnClick: true, | |||
| pauseOnHover: true, | |||
| draggable: true, | |||
| progress: undefined, | |||
| theme: "light", | |||
| })}; | |||
| export const notifyDeleteSuccess = () => { | |||
| const userType = JSON.parse(localStorage.getItem("userData")).type | |||
| toast.success(userType === "GLD" ? 'Delete success!' : "刪除成功!", { | |||
| position: "bottom-right", | |||
| autoClose: 5000, | |||
| hideProgressBar: false, | |||
| closeOnClick: true, | |||
| pauseOnHover: true, | |||
| draggable: true, | |||
| progress: undefined, | |||
| theme: "light", | |||
| })}; | |||
| export const notifyLockSuccess = () => { | |||
| toast.success('Lock success!', { | |||
| position: "bottom-right", | |||
| autoClose: 5000, | |||
| hideProgressBar: false, | |||
| closeOnClick: true, | |||
| pauseOnHover: true, | |||
| draggable: true, | |||
| progress: undefined, | |||
| theme: "light", | |||
| })}; | |||
| export const notifyActiveSuccess = () => { | |||
| toast.success('Active success!', { | |||
| position: "bottom-right", | |||
| autoClose: 5000, | |||
| hideProgressBar: false, | |||
| closeOnClick: true, | |||
| pauseOnHover: true, | |||
| draggable: true, | |||
| progress: undefined, | |||
| theme: "light", | |||
| })}; | |||
| export const notifyDownloadSuccess = () => { | |||
| const userType = JSON.parse(localStorage.getItem("userData")).type | |||
| toast.success(userType === "GLD" ? 'Download success!' : "下載成功!", { | |||
| position: "bottom-right", | |||
| autoClose: 5000, | |||
| hideProgressBar: false, | |||
| closeOnClick: true, | |||
| pauseOnHover: true, | |||
| draggable: true, | |||
| progress: undefined, | |||
| theme: "light", | |||
| })}; | |||
| export const notifyActionSuccess = (actionMsg) => { | |||
| toast.success(`${actionMsg}`, { | |||
| position: "bottom-right", | |||
| autoClose: 5000, | |||
| hideProgressBar: false, | |||
| @@ -68,7 +148,7 @@ export const notifyDeleteSuccess = () => toast.success('Delete Success!', { | |||
| draggable: true, | |||
| progress: undefined, | |||
| theme: "light", | |||
| }); | |||
| })}; | |||
| export function prettyJson(json){ | |||
| console.log(json); | |||