diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/board/EgovAdminBoardEdit.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/board/EgovAdminBoardEdit.jsx index 6551f96..4e6d3fc 100644 --- a/egovframe-template-simple-react-contribution/src/pages/admin/board/EgovAdminBoardEdit.jsx +++ b/egovframe-template-simple-react-contribution/src/pages/admin/board/EgovAdminBoardEdit.jsx @@ -1,11 +1,12 @@ -import React, { useState, useEffect, useRef } from 'react'; -import { Link, useNavigate, useLocation } from 'react-router-dom'; +import React, {useState, useEffect, useRef} from 'react'; +import {Link, useNavigate, useLocation, useParams} from 'react-router-dom'; +import Modal from "react-bootstrap/Modal"; import * as EgovNet from 'api/egovFetch'; import URL from 'constants/url'; import CODE from 'constants/code'; -import { default as EgovLeftNav } from 'components/leftmenu/EgovLeftNavAdmin'; +import {default as EgovLeftNav} from 'components/leftmenu/EgovLeftNavAdmin'; import EgovRadioButtonGroup from 'components/EgovRadioButtonGroup'; @@ -16,64 +17,44 @@ function EgovAdminBoardEdit(props) { const navigate = useNavigate(); const location = useLocation(); - const checkRef = useRef([]); - + const checkRef = useRef([]); + console.log("EgovAdminBoardEdit [location] : ", location); - const replyPosblAtRadioGroup = [{ value: "Y", label: "가능" }, { value: "N", label: "불가능" }]; - const fileAtchPosblAtRadioGroup = [{ value: "Y", label: "가능" }, { value: "N", label: "불가능" }]; - const bbsTyCodeOptions = [{ value: "", label: "선택" }, { value: "BBST01", label: "일반게시판" }, { value: "BBST03", label: "공지게시판" }]; - const bbsAttrbCodeOptions = [{ value: "", label: "선택" }, { value: "BBSA02", label: "갤러리" }, { value: "BBSA03", label: "일반게시판" }]; - const posblAtchFileNumberOptions = [{ value: 0, label: "선택하세요" }, { value: 1, label: "1개" }, { value: 2, label: "2개" }, { value: 3, label: "3개" }]; - const bbsId = location.state?.bbsId || ""; + const replyPosblAtRadioGroup = [{value: "Y", label: "가능"}, {value: "N", label: "불가능"}]; + const fileAtchPosblAtRadioGroup = [{value: "Y", label: "가능"}, {value: "N", label: "불가능"}]; + const bbsTyCodeOptions = [{value: "", label: "선택"}, {value: "BBST01", label: "일반게시판"}, {value: "BBST03", label: "공지게시판"}]; + const bbsAttrbCodeOptions = [{value: "", label: "선택"}, {value: "BBSA02", label: "갤러리"}, {value: "BBSA03", label: "일반게시판"}]; + const posblAtchFileNumberOptions = [{value: 0, label: "선택하세요"}, {value: 1, label: "1개"}, {value: 2, label: "2개"}, {value: 3, label: "3개"}]; - const [modeInfo, setModeInfo] = useState({ mode: props.mode }); + let item = null; + item = props.props; + console.log("@@@ item : " + JSON.stringify(item)); + + + + const [modeInfo, setModeInfo] = useState(item != null ? {mode: props.props.mode} : {mode: CODE.MODE_CREATE}); const [boardDetail, setBoardDetail] = useState({}); + console.log("@@@ mode : " + modeInfo.mode); const initMode = () => { - switch (props.mode) { - case CODE.MODE_CREATE: - setModeInfo({ - ...modeInfo, - modeTitle: "등록", - editURL: '/cop/bbs/insertBBSMasterInfAPI.do' - }); - break; - - case CODE.MODE_MODIFY: - setModeInfo({ - ...modeInfo, - modeTitle: "수정", - editURL: `/cop/bbs/updateBBSMasterInfAPI/${bbsId}.do` - }); - break; - default: - navigate({pathname: URL.ERROR}, {state: {msg : ""}}); - } retrieveDetail(); } const retrieveDetail = () => { if (modeInfo.mode === CODE.MODE_CREATE) {// 조회/등록이면 조회 안함 - setBoardDetail({ - tmplatId: "TMPLAT_BOARD_DEFAULT", //Template 고정 - replyPosblAt: "Y", //답장가능여부 초기값 - fileAtchPosblAt: "Y" //파일첨부가능여부 초기값 - }); return; } - const retrieveDetailURL = '/cop/bbs/selectBBSMasterInfAPI.do'; - + + const retrieveDetailURL = '/admin/boards/board'; + const requestOptions = { - method: "POST", + method: "GET", headers: { 'Content-type': 'application/json', - - }, - body: JSON.stringify({ - bbsId: bbsId - }) + + } } EgovNet.requestFetch(retrieveDetailURL, @@ -81,18 +62,18 @@ function EgovAdminBoardEdit(props) { function (resp) { // 수정모드일 경우 조회값 세팅 if (modeInfo.mode === CODE.MODE_MODIFY) { - setBoardDetail(resp.result.boardMasterVO); + setBoardDetail(item); } } ); } - const formValidator = (formData) => { - if (formData.get('bbsNm') === null || formData.get('bbsNm') === "") { + const formValidator = (formData) => { + if (formData.get('bbsTitle') === null || formData.get('bbsTitle') === "") { alert("게시판명은 필수 값입니다."); return false; } - if (formData.get('bbsIntrcn') === null || formData.get('bbsIntrcn') === "") { + if (formData.get('bbsDesc') === null || formData.get('bbsDesc') === "") { alert("게시판 소개는 필수 값입니다."); return false; } @@ -112,15 +93,15 @@ function EgovAdminBoardEdit(props) { }; const formObjValidator = (checkRef) => { - if(checkRef.current[0].value === ""){ + if (checkRef.current[0].value === "") { alert("게시판명은 필수 값입니다."); return false; } - if(checkRef.current[1].value === ""){ + if (checkRef.current[1].value === "") { alert("게시판 소개는 필수 값입니다."); return false; } - if(checkRef.current[2].value === "0"){ + if (checkRef.current[2].value === "0") { alert("첨부파일 가능 숫자는 필수 값입니다."); return false; } @@ -131,38 +112,37 @@ function EgovAdminBoardEdit(props) { let modeStr = modeInfo.mode === CODE.MODE_CREATE ? "POST" : "PUT"; - let requestOptions ={}; + let requestOptions = {}; if (modeStr === "POST") { const formData = new FormData(); - for (let key in boardDetail) { - formData.append(key, boardDetail[key]); - //console.log("boardDetail [%s] ", key, boardDetail[key]); + for (let key in boardDetail) { + formData.append(key, boardDetail[key]); + //console.log("boardDetail [%s] ", key, boardDetail[key]); + } + + if (formValidator(formData)) { + + requestOptions = { + method: modeStr, + headers: {}, + body: formData } - if (formValidator(formData)) { - - requestOptions = { - method: modeStr, - headers: { - - }, - body: formData - } - - EgovNet.requestFetch(modeInfo.editURL, - requestOptions, - (resp) => { - if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) { - navigate({ pathname: URL.ADMIN_BOARD }); - } else { - navigate({pathname: URL.ERROR}, {state: {msg : resp.resultMessage}}); - } + EgovNet.requestFetch(modeInfo.editURL, + requestOptions, + (resp) => { + if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) { + navigate({pathname: URL.ADMIN_BOARD}); + } else { + navigate({pathname: URL.ERROR}, {state: {msg: resp.resultMessage}}); } - ); - }; + } + ); + } + ; } else { if (formObjValidator(checkRef)) { @@ -171,7 +151,7 @@ function EgovAdminBoardEdit(props) { method: modeStr, headers: { 'Content-type': 'application/json', - + }, body: JSON.stringify({...boardDetail}) } @@ -180,24 +160,24 @@ function EgovAdminBoardEdit(props) { requestOptions, (resp) => { if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) { - navigate({ pathname: URL.ADMIN_BOARD }); + navigate({pathname: URL.ADMIN_BOARD}); } else { - navigate({pathname: URL.ERROR}, {state: {msg : resp.resultMessage}}); + navigate({pathname: URL.ERROR}, {state: {msg: resp.resultMessage}}); } } ); - } + } } }; const deleteBoardArticle = (bbsId) => { const deleteBoardURL = `/cop/bbs/deleteBBSMasterInfAPI/${bbsId}.do`; - + const requestOptions = { method: "PUT", headers: { 'Content-type': 'application/json', - + }, body: JSON.stringify({ bbsId: bbsId @@ -210,7 +190,7 @@ function EgovAdminBoardEdit(props) { console.log("====>>> board delete= ", resp); if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) { alert("게시글이 삭제되었습니다.") - navigate(URL.ADMIN_BOARD, { replace: true }); + navigate(URL.ADMIN_BOARD, {replace: true}); } else { alert("ERR : " + resp.resultMessage); } @@ -225,206 +205,76 @@ function EgovAdminBoardEdit(props) { useEffect(() => { initMode(); - // eslint-disable-next-line react-hooks/exhaustive-deps + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); console.log("------------------------------EgovAdminBoardEdit [End]"); console.groupEnd("EgovAdminBoardEdit"); return ( -