Compare commits

...

5 Commits

Author SHA1 Message Date
sjh88 2df9eda17f fix:
-Dashboard 심사자 이름 *로 변경
-심의 목록 차량번호 뒤 4자리 *로 변경
-모바일 사용 시 개별심사 데이터가 정확하게 보이지 않는 화면 개선 요청
-관리자 사용자관리 비활성 계정 복구 및 패스워드 변경 기능 추가
2 years ago
sjh88 bb8dbde9f7 style: 인쇄 문구 수정 2 years ago
sjh88 7cadb24e5a style: 자료등록 시 문구 추가 안내 2 years ago
sjh88 ad9d6e49bc fix: 사용자 심사마감일시 제거 2 years ago
sjh88 55da0f001d fix: post 통신 timeout 설정 2 years ago

65
package-lock.json generated

@ -76,6 +76,7 @@
"react-quill": "^2.0.0-beta.4", "react-quill": "^2.0.0-beta.4",
"react-redux": "^7.2.6", "react-redux": "^7.2.6",
"react-resizable": "^3.0.4", "react-resizable": "^3.0.4",
"react-responsive": "^9.0.2",
"react-router-dom": "^6.2.1", "react-router-dom": "^6.2.1",
"react-scripts": "^4.0.3", "react-scripts": "^4.0.3",
"react-slick": "^0.28.1", "react-slick": "^0.28.1",
@ -8116,6 +8117,11 @@
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}, },
"node_modules/css-mediaquery": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz",
"integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q=="
},
"node_modules/css-prefers-color-scheme": { "node_modules/css-prefers-color-scheme": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz",
@ -16327,6 +16333,14 @@
"remove-accents": "0.4.2" "remove-accents": "0.4.2"
} }
}, },
"node_modules/matchmediaquery": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz",
"integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==",
"dependencies": {
"css-mediaquery": "^0.1.2"
}
},
"node_modules/material-ui-popup-state": { "node_modules/material-ui-popup-state": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/material-ui-popup-state/-/material-ui-popup-state-2.0.1.tgz", "resolved": "https://registry.npmjs.org/material-ui-popup-state/-/material-ui-popup-state-2.0.1.tgz",
@ -21248,6 +21262,23 @@
"react": ">= 16.3" "react": ">= 16.3"
} }
}, },
"node_modules/react-responsive": {
"version": "9.0.2",
"resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-9.0.2.tgz",
"integrity": "sha512-+4CCab7z8G8glgJoRjAwocsgsv6VA2w7JPxFWHRc7kvz8mec1/K5LutNC2MG28Mn8mu6+bu04XZxHv5gyfT7xQ==",
"dependencies": {
"hyphenate-style-name": "^1.0.0",
"matchmediaquery": "^0.3.0",
"prop-types": "^15.6.1",
"shallow-equal": "^1.2.1"
},
"engines": {
"node": ">=0.10"
},
"peerDependencies": {
"react": ">=16.8.0"
}
},
"node_modules/react-router": { "node_modules/react-router": {
"version": "6.8.1", "version": "6.8.1",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.1.tgz", "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.1.tgz",
@ -23071,6 +23102,11 @@
"sha.js": "bin.js" "sha.js": "bin.js"
} }
}, },
"node_modules/shallow-equal": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
"integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
},
"node_modules/shebang-command": { "node_modules/shebang-command": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
@ -34029,6 +34065,11 @@
} }
} }
}, },
"css-mediaquery": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz",
"integrity": "sha512-COtn4EROW5dBGlE/4PiKnh6rZpAPxDeFLaEEwt4i10jpDMFt2EhQGS79QmmrO+iKCHv0PU/HrOWEhijFd1x99Q=="
},
"css-prefers-color-scheme": { "css-prefers-color-scheme": {
"version": "3.1.1", "version": "3.1.1",
"resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz",
@ -40369,6 +40410,14 @@
"remove-accents": "0.4.2" "remove-accents": "0.4.2"
} }
}, },
"matchmediaquery": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/matchmediaquery/-/matchmediaquery-0.3.1.tgz",
"integrity": "sha512-Hlk20WQHRIm9EE9luN1kjRjYXAQToHOIAHPJn9buxBwuhfTHoKUcX+lXBbxc85DVQfXYbEQ4HcwQdd128E3qHQ==",
"requires": {
"css-mediaquery": "^0.1.2"
}
},
"material-ui-popup-state": { "material-ui-popup-state": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/material-ui-popup-state/-/material-ui-popup-state-2.0.1.tgz", "resolved": "https://registry.npmjs.org/material-ui-popup-state/-/material-ui-popup-state-2.0.1.tgz",
@ -44099,6 +44148,17 @@
"react-draggable": "^4.0.3" "react-draggable": "^4.0.3"
} }
}, },
"react-responsive": {
"version": "9.0.2",
"resolved": "https://registry.npmjs.org/react-responsive/-/react-responsive-9.0.2.tgz",
"integrity": "sha512-+4CCab7z8G8glgJoRjAwocsgsv6VA2w7JPxFWHRc7kvz8mec1/K5LutNC2MG28Mn8mu6+bu04XZxHv5gyfT7xQ==",
"requires": {
"hyphenate-style-name": "^1.0.0",
"matchmediaquery": "^0.3.0",
"prop-types": "^15.6.1",
"shallow-equal": "^1.2.1"
}
},
"react-router": { "react-router": {
"version": "6.8.1", "version": "6.8.1",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.1.tgz", "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.8.1.tgz",
@ -45497,6 +45557,11 @@
"safe-buffer": "^5.0.1" "safe-buffer": "^5.0.1"
} }
}, },
"shallow-equal": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz",
"integrity": "sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA=="
},
"shebang-command": { "shebang-command": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",

@ -72,6 +72,7 @@
"react-quill": "^2.0.0-beta.4", "react-quill": "^2.0.0-beta.4",
"react-redux": "^7.2.6", "react-redux": "^7.2.6",
"react-resizable": "^3.0.4", "react-resizable": "^3.0.4",
"react-responsive": "^9.0.2",
"react-router-dom": "^6.2.1", "react-router-dom": "^6.2.1",
"react-scripts": "^4.0.3", "react-scripts": "^4.0.3",
"react-slick": "^0.28.1", "react-slick": "^0.28.1",

@ -29,8 +29,11 @@ import {
import { setRowId } from './common'; import { setRowId } from './common';
import _ from 'lodash'; import _ from 'lodash';
export async function findDashboard() { // 23.04.06 sjh 통신 오래걸리는 작업이 있을 경우 적용
const res = await axios.get(GET_DASHBOARD); const configCustom = { timeout: 300000 };
export async function findDashboard(params) {
const res = await axios.get(GET_DASHBOARD, { params });
if (res.success) { if (res.success) {
// res.data = res.data.map((d, idx) => ({ ...d, rowId: setRowId(params, idx) })); // res.data = res.data.map((d, idx) => ({ ...d, rowId: setRowId(params, idx) }));
return res; return res;
@ -168,7 +171,7 @@ export async function removeJudge(params) {
export async function saveJudgeStds(params) { export async function saveJudgeStds(params) {
// eslint-disable-next-line no-return-await // eslint-disable-next-line no-return-await
return await axios.post(SAVE_ADMIN_JUDGE_STDS, params); return await axios.post(SAVE_ADMIN_JUDGE_STDS, params, configCustom);
} }
//---------------------------------------------------------------- //----------------------------------------------------------------

@ -12,6 +12,9 @@ import {
} from 'commons/ApiUrl'; } from 'commons/ApiUrl';
import { setRowId } from './common'; import { setRowId } from './common';
// 23.04.06 sjh 통신 오래걸리는 작업이 있을 경우 적용
const configCustom = { timeout: 300000 };
// eslint-disable-next-line no-return-await // eslint-disable-next-line no-return-await
export async function findParkings(params) { export async function findParkings(params) {
const res = await axios.get(GET_PARKING_LIST, { params }); const res = await axios.get(GET_PARKING_LIST, { params });
@ -33,7 +36,7 @@ export async function findParkingJudgeTargets(params) {
export async function saveParkingJudgeTargets(params) { export async function saveParkingJudgeTargets(params) {
// eslint-disable-next-line no-return-await // eslint-disable-next-line no-return-await
return await axios.post(SAVE_PARKING_JUDGE_TARGET_LIST, params); return await axios.post(SAVE_PARKING_JUDGE_TARGET_LIST, params, configCustom);
} }
export async function removeParkingJudge(params) { export async function removeParkingJudge(params) {

@ -173,6 +173,10 @@ export const removeAlert = (confirmProcess, dismissProcess) => {
confirmAlert('삭제 하시겠습니까?', confirmProcess, dismissProcess); confirmAlert('삭제 하시겠습니까?', confirmProcess, dismissProcess);
}; };
export const updateAlert = (confirmProcess, dismissProcess) => {
confirmAlert('변경 하시겠습니까?', confirmProcess, dismissProcess);
};
export const Toast = swal.mixin({ export const Toast = swal.mixin({
toast: true, toast: true,
backdrop: true, backdrop: true,

@ -340,6 +340,7 @@ const JudgeDataNewForm = ({ scDatagb, contDocs, ingbs, handleModalSave, setOpen,
<Grid container spacing={1} mt={1}> <Grid container spacing={1} mt={1}>
<Grid item xs={12}> <Grid item xs={12}>
<Divider /> <Divider />
모든 첨부파일 용량을 더해서 용량이 200MB를 넘지 않아야 합니다. 초과할 경우 저장 오류가 발생할 있습니다.
</Grid> </Grid>
</Grid> </Grid>
<Grid container spacing={0.5} mt={1}> <Grid container spacing={0.5} mt={1}>

@ -94,28 +94,65 @@ const JudgeDataPrintForm = forwardRef((props, ref) => {
</td> </td>
</tr> </tr>
<tr> <tr>
{props.content.scDatagb === '1' && (
<td colSpan="5"> <td colSpan="5">
<b>
<br />
<br />
&nbsp;&nbsp; 거주자우선주차구역내 부정주차와 관련하여 제출하신 의견진술에 대하여 심의위원회에서 주차장법 제9조,
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;서울특별시 강남구 주차장 설치 관리 조례 제6조에 의한 주차료 부과 주차장법 제8조의2
제1항 제4호
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(주차장의 지정된 주차구획 외의 곳에 주차하는 경우) 의거하여 위반내용을 심의한 결과 위와
같이
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;결정되었음을 통보합니다.
<br />
<br />
<br />
<br />
<br />
<br />
&nbsp;&nbsp; 기타문의안내 : ARS 1544-2113, &nbsp;&nbsp;FAX : 0505-489-0440
<br /> <br />
<br /> <br />
<b>
&nbsp;&nbsp; 거주자우선주차 구역내 부정주차와 관련하여 제출하신 의견진술에 대하여 심의위원회에서 주차장법 제8조2
<br /> <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(노상주차장에서의 주차행위 제한 ) 의거하여 위반내용을 심의한 결과 위와같이 결정되었음을
통보합니다.
</b> </b>
</td>
)}
{props.content.scDatagb === '2' && (
<td colSpan="5">
<b>
<br />
<br /> <br />
&nbsp;&nbsp; 장애인주차구역내 일반차량 주차와 관련하여 제출하신 의견진술에 대하여 심의위원회에서 장애인, 노인, 임산부 등의
<br /> <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;편의 증진 보장에 관한 법률 17 제3항 제27조 제2항에 의거하여 장애인 전용 주차구역
위반 내용을 심의 결과
<br /> <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;위와 같이 결정되었음을 통보합니다.
<br /> <br />
<br /> <br />
&nbsp;&nbsp; 심의결과에 이의가 있으시면 이의신청서를 작성하여 제출하시면 단속자료와 함께 관할 법원으로 통보하여 비송사건
<br /> <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;절차법에 의한 과태료재판을 받으실 있습니다.
<br /> <br />
<br /> <br />
&nbsp;&nbsp;<b> 기타문의안내 : ARS 1544-2113, FAX : 0505-489-0440</b>
<br /> <br />
&nbsp;&nbsp; : 과태료부과 고지서 받은 60 이내
<br /> <br />
&nbsp;&nbsp; : 구청직접방문, 팩스, 인터넷
<br /> <br />
&nbsp;&nbsp; : 이의신청서, 과태료고지서, 증빙서류 첨부가능
<br />
&nbsp;&nbsp; 기타문의안내 : TEL 02)3423-6448, &nbsp;&nbsp;FAX : 02)3423-8868
<br />
<br />
<br />
</b>
</td> </td>
)}
</tr> </tr>
<tr> <tr>
<td colSpan="5" align="center" height="90"> <td colSpan="5" align="center" height="90">

@ -49,6 +49,9 @@ const JudgeDateModifyForm = ({ dateDatas, setDateModify, handleModalSave }) => {
alert.show('심사 마감일자는 필수입니다.'); alert.show('심사 마감일자는 필수입니다.');
return; return;
} }
if (msStartsi.length === 1) {
setMsStartsi(`0${msStartsi}`);
}
if (msStartsi.length < 2) { if (msStartsi.length < 2) {
alert.show('심사 시작시간은 필수입니다.'); alert.show('심사 시작시간은 필수입니다.');
return; return;

@ -136,16 +136,16 @@ const JudgeByUserReview = ({ msDatagb, menuName }) => {
valueGetter: (params) => `${params.row.msSdate} ~ ${params.row.msEdate}`, valueGetter: (params) => `${params.row.msSdate} ~ ${params.row.msEdate}`,
align: 'center' align: 'center'
}, },
{ // {
headerName: '심의 마감 일시', // headerName: ' ',
headerAlign: 'center', // headerAlign: 'center',
field: 'msCdate', // field: 'msCdate',
type: 'dateTime', // type: 'dateTime',
minWidth: 150, // minWidth: 150,
width: 200, // width: 200,
valueGetter: (params) => `${params.row.msCdate} ${params.row.msClosesi}`, // valueGetter: (params) => `${params.row.msCdate} ${params.row.msClosesi}`,
align: 'center' // align: 'center'
}, // },
{ {
headerName: '개별심사', headerName: '개별심사',
headerAlign: 'center', headerAlign: 'center',

@ -136,16 +136,16 @@ const ParkingJudgeByUserReview = () => {
valueGetter: (params) => `${params.row.msSdate} ~ ${params.row.msEdate}`, valueGetter: (params) => `${params.row.msSdate} ~ ${params.row.msEdate}`,
align: 'center' align: 'center'
}, },
{ // {
headerName: '심의 마감 일시', // headerName: ' ',
headerAlign: 'center', // headerAlign: 'center',
field: 'msCdate', // field: 'msCdate',
type: 'dateTime', // type: 'dateTime',
minWidth: 150, // minWidth: 150,
width: 200, // width: 200,
valueGetter: (params) => `${params.row.msCdate} ${params.row.msClosesi}`, // valueGetter: (params) => `${params.row.msCdate} ${params.row.msClosesi}`,
align: 'center' // align: 'center'
}, // },
{ {
headerName: '개별심사', headerName: '개별심사',
headerAlign: 'center', headerAlign: 'center',

@ -6,6 +6,8 @@ import { findJudgeImages, saveJudgeResult } from 'apis/judge';
import { SkipNext, SkipPrevious, Save } from '@mui/icons-material'; import { SkipNext, SkipPrevious, Save } from '@mui/icons-material';
import ImgItem from '../../cmm/ImgItem'; import ImgItem from '../../cmm/ImgItem';
import NumberFormat from 'react-number-format'; import NumberFormat from 'react-number-format';
// eslint-disable-next-line import/no-extraneous-dependencies
import { useMediaQuery } from 'react-responsive';
const ProcessJudge = (props) => { const ProcessJudge = (props) => {
const { rowDatas, setOpen, showAlert } = props; const { rowDatas, setOpen, showAlert } = props;
@ -19,6 +21,13 @@ const ProcessJudge = (props) => {
const [selectedResult, setSelectedResult] = useState(); const [selectedResult, setSelectedResult] = useState();
const [selectedImg, setSelectedImg] = useState({}); const [selectedImg, setSelectedImg] = useState({});
const isDesktopOrLaptop = useMediaQuery({
query: '(min-width: 1224px)'
});
const isTabletOrMobile = useMediaQuery({ query: '(max-width: 1224px)' });
const size2 = (isDesktopOrLaptop && 2) || (isTabletOrMobile && 12);
const size6 = (isDesktopOrLaptop && 6) || (isTabletOrMobile && 12);
const getImgList = (row) => { const getImgList = (row) => {
findJudgeImages(row).then((res) => { findJudgeImages(row).then((res) => {
const { arrFrecadImg, arrContadImg, arrPicadImg } = res; const { arrFrecadImg, arrContadImg, arrPicadImg } = res;
@ -94,7 +103,7 @@ const ProcessJudge = (props) => {
return ( return (
<> <>
<Grid container spacing={1}> <Grid container spacing={1}>
<Grid item xs={6}> <Grid item xs={size6}>
<ImageList cols={4}> <ImageList cols={4}>
{frecadImgs {frecadImgs
?.filter((img) => img.imgName !== '') ?.filter((img) => img.imgName !== '')
@ -117,7 +126,7 @@ const ProcessJudge = (props) => {
))} ))}
</ImageList> </ImageList>
</Grid> </Grid>
<Grid item xs={5.9} ml={0.8} border={1}> <Grid item xs={(isDesktopOrLaptop && 5.9) || (isTabletOrMobile && 12)} ml={0.8} border={1}>
<Grid container> <Grid container>
<Grid item xs={12}> <Grid item xs={12}>
{selectedImg && ( {selectedImg && (
@ -134,10 +143,10 @@ const ProcessJudge = (props) => {
</Grid> </Grid>
</Grid> </Grid>
<Grid container spacing={1} mt={1}> <Grid container spacing={1} mt={1}>
<Grid item xs={2}> <Grid item xs={size2}>
<TextField size="small" required disabled label="접수번호" fullWidth value={rowDatas[pageRef.current].msSeq} /> <TextField size="small" required disabled label="접수번호" fullWidth value={rowDatas[pageRef.current].msSeq} />
</Grid> </Grid>
<Grid item xs={2}> <Grid item xs={size2}>
<NumberFormat <NumberFormat
disabled disabled
size="small" size="small"
@ -149,10 +158,10 @@ const ProcessJudge = (props) => {
value={rowDatas[pageRef.current]?.msWdate || ''} value={rowDatas[pageRef.current]?.msWdate || ''}
/> />
</Grid> </Grid>
<Grid item xs={6}> <Grid item xs={size6}>
<TextField size="small" required disabled label="위반장소" fullWidth value={rowDatas[pageRef.current]?.msPos || ''} /> <TextField size="small" required disabled label="위반장소" fullWidth value={rowDatas[pageRef.current]?.msPos || ''} />
</Grid> </Grid>
<Grid item xs={2}> <Grid item xs={size2}>
<FormControl fullWidth> <FormControl fullWidth>
<InputLabel disabled required> <InputLabel disabled required>
심의결정 심의결정

@ -6,6 +6,8 @@ import { findParkingImages, saveParkingJudgeResult } from 'apis/judge';
import { SkipNext, SkipPrevious, Save } from '@mui/icons-material'; import { SkipNext, SkipPrevious, Save } from '@mui/icons-material';
import ImgItem from '../../cmm/ImgItem'; import ImgItem from '../../cmm/ImgItem';
import NumberFormat from 'react-number-format'; import NumberFormat from 'react-number-format';
// eslint-disable-next-line import/no-extraneous-dependencies
import { useMediaQuery } from 'react-responsive';
const ProcessParkingJudge = (props) => { const ProcessParkingJudge = (props) => {
const { rowDatas, setOpen, showAlert } = props; const { rowDatas, setOpen, showAlert } = props;
@ -19,6 +21,13 @@ const ProcessParkingJudge = (props) => {
const [selectedResult, setSelectedResult] = useState(); const [selectedResult, setSelectedResult] = useState();
const [selectedImg, setSelectedImg] = useState({}); const [selectedImg, setSelectedImg] = useState({});
const isDesktopOrLaptop = useMediaQuery({
query: '(min-width: 1224px)'
});
const isTabletOrMobile = useMediaQuery({ query: '(max-width: 1224px)' });
const size2 = (isDesktopOrLaptop && 2) || (isTabletOrMobile && 12);
const size6 = (isDesktopOrLaptop && 6) || (isTabletOrMobile && 12);
const getImgList = (row) => { const getImgList = (row) => {
findParkingImages(row?.rcMaincode).then((res) => { findParkingImages(row?.rcMaincode).then((res) => {
const { arrFrecadImg, arrContadImg, arrPicadImg } = res; const { arrFrecadImg, arrContadImg, arrPicadImg } = res;
@ -94,7 +103,7 @@ const ProcessParkingJudge = (props) => {
return ( return (
<> <>
<Grid container spacing={1}> <Grid container spacing={1}>
<Grid item xs={6}> <Grid item xs={size6}>
<ImageList cols={4}> <ImageList cols={4}>
{frecadImgs {frecadImgs
?.filter((img) => img.imgName !== '') ?.filter((img) => img.imgName !== '')
@ -117,7 +126,7 @@ const ProcessParkingJudge = (props) => {
))} ))}
</ImageList> </ImageList>
</Grid> </Grid>
<Grid item xs={5.9} ml={0.8} border={1}> <Grid item xs={(isDesktopOrLaptop && 5.9) || (isTabletOrMobile && 12)} ml={0.8} border={1}>
<Grid container spacing={1}> <Grid container spacing={1}>
<Grid item xs={12}> <Grid item xs={12}>
{selectedImg && ( {selectedImg && (
@ -134,10 +143,10 @@ const ProcessParkingJudge = (props) => {
</Grid> </Grid>
</Grid> </Grid>
<Grid container spacing={1} mt={1}> <Grid container spacing={1} mt={1}>
<Grid item xs={2}> <Grid item xs={size2}>
<TextField size="small" required disabled label="접수번호" fullWidth value={rowDatas[pageRef.current].msSeq} /> <TextField size="small" required disabled label="접수번호" fullWidth value={rowDatas[pageRef.current].msSeq} />
</Grid> </Grid>
<Grid item xs={2}> <Grid item xs={size2}>
<NumberFormat <NumberFormat
disabled disabled
size="small" size="small"
@ -149,10 +158,10 @@ const ProcessParkingJudge = (props) => {
value={rowDatas[pageRef.current]?.msWdate || ''} value={rowDatas[pageRef.current]?.msWdate || ''}
/> />
</Grid> </Grid>
<Grid item xs={6}> <Grid item xs={size6}>
<TextField size="small" required disabled label="위반장소" fullWidth value={rowDatas[pageRef.current]?.msPos || ''} /> <TextField size="small" required disabled label="위반장소" fullWidth value={rowDatas[pageRef.current]?.msPos || ''} />
</Grid> </Grid>
<Grid item xs={2}> <Grid item xs={size2}>
<FormControl fullWidth> <FormControl fullWidth>
<InputLabel disabled required> <InputLabel disabled required>
심의결정 심의결정

@ -7,9 +7,9 @@ import { Button, Divider, FormControl, Grid, InputLabel, MenuItem, Select, TextF
import 'react-quill/dist/quill.snow.css'; import 'react-quill/dist/quill.snow.css';
// project imports // project imports
import { Delete, List, Save } from '@mui/icons-material'; import { Delete, List, Save, Update } from '@mui/icons-material';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import { removeAlert, saveAlert } from '../../../commons/XitCmm'; import { removeAlert, saveAlert, updateAlert } from '../../../commons/XitCmm';
import { useAlert } from 'react-alert'; import { useAlert } from 'react-alert';
const UserManagementForm = (props) => { const UserManagementForm = (props) => {
@ -72,10 +72,16 @@ const UserManagementForm = (props) => {
isenable isenable
}; };
setOpen(false); setOpen(false);
if (isenable === '1')
removeAlert( removeAlert(
() => handleModalSave('DELETE', saveParam), () => handleModalSave('DELETE', saveParam),
() => setOpen(true) () => setOpen(true)
); );
if (isenable === '0')
updateAlert(
() => handleModalSave('DELETE', saveParam),
() => setOpen(true)
);
}; };
return ( return (
@ -96,7 +102,7 @@ const UserManagementForm = (props) => {
<Grid item sm={5.9}> <Grid item sm={5.9}>
<TextField <TextField
size="small" size="small"
disabled={!create} // disabled={!create}
required required
label="비밀번호" label="비밀번호"
type="password" type="password"
@ -176,8 +182,15 @@ const UserManagementForm = (props) => {
} }
}} }}
> >
<Button variant="contained" size="small" color="error" startIcon={<Delete />} onClick={onRemove}> <Button
삭제 variant="contained"
size="small"
color={(rowData.isenable === '0' && 'warning') || (rowData.isenable === '1' && 'error')}
startIcon={(rowData.isenable === '0' && <Update />) || (rowData.isenable === '1' && <Delete />)}
onClick={onRemove}
>
{rowData.isenable === '0' && '복구'}
{rowData.isenable === '1' && '삭제'}
</Button> </Button>
</Grid> </Grid>
)} )}

@ -12,10 +12,12 @@ import { IconFileText } from '@tabler/icons';
import { useTheme } from '@mui/material/styles'; import { useTheme } from '@mui/material/styles';
import Box from '@mui/material/Box'; import Box from '@mui/material/Box';
import { useAlert } from 'react-alert'; import { useAlert } from 'react-alert';
import useAuth from 'hooks/useAuth';
// ==============================|| DEFAULT DASHBOARD ||============================== // // ==============================|| DEFAULT DASHBOARD ||============================== //
const Dashboard = () => { const Dashboard = () => {
const { accesstype } = useAuth();
const theme = useTheme(); const theme = useTheme();
const showAlert = useAlert(); const showAlert = useAlert();
const [totalCount, setTotalCount] = useState(0); const [totalCount, setTotalCount] = useState(0);
@ -131,7 +133,7 @@ const Dashboard = () => {
// size: rowsState.pageSize // size: rowsState.pageSize
// }; // };
findDashboard().then((res) => { findDashboard({ accesstype }).then((res) => {
// console.log(res); // console.log(res);
if (res && res?.success) { if (res && res?.success) {
const rows = res.data?.pBoardList.content.map((d, idx) => ({ ...d, rowId: idx + 1 })); const rows = res.data?.pBoardList.content.map((d, idx) => ({ ...d, rowId: idx + 1 }));

Loading…
Cancel
Save