From 8ee3517f6be4695e12a5419d206ec947febf6f18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9C=A0=EB=AF=BC=ED=98=95?= Date: Fri, 8 Mar 2024 17:56:00 +0900 Subject: [PATCH 1/3] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=EB=AC=BC=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EB=93=B1=EB=A1=9D,=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pages/admin/board/AdminPostMgtEdit.jsx | 104 ++++++++++++++---- .../pages/admin/board/AdminPostMgtList.jsx | 20 ++-- .../pages/admin/board/EgovAdminBoardEdit.jsx | 6 +- .../admin/boards/AdminBoardsController.java | 85 +++++++++++++- .../admin/boards/entity/TnBbsContents.java | 21 ++-- .../repository/TnBbsContentsRepository.java | 10 ++ .../boards/repository/TnBbsRepository.java | 2 - .../boards/service/AdminBoardsService.java | 45 +++++++- 8 files changed, 243 insertions(+), 50 deletions(-) diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtEdit.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtEdit.jsx index 0335671..05ae684 100644 --- a/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtEdit.jsx +++ b/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtEdit.jsx @@ -1,4 +1,4 @@ -import React, {useState, useEffect, useRef} from 'react'; +import React, {useState, useEffect, useRef, useCallback} from 'react'; import {Link, useNavigate, useLocation, useParams} from 'react-router-dom'; import Modal from "react-bootstrap/Modal"; @@ -9,6 +9,7 @@ import CODE from 'constants/code'; import {default as EgovLeftNav} from 'components/leftmenu/EgovLeftNavAdmin'; import EgovRadioButtonGroup from 'components/EgovRadioButtonGroup'; import {Form} from "react-bootstrap"; +import RichTextEditor from "../../../components/editor/RichTextEditor"; function AdminPostMgtEdit({props, reloadFunction}) { @@ -30,7 +31,33 @@ function AdminPostMgtEdit({props, reloadFunction}) { const [boardDetail, setBoardDetail] = useState({}); console.log("@@@ mode : " + modeInfo.mode); + const [categoryList, setCategoryList] = useState([]); + + const retrieveList = useCallback(() => { + const retrieveListURL = '/admin/boards/get-category-list'; + + const requestOptions = { + method: "GET", + headers: { + 'Content-type': 'application/json', + }, + body: JSON.stringify() + } + + EgovNet.requestFetch(retrieveListURL, + requestOptions, + (resp) => { + setCategoryList(resp.result.categoryList); + console.log("@@@ categoryList : " + JSON.stringify(resp.result.categoryList)); + }, + function (resp) { + console.log("err response : ", resp); + } + ); + },[]); + useEffect(() => { + retrieveList(); initMode(); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); @@ -41,22 +68,24 @@ function AdminPostMgtEdit({props, reloadFunction}) { } } - function editPartnerSite(e) { + function editPost(e) { e.preventDefault(); e.stopPropagation(); const form = e.target; const info = { - siteTitle: form.siteTitle.value, - siteUrl: form.siteUrl.value, + fixedYn: defaultFixedYn, + secretYn: defaultSecretYn, + bbsId: form.bbsId.value, + bbsSeq: selectedBbsSeq, + bbsContTitle: form.bbsContTitle.value, fileGrpId: form.fileGrpId.value, - siteOrder: form.siteOrder.value, - useYn: form.useYn.value + bbsContents: text } if (modeInfo.mode === CODE.MODE_MODIFY) { - info.siteSeq = props.siteSeq; + info.bbsContSeq = props.bbsContSeq; } EgovNet.requestFetch( - '/admin/config/partner-site-mgt', + '/admin/boards/post-mgt', { method: "PUT", headers: { @@ -77,16 +106,16 @@ function AdminPostMgtEdit({props, reloadFunction}) { ) } - function deletePartnerSite(partnerSite){ + function deletePost(post){ if(window.confirm("삭제하시겠습니까?")) { EgovNet.requestFetch( - '/admin/config/partner-site-mgt', + '/admin/boards/post-mgt', { method: "DELETE", headers: { 'Content-type': 'application/json' }, - body: JSON.stringify(partnerSite) + body: JSON.stringify(post) }, (resp) => { if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) { @@ -106,9 +135,25 @@ function AdminPostMgtEdit({props, reloadFunction}) { console.groupEnd("AdminPostMgtEdit"); const [defaultFixedYn, setDefaultFixedYn] = useState(props?.fixedYn || "N"); + const [defaultSecretYn, setDefaultSecretYn] = useState(props?.secretYn || "N"); + const [text, setText] = useState(props?.bbsContents); + const [selectedBbsSeq, setSelectedBbsSeq] = useState(null); + + const handleSelectChange = (e) => { + const selectedBbsId = e.target.value; + const selectedOption = categoryList.find((item) => item.bbsId === selectedBbsId); + setSelectedBbsSeq(selectedOption.bbsSeq); + } return ( <> + {/* */} @@ -119,13 +164,13 @@ function AdminPostMgtEdit({props, reloadFunction}) {
-
{editPartnerSite(e)}} noValidate> + {editPost(e)}} noValidate>
필수
setDefaultFixedYn(e.target.checked ? 'Y' : 'N')} @@ -135,29 +180,44 @@ function AdminPostMgtEdit({props, reloadFunction}) {
필수
- + setDefaultSecretYn(e.target.checked ? 'Y' : 'N')} + /> +
+
+
+
필수
+
+ + + {categoryList.map((item) => ( + + ))} +
필수
- +
필수
- +
필수
- +
@@ -167,7 +227,7 @@ function AdminPostMgtEdit({props, reloadFunction}) { {modeInfo.mode === CODE.MODE_MODIFY && - + }
diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtList.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtList.jsx index 4f65a0d..53ad99b 100644 --- a/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtList.jsx +++ b/egovframe-template-simple-react-contribution/src/pages/admin/board/AdminPostMgtList.jsx @@ -12,6 +12,7 @@ import CODE from "../../../constants/code"; import AboutSiteModal from "../config/aboutSiteMgt/AboutSiteModal"; import AdminPostMgtEdit from "./AdminPostMgtEdit"; import Modal from "react-bootstrap/Modal"; +import {format} from "date-fns"; function AdminPostMgtList(props) { console.group("EgovAdminPostList"); @@ -36,6 +37,7 @@ function AdminPostMgtList(props) { const handleShow = () => setShow(true); const retrieveList = useCallback(() => { + handleClose(); console.groupCollapsed("EgovAdminPostList.retrieveList()"); const retrieveListURL = '/admin/boards/post-list'; @@ -60,15 +62,18 @@ function AdminPostMgtList(props) { // 리스트 항목 구성 resp.result.postList.forEach(function (item, index) { if (index === 0) mutListTag = []; // 목록 초기화 + const finalModifiedDate = item.lastChgDt ? item.lastChgDt : item.frstCrtDt; + const formattedDate = finalModifiedDate ? format(finalModifiedDate, "yyyy-MM-dd HH:mm") : ""; mutListTag.push(
-
{item.bbsContSeq}
-
{item.bbsSeq}
+
{item.bbsContTitle}
-
{item.bbsContents}
+
{item.frstCrtId}
+
{formattedDate}
{item.bbsReadCnt}
-
{item.bbsContLevel}
+
{item.fileGrpId}
+
); }); @@ -131,7 +136,7 @@ function AdminPostMgtList(props) {