diff --git a/egovframe-template-simple-react-contribution/src/components/EgovHeader.jsx b/egovframe-template-simple-react-contribution/src/components/EgovHeader.jsx index ef899bb..4937059 100644 --- a/egovframe-template-simple-react-contribution/src/components/EgovHeader.jsx +++ b/egovframe-template-simple-react-contribution/src/components/EgovHeader.jsx @@ -1,4 +1,4 @@ -import React, {useState} from 'react'; +import React, {useEffect, useState} from 'react'; import { Link, NavLink, useNavigate } from 'react-router-dom'; import * as EgovNet from 'api/egovFetch'; @@ -64,6 +64,9 @@ function EgovHeader({ loginUser, onChangeLogin }) { console.log("------------------------------EgovHeader [End]"); console.groupEnd("EgovHeader"); + useEffect(() => { + setMenuDiv(false); + }, [navigate]); return ( 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) {