From 45c3bd1f2216117dee6d8e2d878371ace935e053 Mon Sep 17 00:00:00 2001 From: Alex Cheung Date: Fri, 19 Jan 2024 11:47:24 +0800 Subject: [PATCH 1/4] fix combo display in gld user maintain org user page --- .../UserInformationCard_Individual_Pub.js | 2 +- src/pages/User/DetailsPage_Individual/index.js | 4 ++++ .../UserInformationCard_Organization.js | 2 +- .../UserInformationCard_Organization_Pub.js | 2 +- src/pages/User/DetailsPage_Organization/index.js | 15 +++++++++++---- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual_Pub.js b/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual_Pub.js index 81b7a63..b36acb5 100644 --- a/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual_Pub.js +++ b/src/pages/User/DetailsPage_Individual/UserInformationCard_Individual_Pub.js @@ -161,7 +161,7 @@ const UserInformationCard_Individual_Pub = ({ formData, loadDataFun }) => { {/*end top button*/} - Individual User Details + User Details diff --git a/src/pages/User/DetailsPage_Individual/index.js b/src/pages/User/DetailsPage_Individual/index.js index d04ced3..cfd421e 100644 --- a/src/pages/User/DetailsPage_Individual/index.js +++ b/src/pages/User/DetailsPage_Individual/index.js @@ -123,7 +123,11 @@ const UserMaintainPage_Individual = () => {
+ {isGLDLoggedIn()? Maintain Individual User + : + User Profile + }
diff --git a/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization.js b/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization.js index dd31246..47bbf86 100644 --- a/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization.js +++ b/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization.js @@ -524,8 +524,8 @@ const UserInformationCard_Organization = ({ userData, loadDataFun, orgData }) => {FieldUtils.getComboField({ label: "Country:", valueName: "country", - dataList: ComboData.country, getOptionLabel: (option) => option.type? intl.formatMessage({ id: option.type }) : "", + dataList: ComboData.country, disabled: true, form: formik })} diff --git a/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization_Pub.js b/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization_Pub.js index bec5665..d2a2ab3 100644 --- a/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization_Pub.js +++ b/src/pages/User/DetailsPage_Organization/UserInformationCard_Organization_Pub.js @@ -161,7 +161,7 @@ const UserInformationCard_Organization_Pub = ({ userData, loadDataFun,}) => { {/*end top button*/}
- Organisation User Details + User Details diff --git a/src/pages/User/DetailsPage_Organization/index.js b/src/pages/User/DetailsPage_Organization/index.js index 59306ee..4126cae 100644 --- a/src/pages/User/DetailsPage_Organization/index.js +++ b/src/pages/User/DetailsPage_Organization/index.js @@ -18,6 +18,8 @@ const UserInformationPubCard = Loadable(lazy(() => import('./UserInformationCard import ForwardIcon from '@mui/icons-material/Forward'; import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' import { useNavigate } from 'react-router-dom'; +import * as ComboData from "utils/ComboData"; +import {getObjectByValue} from "utils/CommonFunction"; const BackgroundHead = { backgroundImage: `url(${titleBackgroundImg})`, @@ -124,9 +126,10 @@ const UserMaintainPage_Organization = () => { response.data["verifiedStatus"] = response.data.verifiedBy ? DateUtils.datetimeStr(response.data.verifiedDate) + ", " + response.data.verifiedByName : "Not verified"; response.data["lastLoginDate"] = response.data.lastLogin ? DateUtils.datetimeStr(response.data.lastLoginDate) : ""; - - response.data["country"] = response.data.addressBus?.country; - response.data["district"] = response.data.addressBus?.district; + // console.log(getObjectByValue(ComboData.country, "key", response.data.addressBus?.country)) + // console.log(getObjectByValue(ComboData.country, "key", response.data.addressBus?.district)) + response.data["country"] = getObjectByValue(ComboData.country, "key", response.data.addressBus?.country); + response.data["district"] = getObjectByValue(ComboData.district, "key", response.data.addressBus?.district); response.data["addressLine1"] = response.data.addressBus?.addressLine1; response.data["addressLine2"] = response.data.addressBus?.addressLine2; response.data["addressLine3"] = response.data.addressBus?.addressLine3; @@ -182,7 +185,11 @@ const UserMaintainPage_Organization = () => {
- Maintain Organisation User + {isGLDLoggedIn()? + Maintain Organisation User + : + User Profile + }
From f75a3f03b4e8c2796dc058619d1e820d1169ea29 Mon Sep 17 00:00:00 2001 From: Alex Cheung Date: Fri, 19 Jan 2024 13:58:44 +0800 Subject: [PATCH 2/4] add org setting page --- src/layout/MainLayout/Header/index.js | 8 + .../DetailPage/OrganizationPubCard.js | 425 ++++++++++++++++++ src/pages/Organization/DetailPage/index.js | 132 ++++-- .../User/DetailsPage_Organization/index.js | 14 +- src/routes/PublicUserRoutes.js | 5 + src/utils/ApiPathConst.js | 1 + 6 files changed, 537 insertions(+), 48 deletions(-) create mode 100644 src/pages/Organization/DetailPage/OrganizationPubCard.js diff --git a/src/layout/MainLayout/Header/index.js b/src/layout/MainLayout/Header/index.js index 5d33f9a..1ba5533 100644 --- a/src/layout/MainLayout/Header/index.js +++ b/src/layout/MainLayout/Header/index.js @@ -212,6 +212,14 @@ function Header(props) { +
  • + + + {/* */} + Organisation Profile + + +
  • : diff --git a/src/pages/Organization/DetailPage/OrganizationPubCard.js b/src/pages/Organization/DetailPage/OrganizationPubCard.js new file mode 100644 index 0000000..b02e724 --- /dev/null +++ b/src/pages/Organization/DetailPage/OrganizationPubCard.js @@ -0,0 +1,425 @@ +// material-ui +import { + Grid, Button, Checkbox, FormControlLabel, Typography, + Dialog, DialogTitle, DialogContent, DialogActions, +} from '@mui/material'; +// import { FormControlLabel } from '@material-ui/core'; +import MainCard from "../../../components/MainCard"; +import * as React from "react"; +import { useFormik } from 'formik'; +import * as yup from 'yup'; +import { useEffect, useState } from "react"; +import * as HttpUtils from '../../../utils/HttpUtils'; +import * as UrlUtils from "../../../utils/ApiPathConst"; +import * as FieldUtils from "../../../utils/FieldUtils"; +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'; +import {useIntl} from "react-intl"; + +// ==============================|| DASHBOARD - DEFAULT ||============================== // + + +const OrganizationPubCard = ({ userData, loadDataFun, id, setEditModeFun }) => { + const intl = useIntl(); + const [creditorConfirmPopUp, setCreditorConfirmPopUp] = React.useState(false); + const [nonCreditorConfirmPopUp, setNonCreditorConfirmPopUp] = React.useState(false); + + const [currentUserData, setCurrentUserData] = useState({}); + const [editMode, setEditMode] = useState(false); + const [createMode, setCreateMode] = useState(false); + const [onReady, setOnReady] = useState(false); + + useEffect(() => { + //if state data are ready and assign to different field + // console.log(currentApplicationDetailData) + if (Object.keys(currentUserData).length > 0) { + setOnReady(true); + } + }, [currentUserData]); + + function displayErrorMsg(errorMsg) { + return {errorMsg} + } + + const formik = useFormik({ + enableReinitialize: true, + initialValues: currentUserData, + validationSchema: yup.object().shape({ + enCompanyName: yup.string().max(255).required(displayErrorMsg(intl.formatMessage({id: 'userRequireEnglishName'}))), + chCompanyName: yup.string().max(255, displayErrorMsg(intl.formatMessage({id: 'userRequireChineseName'}))).nullable(), + addressLine1: yup.string().max(255).required(displayErrorMsg(intl.formatMessage({id: 'validateAddressLine1'}))), + addressLine2: yup.string().max(255, displayErrorMsg(intl.formatMessage({id: 'noMoreThen255Words'}))), + addressLine3: yup.string().max(255, displayErrorMsg(intl.formatMessage({id: 'noMoreThen255Words'}))), + fax_countryCode: yup.string().min(3, displayErrorMsg(intl.formatMessage({id: 'requireDialingCode'}))).nullable(), + tel_countryCode: yup.string().min(3, displayErrorMsg(intl.formatMessage({id: 'requireDialingCode'}))), + phoneNumber: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'requiredValidNumber'}))).required(displayErrorMsg(intl.formatMessage({id: 'requireContactNumber'}))), + faxNumber: yup.string().min(8, displayErrorMsg(intl.formatMessage({id: 'require8Number'}))).nullable(), + brExpiryDate: yup.string().min(8).required(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertValidityDate'}))), + brNo: yup.string().required(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInBusinessRegCertNumber'}))).test('checkBrNoFormat', displayErrorMsg(displayErrorMsg(intl.formatMessage({id: 'pleaseFillInValidBusinessRegCertNumber'}))), function (value) { + var brNo_pattern = /[0-9]{8}/ + if (value !== undefined) { + if (value.match(brNo_pattern)) { + return true + } else { + return false + } + } + }), + }), + onSubmit: vaule => { + console.log(vaule) + HttpUtils.post({ + url: UrlUtils.POST_ORG_SAVE_PATH, + params: { + id: id > 0 ? id : null, + enCompanyName: vaule.enCompanyName, + chCompanyName: vaule.chCompanyName, + brNo: vaule.brNo, + brExpiryDate: vaule.brExpiryDate, + enCompanyNameTemp: vaule.enCompanyNameTemp, + chCompanyNameTemp: vaule.chCompanyNameTemp, + brExpiryDateTemp: vaule.brExpiryDateTemp, + contactPerson: vaule.contactPerson, + contactTel: { + countryCode: vaule.tel_countryCode, + phoneNumber: vaule.phoneNumber + }, + faxNo: { + countryCode: vaule.fax_countryCode, + faxNumber: vaule.faxNumber + }, + addressTemp: { + country: vaule.country, + district: vaule.district, + addressLine1: vaule.addressLine1, + addressLine2: vaule.addressLine2, + addressLine3: vaule.addressLine3, + }, + //creditor: vaule.creditor, + }, + onSuccess: function () { + notifySaveSuccess() + loadDataFun(); + setEditMode(false); + } + }); + } + }); + + useEffect(()=>{ + setEditModeFun(editMode); + },[editMode]); + + useEffect(() => { + if (Object.keys(userData).length > 0) { + setCreateMode(id <= 0); + setEditMode(id <= 0); + setCurrentUserData(userData); + } + }, [userData]); + + // useEffect(() => { + // if (Object.keys(userData).length > 0) { + // if(userData.creditor === undefined||userData.creditor === null){ + // userData.creditor = false + // } + // setCurrentUserData(userData); + // } + // }, []); + + const onEditClick = () => { + setEditMode(true); + }; + + const markAsCreditor = () => { + setCreditorConfirmPopUp(false); + HttpUtils.get({ + url: UrlUtils.GET_ORG_MARK_AS_CREDITOR + "/" + id, + onSuccess: () => { + loadDataFun(); + } + }); + } + + const markAsNonCreditor = () => { + setNonCreditorConfirmPopUp(false); + HttpUtils.get({ + url: UrlUtils.GET_ORG_MARK_AS_NON_CREDITOR + "/" + id, + onSuccess: () => { + loadDataFun(); + } + }); + } + + return ( + + +
    + + {/*top*/} + + + + {editMode ? + <> + {createMode ? + <> + + + + : + <> + + + + + + + + } + + : + <> + + + + + + + + + + + } + + + {/*top*/} + + {!onReady ? + + : + + + + Organisation Details + + + + {FieldUtils.getTextField({ + label: FieldUtils.notNullFieldLabel("BR No.:"), + valueName: "brNo", + disabled: (!editMode && !createMode), + form: formik + })} + + + + } + label="is Creditor" + name="creditor" + onChange={() => { + formik.setFieldValue("creditor", !formik.values.creditor); + }} + disabled={true} + //disabled={!editMode && !createMode} + /> + + + + + + {FieldUtils.getTextField({ + label: FieldUtils.notNullFieldLabel("Name (Eng):"), + valueName: "enCompanyName", + disabled: (!editMode && !createMode), + form: formik + })} + + + + {FieldUtils.getTextField({ + label: "Name (Ch):", + valueName: "chCompanyName", + disabled: (!editMode && !createMode), + form: formik + })} + + + + {FieldUtils.getDateField({ + label: FieldUtils.notNullFieldLabel("Expiry Date:"), + valueName: "brExpiryDate", + disabled: (!editMode && !createMode), + form: formik + })} + + + + {FieldUtils.getTextField({ + label: FieldUtils.notNullFieldLabel("Contact Person:"), + valueName: "contactPerson", + disabled: (!editMode && !createMode), + form: formik + })} + + + + {FieldUtils.getPhoneField({ + label: FieldUtils.notNullFieldLabel("Contact Tel:"), + valueName: { + code: "tel_countryCode", + num: "phoneNumber" + }, + disabled: (!editMode && !createMode), + form: formik + })} + + + + {FieldUtils.getPhoneField({ + label: "Fax No:", + valueName: { + code: "fax_countryCode", + num: "faxNumber" + }, + disabled: (!editMode && !createMode), + form: formik + })} + + + + {FieldUtils.getComboField({ + label: FieldUtils.notNullFieldLabel("Country:"), + valueName: "country", + disabled: (!editMode && !createMode), + dataList: ComboData.country, + getOptionLabel: (option) => option.type? intl.formatMessage({ id: option.type }) : "", + form: formik + })} + + + + {FieldUtils.getComboField({ + label: FieldUtils.notNullFieldLabel("District:"), + valueName: "district", + disabled: (!editMode && !createMode), + dataList: ComboData.district, + getOptionLabel: (option) => option.type? intl.formatMessage({ id: option.type }) : "", + form: formik + })} + + + + + {FieldUtils.getAddressField({ + label: FieldUtils.notNullFieldLabel("Address:"), + valueName: ["addressLine1", "addressLine2", "addressLine3"], + disabled: (!editMode && !createMode), + form: formik + })} + + + + + + } + +
    + setCreditorConfirmPopUp(false)} > + Confirm + + Are you sure mark as Creditor? + + + + + + +
    +
    + setNonCreditorConfirmPopUp(false)} > + Confirm + + Are you sure mark as Non-Creditor? + + + + + + +
    +
    + ); +}; + +export default OrganizationPubCard; diff --git a/src/pages/Organization/DetailPage/index.js b/src/pages/Organization/DetailPage/index.js index 546155e..f2b2405 100644 --- a/src/pages/Organization/DetailPage/index.js +++ b/src/pages/Organization/DetailPage/index.js @@ -7,14 +7,21 @@ import * as DateUtils from "utils/DateUtils"; import Loadable from 'components/Loadable'; const InfoCard = Loadable(React.lazy(() => import('./OrganizationCard'))); +const InfoPubCard = Loadable(React.lazy(() => import('./OrganizationPubCard'))); const Table = Loadable(React.lazy(() => import('./CreditorHistoryTable'))); const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); import ForwardIcon from '@mui/icons-material/Forward'; import { useNavigate, useParams } from 'react-router-dom'; import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' -import {getObjectByValue} from "../../../utils/CommonFunction"; -import * as ComboData from "../../../utils/ComboData"; +import {getObjectByValue} from "utils/CommonFunction"; +import * as ComboData from "utils/ComboData"; +import { + isGLDLoggedIn, + isINDLoggedIn, + isORGLoggedIn, + isPrimaryLoggedIn +} from "utils/Utils"; const BackgroundHead = { backgroundImage: `url(${titleBackgroundImg})`, @@ -39,32 +46,63 @@ const OrganizationDetailPage = () => { React.useEffect(() => { console.log(formData); + if (isINDLoggedIn()||isORGLoggedIn()&&!isPrimaryLoggedIn()){ + navigate('/dashboard'); + }else{ + loadData(); + } loadData(); }, []); const loadData = () => { setLoding(true); - if (params.id > 0) { - HttpUtils.get({ - url: UrlUtils.GET_ORG_PATH + "/" + params.id, - onSuccess: function (response) { - response.data["country"] = getObjectByValue(ComboData.country, "key", response.data.address?.country); - response.data["district"] = getObjectByValue(ComboData.district, "key", response.data.address?.district); - response.data["addressLine1"] = response.data.addressTemp?.addressLine1; - response.data["addressLine2"] = response.data.addressTemp?.addressLine2; - response.data["addressLine3"] = response.data.addressTemp?.addressLine3; - - response.data["phoneNumber"] = response.data.contactTel?.phoneNumber; - response.data["tel_countryCode"] = response.data.contactTel?.countryCode; - - response.data["faxNumber"] = response.data.faxNo?.faxNumber; - response.data["fax_countryCode"] = response.data.faxNo?.countryCode; - - response.data["brExpiryDate"] = response.data.brExpiryDate ? DateUtils.dateStr(response.data.brExpiryDate) : ""; - setFormData(response.data) - setList(response.historyList) - } - }); + if(isGLDLoggedIn()){ + if (params.id > 0) { + HttpUtils.get({ + url: UrlUtils.GET_ORG_PATH + "/" + params.id, + onSuccess: function (response) { + response.data["country"] = getObjectByValue(ComboData.country, "key", response.data.address?.country); + response.data["district"] = getObjectByValue(ComboData.district, "key", response.data.address?.district); + response.data["addressLine1"] = response.data.addressTemp?.addressLine1; + response.data["addressLine2"] = response.data.addressTemp?.addressLine2; + response.data["addressLine3"] = response.data.addressTemp?.addressLine3; + + response.data["phoneNumber"] = response.data.contactTel?.phoneNumber; + response.data["tel_countryCode"] = response.data.contactTel?.countryCode; + + response.data["faxNumber"] = response.data.faxNo?.faxNumber; + response.data["fax_countryCode"] = response.data.faxNo?.countryCode; + + response.data["brExpiryDate"] = response.data.brExpiryDate ? DateUtils.dateStr(response.data.brExpiryDate) : ""; + setFormData(response.data) + setList(response.historyList) + } + }); + } + } + if(isPrimaryLoggedIn()){ + if (params.id > 0) { + HttpUtils.get({ + url: UrlUtils.GET_PUB_ORG_PATH, + onSuccess: function (response) { + response.data["country"] = getObjectByValue(ComboData.country, "key", response.data.address?.country); + response.data["district"] = getObjectByValue(ComboData.district, "key", response.data.address?.district); + response.data["addressLine1"] = response.data.addressTemp?.addressLine1; + response.data["addressLine2"] = response.data.addressTemp?.addressLine2; + response.data["addressLine3"] = response.data.addressTemp?.addressLine3; + + response.data["phoneNumber"] = response.data.contactTel?.phoneNumber; + response.data["tel_countryCode"] = response.data.contactTel?.countryCode; + + response.data["faxNumber"] = response.data.faxNo?.faxNumber; + response.data["fax_countryCode"] = response.data.faxNo?.countryCode; + + response.data["brExpiryDate"] = response.data.brExpiryDate ? DateUtils.dateStr(response.data.brExpiryDate) : ""; + setFormData(response.data) + setList(response.historyList) + } + }); + } } }; @@ -95,28 +133,40 @@ const OrganizationDetailPage = () => { - + {isGLDLoggedIn? + + : + + }
    - - - - - -
    + {isGLDLoggedIn()? + + + + + +
    +
    -
    -
    -
    + +
    + : null + }
    {/*col 2*/} diff --git a/src/pages/User/DetailsPage_Organization/index.js b/src/pages/User/DetailsPage_Organization/index.js index 4126cae..f0ebba8 100644 --- a/src/pages/User/DetailsPage_Organization/index.js +++ b/src/pages/User/DetailsPage_Organization/index.js @@ -99,7 +99,7 @@ const UserMaintainPage_Organization = () => { onSuccess: function (response) { // console.log(response) if (response.data.orgId != null) { - console.log("1a") + // console.log("1a") response.data["addressBus"] = response.orgDetail.data["addressTemp"]; response.data["contactTel"] = response.orgDetail.data["contactTel"]; response.data["faxNo"] = response.orgDetail.data["faxNo"]; @@ -110,14 +110,14 @@ const UserMaintainPage_Organization = () => { response.data["chCompanyName"] = response.orgDetail.data.chCompanyName; response.data["chCompanyName"] = response.orgDetail.data.chCompanyName; } else { - console.log("1b") + // console.log("1b") response.data["addressBus"] = JSON.parse(response.data["addressBus"]); response.data["contactTel"] = JSON.parse(response.data["contactTel"]); response.data["faxNo"] = JSON.parse(response.data["faxNo"]); response.data["brExpiryDate"] = response.data.brExpiryDate ? DateUtils.dateStr(response.data.brExpiryDate) : ""; } - console.log("2") - console.log(response.data) + // console.log("2") + // console.log(response.data) let createDate = DateUtils.datetimeStr(response.data.created); let modifiedBy = DateUtils.datetimeStr(response.data.modified) + ", " + response.data.modifiedBy; @@ -142,8 +142,8 @@ const UserMaintainPage_Organization = () => { //response.data["orgId"] = response.data.brExpiryDate?DateUtils.dateStr(response.data.brExpiryDate):""; - console.log("3") - console.log(response.data) + // console.log("3") + // console.log(response.data) setUserData(response.data); setOrgData(response.orgList); } @@ -153,7 +153,7 @@ const UserMaintainPage_Organization = () => { HttpUtils.get({ url: `${UrlUtils.GET_PUB_ORG_USER_PATH}`, onSuccess: function (response) { - console.log(response) + // console.log(response) response.data["contactTel"] = JSON.parse(response.data["contactTel"]); response.data["primaryUser"] = response.data.primaryUser?isPrimaryLocale:notPrimaryLocale; diff --git a/src/routes/PublicUserRoutes.js b/src/routes/PublicUserRoutes.js index 0c87a62..508991d 100644 --- a/src/routes/PublicUserRoutes.js +++ b/src/routes/PublicUserRoutes.js @@ -25,6 +25,7 @@ const PaymentDetails_Public = Loadable(lazy(() => import('pages/Payment/Details_ const DemandNote_Public = Loadable(lazy(() => import('pages/DemandNote/Search_Public'))); const UserMaintainPage_Individual = Loadable(lazy(() => import('pages/User/DetailsPage_Individual'))); const UserMaintainPage_Organization = Loadable(lazy(() => import('pages/User/DetailsPage_Organization'))); +const OrganizationDetailPage = Loadable(lazy(() => import('pages/Organization/DetailPage'))); // ==============================|| MAIN ROUTING ||============================== // @@ -115,6 +116,10 @@ const PublicDashboard = { path: '/orgUser', element: }, + { + path: '/org', + element: + }, ] }, ] diff --git a/src/utils/ApiPathConst.js b/src/utils/ApiPathConst.js index a0a8170..a6a03b8 100644 --- a/src/utils/ApiPathConst.js +++ b/src/utils/ApiPathConst.js @@ -29,6 +29,7 @@ export const GET_PUB_ORG_USER_PATH = apiPath+'/user/pubOrg'; export const POST_PUB_ORG_USER = apiPath+'/user/pubOrg'; export const GET_ORG_PATH = apiPath+'/org'; +export const GET_PUB_ORG_PATH = apiPath+'/org/pub'; export const GET_ORG_FROM_USER_PATH = apiPath+'/org/from-user'; export const POST_ORG_SAVE_PATH = apiPath+'/org/save'; export const GET_ORG_COMBO = apiPath+'/org/combo'; From ad9c7595bc59526f2327c032e1c3c7889fdb9d8b Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 19 Jan 2024 15:53:44 +0800 Subject: [PATCH 3/4] message details --- src/pages/Message/Details/index.js | 117 ++++++++++++++++++ .../ApplyForm/PublicNoticeApplyForm.js | 2 +- src/pages/dashboard/Public/Message.js | 46 ++++++- src/pages/dashboard/Public/index.js | 13 +- .../iAmSmart/DirectLoginCallback/index.js | 2 + src/routes/PublicUserRoutes.js | 44 ++++--- src/themes/palette.js | 6 + src/translations/en.json | 1 + src/translations/zh-CN.json | 1 + src/translations/zh-HK.json | 1 + src/utils/ApiPathConst.js | 4 + 11 files changed, 207 insertions(+), 30 deletions(-) create mode 100644 src/pages/Message/Details/index.js diff --git a/src/pages/Message/Details/index.js b/src/pages/Message/Details/index.js new file mode 100644 index 0000000..bbdab8f --- /dev/null +++ b/src/pages/Message/Details/index.js @@ -0,0 +1,117 @@ +// material-ui +import { + Grid, + Typography, + Stack, + Button, +} from '@mui/material'; + +import * as React from "react"; +import * as HttpUtils from "utils/HttpUtils"; +import * as UrlUtils from "utils/ApiPathConst"; +import * as DateUtils from "utils/DateUtils"; +import { useParams, useNavigate } from "react-router-dom"; + +import Loadable from 'components/Loadable'; +const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); + +import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' +import { FormattedMessage } from "react-intl"; +const BackgroundHead = { + backgroundImage: `url(${titleBackgroundImg})`, + width: '100%', + height: '100%', + backgroundSize: 'contain', + backgroundRepeat: 'no-repeat', + backgroundColor: '#0C489E', + backgroundPosition: 'right' +} + +// ==============================|| DASHBOARD - DEFAULT ||============================== // + +const Index = () => { + const params = useParams(); + const navigate = useNavigate() + + const [record, setRecord] = React.useState(); + const [onReady, setOnReady] = React.useState(false); + + React.useEffect(() => { + loadForm(); + }, []); + + React.useEffect(() => { + setOnReady(true); + }, [record]); + + + const loadForm = () => { + if (params.id > 0) { + HttpUtils.get({ + url: UrlUtils.GET_MSG_DETAILS + "/" + params.id, + onSuccess: (responseData) => { + if (!responseData?.sentDate) { + navigate("/"); + } + setRecord(responseData); + } + }); + } + } + + return ( + !onReady ? + + : + ( + + +
    + + + + + +
    +
    + {/*row 1*/} + + +
    + + + {record?.subject} + + {DateUtils.datetimeStr(record?.sentDate)} + +
    +
    + + + + +
    +
    +
    +
    + {/*row 2*/} +
    + + + ) + + + ); +}; + +export default Index; diff --git a/src/pages/PublicNotice/ApplyForm/PublicNoticeApplyForm.js b/src/pages/PublicNotice/ApplyForm/PublicNoticeApplyForm.js index 4f5f4c5..6366de6 100644 --- a/src/pages/PublicNotice/ApplyForm/PublicNoticeApplyForm.js +++ b/src/pages/PublicNotice/ApplyForm/PublicNoticeApplyForm.js @@ -139,7 +139,7 @@ const PublicNoticeApplyForm = ({ loadedData, selections }) => {
    - diff --git a/src/pages/dashboard/Public/Message.js b/src/pages/dashboard/Public/Message.js index 39f5168..f959904 100644 --- a/src/pages/dashboard/Public/Message.js +++ b/src/pages/dashboard/Public/Message.js @@ -1,15 +1,51 @@ // material-ui import { Stack, - Typography + Typography, + Button } from '@mui/material'; import MainCard from "components/MainCard"; import * as React from "react"; +import * as HttpUtils from "utils/HttpUtils"; +import * as UrlUtils from "utils/ApiPathConst"; +import * as DateUtils from "utils/DateUtils"; + +import { useNavigate } from "react-router-dom"; // ==============================|| DASHBOARD - DEFAULT ||============================== // const SearchDemandNoteForm = () => { + const navigate = useNavigate() + const [itemList, setItemList] = React.useState([]); + + React.useEffect(() => { + loadData(); + }, []); + + const loadData = () => { + + HttpUtils.get({ + url: UrlUtils.GET_MSG_DESHBOARD, + onSuccess: function (response) { + let list = [] + response.map((item) => { + list.push( + + ) + }); + + setItemList(list); + + } + }); + }; + return ( { content={false} sx={{ backgroundColor: '#fff' }} > - - - - - + + {itemList} ); + }; export default SearchDemandNoteForm; diff --git a/src/pages/dashboard/Public/index.js b/src/pages/dashboard/Public/index.js index 1dcc53d..730d993 100644 --- a/src/pages/dashboard/Public/index.js +++ b/src/pages/dashboard/Public/index.js @@ -10,16 +10,19 @@ import { } from '@mui/material'; import { isORGLoggedIn, } from "utils/Utils"; import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' -import {FormattedMessage} from "react-intl"; +import { FormattedMessage } from "react-intl"; import AdsClickRoundedIcon from '@mui/icons-material/AdsClickRounded'; import * as React from "react"; import Loadable from 'components/Loadable'; const Message = Loadable(React.lazy(() => import('./Message'))); const Notice = Loadable(React.lazy(() => import('./Notice'))); +import { useNavigate } from "react-router-dom"; + // ==============================|| DASHBOARD - DEFAULT ||============================== // const DashboardDefault = () => { + const navigate = useNavigate() const userData = JSON.parse(localStorage.getItem("userData")); const BackgroundHead = { // backgroundColor: '#0d47a1', @@ -37,8 +40,8 @@ const DashboardDefault = () => {
    {/* 我的公共啟事 */} - - {isORGLoggedIn() ?userData.fullenName:userData.fullchName}, + + {isORGLoggedIn() ? userData.fullenName : userData.fullchName},
    @@ -46,7 +49,7 @@ const DashboardDefault = () => { - + diff --git a/src/pages/iAmSmart/DirectLoginCallback/index.js b/src/pages/iAmSmart/DirectLoginCallback/index.js index 89208b8..e122bfe 100644 --- a/src/pages/iAmSmart/DirectLoginCallback/index.js +++ b/src/pages/iAmSmart/DirectLoginCallback/index.js @@ -58,6 +58,8 @@ const Index = () => { console.log(error); } }); + }else{ + window.location.assign("/iamsmart/loginFail"); } } diff --git a/src/routes/PublicUserRoutes.js b/src/routes/PublicUserRoutes.js index 508991d..9cc82a4 100644 --- a/src/routes/PublicUserRoutes.js +++ b/src/routes/PublicUserRoutes.js @@ -25,7 +25,11 @@ const PaymentDetails_Public = Loadable(lazy(() => import('pages/Payment/Details_ const DemandNote_Public = Loadable(lazy(() => import('pages/DemandNote/Search_Public'))); const UserMaintainPage_Individual = Loadable(lazy(() => import('pages/User/DetailsPage_Individual'))); const UserMaintainPage_Organization = Loadable(lazy(() => import('pages/User/DetailsPage_Organization'))); +<<<<<<< HEAD const OrganizationDetailPage = Loadable(lazy(() => import('pages/Organization/DetailPage'))); +======= +const Msg_Details = Loadable(lazy(() => import('pages/Message/Details'))); +>>>>>>> d1c9a54 (message details) // ==============================|| MAIN ROUTING ||============================== // @@ -46,80 +50,84 @@ const PublicDashboard = { }, { path: 'setting/manageUser', - element: + element: }, { path: 'publicNotice', - element: + element: }, { path: 'publicNotice/apply', - element: + element: }, { path: 'publicNotice/:id', - element: + element: }, { path: 'proof/reply/:id', - element: + element: }, { path: 'proof/search', - element: + element: }, { path: 'proof/pay/:id', - element: + element: }, { path: 'paymentPage', - element: + element: }, { path: 'paymentPage/fps', - element: + element: }, { path: 'paymentPage/card', - element: + element: }, { path: 'paymentPage/callback', - element: + element: }, { path: 'paymentPage/fps/fpscallback', - element: + element: }, { path: 'paymentPage/fps/ackpage', - element: + element: }, { path: 'paymentPage/search', - element: + element: }, { path: 'paymentPage/details/:id', - element: + element: }, { path: 'paymentPage/demandNote', - element: + element: }, { path: '/indUser', element: }, { - path: '/orgUser', - element: + path: '/orgUser', + element: }, { path: '/org', element: }, + { + path: '/msg/details/:id', + element: + }, ] }, ] diff --git a/src/themes/palette.js b/src/themes/palette.js index ea3f267..205947a 100644 --- a/src/themes/palette.js +++ b/src/themes/palette.js @@ -53,6 +53,12 @@ const Palette = (mode) => { paper: paletteColor.grey[0], default: paletteColor.grey.A50 }, + black: { + main: '#000', + light: '#000', + dark: '#000', + contrastText: '#FFF', + }, gray: { main: '#777', light: '#777', diff --git a/src/translations/en.json b/src/translations/en.json index 90f5ac2..68d8f29 100644 --- a/src/translations/en.json +++ b/src/translations/en.json @@ -341,6 +341,7 @@ "viewAllAnnouncement": "Show all announcements", "systemMessage": "System message", "viewAllSystemMessage": "Show all messages", + "msgDetails": "Message Details", "Dashboard": "Dashboard", "event": "Event" diff --git a/src/translations/zh-CN.json b/src/translations/zh-CN.json index 52aa5cd..2f97419 100644 --- a/src/translations/zh-CN.json +++ b/src/translations/zh-CN.json @@ -340,6 +340,7 @@ "viewAllAnnouncement": "显示所有公告", "systemMessage": "系统消息", "viewAllSystemMessage": "显示所有消息", + "msgDetails": "消息详情", "Dashboard": "仪表板", "event": "活动" diff --git a/src/translations/zh-HK.json b/src/translations/zh-HK.json index 7442bc4..4549731 100644 --- a/src/translations/zh-HK.json +++ b/src/translations/zh-HK.json @@ -340,6 +340,7 @@ "viewAllAnnouncement": "顯示所有公告", "systemMessage": "系統消息", "viewAllSystemMessage": "顯示所有消息", + "msgDetails": "消息詳情", "Dashboard": "儀表板", "event": "活動" diff --git a/src/utils/ApiPathConst.js b/src/utils/ApiPathConst.js index a6a03b8..af037af 100644 --- a/src/utils/ApiPathConst.js +++ b/src/utils/ApiPathConst.js @@ -38,6 +38,10 @@ export const GET_ORG_MARK_AS_CREDITOR = apiPath+'/org/mark-as-creditor'; export const GET_ORG_MARK_AS_NON_CREDITOR = apiPath+'/org/mark-as-non-creditor'; export const GET_ORG_EXPORT = apiPath+'/org/export'; +export const GET_MSG_DETAILS = apiPath+'/msg/details'; +export const GET_MSG_LIST = apiPath+'/msg/list'; +export const GET_MSG_DESHBOARD = apiPath+'/msg/list/deshboard'; + //File Up/Download From 931bfd154074af5fbba152d29c6c0fcb53da133e Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 19 Jan 2024 15:55:58 +0800 Subject: [PATCH 4/4] marge --- src/routes/PublicUserRoutes.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/routes/PublicUserRoutes.js b/src/routes/PublicUserRoutes.js index 9cc82a4..65d5937 100644 --- a/src/routes/PublicUserRoutes.js +++ b/src/routes/PublicUserRoutes.js @@ -25,11 +25,8 @@ const PaymentDetails_Public = Loadable(lazy(() => import('pages/Payment/Details_ const DemandNote_Public = Loadable(lazy(() => import('pages/DemandNote/Search_Public'))); const UserMaintainPage_Individual = Loadable(lazy(() => import('pages/User/DetailsPage_Individual'))); const UserMaintainPage_Organization = Loadable(lazy(() => import('pages/User/DetailsPage_Organization'))); -<<<<<<< HEAD const OrganizationDetailPage = Loadable(lazy(() => import('pages/Organization/DetailPage'))); -======= const Msg_Details = Loadable(lazy(() => import('pages/Message/Details'))); ->>>>>>> d1c9a54 (message details) // ==============================|| MAIN ROUTING ||============================== //