From 29fa09c31a74d0304cc09213352f2a338abfe7f7 Mon Sep 17 00:00:00 2001 From: anna Date: Fri, 26 Apr 2024 15:22:02 +0800 Subject: [PATCH] dn Auth --- src/pages/DemandNote/Search/DataGrid.js | 188 +++++++++++++----------- 1 file changed, 99 insertions(+), 89 deletions(-) diff --git a/src/pages/DemandNote/Search/DataGrid.js b/src/pages/DemandNote/Search/DataGrid.js index c55384b..83ed936 100644 --- a/src/pages/DemandNote/Search/DataGrid.js +++ b/src/pages/DemandNote/Search/DataGrid.js @@ -1,5 +1,5 @@ // material-ui -import * as React from 'react'; +import { useState, useEffect, useMemo } from 'react'; import { Grid, Typography, @@ -14,27 +14,33 @@ import * as StatusUtils from "utils/statusUtils/DnStatus"; import { useNavigate } from "react-router-dom"; import { FiDataGrid } from "components/FiDataGrid"; import { notifyDownloadSuccess } from 'utils/CommonFunction'; - -import * as UrlUtils from "utils/ApiPathConst"; +import { + DEMAND_NOTE_EXPORT, + DEMAND_NOTE_SEND, + DEMAND_NOTE_ATTACH, + DEMAND_NOTE_MARK_PAID, + DEMAND_NOTE_LIST_ALL +} from "utils/ApiPathConst"; import * as HttpUtils from "utils/HttpUtils"; -import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst"; -import {ThemeProvider} from "@emotion/react"; +import { PNSPS_BUTTON_THEME } from "themes/buttonConst"; +import { ThemeProvider } from "@emotion/react"; +import { isGrantedAny } from "auth/utils"; // ==============================|| EVENT TABLE ||============================== // export default function SearchDemandNote({ searchCriteria, applySearch }) { - const [isConfirmPopUp, setConfirmPopUp] = React.useState(false); - const [isSendPopUp, setSendPopUp] = React.useState(false); - const [isErrorPopUp, setIsErrorPopUp] = React.useState(false); - const [selectonWarning, setSelectonWarning] = React.useState(false); - const [wait, setWait] = React.useState(false); + const [isConfirmPopUp, setConfirmPopUp] = useState(false); + const [isSendPopUp, setSendPopUp] = useState(false); + const [isErrorPopUp, setIsErrorPopUp] = useState(false); + const [selectonWarning, setSelectonWarning] = useState(false); + const [wait, setWait] = useState(false); - const [rows, setRows] = React.useState([]); - const [_searchCriteria, set_searchCriteria] = React.useState(searchCriteria); - const [selectedRowItems, setSelectedRowItems] = React.useState([]); + const [rows, setRows] = useState([]); + const [_searchCriteria, set_searchCriteria] = useState(searchCriteria); + const [selectedRowItems, setSelectedRowItems] = useState([]); const navigate = useNavigate() - React.useEffect(() => { + useEffect(() => { set_searchCriteria(searchCriteria); }, [searchCriteria]); @@ -42,7 +48,7 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { navigate('/paymentPage/demandNote/details/' + params.id); }; - const findReadyToSend=()=>{ + const findReadyToSend = () => { const temp = { readySend: true }; @@ -66,7 +72,7 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { } HttpUtils.fileDownload({ method: 'post', - url: UrlUtils.DEMAND_NOTE_EXPORT, + url: DEMAND_NOTE_EXPORT, params: { dnIdList: idList }, @@ -98,7 +104,7 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { idList.push(datas[i].id); } HttpUtils.post({ - url: UrlUtils.DEMAND_NOTE_SEND, + url: DEMAND_NOTE_SEND, params: { dnIdList: idList }, @@ -121,7 +127,7 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { } let file = event.target.files[0]; HttpUtils.postWithFiles({ - url: UrlUtils.DEMAND_NOTE_ATTACH, + url: DEMAND_NOTE_ATTACH, params: { dnMap: dnMap }, @@ -148,7 +154,7 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { idList.push(datas[i].id); } HttpUtils.post({ - url: UrlUtils.DEMAND_NOTE_MARK_PAID, + url: DEMAND_NOTE_MARK_PAID, params: { dnIdList: idList }, @@ -173,9 +179,9 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { field: 'contactPerson', headerName: 'Organisation', minWidth: 300, - flex:1, + flex: 1, renderCell: (params) => { - let company = params.row.enCompanyName != null?params.row.enCompanyName: params.row.chCompanyName; + let company = params.row.enCompanyName != null ? params.row.enCompanyName : params.row.chCompanyName; company = company != null ? company : ""; /* @@ -224,7 +230,7 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { headerName: 'DN No.', width: 250, renderCell: (params) => { - return ; + return ; }, }, { @@ -235,8 +241,8 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { renderCell: (params) => { return ( - - + +
Issue:{DateUtils.dateStr(params?.row.issueDate)}
Due:{params?.value? DateUtils.dateStr(params?.value):"--"}
Sent:{params.row.sentDate ? <> {DateUtils.datetimeStr(params.row.sentDate)} - {params.row.sentBy} : <> To be sent}
Due:{params?.value ? DateUtils.dateStr(params?.value) : "--"}
Sent:{params.row.sentDate ? <> {DateUtils.datetimeStr(params.row.sentDate)} - {params.row.sentBy} : <> To be sent}
); } }, @@ -263,74 +269,78 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { return (
- - - - { - const datas = rows?.filter((row) => - selectedRowItems.includes(row.id) - ); - if (datas.length == 0) { - setSelectonWarning(true); - document.getElementById("uploadFileBtn").value = ""; - return; - } - doUploadFile(event) - }} - /> - - - - - - - - + {isGrantedAny(["MAINTAIN_DEMANDNOTE"]) ? + + + + { + const datas = rows?.filter((row) => + selectedRowItems.includes(row.id) + ); + if (datas.length == 0) { + setSelectonWarning(true); + document.getElementById("uploadFileBtn").value = ""; + return; + } + doUploadFile(event) + }} + /> + + + + + + + + - - - + + + - - + + + + + - - + : <> + } { setSelectedRowItems(newSelection); @@ -339,8 +349,8 @@ export default function SearchDemandNote({ searchCriteria, applySearch }) { customPageSize={100} getRowHeight={() => 'auto'} onRowDoubleClick={handleRowDoubleClick} - doLoad={React.useMemo(() => ({ - url: UrlUtils.DEMAND_NOTE_LIST_ALL, + doLoad={useMemo(() => ({ + url: DEMAND_NOTE_LIST_ALL, params: _searchCriteria, callback: function (responseData) { setRows(responseData?.records);