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 (
+
+
+ {/* */}
+
+ {/* */}
+
+
+ {/* */}
+
+ {/* */}
+
+
+ {/* */}
+
+
+
사이트관리
+
+
+
일정관리 상세보기
+
+ {/* */}
+
+
+ 일정구분
+ {scheduleDetail.schdulSeNm}
+
+
+ 중요도
+ {scheduleDetail.schdulIpcrCodeNm}
+
+
+ 부서
+ {scheduleDetail.schdulDeptName}
+
+
+ 일정명
+ {scheduleDetail.schdulNm}
+
+
+ 일정내용
+ {scheduleDetail.schdulCn}
+
+
+ 반복구분
+ {scheduleDetail.reptitSeCodeNm}
+
+
+ 날짜/시간
+ {scheduleDetail.startDateTime?.dateForm} ~ {scheduleDetail.endDateTime?.dateForm}
+
+
+ 담당자
+ {scheduleDetail.schdulChargerName}
+
+
+
+
+ {/* */}
+
+ {user.id &&
+
+ 수정
+ {
+ onClickDeleteSchedule(location.state?.schdulId);
+ }}>삭제
+
+
+ }
+
+ 목록
+
+
+ {/* */}
+
+ {/* */}
+
+ {/* */}
+
+
+
+
+ );
+}
+
+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 (
+
+
+ {/* */}
+
+ {/* */}
+
+
+ {/* */}
+
+ {/* */}
+
+
+ {/* */}
+
+
+
사이트관리
+
+
+
일정관리 상세보기
+
+ {/* */}
+
+
+ 일정구분필수
+
+
+ setScheduleDetail({ ...scheduleDetail, schdulSe: e.target.value })}>
+ 선택
+ 회의
+ 세미나
+ 강의
+ 교육
+ 기타
+
+
+
+
+
+ 중요도필수
+
+
+ setScheduleDetail({ ...scheduleDetail, schdulIpcrCode: e.target.value })}>
+ 선택
+ 높음
+ 보통
+ 낮음
+
+
+
+
+
+ 부서 필수
+
+
+
+
+
+ 일정명 필수
+
+ 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} />
+
+ {/* */}
+
+
+
updateSchedule()}
+ > 저장
+
삭제
+
+
+
+ 목록
+
+
+ {/* */}
+
+ {/* */}
+
+ {/* */}
+
+
+
+
+ );
+}
+
+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 (
+
+
+ {/* */}
+
+ {/* */}
+
+
+ {/* */}
+
+ {/* */}
+
+
+ {/* */}
+
+
+
사이트관리
+
+
+
일정관리
+
+ {/* */}
+
+
+
+
+ {
+ setSearchCondition({ ...searchCondition, schdulSe: e.target.value });
+ }}
+ >
+ 전체
+ 회의
+ 세미나
+ 강의
+ 교육
+ 기타
+
+
+
+
+ {
+ changeDate(CODE.DATE_YEAR, -1);
+ }}
+ >
+ {searchCondition.year}
+ {
+ changeDate(CODE.DATE_YEAR, 1);
+ }}
+ >
+
+
+ {
+ changeDate(CODE.DATE_MONTH, -1);
+ }}
+ >
+ {(searchCondition.month + 1)}
+ {
+ changeDate(CODE.DATE_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} />
+
+
{/* 관리자 - 로그 관리 */}
} />