diff --git a/egovframe-template-simple-react-contribution/src/constants/url.js b/egovframe-template-simple-react-contribution/src/constants/url.js index 6eafc18..19a171f 100644 --- a/egovframe-template-simple-react-contribution/src/constants/url.js +++ b/egovframe-template-simple-react-contribution/src/constants/url.js @@ -106,6 +106,9 @@ const URL = { // 관리자 - 위원회 관리 ADMIN__COMMITTEE__PROGRESS_STATUS : "/admin/committee/progress-status", // 위원회 관리/진행현황 관리 ADMIN__COMMITTEE__SCHEDULES : "/admin/committee/schedules", // 위원회 관리/위원회 일정 관리 + ADMIN__COMMITTEE__SCHEDULES__DETAIL : "/admin/committee/schedules/detail", // 위원회 관리/위원회 일정 관리/일정관리상세 + ADMIN__COMMITTEE__SCHEDULES__CREATE : "/admin/committee/schedules/create", // 위원회 관리/위원회 일정 관리/일정관리생성 + ADMIN__COMMITTEE__SCHEDULES__MODIFY : "/admin/committee/schedules/modify", // 위원회 관리/위원회 일정 관리/일정관리수정 // 관리자 - 로그 관리 ADMIN__LOGS__MENU_ACCESS_INFO : "/admin/logs/menu-access-info", // 위원회 관리/메뉴별 접속현황 diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/committee/Schedules.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/committee/Schedules.jsx index 5796c83..2c95958 100644 --- a/egovframe-template-simple-react-contribution/src/pages/admin/committee/Schedules.jsx +++ b/egovframe-template-simple-react-contribution/src/pages/admin/committee/Schedules.jsx @@ -153,7 +153,7 @@ function Schedules(props) { if (scheduleList.length > 0 || sDate === "01") {//일정 있는 경우 return ( - {day}
+ {day}
{
오후 03:00 [P] 해양경찰청
@@ -166,7 +166,7 @@ function Schedules(props) { } else {//일정 없는 경우 return ( - {day}
+ {day}
); } } else if (day === 0) {// 이전달/다음달 구현 diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/committee/Schedules/Detail.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/committee/Schedules/Detail.jsx new file mode 100644 index 0000000..530cde9 --- /dev/null +++ b/egovframe-template-simple-react-contribution/src/pages/admin/committee/Schedules/Detail.jsx @@ -0,0 +1,202 @@ +import React, { useState, useEffect } from 'react'; +import { Link, useLocation, useNavigate } from 'react-router-dom'; + +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 EgovAttachFile from 'components/EgovAttachFile'; + +function SchedulesDetail(props) { + console.group("EgovAdminScheduleDetail"); + console.log("[Start] EgovAdminScheduleDetail ------------------------------"); + console.log("EgovAdminScheduleDetail [props] : ", props); + + const navigate = useNavigate(); + const location = useLocation(); + console.log("EgovAdminScheduleDetail [location] : ", location); + + const [scheduleDetail, setScheduleDetail] = useState({}); + const [boardAttachFiles, setBoardAttachFiles] = useState(); + const [user, setUser] = useState({}); + + const retrieveDetail = () => { + + const retrieveDetailURL = `/schedule/${location.state?.schdulId}`; + const requestOptions = { + method: "GET", + headers: { + 'Content-type': 'application/json', + } + } + EgovNet.requestFetch(retrieveDetailURL, + requestOptions, + function (resp) { + let rawScheduleDetail = resp.result.scheduleDetail; + rawScheduleDetail.startDateTime = convertDate(rawScheduleDetail.schdulBgnde); + rawScheduleDetail.endDateTime = convertDate(rawScheduleDetail.schdulEndde); + rawScheduleDetail.reptitSeCodeNm = getCodeName(resp.result.reptitSeCode, resp.result.scheduleDetail.reptitSeCode); + rawScheduleDetail.schdulIpcrCodeNm = getCodeName(resp.result.schdulIpcrCode, resp.result.scheduleDetail.schdulIpcrCode); + rawScheduleDetail.schdulSeNm = getCodeName(resp.result.schdulSe, resp.result.scheduleDetail.schdulSe); + setScheduleDetail(rawScheduleDetail); + setUser(resp.result.user); + setBoardAttachFiles(resp.result.resultFiles); + } + ); + } + const convertDate = (str) => { + let year = str.substring(0, 4); + let month = str.substring(4, 6); + let date = str.substring(6, 8); + let hour = str.substring(8, 10); + let minute = str.substring(10, 12); + return { + year: year, + month: month, + date: date, + hour: hour, + minute: minute, + dateForm: year + "년 " + month + "월 " + date + "일 " + hour + "시 " + minute + "분 " + } + } + + const getCodeName = (codeArr, code) => { + return ( + codeArr.map((codeObj) => { + if (codeObj.code === code.trim()) return codeObj.codeNm + else return ""; + }) + ); + }; + + const onClickDeleteSchedule = (schdulId) => { + const deleteBoardURL = `/schedule/${schdulId}`; + + const requestOptions = { + method: "DELETE", + headers: { + 'Content-type': 'application/json', + } + } + + EgovNet.requestFetch(deleteBoardURL, + requestOptions, + (resp) => { + console.log("====>>> Schdule delete= ", resp); + if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) { + alert("게시글이 삭제되었습니다.") + navigate(URL.ADMIN_SCHEDULE ,{ replace: true }); + } else { + // alert("ERR : " + resp.message); + navigate({pathname: URL.ERROR}, {state: {msg : resp.resultMessage}}); + } + + } + ); + } + + useEffect(function () { + retrieveDetail(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + console.log("------------------------------EgovAdminScheduleDetail [End]"); + console.groupEnd("EgovAdminScheduleDetail"); + return ( +
+
+ {/* */} +
+
    +
  • Home
  • +
  • 사이트관리
  • +
  • 일정관리
  • +
+
+ {/* */} + +
+ {/* */} + + {/* */} + +
+ {/* */} + +
+

사이트관리

+
+ +

일정관리 상세보기

+ + {/* */} +
+
+
일정구분
+
{scheduleDetail.schdulSeNm}
+
+
+
중요도
+
{scheduleDetail.schdulIpcrCodeNm}
+
+
+
부서
+
{scheduleDetail.schdulDeptName}
+
+
+
일정명
+
{scheduleDetail.schdulNm}
+
+
+
일정내용
+
{scheduleDetail.schdulCn}
+
+
+
반복구분
+
{scheduleDetail.reptitSeCodeNm}
+
+
+
날짜/시간
+
{scheduleDetail.startDateTime?.dateForm} ~ {scheduleDetail.endDateTime?.dateForm}
+
+
+
담당자
+
{scheduleDetail.schdulChargerName}
+
+ + + + {/* */} +
+ {user.id && +
+ 수정 + + +
+ } +
+ 목록 +
+
+ {/* */} +
+ {/* */} + + {/* */} +
+
+
+
+ ); +} + +export default SchedulesDetail; \ No newline at end of file diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/committee/Schedules/Edit.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/committee/Schedules/Edit.jsx new file mode 100644 index 0000000..9fbab65 --- /dev/null +++ b/egovframe-template-simple-react-contribution/src/pages/admin/committee/Schedules/Edit.jsx @@ -0,0 +1,364 @@ +import React, { useState, useEffect } from 'react'; +import { Link, useLocation, useNavigate } from 'react-router-dom'; +import DatePicker from "react-datepicker"; + +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 EgovAttachFile from 'components/EgovAttachFile'; +import EgovRadioButtonGroup from 'components/EgovRadioButtonGroup'; + +import 'react-datepicker/dist/react-datepicker.css'; + +function SchedulesEdit(props) { + console.group("EgovAdminScheduleEdit"); + console.log("[Start] EgovAdminScheduleEdit ------------------------------"); + console.log("EgovAdminScheduleEdit [props] : ", props); + + const navigate = useNavigate(); + const location = useLocation(); + console.log("EgovAdminScheduleEdit [location] : ", location); + + const reptitSeCodeRadioGroup = [{ value: "1", label: "당일" }, { value: "2", label: "반복" }, { value: "3", label: "연속" }]; + + const [modeInfo, setModeInfo] = useState({ mode: props.mode }); + const [scheduleDetail, setScheduleDetail] = useState({ schdulDeptName: "관리자부서", schdulChargerName: "관리자", schdulKindCode: 2, reptitSeCode: "1", startDate: new Date(), endDate: new Date() }); + const [boardAttachFiles, setBoardAttachFiles] = useState(); + + const [schdulBgndeHH, setSchdulBgndeHH] = useState(); + const [schdulBgndeMM, setSchdulBgndeMM] = useState(); + const [schdulEnddeHH, setSchdulEnddeHH] = useState(); + const [schdulEnddeMM, setSchdulEnddeMM] = useState(); + + + const initMode = () => { + switch (props.mode) { + case CODE.MODE_CREATE: + setModeInfo({ + ...modeInfo, + modeTitle: "등록", + method : "POST", + editURL: '/schedule' + }); + break; + case CODE.MODE_MODIFY: + setModeInfo({ + ...modeInfo, + modeTitle: "수정", + method : "PUT", + editURL: '/schedule' + }); + break; + default: + navigate({pathname: URL.ERROR}, {state: {msg : ""}}); + } + retrieveDetail(); + } + + const convertDate = (str) => { + let year = str.substring(0, 4); + let month = str.substring(4, 6); + let date = str.substring(6, 8); + let hour = str.substring(8, 10); + let minute = str.substring(10, 12); + return new Date(year, month - 1, date, hour, minute) + } + + const retrieveDetail = () => { + if (modeInfo.mode === CODE.MODE_CREATE) {// 조회/등록이면 조회 안함 + setScheduleDetail({ + ...scheduleDetail, + schdulBgnde: location.state.iUseDate, + schdulEndde: location.state.iUseDate, + startDate: convertDate(location.state.iUseDate), + endDate: convertDate(location.state.iUseDate), + }); + return; + } + + const retrieveDetailURL = `/schedule/${location.state?.schdulId}`; + const requestOptions = { + method: "GET", + headers: { + 'Content-type': 'application/json' + } + } + EgovNet.requestFetch(retrieveDetailURL, + requestOptions, + function (resp) { + let rawScheduleDetail = resp.result.scheduleDetail; + //기본값 설정 + setScheduleDetail({ + ...scheduleDetail, + ...rawScheduleDetail, + startDate: convertDate(rawScheduleDetail.schdulBgnde), + endDate: convertDate(rawScheduleDetail.schdulEndde), + atchFileId : rawScheduleDetail.atchFileId.trim(), + }); + setBoardAttachFiles(resp.result.resultFiles); + } + ); + } + + const updateSchedule = () => { + const formData = new FormData(); + + for (let key in scheduleDetail) { + formData.append(key, scheduleDetail[key]); + console.log("scheduleDetail [%s] ", key, scheduleDetail[key]); + } + + if (formValidator(formData)) { + const requestOptions = { + method: modeInfo.method, + body: formData + } + + if (modeInfo.mode === CODE.MODE_MODIFY) { + modeInfo.editURL = `${modeInfo.editURL}/${location.state?.schdulId}`; + } + EgovNet.requestFetch(modeInfo.editURL, + requestOptions, + (resp) => { + if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) { + navigate({ pathname: URL.ADMIN_SCHEDULE }); + } else { + navigate({pathname: URL.ERROR}, {state: {msg : resp.resultMessage}}); + } + } + ); + } + + } + + const formValidator = (formData) => { + if (formData.get('schdulNm') === null || formData.get('schdulNm') === "") { + alert("일정명은 필수 값입니다."); + return false; + } + if (formData.get('schdulCn') === null || formData.get('schdulCn') === "") { + alert("일정내용은 필수 값입니다."); + return false; + } + if (formData.get('schdulSe') === null || formData.get('schdulSe') === "") { + alert("일정구분은 필수 값입니다."); + return false; + } + if (formData.get('schdulIpcrCode') === null || formData.get('schdulIpcrCode') === "") { + alert("중요도는 필수 값입니다."); + return false; + } + if (formData.get('reptitSeCode') === null ||formData.get('reptitSeCode') === "") { + alert("반복구분은 필수 값입니다."); + return false; + } + if (formData.get('schdulBgnde') > formData.get('schdulEndde')) { + alert("종료일시는 시작일시보다 앞 설 수 없습니다."); + return false; + } + return true; + } + const getDateFourteenDigit = (date) => { + return getYYYYMMDD(date).toString() + makeTwoDigit(date.getHours()) + makeTwoDigit(date.getMinutes()) + makeTwoDigit(date.getSeconds()); + } + const getYYYYMMDD = (date) => { + return date.getFullYear().toString() + makeTwoDigit(Number(date.getMonth() + 1)) + makeTwoDigit(date.getDate()); + } + const makeTwoDigit = (number) => { + return number < 10 ? "0" + number : number.toString(); + } + + useEffect(function () { + initMode(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + console.log("------------------------------EgovAdminScheduleEdit [End]"); + console.groupEnd("EgovAdminScheduleEdit"); + return ( +
+
+ {/* */} +
+
    +
  • Home
  • +
  • 사이트관리
  • +
  • 일정관리
  • +
+
+ {/* */} + +
+ {/* */} + + {/* */} + +
+ {/* */} + +
+

사이트관리

+
+ +

일정관리 상세보기

+ + {/* */} +
+
+
일정구분필수
+
+ +
+
+
+
중요도필수
+
+ +
+
+
+
필수
+
+ +
+
+
+
필수
+
+ setScheduleDetail({ ...scheduleDetail, schdulNm: e.target.value })} /> +
+
+
+
필수
+
+ +
+
+
+
반복구분필수
+
+ setScheduleDetail({ ...scheduleDetail, reptitSeCode: v })} /> +
+
+
+
날짜/시간필수
+
+ + { + console.log("setStartDate : ", date); + setScheduleDetail({ ...scheduleDetail, schdulBgnde: getDateFourteenDigit(date), schdulBgndeYYYMMDD: getYYYYMMDD(date), schdulBgndeHH: date.getHours(), schdulBgndeMM: date.getMinutes(), startDate: date }); + setSchdulBgndeHH(date.getHours()); + setSchdulBgndeMM(date.getMinutes()); + }} /> + + + ~ + + + { + console.log("setEndDate: ", date); + setScheduleDetail({ ...scheduleDetail, schdulEndde: getDateFourteenDigit(date), schdulEnddeYYYMMDD: getYYYYMMDD(date), schdulEnddeHH: date.getHours(), schdulEnddeMM: date.getMinutes(), endDate: date }); + setSchdulEnddeHH(date.getHours()); + setSchdulEnddeMM(date.getMinutes()); + } + } /> + + + +
+
+
+
필수
+
+ +
+
+ { + console.log("====>>> Changed attachfile file = ", attachfile); + const arrayConcat = { ...scheduleDetail}; // 기존 단일 파일 업로드에서 다중파일 객체 추가로 변환(아래 for문으로) + for ( let i = 0; i < attachfile.length; i++) { + arrayConcat[`file_${i}`] = attachfile[i]; + } + setScheduleDetail(arrayConcat); + }} + fnDeleteFile={(deletedFile) => { + console.log("====>>> Delete deletedFile = ", deletedFile); + setBoardAttachFiles(deletedFile); + }} + boardFiles={boardAttachFiles} + mode={props.mode} /> + + {/* */} +
+
+ + 삭제 +
+ +
+ 목록 +
+
+ {/* */} +
+ {/* */} + + {/* */} +
+
+
+
+ ); +} + +export default SchedulesEdit; \ No newline at end of file diff --git a/egovframe-template-simple-react-contribution/src/pages/admin/committee/Schedules/List.jsx b/egovframe-template-simple-react-contribution/src/pages/admin/committee/Schedules/List.jsx new file mode 100644 index 0000000..5ac0efb --- /dev/null +++ b/egovframe-template-simple-react-contribution/src/pages/admin/committee/Schedules/List.jsx @@ -0,0 +1,313 @@ +import React, { useState, useEffect, useCallback } from 'react'; +import { Link, useLocation } from 'react-router-dom'; + +import * as EgovNet from 'api/egovFetch'; +import URL from 'constants/url'; +import CODE from 'constants/code'; + +import { default as EgovLeftNav } from 'components/leftmenu/EgovLeftNavAdmin'; + +function SchedulesList(props) { + console.group("EgovAdminScheduleList"); + console.log("[Start] EgovAdminScheduleList ------------------------------"); + console.log("EgovAdminScheduleList [props] : ", props); + + const location = useLocation(); + console.log("EgovAdminScheduleList [location] : ", location); + + const DATE = new Date(); + const TODAY = new Date(DATE.getFullYear(), DATE.getMonth(), DATE.getDate()); + + const [searchCondition, setSearchCondition] = useState(location.state?.searchCondition || { schdulSe: '', year: TODAY.getFullYear(), month: TODAY.getMonth(), date: TODAY.getDate() }); + const [calendarTag, setCalendarTag] = useState([]); + + const [scheduleList, setScheduleList] = useState([]); + + const innerConsole = (...args) => { + console.log(...args); + } + + const getLastDateOfMonth = (year, month) => { + const LAST_DATE_SUPPLMENT = 1; + return new Date(year, month + LAST_DATE_SUPPLMENT, 0); + } + const getFirstDateOfMonth = (year, month) => { + return new Date(year, month, 1); + } + + const changeDate = (target, amount) => { + let changedDate; + + if (target === CODE.DATE_YEAR) { + changedDate = new Date(searchCondition.year + amount, searchCondition.month, searchCondition.date); + } + + if (target === CODE.DATE_MONTH) { + changedDate = new Date(searchCondition.year, searchCondition.month + amount, searchCondition.date); + } + setSearchCondition({ ...searchCondition, year: changedDate.getFullYear(), month: changedDate.getMonth(), date: changedDate.getDate() }); + } + + const retrieveList = useCallback((srchcnd) => { + console.groupCollapsed("EgovAdminScheduleList.retrieveList()"); + + const retrieveListURL = '/schedule/month'+EgovNet.getQueryString(srchcnd); + + const requestOptions = { + method: "GET", + headers: { + 'Content-type': 'application/json', + } + } + + EgovNet.requestFetch(retrieveListURL, + requestOptions, + (resp) => { + setScheduleList(resp.result.resultList); + }, + function (resp) { + console.log("err response : ", resp); + } + ); + console.groupEnd("EgovAdminScheduleList.retrieveList()"); + },[]); + + const drawCalendar = () => { + console.groupCollapsed("EgovAdminScheduleList.drawCalendar()"); + const PREV_MONTH_ADDITION = -1; + + let lastOfLastMonth = getLastDateOfMonth(searchCondition.year, searchCondition.month + PREV_MONTH_ADDITION); + let firstOfThisMonth = getFirstDateOfMonth(searchCondition.year, searchCondition.month); + let lastOfThisMonth = getLastDateOfMonth(searchCondition.year, searchCondition.month); + + console.log("lastOfLastMonth : ", lastOfLastMonth, lastOfLastMonth.getDay()); + console.log("firstOfThisMonth :", firstOfThisMonth, firstOfThisMonth.getDay()); + console.log("lastOfThisMonth :", lastOfThisMonth, lastOfThisMonth.getDay()); + console.log("scheduleList : ", scheduleList); + + let firstDayOfThisMonth = firstOfThisMonth.getDay(); + let lastDateOfThisMonth = lastOfThisMonth.getDate(); + console.log("firstDayOfThisMonth", firstDayOfThisMonth, "lastDateOfThisMonth", lastDateOfThisMonth) + + let monthArr = []; + let weekArr = []; + + // firstWeek Date Set START + let firstWeekDateCount = 0; + for (let day = 0; day < 7; day++) { + if (day < firstDayOfThisMonth) { // + weekArr.push(0); + firstWeekDateCount = 0; + } else { + weekArr.push(++firstWeekDateCount); + } + } + monthArr.push(weekArr); + console.log("FirstWeek monthArr : ", monthArr); + // firstWeek Date Set END + + // otherWeek Date Set START + let dayCount = 0; + weekArr = [];//초기화 + for (let day = firstWeekDateCount + 1; day <= lastDateOfThisMonth; day++) { + + if (dayCount % 7 !== 6) { + weekArr.push(day); + } else { + weekArr.push(day); + monthArr.push(weekArr); + weekArr = []; + dayCount = -1; + } + dayCount++; + } + // otherWeek Date Set END + + // lastWeek Date Set START + if (weekArr.length > 0) {//남은 부분 + for (let day = weekArr.length; day < 7; day++) { + weekArr.push(0); + } + monthArr.push(weekArr); + } + // lastWeek Date Set END + console.log("OtherWeek monthArr : ", monthArr); + + let mutsUseYearMonth = searchCondition.year.toString() + ((searchCondition.month + 1).toString().length === 1 ? "0" + (searchCondition.month + 1).toString() : (searchCondition.month + 1).toString()); + console.log("mutsUseYearMonth : ", mutsUseYearMonth); + + let mutCalendarTagList = []; + let keyIdx = 0; + + //draw Calendar + monthArr.forEach((week, weekIdx) => { + console.log(); + mutCalendarTagList.push( + { + week.map((day, dayIdx) => { + if (day !== 0) {//당월 일별 구현 + let sDate = day.toString().length === 1 ? "0" + day.toString() : day.toString(); + let iUseDate = Number(mutsUseYearMonth + sDate); + if (scheduleList.length > 0) {//일정 있는 경우 + return ( + + {day}
+ { + scheduleList.map((schedule, scheduleIdx) => { + let iBeginDate = Number(schedule.schdulBgnde.substring(0, 8)); + let iEndDate = Number(schedule.schdulEndde.substring(0, 8)); + innerConsole("scheduleList ", day, scheduleIdx, iBeginDate, iUseDate, iEndDate, iUseDate >= iBeginDate && iUseDate <= iEndDate); + innerConsole("schedule.schdulId ", schedule.schdulId); + if (iUseDate >= iBeginDate && iUseDate <= iEndDate) { + return ( + <> + {schedule.schdulNm} + +
+ + ); + } else return <> + }) + } + + ); + } else {//일정 없는 경우 + return ( + + {day}
+ ); + } + } else if (day === 0) {// 이전달/다음달 구현 + return (); + } else return <> + }) + }); + }) + console.log("mutCalendarTagList : ", mutCalendarTagList); + setCalendarTag(mutCalendarTagList); + console.groupEnd("EgovAdminScheduleList.drawCalendar()"); + } + + const Location = React.memo(function Location() { + return ( +
+ +
+ ) + }); + + useEffect(() => { + retrieveList(searchCondition); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [searchCondition]); + + useEffect(() => { + drawCalendar(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [scheduleList]); + + console.log("------------------------------EgovAdminScheduleList [End]"); + console.groupEnd("EgovAdminScheduleList"); + return ( +
+
+ {/* */} + + {/* */} + +
+ {/* */} + + {/* */} + +
+ {/* */} + +
+

사이트관리

+
+ +

일정관리

+ + {/* */} +
+
    +
  • + +
  • +
  • + + {searchCondition.year} + +
  • +
  • + + {(searchCondition.month + 1)} + +
  • +
+
+ {/* */} + +
+ + + + + + + + + + + + + + {calendarTag} + +
+
+ {/* */} +
+
+
+
+ ); +} + +export default SchedulesList; \ No newline at end of file diff --git a/egovframe-template-simple-react-contribution/src/routes/index.jsx b/egovframe-template-simple-react-contribution/src/routes/index.jsx index d576875..5f60f91 100644 --- a/egovframe-template-simple-react-contribution/src/routes/index.jsx +++ b/egovframe-template-simple-react-contribution/src/routes/index.jsx @@ -95,8 +95,10 @@ import AdminContentsStandardsResearch from 'pages/admin/contents/StandardsResear import AdminContentsTextMessages from 'pages/admin/contents/TextMessages'; // 관리자 - 컨텐츠 관리/문자 발송 // 관리자 - 위원회 관리 -import AdminCommitteeProgressStatus from 'pages/admin/committee/ProgressStatus'; // 관리자 - 위원회 관리/진행현황 관리 -import AdminCommitteeSchedules from 'pages/admin/committee/Schedules'; // 관리자 - 위원회 관리/위원회 일정 관리 +import AdminCommitteeProgressStatus from 'pages/admin/committee/ProgressStatus'; // 관리자 - 위원회 관리/진행현황 관리 +import AdminCommitteeSchedules from 'pages/admin/committee/Schedules'; // 관리자 - 위원회 관리/위원회 일정 관리 +import AdminCommitteeSchedulesDetail from 'pages/admin/committee/Schedules/Detail'; // 관리자 - 위원회 관리/위원회 일정 관리/일정관리상세 +import AdminCommitteeSchedulesEdit from 'pages/admin/committee/Schedules/Edit'; // 관리자 - 위원회 관리/위원회 일정 관리/일정관리생성 또는 수정 // 관리자 - 로그 관리 import AdminLogsMenuAccessInfo from 'pages/admin/logs/MenuAccessInfo'; // 관리자 - 위원회 관리/메뉴별 접속현황 @@ -297,6 +299,11 @@ const SecondRoutes = () => { {/* 관리자 - 위원회 관리 */} } /> } /> + } /> + } mode={CODE.MODE_CREATE} /> + } mode={CODE.MODE_MODIFY} /> + + {/* 관리자 - 로그 관리 */} } />