import React, { useState, useEffect } from 'react'; import { Link, useLocation, useNavigate } from 'react-router-dom'; import DatePicker from "react-datepicker"; import EgovAttachFile from 'components/EgovAttachFile'; import RichTextEditor from "../../../../components/editor/RichTextEditor"; import CODE from 'constants/code'; import * as EgovNet from 'api/egovFetch'; import URL from 'constants/url'; import { default as EgovLeftNav } from 'components/leftmenu/EgovLeftNavAdmin'; import styled from "styled-components"; const StyledDiv = styled.div` .board_view2 { margin-bottom: 30px; } .board_btn_area { margin-top: 70px; } `; function PopupWriter(props) { const navigate = useNavigate(); const location = useLocation(); const [modeInfo, setModeInfo] = useState({ mode: props.mode }); const [text, setText] = useState(""); const [scheduleDetail, setScheduleDetail] = useState({ schdulDeptName: "관리자부서", schdulChargerName: "관리자", schdulKindCode: 2, reptitSeCode: "1", startDate: new Date(), endDate: new Date() }); const [schdulBgndeHH, setSchdulBgndeHH] = useState(); const [schdulBgndeMM, setSchdulBgndeMM] = useState(); const [schdulEnddeHH, setSchdulEnddeHH] = useState(); const [schdulEnddeMM, setSchdulEnddeMM] = useState(); const [boardAttachFiles, setBoardAttachFiles] = useState(); useEffect(function () { // eslint-disable-next-line react-hooks/exhaustive-deps }, []); 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 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 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__COMMITTEE__SCHEDULES ,{ replace: true }); } else { // alert("ERR : " + resp.message); navigate({pathname: URL.ERROR}, {state: {msg : resp.resultMessage}}); } } ); } 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(); } const Location = React.memo(function Location() { return (
) }); return (
{/* */} {/* */}
{/* */} {/* */}
{/* */}

팝업 추가

필수
setScheduleDetail({ ...scheduleDetail, title: e.target.value })} />
기간필수
{ 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} />
{/* */} {/* */} {/* */}
{modeInfo.mode === CODE.MODE_MODIFY && }
목록
{/* */}
{/* */}
); } export default PopupWriter;