Compare commits
43 Commits
Author | SHA1 | Date |
---|---|---|
jhseo | b877d66a9b | 1 day ago |
sjh88 | 2df9eda17f | 2 years ago |
sjh88 | bb8dbde9f7 | 2 years ago |
sjh88 | 7cadb24e5a | 2 years ago |
sjh88 | ad9d6e49bc | 2 years ago |
sjh88 | 55da0f001d | 2 years ago |
sjh88 | 7622b85232 | 2 years ago |
sjh88 | 621f02ad76 | 2 years ago |
sjh88 | 64d6cf2bbc | 2 years ago |
Kurt92 | 72486e1b1e | 2 years ago |
Kurt92 | 87c139090f | 2 years ago |
Kurt92 | 996098016e | 2 years ago |
minuk926 | 42b70aa8f0 | 2 years ago |
minuk926 | 0790af9d72 | 2 years ago |
minuk926 | cbe146ba1c | 2 years ago |
minuk926 | c952afc0f6 | 2 years ago |
minuk926 | c41c37f682 | 2 years ago |
minuk926 | 0bc3fddbb7 | 2 years ago |
minuk926 | 0333e8087b | 2 years ago |
minuk926 | 5831c191a5 | 2 years ago |
minuk926 | f8e270dc74 | 2 years ago |
minuk926 | a18cd21cae | 2 years ago |
minuk926 | d760c5ebff | 2 years ago |
minuk926 | 9d05ef1d1c | 2 years ago |
minuk926 | d695f9b5c2 | 2 years ago |
minuk926 | fe405f54ac | 2 years ago |
minuk926 | 0303af2827 | 2 years ago |
minuk926 | 5996a3c1d8 | 2 years ago |
minuk926 | f72e9fed7c | 2 years ago |
minuk926 | d9bc8c2abb | 2 years ago |
minuk926 | afe55a91ac | 2 years ago |
minuk926 | 215a5d6a17 | 2 years ago |
minuk926 | e9b1a7c4eb | 2 years ago |
minuk926 | 51a0fbdcf0 | 2 years ago |
minuk926 | bc3f33fa63 | 2 years ago |
minuk926 | dab63d74b3 | 2 years ago |
minuk926 | aa07b2a93f | 2 years ago |
minuk926 | a3bbaee985 | 2 years ago |
minuk926 | 96f9bef27a | 2 years ago |
minuk926 | 43415c908d | 2 years ago |
minuk926 | 997786fe93 | 2 years ago |
minuk926 | 7841847321 | 2 years ago |
minuk926 | 5f41b17def | 2 years ago |
@ -1,13 +0,0 @@
|
|||||||
# .git 과 .cache 폴더를 무시
|
|
||||||
.git
|
|
||||||
.cache
|
|
||||||
|
|
||||||
# 모든 마크다운 파일들 (md) 파일들을 무시,
|
|
||||||
# 모든 README*.md 파일 무시
|
|
||||||
*.md
|
|
||||||
IREADME*.md
|
|
||||||
|
|
||||||
node_modules
|
|
||||||
npm-debug.log
|
|
||||||
# build
|
|
||||||
.idea
|
|
@ -1,6 +1,7 @@
|
|||||||
NODE_PATH=src
|
NODE_PATH=src
|
||||||
REACT_APP_MODE=production
|
REACT_APP_MODE=production
|
||||||
REACT_APP_VERSION = v0.0.1
|
REACT_APP_VERSION = v0.0.1
|
||||||
#REACT_APP_API_URL=http://211.119.124.9:8090
|
|
||||||
REACT_APP_API_URL=http://localhost:8090
|
REACT_APP_API_URL=http://localhost:8090
|
||||||
REACT_APP_SERVER_TIMEOUT=6000
|
#REACT_APP_API_URL=http://211.119.124.9:8090
|
||||||
|
#REACT_APP_API_URL=http://211.119.124.62:8090
|
||||||
|
REACT_APP_SERVER_TIMEOUT=60000
|
@ -1,22 +0,0 @@
|
|||||||
FROM nginx
|
|
||||||
|
|
||||||
ADD ./build /usr/share/nginx/html
|
|
||||||
|
|
||||||
# 80 포트 오픈
|
|
||||||
EXPOSE 80
|
|
||||||
|
|
||||||
# container 실행 시 nginx 시작함
|
|
||||||
CMD ["nginx", "-g", "daemon off;"]
|
|
||||||
|
|
||||||
# root 에 app 폴더를 생성
|
|
||||||
# RUN mkdir /app
|
|
||||||
# work dir 고정
|
|
||||||
# WORKDIR /app
|
|
||||||
# work dir 에 build 폴더 생성 /app/build
|
|
||||||
# RUN mkdir ./build
|
|
||||||
# host pc의 현재경로의 build 폴더를 workdir 의 build 폴더로 복사
|
|
||||||
# ADD ./build ./build
|
|
||||||
# nginx 의 default.conf backup
|
|
||||||
# RUN mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.backup
|
|
||||||
# host pc 의 nginx.conf 를 아래 경로에 복사
|
|
||||||
# COPY ./nginx.conf /etc/nginx/conf.d
|
|
@ -1,12 +0,0 @@
|
|||||||
node {
|
|
||||||
stage('Clone repository') {
|
|
||||||
checkout scm
|
|
||||||
}
|
|
||||||
|
|
||||||
stage('Build docker image') {
|
|
||||||
app = docker.build("xit/opst-fo:latest") //docker image build 및 이름을 xit/opst-fo:$BUILD_NUMBER(빌드번호) 설정
|
|
||||||
}
|
|
||||||
//stage('Docker run'){
|
|
||||||
// sh "docker run --rm --name opst-fo -d -p 80:80 xit/opst-fo:latest"
|
|
||||||
//}
|
|
||||||
}
|
|
After Width: | Height: | Size: 1.0 KiB |
@ -1,18 +0,0 @@
|
|||||||
<svg width="46" height="55" viewBox="0 0 46 55" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<g clipPath="url(#clip0)">
|
|
||||||
<path d="M19.6667 55C8.82205 55 0 46.2504 0 35.4968C0 24.7431 8.82292 15.9935 19.6667 15.9935C30.5105 15.9935 39.3334 24.7431 39.3334 35.4968C39.3334 46.2504 30.5122 55 19.6667 55ZM19.6667 17.8563C9.8587 17.8563 1.87839 25.7686 1.87839 35.4959C1.87839 45.2233 9.8587 53.1355 19.6667 53.1355C29.4747 53.1355 37.4559 45.2215 37.4559 35.4942C37.4559 25.7668 29.4765 17.8563 19.6667 17.8563Z" fill="#2196F3"/>
|
|
||||||
<path d="M33.9387 36.3618C33.3269 34.1133 27.7188 33.8706 24.3807 34.6949C22.6326 35.1283 20.846 35.6917 19.0034 36.0159C20.3521 37.2026 21.8005 38.3251 23.879 38.6042C29.0361 39.2942 32.2404 37.6898 33.9387 36.3618Z" fill="#2196F3"/>
|
|
||||||
<path d="M23.8788 38.6042C21.7959 38.3251 20.3519 37.2026 19.0032 36.016C16.9159 34.1792 15.0594 32.189 11.4154 32.9379C5.62198 34.1289 4.85978 40.9247 9.3333 45.2917C11.254 47.2864 13.7197 48.6822 16.4284 49.3079C19.137 49.9336 21.9709 49.7621 24.5828 48.8144C27.1946 47.8667 29.4709 46.1839 31.1327 43.9724C32.7945 41.7608 33.7696 39.1165 33.9385 36.3635C32.2402 37.6898 29.0358 39.2942 23.8788 38.6042Z" fill="#673AB7"/>
|
|
||||||
<path d="M26.9105 23.8962C26.1876 25.4331 32.6321 27.1381 33.4031 32.2419C33.7746 27.2178 27.8046 21.9962 26.9105 23.8962Z" fill="#2196F3"/>
|
|
||||||
<path d="M13.3649 30.3107C14.5267 29.8335 15.0784 28.5126 14.5972 27.3604C14.116 26.2083 12.784 25.6611 11.6222 26.1384C10.4604 26.6156 9.90867 27.9365 10.3899 29.0887C10.8712 30.2408 12.2031 30.7879 13.3649 30.3107Z" fill="#673AB7"/>
|
|
||||||
<path d="M18.5351 24.1103C19.0786 23.5714 19.0786 22.6977 18.5351 22.1587C17.9917 21.6198 17.1106 21.6198 16.5672 22.1587C16.0238 22.6977 16.0238 23.5714 16.5672 24.1103C17.1106 24.6492 17.9917 24.6492 18.5351 24.1103Z" fill="#2196F3"/>
|
|
||||||
<path d="M23.4513 15.2376C25.4617 9.3485 24.1103 4.64345 19.9786 2.40881C17.1544 2.97831 15.4779 4.334 14.5444 6.20544C20.0843 5.76077 23.5999 9.1994 23.4513 15.2376Z" fill="#2196F3"/>
|
|
||||||
<path d="M46.0001 10.0923C36.0487 6.55051 29.7685 7.76491 28.7808 15.8349C34.4841 21.6703 40.2286 18.8774 46.0001 10.0923Z" fill="#2196F3"/>
|
|
||||||
<path d="M38.0851 6.89635C38.5466 4.94082 38.7861 2.6299 38.8219 0C28.5017 2.27885 23.8473 6.6337 27.3584 13.9782C27.5333 14.0198 27.7011 14.0536 27.8698 14.0883C28.6905 8.34132 32.3031 6.2133 38.0851 6.89635Z" fill="#2196F3"/>
|
|
||||||
</g>
|
|
||||||
<defs>
|
|
||||||
<clipPath id="clip0">
|
|
||||||
<rect width="46" height="55" fill="white"/>
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 7.4 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 7.4 KiB |
After Width: | Height: | Size: 22 KiB |
@ -1,33 +0,0 @@
|
|||||||
//----------------------------------------------------------------------------
|
|
||||||
// Board : 게시판 관리
|
|
||||||
//----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
import axios from 'utils/axios';
|
|
||||||
import { GET_BOARD_LIST, REMOVE_BOARD, SAVE_BOARD, SAVE_BOARD_HIT_CNT, GET_BOARD_LIST2 } from 'commons/ApiUrl';
|
|
||||||
import { setRowId } from './common';
|
|
||||||
|
|
||||||
// eslint-disable-next-line import/prefer-default-export
|
|
||||||
export async function findBoards2(params) {
|
|
||||||
const res = await axios.get(GET_BOARD_LIST2, { params });
|
|
||||||
console.log(res);
|
|
||||||
if (res.success) {
|
|
||||||
res.data = res.data.map((d, idx) => ({ ...d, rowId: setRowId(params, idx) }));
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function saveBoard(params) {
|
|
||||||
// eslint-disable-next-line no-return-await
|
|
||||||
return await axios.post(SAVE_BOARD, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function removeBoard(inCode) {
|
|
||||||
// eslint-disable-next-line no-return-await
|
|
||||||
return await axios.post(REMOVE_BOARD + inCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function modifyBoardHitCount(inCode) {
|
|
||||||
// eslint-disable-next-line no-return-await
|
|
||||||
return await axios.put(SAVE_BOARD_HIT_CNT + inCode);
|
|
||||||
}
|
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 7.4 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 4.3 KiB |
@ -0,0 +1,43 @@
|
|||||||
|
@media print {
|
||||||
|
.report + .report {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@page {
|
||||||
|
size: A4;
|
||||||
|
margin: 20mm;
|
||||||
|
}
|
||||||
|
|
||||||
|
@page :first {margin:0 20mm}
|
||||||
|
|
||||||
|
.report {
|
||||||
|
//break-after: page;
|
||||||
|
margin-top: 20mm;
|
||||||
|
width: 100%;
|
||||||
|
border-style: double;
|
||||||
|
border-width: 2px;
|
||||||
|
border-color: #000000;
|
||||||
|
border-collapse: collapse;
|
||||||
|
color: #000000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.report + .report {
|
||||||
|
margin-top: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.report th, td{
|
||||||
|
border: 1px solid #000000;
|
||||||
|
font-family: "??";
|
||||||
|
font-size:12px;
|
||||||
|
color: #525252;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tit_text2 {
|
||||||
|
font-size:1.5em;
|
||||||
|
font-family: "??";
|
||||||
|
color:#666666;
|
||||||
|
text-decoration: none;
|
||||||
|
line-height: normal;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
@ -0,0 +1,178 @@
|
|||||||
|
import { forwardRef } from 'react';
|
||||||
|
|
||||||
|
import 'assets/scss/print.scss';
|
||||||
|
import NumberFormat from 'react-number-format';
|
||||||
|
import format from 'date-fns/format';
|
||||||
|
|
||||||
|
const toDate = new Date();
|
||||||
|
|
||||||
|
// eslint-disable-next-line
|
||||||
|
const JudgeDataPrintForm = forwardRef((props, ref) => {
|
||||||
|
return (
|
||||||
|
<table ref={ref} className="report">
|
||||||
|
<tr>
|
||||||
|
<td colSpan="5" align="center" className="tit_text2" height="50">
|
||||||
|
{props.content.scDatagb === '1' && '부정주차 이의신청'}
|
||||||
|
{props.content.scDatagb === '2' && '장애인주차구역 위반 의견진술'}
|
||||||
|
처리결과 통지서
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td rowSpan="2" align="center" width="50">
|
||||||
|
{props.content.scDatagb === '1' && <b>신청인</b>}
|
||||||
|
{props.content.scDatagb === '2' && (
|
||||||
|
<b>
|
||||||
|
의 견
|
||||||
|
<br />
|
||||||
|
진술인
|
||||||
|
</b>
|
||||||
|
)}
|
||||||
|
</td>
|
||||||
|
<td align="center" height="40" width="50">
|
||||||
|
<b>성 명</b>
|
||||||
|
</td>
|
||||||
|
<td colSpan="3" width="480">
|
||||||
|
{props.content.scName}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td align="center" height="40" width="50">
|
||||||
|
<b>주 소</b>
|
||||||
|
</td>
|
||||||
|
<td colSpan="3">
|
||||||
|
{props.content.scJuso} {props.content.scBunji}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colSpan="2" align="center" height="40" width="100">
|
||||||
|
<b>접 수 번 호</b>
|
||||||
|
</td>
|
||||||
|
<td align="center" width="120">
|
||||||
|
{props.content.scSeq}
|
||||||
|
</td>
|
||||||
|
<td align="center" width="100">
|
||||||
|
<b>차량등록번호</b>
|
||||||
|
</td>
|
||||||
|
<td width="260">{props.content.scCarnum}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colSpan="2" align="center" height="40" width="100">
|
||||||
|
<b>위 반 일 시</b>
|
||||||
|
</td>
|
||||||
|
<td align="center" width="120">
|
||||||
|
<NumberFormat format="####-##-##" value={props.content.scWdate} displayType="text" />
|
||||||
|
|
||||||
|
<NumberFormat format="##:##" value={props.content.scJbtime} displayType="text" />
|
||||||
|
</td>
|
||||||
|
<td align="center" width="100">
|
||||||
|
<b>위 반 내 용</b>
|
||||||
|
</td>
|
||||||
|
<td width="260">
|
||||||
|
{props.content.scDatagb === '1' && '거주자우선주차장 내 부정주차'}
|
||||||
|
{props.content.scDatagb === '2' && '장애인전용주차 구역내 일반차량 주차'}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colSpan="2" align="center" height="40" width="100">
|
||||||
|
<b>위 반 장 소</b>
|
||||||
|
</td>
|
||||||
|
<td colSpan="3">
|
||||||
|
{props.content.scDong} {props.content.scPos}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colSpan="2" align="center" height="40" width="100">
|
||||||
|
<b>심 의 결 과</b>
|
||||||
|
</td>
|
||||||
|
<td colSpan="3">
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<span className="tit_text2">({props.content.scStateNm})</span>
|
||||||
|
<br />
|
||||||
|
답변
|
||||||
|
<br />
|
||||||
|
{props.content.scAnswer}
|
||||||
|
{props.content.scDatagb === '1' && props.content.scState === '4' && (
|
||||||
|
<div>
|
||||||
|
<br />
|
||||||
|
<b>※부정주차 단속 및 주차요금 부과 근거</b>
|
||||||
|
<br />○ 주차장법 제8조의 2 및 제9조
|
||||||
|
<br />○ 서울특별시 강남구 주차장 설치 및 관리조례 제6조
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
{props.content.scDatagb === '1' && (
|
||||||
|
<td colSpan="5">
|
||||||
|
<b>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
■ 거주자우선주차장 내 부정주차 단속에 대하여 제출하신 이의 신청 건을 심의한 결과 위와 같이 결정되었음을
|
||||||
|
통보합니다.
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
■ 기타문의안내 : ARS 1544-2113
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
</b>
|
||||||
|
</td>
|
||||||
|
)}
|
||||||
|
{props.content.scDatagb === '2' && (
|
||||||
|
<td colSpan="5">
|
||||||
|
<b>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
■ 장애인주차구역내 일반차량 주차와 관련하여 제출하신 의견진술에 대하여 심의위원회에서 장애인, 노인, 임산부 등의
|
||||||
|
<br />
|
||||||
|
편의 증진 보장에 관한 법률 제 17조 제3항 및 제27조 제2항에 의거하여 장애인 전용 주차구역
|
||||||
|
위반 내용을 심의 한 결과
|
||||||
|
<br />
|
||||||
|
위와 같이 결정되었음을 통보합니다.
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
■ 본 심의결과에 이의가 있으시면 이의신청서를 작성하여 제출하시면 단속자료와 함께 관할 법원으로 통보하여 비송사건
|
||||||
|
<br />
|
||||||
|
절차법에 의한 과태료재판을 받으실 수 있습니다.
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
■ 제 출 기 한 : 과태료부과 고지서 받은 후 60일 이내
|
||||||
|
<br />
|
||||||
|
■ 신 청 방 법 : 구청직접방문, 팩스, 인터넷
|
||||||
|
<br />
|
||||||
|
■ 제 출 서 류 : 이의신청서, 과태료고지서, 증빙서류 첨부가능
|
||||||
|
<br />
|
||||||
|
■ 기타문의안내 : TEL 02)3423-6448, FAX : 02)3423-8868
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
</b>
|
||||||
|
</td>
|
||||||
|
)}
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colSpan="5" align="center" height="90">
|
||||||
|
<b>{format(toDate, 'yyyy년 MM월 dd일')}</b>
|
||||||
|
<br />
|
||||||
|
<br />
|
||||||
|
<span className="tit_text2">
|
||||||
|
{props.content.scDatagb === '1' && '강남구청 대행 강남구도시관리공단'}
|
||||||
|
{props.content.scDatagb === '2' && '서 울 특 별 시 강 남 구 도 시 관 리 공 단'}
|
||||||
|
</span>
|
||||||
|
{props.content.scDatagb === '1' && '(직인생략)'}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
export default JudgeDataPrintForm;
|
@ -0,0 +1,137 @@
|
|||||||
|
import { useState } from 'react';
|
||||||
|
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
import { useAlert } from 'react-alert';
|
||||||
|
|
||||||
|
import { Grid, TextField } from '@mui/material';
|
||||||
|
import Button from '@mui/material/Button';
|
||||||
|
|
||||||
|
import { saveAlert } from 'commons/XitCmm';
|
||||||
|
import { MuiXDatePicker, MuiXMobileTimePicker } from 'views/cmm/MuiXDatePicker';
|
||||||
|
import format from 'date-fns/format';
|
||||||
|
|
||||||
|
const toDate = new Date();
|
||||||
|
const JudgeDateModifyForm = ({ dateDatas, setDateModify, handleModalSave }) => {
|
||||||
|
const alert = useAlert();
|
||||||
|
|
||||||
|
const [msDatagb, setMsDatagb] = useState(dateDatas?.msDatagb);
|
||||||
|
const [msYear, setMsYear] = useState(dateDatas?.msYear);
|
||||||
|
const [msChasu, setMsChasu] = useState(dateDatas?.msChasu);
|
||||||
|
const [msSdate, setMsSdate] = useState(dateDatas?.msSdate);
|
||||||
|
const [msStartsi, setMsStartsi] = useState(dateDatas?.msStartsi);
|
||||||
|
const [msEdate, setMsEdate] = useState(dateDatas?.msEdate);
|
||||||
|
const [msCdate, setMsCdate] = useState(dateDatas?.msCdate);
|
||||||
|
const [msClosesi, setMsClosesi] = useState(dateDatas?.msClosesi);
|
||||||
|
|
||||||
|
const onSave = () => {
|
||||||
|
// TODO : validation check 추가
|
||||||
|
const param = {
|
||||||
|
msDatagb,
|
||||||
|
msYear,
|
||||||
|
msChasu,
|
||||||
|
msSdate,
|
||||||
|
msStartsi,
|
||||||
|
msEdate,
|
||||||
|
msCdate,
|
||||||
|
msClosesi
|
||||||
|
};
|
||||||
|
|
||||||
|
// 필수항목 빈값 체크
|
||||||
|
if (msSdate.length < 8) {
|
||||||
|
alert.show('심사 시작일자는 필수입니다.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (msEdate.length < 8) {
|
||||||
|
alert.show('심사 종료일자는 필수입니다.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (msCdate.length < 8) {
|
||||||
|
alert.show('심사 마감일자는 필수입니다.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (msStartsi.length === 1) {
|
||||||
|
setMsStartsi(`0${msStartsi}`);
|
||||||
|
}
|
||||||
|
if (msStartsi.length < 2) {
|
||||||
|
alert.show('심사 시작시간은 필수입니다.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (msClosesi.length < 2) {
|
||||||
|
alert.show('심사 마감시간은 필수입니다.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (msEdate.replace(/-/g, '') > msCdate.replace(/-/g, '')) {
|
||||||
|
alert.show('심사 종료일자가 심사 마감일자보다 클 수 없습니다.');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setDateModify(false);
|
||||||
|
saveAlert(
|
||||||
|
() => {
|
||||||
|
handleModalSave('SAVE', param);
|
||||||
|
},
|
||||||
|
() => {
|
||||||
|
setDateModify(true);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const onCancel = () => {
|
||||||
|
setDateModify(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
<Grid mt={2}>
|
||||||
|
<Grid container spacing={0.5} mb={1.5}>
|
||||||
|
<Grid item xs={6}>
|
||||||
|
<TextField disabled required label="심의 년도" size="small" fullWidth value={msYear} autoFocus />
|
||||||
|
</Grid>
|
||||||
|
<Grid item xs={6}>
|
||||||
|
<TextField disabled required label="심의 차수" size="small" fullWidth value={msChasu} autoFocus />
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
<Grid container spacing={0.5} mb={1.5}>
|
||||||
|
<Grid item xs={6}>
|
||||||
|
<MuiXDatePicker label="심사 시작일자" date={msSdate} setDate={setMsSdate} />
|
||||||
|
</Grid>
|
||||||
|
<Grid item xs={6}>
|
||||||
|
<MuiXMobileTimePicker label="심사 시작시간" date={`${format(toDate, 'yyyy-MM-dd')} ${msStartsi}:00`} setDate={setMsStartsi} />
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
<Grid container spacing={0.5} mb={1.5}>
|
||||||
|
<Grid item xs={6}>
|
||||||
|
<MuiXDatePicker label="심사 종료일자" date={msEdate} setDate={setMsEdate} />
|
||||||
|
</Grid>
|
||||||
|
<Grid item xs={6} />
|
||||||
|
</Grid>
|
||||||
|
<Grid container spacing={0.5} mb={1.5}>
|
||||||
|
<Grid item xs={6}>
|
||||||
|
<MuiXDatePicker label="심사 마감일자" date={msCdate} setDate={setMsCdate} />
|
||||||
|
</Grid>
|
||||||
|
<Grid item xs={6}>
|
||||||
|
<MuiXMobileTimePicker label="심사 마감시간" date={`${format(toDate, 'yyyy-MM-dd')} ${msClosesi}:00`} setDate={setMsClosesi} />
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
<Grid item container spacing={0.5} xs={12} mt={1}>
|
||||||
|
<Grid item>
|
||||||
|
<Button variant="contained" color="error" size="small" onClick={onCancel}>
|
||||||
|
취소
|
||||||
|
</Button>
|
||||||
|
</Grid>
|
||||||
|
<Grid item style={{ marginLeft: 'auto' }}>
|
||||||
|
<Button variant="contained" color="primary" size="small" onClick={onSave}>
|
||||||
|
저장
|
||||||
|
</Button>
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
JudgeDateModifyForm.propTypes = {
|
||||||
|
dateDatas: PropTypes.object.isRequired,
|
||||||
|
handleModalSave: PropTypes.func.isRequired,
|
||||||
|
setDateModify: PropTypes.func.isRequired
|
||||||
|
};
|
||||||
|
export default JudgeDateModifyForm;
|
@ -0,0 +1,44 @@
|
|||||||
|
import PropTypes from 'prop-types';
|
||||||
|
|
||||||
|
import Modal from '@mui/material/Modal';
|
||||||
|
import { IconButton } from '@mui/material';
|
||||||
|
import CloseOutlined from '@mui/icons-material/CloseOutlined';
|
||||||
|
import MainCard from 'ui-component/cards/MainCard';
|
||||||
|
|
||||||
|
const CmmModal = ({ isBackdrop = false, open, setOpen, title, children, style, callback = () => {} }) => {
|
||||||
|
const handleClose = () => {
|
||||||
|
if (callback) callback();
|
||||||
|
setOpen(false);
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div className="modalGroup">
|
||||||
|
{/* <Button onClick={handleOpen}>Grid Modal(List)</Button> */}
|
||||||
|
<Modal hideBackdrop={isBackdrop} open={open} aria-labelledby="modal-modal-title" aria-describedby="modal-modal-description">
|
||||||
|
<MainCard
|
||||||
|
sx={style}
|
||||||
|
title={title}
|
||||||
|
content
|
||||||
|
secondary={
|
||||||
|
<IconButton size="small" variant="rounded" onClick={handleClose}>
|
||||||
|
<CloseOutlined fontSize="small" />
|
||||||
|
</IconButton>
|
||||||
|
}
|
||||||
|
>
|
||||||
|
{children}
|
||||||
|
</MainCard>
|
||||||
|
</Modal>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
CmmModal.propTypes = {
|
||||||
|
isBackdrop: PropTypes.bool,
|
||||||
|
open: PropTypes.bool,
|
||||||
|
title: PropTypes.string,
|
||||||
|
children: PropTypes.node,
|
||||||
|
setOpen: PropTypes.func,
|
||||||
|
callback: PropTypes.func
|
||||||
|
};
|
||||||
|
|
||||||
|
export default CmmModal;
|
@ -0,0 +1,31 @@
|
|||||||
|
// eslint-disable-next-line import/no-extraneous-dependencies
|
||||||
|
import { ClockLoader } from 'react-spinners';
|
||||||
|
|
||||||
|
const style = {
|
||||||
|
borderRadius: '5%',
|
||||||
|
position: 'fixed',
|
||||||
|
top: '50%',
|
||||||
|
left: '50%',
|
||||||
|
transform: 'translate(-50%, -50%)',
|
||||||
|
backgroundColor: 'white',
|
||||||
|
width: 150,
|
||||||
|
height: 100,
|
||||||
|
display: 'flex',
|
||||||
|
flexDirection: 'column',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
color: '#36d7b7'
|
||||||
|
};
|
||||||
|
|
||||||
|
function Loading() {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<div style={style}>
|
||||||
|
<ClockLoader color="#36d7b7" />
|
||||||
|
<font> Process Loding... </font>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Loading;
|
@ -0,0 +1,63 @@
|
|||||||
|
import format from 'date-fns/format';
|
||||||
|
import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
|
||||||
|
import { LocalizationProvider, DateTimePicker, DatePicker, MobileTimePicker } from '@mui/x-date-pickers';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
|
||||||
|
const MuiXDateTimePicker = ({ label, date, setDate }) => (
|
||||||
|
<LocalizationProvider dateAdapter={AdapterDateFns}>
|
||||||
|
<DateTimePicker
|
||||||
|
label={label}
|
||||||
|
value={new Date(date)}
|
||||||
|
format="yyyy-MM-dd HH:mm:ss"
|
||||||
|
mask="____-__-__ __:__:__"
|
||||||
|
onChange={(newValue) => {
|
||||||
|
setDate(format(newValue, 'yyyy-MM-dd HH:mm:ss'));
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</LocalizationProvider>
|
||||||
|
);
|
||||||
|
|
||||||
|
MuiXDateTimePicker.propTypes = {
|
||||||
|
label: PropTypes.string,
|
||||||
|
date: PropTypes.string,
|
||||||
|
setDate: PropTypes.func
|
||||||
|
};
|
||||||
|
|
||||||
|
const MuiXDatePicker = ({ label, date, setDate }) => (
|
||||||
|
<LocalizationProvider dateAdapter={AdapterDateFns}>
|
||||||
|
<DatePicker
|
||||||
|
label={label}
|
||||||
|
value={new Date(date)}
|
||||||
|
format="yyyy-MM-dd"
|
||||||
|
mask="____-__-__"
|
||||||
|
onChange={(newValue) => {
|
||||||
|
setDate(format(newValue, 'yyyy-MM-dd'));
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</LocalizationProvider>
|
||||||
|
);
|
||||||
|
MuiXDatePicker.propTypes = {
|
||||||
|
label: PropTypes.string,
|
||||||
|
date: PropTypes.string,
|
||||||
|
setDate: PropTypes.func
|
||||||
|
};
|
||||||
|
|
||||||
|
const MuiXMobileTimePicker = ({ label, date, setDate }) => (
|
||||||
|
<LocalizationProvider dateAdapter={AdapterDateFns}>
|
||||||
|
<MobileTimePicker
|
||||||
|
label={label}
|
||||||
|
value={new Date(date)}
|
||||||
|
views={['hours']}
|
||||||
|
onChange={(newValue) => {
|
||||||
|
setDate(format(newValue, 'HH'));
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</LocalizationProvider>
|
||||||
|
);
|
||||||
|
MuiXMobileTimePicker.propTypes = {
|
||||||
|
label: PropTypes.string,
|
||||||
|
date: PropTypes.string,
|
||||||
|
setDate: PropTypes.func
|
||||||
|
};
|
||||||
|
|
||||||
|
export { MuiXDateTimePicker, MuiXDatePicker, MuiXMobileTimePicker };
|
@ -1,20 +0,0 @@
|
|||||||
// material-ui
|
|
||||||
import { Typography } from '@mui/material';
|
|
||||||
|
|
||||||
// project imports
|
|
||||||
import MainCard from 'ui-component/cards/MainCard';
|
|
||||||
|
|
||||||
// ==============================|| SAMPLE PAGE ||============================== //
|
|
||||||
|
|
||||||
const SamplePage = () => (
|
|
||||||
<MainCard title="Sample Card">
|
|
||||||
<Typography variant="body2">
|
|
||||||
Lorem ipsum dolor sit amen, consenter nipissing eli, sed do elusion tempos incident ut laborers et doolie magna alissa. Ut enif ad
|
|
||||||
minim venice, quin nostrum exercitation illampu laborings nisi ut liquid ex ea commons construal. Duos aube grue dolor in reprehended
|
|
||||||
in voltage veil esse colum doolie eu fujian bulla parian. Exceptive sin ocean cuspidate non president, sunk in culpa qui officiate
|
|
||||||
descent molls anim id est labours.
|
|
||||||
</Typography>
|
|
||||||
</MainCard>
|
|
||||||
);
|
|
||||||
|
|
||||||
export default SamplePage;
|
|