From 14612a0f10e345037331e2bb1a2cec8b81b9f9f9 Mon Sep 17 00:00:00 2001 From: Jason Chuang Date: Wed, 8 Jul 2026 01:08:39 +0800 Subject: [PATCH] published loading --- src/pages/PublicNotice/Search_GLD/DataGrid.js | 45 ++++++++++++++++--- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/src/pages/PublicNotice/Search_GLD/DataGrid.js b/src/pages/PublicNotice/Search_GLD/DataGrid.js index 5d9ce4e..214f7de 100644 --- a/src/pages/PublicNotice/Search_GLD/DataGrid.js +++ b/src/pages/PublicNotice/Search_GLD/DataGrid.js @@ -8,6 +8,7 @@ import { Stack, Dialog, DialogTitle, DialogContent, DialogActions, } from '@mui/material'; +import LoadingButton from '@mui/lab/LoadingButton'; import { GET_PUBLIC_NOTICE_LIST, SET_PUBLIC_NOTICE_STATUS_PUBLISH_BULK } from "utils/ApiPathConst"; import * as HttpUtils from "utils/HttpUtils"; import * as DateUtils from "utils/DateUtils"; @@ -29,6 +30,7 @@ export default function SearchPublicNoticeTable({ searchCriteria, applyGridOnRea const [selectedRowItems, setSelectedRowItems] = React.useState([]); const [isConfirmPopUp, setIsConfirmPopUp] = React.useState(false); const [isWarningPopUp, setIsWarningPopUp] = React.useState(false); + const [publishLoading, setPublishLoading] = React.useState(false); const [reload, setReload] = React.useState(new Date()); @@ -39,6 +41,12 @@ export default function SearchPublicNoticeTable({ searchCriteria, applyGridOnRea set_searchCriteria(searchCriteria); }, [searchCriteria]); + React.useEffect(() => { + if (!isConfirmPopUp) { + setPublishLoading(false); + } + }, [isConfirmPopUp]); + function genIssueNo(params) { const issueNo = params.row.issueYear + " Vol. " + FormatUtils.zeroPad(params.row.issueVolume, 3) + ", No. " + FormatUtils.zeroPad(params.row.issueNo, 2) + ", " + DateUtils.dateFormat(params.row.issueDate, "D MMM YYYY (ddd)") @@ -158,26 +166,36 @@ export default function SearchPublicNoticeTable({ searchCriteria, applyGridOnRea } const doPublish = () => { - setIsConfirmPopUp(false); + if (publishLoading) return; + let appIdList = []; const datas = rows?.filter((row) => selectedRowItems.includes(row.id) ); - // console.log(datas) for (var i = 0; i < datas?.length; i++) { appIdList.push(datas[i].id); } if (appIdList.length < 1) { + setIsConfirmPopUp(false); setIsWarningPopUp(true); } else { + setPublishLoading(true); HttpUtils.post({ url: SET_PUBLIC_NOTICE_STATUS_PUBLISH_BULK, params: { ids: appIdList }, onSuccess: () => { + setPublishLoading(false); + setIsConfirmPopUp(false); setReload(new Date()); notifyActionSuccess("Action Success!") + }, + onFail: () => { + setPublishLoading(false); + }, + onError: () => { + setPublishLoading(false); } }); } @@ -190,6 +208,7 @@ export default function SearchPublicNoticeTable({ searchCriteria, applyGridOnRea - + +