fix: 단속내용 인쇄기능 추가 및 답변 내용 수정, 심의목록 심사기간 및 마감일시 수정 기능, 심의 처리 시 에러나면 Exception나는 부분 제거 후 log insert 처리
parent
72486e1b1e
commit
64d6cf2bbc
@ -1,7 +1,7 @@
|
||||
NODE_PATH=src
|
||||
REACT_APP_MODE=production
|
||||
REACT_APP_VERSION = v0.0.1
|
||||
#REACT_APP_API_URL=http://localhost:8090
|
||||
REACT_APP_API_URL=http://localhost:8090
|
||||
#REACT_APP_API_URL=http://211.119.124.9:8090
|
||||
REACT_APP_API_URL=http://211.119.124.107:8090
|
||||
#REACT_APP_API_URL=http://211.119.124.62:8090
|
||||
REACT_APP_SERVER_TIMEOUT=60000
|
File diff suppressed because it is too large
Load Diff
@ -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,134 @@
|
||||
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">
|
||||
<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}
|
||||
<br />
|
||||
<br />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colSpan="5">
|
||||
<br />
|
||||
<br />
|
||||
<b>
|
||||
■ 거주자우선주차 구역내 부정주차와 관련하여 제출하신 의견진술에 대하여 심의위원회에서 주차장법 제8조2
|
||||
<br />
|
||||
(노상주차장에서의 주차행위 제한 등)에 의거하여 위반내용을 심의한 결과 위와같이 결정되었음을
|
||||
통보합니다.
|
||||
</b>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
<b>■ 기타문의안내 : ARS 1544-2113, FAX : 0505-489-0440</b>
|
||||
<br />
|
||||
<br />
|
||||
<br />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colSpan="5" align="center" height="90">
|
||||
<b>{format(toDate, 'yyyy년 MM월 dd일')}</b>
|
||||
<br />
|
||||
<br />
|
||||
<span className="tit_text2">
|
||||
서 울 특 별 시 강 남 구 도 시 관 리 공 단
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
);
|
||||
});
|
||||
|
||||
export default JudgeDataPrintForm;
|
@ -0,0 +1,156 @@
|
||||
import { useState } from 'react';
|
||||
|
||||
import PropTypes from 'prop-types';
|
||||
import NumberFormat from 'react-number-format';
|
||||
import { useAlert } from 'react-alert';
|
||||
|
||||
import { Grid, TextField } from '@mui/material';
|
||||
import Button from '@mui/material/Button';
|
||||
|
||||
import { saveAlert } from 'commons/XitCmm';
|
||||
|
||||
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 [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,
|
||||
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 (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}>
|
||||
<NumberFormat
|
||||
size="small"
|
||||
customInput={TextField}
|
||||
required
|
||||
label="심사 시작일자"
|
||||
format="####-##-##"
|
||||
fullWidth
|
||||
value={msSdate}
|
||||
onChange={(e) => setMsSdate(e?.target?.value)}
|
||||
/>
|
||||
</Grid>
|
||||
<Grid item xs={6}>
|
||||
<NumberFormat
|
||||
size="small"
|
||||
customInput={TextField}
|
||||
required
|
||||
label="심사 종료일자"
|
||||
format="####-##-##"
|
||||
fullWidth
|
||||
value={msEdate}
|
||||
onChange={(e) => setMsEdate(e?.target?.value)}
|
||||
/>
|
||||
</Grid>
|
||||
</Grid>
|
||||
<Grid container spacing={0.5} mb={1.5}>
|
||||
<Grid item xs={6}>
|
||||
<NumberFormat
|
||||
size="small"
|
||||
customInput={TextField}
|
||||
required
|
||||
label="심사 마감일자"
|
||||
format="####-##-##"
|
||||
fullWidth
|
||||
value={msCdate}
|
||||
onChange={(e) => setMsCdate(e?.target?.value)}
|
||||
/>
|
||||
</Grid>
|
||||
<Grid item xs={6}>
|
||||
<NumberFormat
|
||||
size="small"
|
||||
customInput={TextField}
|
||||
required
|
||||
label="심사 마감시간"
|
||||
format="##"
|
||||
fullWidth
|
||||
value={msClosesi}
|
||||
onChange={(e) => setMsClosesi(e?.target?.value)}
|
||||
/>
|
||||
</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;
|
Loading…
Reference in New Issue