From b922b8a02ca228ec492764e6feea6f15eda54f98 Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 29 Dec 2023 16:34:00 +0800 Subject: [PATCH] Creditor --- .../DemandNote/Search_Public/DataGrid.js | 2 +- .../DetailPage/CreditorHistoryTable.js | 53 ++++++++++++ .../DetailPage/OrganizationCard.js | 85 ++++++++++++++++++- src/pages/Organization/DetailPage/index.js | 40 ++++++--- .../SearchPage/OrganizationSearchForm.js | 39 ++++++--- .../SearchPage/OrganizationTable.js | 11 ++- src/utils/ApiPathConst.js | 3 + 7 files changed, 201 insertions(+), 32 deletions(-) create mode 100644 src/pages/Organization/DetailPage/CreditorHistoryTable.js diff --git a/src/pages/DemandNote/Search_Public/DataGrid.js b/src/pages/DemandNote/Search_Public/DataGrid.js index 2a3f080..76dd4f5 100644 --- a/src/pages/DemandNote/Search_Public/DataGrid.js +++ b/src/pages/DemandNote/Search_Public/DataGrid.js @@ -51,7 +51,7 @@ export default function SearchDemandNote({ recordList }) { headerName: '狀態', width: 175, renderCell: (params) => { - return [StatusUtils.getStatus_Eng(params)] + return [StatusUtils.getStatus_Cht(params)] }, }, { diff --git a/src/pages/Organization/DetailPage/CreditorHistoryTable.js b/src/pages/Organization/DetailPage/CreditorHistoryTable.js new file mode 100644 index 0000000..ae2b301 --- /dev/null +++ b/src/pages/Organization/DetailPage/CreditorHistoryTable.js @@ -0,0 +1,53 @@ +// material-ui +import * as React from 'react'; +import { FiDataGrid } from "components/FiDataGrid"; +import { useEffect } from "react"; +import * as DateUtils from "utils/DateUtils"; +// ==============================|| EVENT TABLE ||============================== // + +export default function CreditorHistoryTable({ recordList }) { + const [rows, setRows] = React.useState(recordList); + + useEffect(() => { + setRows(recordList); + }, [recordList]); + + const columns = [ + { + id: 'actionType', + field: 'actionType', + headerName: 'Action', + flex: 2 + }, + { + id: 'modified', + field: 'modified', + headerName: 'Datetime', + flex: 1, + renderCell: (params) => { + return DateUtils.datetimeStr(params.value); + } + }, + { + id: 'modifiedByName', + field: 'modifiedByName', + headerName: 'Modified By', + width: 200, + }, + + ]; + + return ( +
+ +
+ ); +} diff --git a/src/pages/Organization/DetailPage/OrganizationCard.js b/src/pages/Organization/DetailPage/OrganizationCard.js index 15527aa..1b9c582 100644 --- a/src/pages/Organization/DetailPage/OrganizationCard.js +++ b/src/pages/Organization/DetailPage/OrganizationCard.js @@ -1,6 +1,7 @@ // material-ui import { - Grid, Button, Checkbox, FormControlLabel, Typography + Grid, Button, Checkbox, FormControlLabel, Typography, + Dialog, DialogTitle, DialogContent, DialogActions, } from '@mui/material'; // import { FormControlLabel } from '@material-ui/core'; import MainCard from "../../../components/MainCard"; @@ -22,6 +23,9 @@ import { notifySaveSuccess } from 'utils/CommonFunction'; const OrganizationCard = ({ userData, loadDataFun, id }) => { + 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); @@ -93,7 +97,7 @@ const OrganizationCard = ({ userData, loadDataFun, id }) => { addressLine2: vaule.addressLine2, addressLine3: vaule.addressLine3, }, - creditor: vaule.creditor, + //creditor: vaule.creditor, }, onSuccess: function () { notifySaveSuccess() @@ -125,6 +129,26 @@ const OrganizationCard = ({ userData, loadDataFun, id }) => { 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 ( { Edit + + + + + + } @@ -212,7 +264,7 @@ const OrganizationCard = ({ userData, loadDataFun, id }) => { : - + Organisation Details @@ -233,7 +285,8 @@ const OrganizationCard = ({ userData, loadDataFun, id }) => { onChange={() => { formik.setFieldValue("creditor", !formik.values.creditor); }} - disabled={!editMode && !createMode} + disabled={true} + //disabled={!editMode && !createMode} /> @@ -334,6 +387,30 @@ const OrganizationCard = ({ userData, loadDataFun, id }) => { } +
+ setCreditorConfirmPopUp(false)} > + Confirm + + Are you sure mark as Creditor? + + + + + + +
+
+ setNonCreditorConfirmPopUp(false)} > + Confirm + + Are you sure mark as Non-Creditor? + + + + + + +
); }; diff --git a/src/pages/Organization/DetailPage/index.js b/src/pages/Organization/DetailPage/index.js index ad864a9..849b6a8 100644 --- a/src/pages/Organization/DetailPage/index.js +++ b/src/pages/Organization/DetailPage/index.js @@ -1,18 +1,17 @@ // material-ui import { Grid, Typography, Stack, Box, Button } from '@mui/material'; -import { useEffect, useState } from "react"; import * as React from "react"; -import * as HttpUtils from "../../../utils/HttpUtils"; -import { useParams } from "react-router-dom"; -import * as UrlUtils from "../../../utils/ApiPathConst"; -import * as DateUtils from "../../../utils/DateUtils"; +import * as HttpUtils from "utils/HttpUtils"; +import * as UrlUtils from "utils/ApiPathConst"; +import * as DateUtils from "utils/DateUtils"; import Loadable from 'components/Loadable'; -import { lazy } from 'react'; -const InfoCard = Loadable(lazy(() => import('./OrganizationCard'))); -const LoadingComponent = Loadable(lazy(() => import('../../extra-pages/LoadingComponent'))); +const InfoCard = Loadable(React.lazy(() => import('./OrganizationCard'))); +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 } from 'react-router-dom'; +import { useNavigate, useParams } from 'react-router-dom'; import titleBackgroundImg from 'assets/images/dashboard/gazette-bar.png' const BackgroundHead = { @@ -30,11 +29,12 @@ const BackgroundHead = { const OrganizationDetailPage = () => { const params = useParams(); - const [formData, setFormData] = useState({}) - const [isLoading, setLoding] = useState(true); + const [formData, setFormData] = React.useState({}) + const [list, setList] = React.useState([]) + const [isLoading, setLoding] = React.useState(true); const navigate = useNavigate(); - useEffect(() => { + React.useEffect(() => { console.log(formData); loadData(); }, []); @@ -59,13 +59,14 @@ const OrganizationDetailPage = () => { response.data["brExpiryDate"] = response.data.brExpiryDate ? DateUtils.dateStr(response.data.brExpiryDate) : ""; setFormData(response.data) + setList(response.historyList) } }); } }; - useEffect(() => { + React.useEffect(() => { setLoding(false); }, [formData]); @@ -99,6 +100,19 @@ const OrganizationDetailPage = () => {
+ + + + + +
+
+
+
+
{/*col 2*/} diff --git a/src/pages/Organization/SearchPage/OrganizationSearchForm.js b/src/pages/Organization/SearchPage/OrganizationSearchForm.js index 3f03328..5c1f317 100644 --- a/src/pages/Organization/SearchPage/OrganizationSearchForm.js +++ b/src/pages/Organization/SearchPage/OrganizationSearchForm.js @@ -3,17 +3,18 @@ import { Button, CardContent, Grid, TextField, - Typography + Typography, + Checkbox, FormControlLabel, } from '@mui/material'; import MainCard from "../../../components/MainCard"; -import {useForm} from "react-hook-form"; +import { useForm } from "react-hook-form"; -import { useState} from "react"; +import { useState } from "react"; import * as React from "react"; // ==============================|| DASHBOARD - DEFAULT ||============================== // -const OrganizationSearchForm = ({applySearch}) => { +const OrganizationSearchForm = ({ applySearch }) => { const [type, setType] = useState([]); @@ -22,7 +23,7 @@ const OrganizationSearchForm = ({applySearch}) => { let typeArray = []; - for(let i =0; i < type.length; i++){ + for (let i = 0; i < type.length; i++) { typeArray.push(type[i].label); } @@ -30,19 +31,20 @@ const OrganizationSearchForm = ({applySearch}) => { brNo: data.brNo, enCompanyName: data.enCompanyName, chCompanyName: data.chCompanyName, + searchCreditor: data.searchCreditor }; applySearch(temp); }; - function resetForm(){ + function resetForm() { setType([]); reset(); } return ( + border={false} + content={false}>
{/*row 1*/} @@ -54,7 +56,7 @@ const OrganizationSearchForm = ({applySearch}) => { {/*row 2*/} - + { /> - + { /> - + { /> + + } + label="Search Creditor Only" + id=" " + /> + + {/*last row*/} - + - + + +
diff --git a/src/pages/Organization/SearchPage/OrganizationTable.js b/src/pages/Organization/SearchPage/OrganizationTable.js index 4dd7420..73de8a0 100644 --- a/src/pages/Organization/SearchPage/OrganizationTable.js +++ b/src/pages/Organization/SearchPage/OrganizationTable.js @@ -76,12 +76,21 @@ export default function OrganizationTable({ recordList }) { { id: 'brExpiryDate', field: 'brExpiryDate', - headerName: 'Expiry Date', + headerName: 'BR Expiry Date', flex: 1, valueGetter: (params) => { return DateUtils.dateStr(params?.value); } }, + { + id: 'creditor', + field: 'creditor', + headerName: 'Creditor', + width: 100, + valueGetter: (params) => { + return params?.value?"Yes":""; + } + }, ]; function handleRowDoubleClick(params) { diff --git a/src/utils/ApiPathConst.js b/src/utils/ApiPathConst.js index 4f9fd6e..5e4c319 100644 --- a/src/utils/ApiPathConst.js +++ b/src/utils/ApiPathConst.js @@ -26,6 +26,9 @@ export const GET_ORG_PATH = apiPath+'/org'; 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'; +export const GET_ORG_CHECK_CREDITOR = apiPath+'/org/check-creditor'; +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';