Compare commits
11 Commits
f502ca3524
...
8ea8a97301
| Author | SHA1 | Date |
|---|---|---|
|
|
8ea8a97301 | |
|
|
fa2d2d6fd3 | |
|
|
2e8e1f2f92 | |
|
|
4a04cab8ce | |
|
|
378611bed7 | |
|
|
611895be83 | |
|
|
6be91489cf | |
|
|
baff901cee | |
|
|
79c62396f3 | |
|
|
dee9fe01f4 | |
|
|
71e2f04bda |
|
|
@ -37,7 +37,7 @@ function SchedulesDetail(props) {
|
|||
const deleteBoardURL = `/admin/committee/progress-status/${drftSeq}`;
|
||||
|
||||
const requestOptions = {
|
||||
method: "DELETE",
|
||||
method: "POST",
|
||||
headers: {
|
||||
'Content-type': 'application/json',
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,9 @@ const useStyles = makeStyles(() => ({
|
|||
}));
|
||||
|
||||
const StyledDiv = styled.div`
|
||||
|
||||
margin-bottom: 100px;
|
||||
|
||||
.f_select.w_250 {
|
||||
@media only screen and (max-width: 768px) {
|
||||
width: 100%;
|
||||
|
|
@ -48,6 +51,13 @@ const StyledDiv = styled.div`
|
|||
margin: 0px;
|
||||
}
|
||||
}
|
||||
|
||||
.right_col {
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
top: 0px;
|
||||
text-align: right;
|
||||
}
|
||||
`;
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -9,174 +9,11 @@ import Paper from '@mui/material/Paper';
|
|||
|
||||
import ListSubheader from '@mui/material/ListSubheader';
|
||||
|
||||
import * as EgovNet from 'api/egovFetch';
|
||||
|
||||
import ReferenceCodePopupDialogCotentsHeader from './ReferenceCodePopupDialogCotentsHeader';
|
||||
import ReferenceCodePopupDialogCotentsListItem from './ReferenceCodePopupDialogCotentsListItem';
|
||||
|
||||
|
||||
|
||||
|
||||
const data = [
|
||||
{
|
||||
codeTitle: "KDS 10 00 00",
|
||||
codeName: '설계기준',
|
||||
depth: 1,
|
||||
children: [
|
||||
{
|
||||
codeTitle: "KDS 10 10 00",
|
||||
codeName: '공통편',
|
||||
depth: 2,
|
||||
children: [
|
||||
{
|
||||
codeTitle: "KDS 10 10 00",
|
||||
codeName: '공통편',
|
||||
depth: 3,
|
||||
children: [
|
||||
{
|
||||
codeTitle: "KDS 10 00 00",
|
||||
codeName: '공통 설계기준',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "KDS 10 20 00",
|
||||
codeName: '지반 설계 기준',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "KDS 12 00 00",
|
||||
codeName: '건설측량 설계기준',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "KDS 14 00 00",
|
||||
codeName: '구조 설계기준',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "KDS 17 00 00",
|
||||
codeName: '내진 설계기준',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "KDS 10 20 00",
|
||||
codeName: '시설물편',
|
||||
depth: 3,
|
||||
children: [
|
||||
{
|
||||
codeTitle: "TEST 17 00 00",
|
||||
codeName: 'test',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "TEST 17 00 00",
|
||||
codeName: 'test',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "TEST 17 00 00",
|
||||
codeName: 'test',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "TEST 17 00 00",
|
||||
codeName: 'test',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "TEST 17 00 00",
|
||||
codeName: 'test',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "TEST 17 00 00",
|
||||
codeName: 'test',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "TEST 17 00 00",
|
||||
codeName: 'test',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "TEST 17 00 00",
|
||||
codeName: 'test',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "TEST 17 00 00",
|
||||
codeName: 'test',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "TEST 17 00 00",
|
||||
codeName: 'test',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "TEST 17 00 00",
|
||||
codeName: 'test',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "TEST 17 00 00",
|
||||
codeName: 'test',
|
||||
depth: 4,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
codeTitle: "KDS 10 20 00",
|
||||
codeName: '시설물편',
|
||||
depth: 2,
|
||||
children: [
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
{ codeTitle: "KCS 20 00 00", codeName: '표준시방서', depth: 1, },
|
||||
{ codeTitle: "SMCS 40 00 00", codeName: '서울시 전문시방서', depth: 1, },
|
||||
{ codeTitle: "EXCS 50 00 00", codeName: '고속도로공사 전문시방서', depth: 1, },
|
||||
{ codeTitle: "KRCCS 60 00 00", codeName: '농업생산기반시설 전문시방서', depth: 1, },
|
||||
];
|
||||
|
||||
|
||||
const FireNav = styled(List)({
|
||||
'& .MuiListItemButton-root': {
|
||||
paddingLeft: 0,
|
||||
|
|
@ -194,12 +31,37 @@ const FireNav = styled(List)({
|
|||
|
||||
export default function ReferenceCodePopupDialogCotents() {
|
||||
|
||||
const [selectedValue, setSelectedValue] = React.useState('a');
|
||||
const [StandardCodeList, setSelectedValue] = React.useState(null);
|
||||
|
||||
const [standardCodeList, setStandardCodeList] = React.useState(null);
|
||||
|
||||
const handleChange = (event) => {
|
||||
setSelectedValue(event.target.value);
|
||||
};
|
||||
|
||||
React.useEffect(function () {
|
||||
getStandardCodeList();
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, []);
|
||||
|
||||
const requestOptions = {
|
||||
method: "GET",
|
||||
headers: {
|
||||
'Content-type': 'application/json'
|
||||
}
|
||||
}
|
||||
|
||||
const getStandardCodeList = () => {
|
||||
|
||||
EgovNet.requestFetch(`/admin/committee/progress-status/standard-code-api/list`,
|
||||
requestOptions,
|
||||
function (resp) {
|
||||
console.log('%o', resp);
|
||||
setStandardCodeList(resp.result.items);
|
||||
}
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
|
||||
return (
|
||||
|
|
@ -224,22 +86,21 @@ export default function ReferenceCodePopupDialogCotents() {
|
|||
<FireNav
|
||||
sx={{ my: 0, }}
|
||||
component="nav" disablePadding>
|
||||
<ListItemButton component="a" href="#customized-list">
|
||||
<ListItemText
|
||||
sx={{ my: 0 }}
|
||||
primary="문서번호 또는 코드명을 선택 하시면 하위 문서를 검색 하실 수 있습니다"
|
||||
primaryTypographyProps={{
|
||||
backgroundColor: '#ffffff',
|
||||
backgroundColor: '#fafafa',
|
||||
color: '#333333',
|
||||
border: '1px solid #333333',
|
||||
border: '1px solid #eaeaea',
|
||||
fontSize: 15,
|
||||
fontWeight: 'medium',
|
||||
fontWeight: 'bold',
|
||||
letterSpacing: 0,
|
||||
padding: '10px',
|
||||
borderRadius: '6px',
|
||||
marginBottom: '20px',
|
||||
}}
|
||||
/>
|
||||
</ListItemButton>
|
||||
|
||||
<List
|
||||
sx={{ width: '100%' }}
|
||||
|
|
@ -261,7 +122,7 @@ export default function ReferenceCodePopupDialogCotents() {
|
|||
}
|
||||
>
|
||||
<ReferenceCodePopupDialogCotentsListItem
|
||||
data={data}
|
||||
data={standardCodeList}
|
||||
/>
|
||||
</List>
|
||||
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ export default function ReferenceCodePopupDialogCotentsHeader() {
|
|||
fontSize: ' 16px',
|
||||
display: 'grid',
|
||||
gridAutoFlow: 'row',
|
||||
gridTemplateColumns: 'auto 160px 90px',
|
||||
gridTemplateColumns: 'auto 175px 60px',
|
||||
gap: 1,
|
||||
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -59,10 +59,10 @@ const ItemComponent = (props) => {
|
|||
}}
|
||||
>
|
||||
<Item
|
||||
sx={{paddingLeft: `${Number(Number(item.depth)-1) * 20}px`,}}
|
||||
sx={{paddingLeft: `${Number(Number(item.docLevel)-1) * 20}px`,}}
|
||||
>
|
||||
{
|
||||
item.children && item.children.length > 0
|
||||
item.children && 0 < item.children.length
|
||||
?
|
||||
<span>
|
||||
{
|
||||
|
|
@ -76,11 +76,17 @@ const ItemComponent = (props) => {
|
|||
:
|
||||
<span> <InsertDriveFileOutlinedIcon sx={{ color: '#777777', height: '30px;'}} /> </span>
|
||||
}
|
||||
{item.codeTitle}
|
||||
{item.groupTitle}
|
||||
</Item>
|
||||
<Item>{item.codeName}</Item>
|
||||
<Item>{item.groupNm}</Item>
|
||||
<Item sx={{textAlign: 'center'}}>
|
||||
{
|
||||
item.children && 0 < item.children.length
|
||||
?
|
||||
<span>-</span>
|
||||
:
|
||||
<button type="button" class="btn btn_blue_h31 px-1">선택</button>
|
||||
}
|
||||
</Item>
|
||||
</Box>
|
||||
</ListItemButton>
|
||||
|
|
@ -88,6 +94,7 @@ const ItemComponent = (props) => {
|
|||
{
|
||||
item.children &&
|
||||
item.children.map(function(item, index) {
|
||||
console.log('thkim 2024-03-21 11:29 %o', item);
|
||||
return (
|
||||
<ItemComponent item={item} index={index} openSelf={open} />
|
||||
);
|
||||
|
|
|
|||
|
|
@ -1,12 +1,24 @@
|
|||
import React, { useState, useEffect } from 'react';
|
||||
import { Link, useLocation, useNavigate } from 'react-router-dom';
|
||||
|
||||
import styled from "styled-components";
|
||||
|
||||
|
||||
import * as EgovNet from 'api/egovFetch';
|
||||
import URL from 'constants/url';
|
||||
import CODE from 'constants/code';
|
||||
|
||||
import { default as EgovLeftNav } from 'components/leftmenu/EgovLeftNavAdmin';
|
||||
|
||||
const StyledDiv = styled.div`
|
||||
.right_col {
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
top: 0px;
|
||||
text-align: right;
|
||||
}
|
||||
`;
|
||||
|
||||
function SchedulesDetail(props) {
|
||||
console.group("EgovAdminScheduleDetail");
|
||||
console.log("[Start] EgovAdminScheduleDetail ------------------------------");
|
||||
|
|
@ -60,7 +72,7 @@ function SchedulesDetail(props) {
|
|||
const deleteBoardURL = `/schedule/${schdulId}`;
|
||||
|
||||
const requestOptions = {
|
||||
method: "DELETE",
|
||||
method: "POST",
|
||||
headers: {
|
||||
'Content-type': 'application/json',
|
||||
}
|
||||
|
|
@ -90,7 +102,7 @@ function SchedulesDetail(props) {
|
|||
console.log("------------------------------EgovAdminScheduleDetail [End]");
|
||||
console.groupEnd("EgovAdminScheduleDetail");
|
||||
return (
|
||||
<div className="container">
|
||||
<StyledDiv className="container">
|
||||
<div className="c_wrap">
|
||||
{/* <!-- Location --> */}
|
||||
<div className="location">
|
||||
|
|
@ -167,7 +179,7 @@ function SchedulesDetail(props) {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</StyledDiv>
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ const useStyles = makeStyles(() => ({
|
|||
}));
|
||||
|
||||
const StyledDiv = styled.div`
|
||||
margin-bottom: 70px;
|
||||
.org-under-id {
|
||||
margin-left: 20px;
|
||||
@media only screen and (max-width: 768px) {
|
||||
|
|
@ -51,6 +52,12 @@ const StyledDiv = styled.div`
|
|||
width: 100%;
|
||||
}
|
||||
}
|
||||
.right_col {
|
||||
position: absolute;
|
||||
right: 0px;
|
||||
top: 0px;
|
||||
text-align: right;
|
||||
}
|
||||
`;
|
||||
|
||||
function SchedulesEdit(props) {
|
||||
|
|
@ -252,7 +259,7 @@ function SchedulesEdit(props) {
|
|||
}
|
||||
if (formData.get('schdulBgnde') > formData.get('schdulEndde')) {
|
||||
alert("종료일시는 시작일시보다 앞 설 수 없습니다.");
|
||||
//return false;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
@ -286,7 +293,7 @@ function SchedulesEdit(props) {
|
|||
const deleteBoardURL = `/schedule/${schdulId}`;
|
||||
|
||||
const requestOptions = {
|
||||
method: "DELETE",
|
||||
method: "POST",
|
||||
headers: {
|
||||
'Content-type': 'application/json',
|
||||
}
|
||||
|
|
|
|||
|
|
@ -155,7 +155,7 @@ function CommitteeCodeMgt(props) {
|
|||
}
|
||||
|
||||
const requestOptions = {
|
||||
method: "DELETE",
|
||||
method: "POST",
|
||||
headers: {
|
||||
'Content-type': 'application/json',
|
||||
}
|
||||
|
|
|
|||
|
|
@ -218,7 +218,7 @@ function PopupEditor(props) {
|
|||
const deleteBoardURL = `/contents/api/popup-manage/${popupId}`;
|
||||
|
||||
const requestOptions = {
|
||||
method: "DELETE",
|
||||
method: "POST",
|
||||
headers: {
|
||||
'Content-type': 'application/json',
|
||||
}
|
||||
|
|
@ -247,7 +247,7 @@ function PopupEditor(props) {
|
|||
const deleteFileURL = `/contents/api/popup-manage/file/${fileSeq}`;
|
||||
|
||||
const requestOptions = {
|
||||
method: "DELETE",
|
||||
method: "POST",
|
||||
headers: {
|
||||
'Content-type': 'application/json',
|
||||
}
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ function StandardResearchEditor(props) {
|
|||
const deleteBoardURL = `/contents/standard-research/${rsId}`;
|
||||
|
||||
const requestOptions = {
|
||||
method: "DELETE",
|
||||
method: "POST",
|
||||
headers: {
|
||||
'Content-type': 'application/json',
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3650,6 +3650,11 @@ cjs-module-lexer@^1.0.0:
|
|||
resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz"
|
||||
integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==
|
||||
|
||||
classnames@^2.2.5:
|
||||
version "2.5.1"
|
||||
resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.5.1.tgz#ba774c614be0f016da105c858e7159eae8e7687b"
|
||||
integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==
|
||||
|
||||
classnames@^2.2.6, classnames@^2.3.2:
|
||||
version "2.3.2"
|
||||
resolved "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz"
|
||||
|
|
@ -3904,6 +3909,11 @@ cosmiconfig@^7.0.0:
|
|||
path-type "^4.0.0"
|
||||
yaml "^1.10.0"
|
||||
|
||||
countup.js@^2.8.0:
|
||||
version "2.8.0"
|
||||
resolved "https://registry.yarnpkg.com/countup.js/-/countup.js-2.8.0.tgz#64951f2df3ede28839413d654d8fef28251c32a8"
|
||||
integrity sha512-f7xEhX0awl4NOElHulrl4XRfKoNH3rB+qfNSZZyjSZhaAoUk6elvhH+MNxMmlmuUJ2/QNTWPSA7U4mNtIAKljQ==
|
||||
|
||||
cross-spawn@^7.0.2, cross-spawn@^7.0.3:
|
||||
version "7.0.3"
|
||||
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
|
||||
|
|
@ -4620,6 +4630,11 @@ enhanced-resolve@^5.10.0:
|
|||
graceful-fs "^4.2.4"
|
||||
tapable "^2.2.0"
|
||||
|
||||
enquire.js@^2.1.6:
|
||||
version "2.1.6"
|
||||
resolved "https://registry.yarnpkg.com/enquire.js/-/enquire.js-2.1.6.tgz#3e8780c9b8b835084c3f60e166dbc3c2a3c89814"
|
||||
integrity sha512-/KujNpO+PT63F7Hlpu4h3pE3TokKRHN26JYmQpPyjkRD/N57R7bPDNojMXdi7uveAKjYB7yQnartCxZnFWr0Xw==
|
||||
|
||||
entities@^2.0.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz"
|
||||
|
|
@ -6875,6 +6890,13 @@ json-stable-stringify-without-jsonify@^1.0.1:
|
|||
resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
|
||||
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
|
||||
|
||||
json2mq@^0.2.0:
|
||||
version "0.2.0"
|
||||
resolved "https://registry.yarnpkg.com/json2mq/-/json2mq-0.2.0.tgz#b637bd3ba9eabe122c83e9720483aeb10d2c904a"
|
||||
integrity sha512-SzoRg7ux5DWTII9J2qkrZrqV1gt+rTaoufMxEzXbS26Uid0NwaJd123HcoB80TgubEppxxIGdNxCx50fEoEWQA==
|
||||
dependencies:
|
||||
string-convert "^0.2.0"
|
||||
|
||||
json5@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz"
|
||||
|
|
@ -8563,6 +8585,13 @@ react-copy-to-clipboard@^5.1.0:
|
|||
copy-to-clipboard "^3.3.1"
|
||||
prop-types "^15.8.1"
|
||||
|
||||
react-countup@^6.5.3:
|
||||
version "6.5.3"
|
||||
resolved "https://registry.yarnpkg.com/react-countup/-/react-countup-6.5.3.tgz#e892aa3eab2d6ba9c3cdba30bf4ed6764826d848"
|
||||
integrity sha512-udnqVQitxC7QWADSPDOxVWULkLvKUWrDapn5i53HE4DPRVgs+Y5rr4bo25qEl8jSh+0l2cToJgGMx+clxPM3+w==
|
||||
dependencies:
|
||||
countup.js "^2.8.0"
|
||||
|
||||
react-csv@^2.2.2:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.npmjs.org/react-csv/-/react-csv-2.2.2.tgz"
|
||||
|
|
@ -8781,6 +8810,17 @@ react-scripts@5.0.1:
|
|||
optionalDependencies:
|
||||
fsevents "^2.3.2"
|
||||
|
||||
react-slick@^0.30.2:
|
||||
version "0.30.2"
|
||||
resolved "https://registry.yarnpkg.com/react-slick/-/react-slick-0.30.2.tgz#b28e992f9c519bb516a0af8d37e82cb59fee08ce"
|
||||
integrity sha512-XvQJi7mRHuiU3b9irsqS9SGIgftIfdV5/tNcURTb5LdIokRA5kIIx3l4rlq2XYHfxcSntXapoRg/GxaVOM1yfg==
|
||||
dependencies:
|
||||
classnames "^2.2.5"
|
||||
enquire.js "^2.1.6"
|
||||
json2mq "^0.2.0"
|
||||
lodash.debounce "^4.0.8"
|
||||
resize-observer-polyfill "^1.5.0"
|
||||
|
||||
react-smooth@^2.0.5:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.npmjs.org/react-smooth/-/react-smooth-2.0.5.tgz"
|
||||
|
|
@ -9006,6 +9046,11 @@ requires-port@^1.0.0:
|
|||
resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz"
|
||||
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
|
||||
|
||||
resize-observer-polyfill@^1.5.0:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464"
|
||||
integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==
|
||||
|
||||
resolve-cwd@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz"
|
||||
|
|
@ -9351,6 +9396,11 @@ slash@^4.0.0:
|
|||
resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz"
|
||||
integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
|
||||
|
||||
slick-carousel@^1.8.1:
|
||||
version "1.8.1"
|
||||
resolved "https://registry.yarnpkg.com/slick-carousel/-/slick-carousel-1.8.1.tgz#a4bfb29014887bb66ce528b90bd0cda262cc8f8d"
|
||||
integrity sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==
|
||||
|
||||
sockjs@^0.3.24:
|
||||
version "0.3.24"
|
||||
resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz"
|
||||
|
|
@ -9481,6 +9531,11 @@ stop-iteration-iterator@^1.0.0:
|
|||
dependencies:
|
||||
internal-slot "^1.0.4"
|
||||
|
||||
string-convert@^0.2.0:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/string-convert/-/string-convert-0.2.1.tgz#6982cc3049fbb4cd85f8b24568b9d9bf39eeff97"
|
||||
integrity sha512-u/1tdPl4yQnPBjnVrmdLo9gtuLvELKsAoRapekWggdiQNvvvum+jYF329d84NAa660KQw7pB2n36KrIKVoXa3A==
|
||||
|
||||
string-length@^4.0.1:
|
||||
version "4.0.2"
|
||||
resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz"
|
||||
|
|
|
|||
|
|
@ -112,4 +112,42 @@ public class AdminCommitteeController extends BaseController {
|
|||
}
|
||||
|
||||
|
||||
@Operation(
|
||||
summary = "'진행현황 관리' 페이지에서 등록 또는 수정 시 '기준코드' 목록 불러오는 API",
|
||||
description = "관리자 단에서 '위원회관리' > '진행현황 관리' 페이지에서 하단 '등록' 버튼 누른 후 '기준코드'에서 보여질 기준코드 목록 불러오는 API",
|
||||
tags = {"AdminCommitteeController"}
|
||||
)
|
||||
@ApiResponses(value = {
|
||||
@ApiResponse(responseCode = "200", description = "조회 성공")
|
||||
})
|
||||
@GetMapping(value = "/progress-status/standard-code-api/list")
|
||||
public ResultVO getCommitteeProgressStatusStandardCodeApiList(
|
||||
HttpServletRequest request,
|
||||
@AuthenticationPrincipal LoginVO user
|
||||
)
|
||||
throws Exception {
|
||||
|
||||
ResultVO resultVO = new ResultVO();
|
||||
|
||||
try {
|
||||
resultVO = adminCommitteeProgressStatusService.getCommitteeProgressStatusStandardCodeApiList(resultVO, request, user);
|
||||
} catch (Exception e) {
|
||||
resultVO.setResultCode(ResponseCode.FAILED.getCode());
|
||||
resultVO.setResultMessage(e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
System.out.println(
|
||||
"\n--------------------------------------------------------------\n" +
|
||||
request.getRequestURI() + " OUT:" +
|
||||
"\n--------------------------------------------------------------\n" +
|
||||
"resultVO.toString():" + "\n" +
|
||||
resultVO.toString() + "\n" +
|
||||
"\n--------------------------------------------------------------\n"
|
||||
);
|
||||
|
||||
return resultVO;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ public class SchedulesApiController {
|
|||
@ApiResponse(responseCode = "200", description = "등록 성공"),
|
||||
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
|
||||
})
|
||||
@DeleteMapping(value = "/schedule/{scheduleId}")
|
||||
@PostMapping(value = "/schedule/{scheduleId}")
|
||||
public ResultVO deleteSchedule
|
||||
(
|
||||
@AuthenticationPrincipal LoginVO user,
|
||||
|
|
|
|||
|
|
@ -15,5 +15,7 @@ public interface AdminCommitteeProgressStatusService {
|
|||
public ResultVO deleteCommitteeProgressStatus(ResultVO resultVO, HttpServletRequest request, LoginVO user, Long drftSeq) throws Exception;
|
||||
|
||||
public ResultVO getCommitteeProgressStatusDetail(ResultVO resultVO, HttpServletRequest request, LoginVO user, Long drftSeq) throws Exception;
|
||||
public ResultVO getCommitteeProgressStatusStandardCodeApiList(ResultVO resultVO, HttpServletRequest request, LoginVO user) throws Exception;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -17,12 +17,17 @@ import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
|||
import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.json.simple.JSONArray;
|
||||
import org.json.simple.JSONObject;
|
||||
import org.json.simple.parser.JSONParser;
|
||||
|
||||
@Service("adminCommitteeProgressStatusService")
|
||||
@RequiredArgsConstructor
|
||||
public class AdminCommitteeProgressStatusServiceImpl extends EgovAbstractServiceImpl implements AdminCommitteeProgressStatusService {
|
||||
|
|
@ -245,4 +250,99 @@ public class AdminCommitteeProgressStatusServiceImpl extends EgovAbstractService
|
|||
return resultVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ResultVO getCommitteeProgressStatusStandardCodeApiList(ResultVO resultVO, HttpServletRequest request, LoginVO user) throws Exception {
|
||||
|
||||
System.out.println("\n--------------------------------------------------------------\n" +
|
||||
request.getRequestURI() + " IN:" +
|
||||
"\n--------------------------------------------------------------\n" +
|
||||
"user.getEmail():" + "\n" +
|
||||
user.getEmail() + "\n" +
|
||||
"\n--------------------------------------------------------------\n");
|
||||
long startTime = System.currentTimeMillis();
|
||||
List<Map<String, Object>> standardCodeList = tnCmtDraftRepository.getCommitteeProgressStatusStandardCodeApiList();
|
||||
Map<Integer, List<Map<String, Object>>> nodeMap = new HashMap<>();
|
||||
|
||||
// nodeMap 초기화
|
||||
for (int i = 1; i <= 6; i++) {
|
||||
nodeMap.put(i, new ArrayList<>());
|
||||
}
|
||||
|
||||
// docLevel 별로 데이터 분류
|
||||
for (Map<String, Object> standardCode : standardCodeList) {
|
||||
int nDocLevel = (int) standardCode.get("doc_level");
|
||||
nodeMap.get(nDocLevel).add(standardCode);
|
||||
}
|
||||
|
||||
JSONArray items = buildJsonTree(nodeMap, 1, null); // 재귀 호출 시작 (루트 노드부터)
|
||||
|
||||
Map<String, Object> dto = new HashMap<>();
|
||||
dto.put("items", items);
|
||||
resultVO.setResult(dto);
|
||||
resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
|
||||
resultVO.setResultMessage(ResponseCode.SUCCESS.getMessage());
|
||||
|
||||
long endTime = System.currentTimeMillis();
|
||||
long elapsedTime = endTime - startTime;
|
||||
System.out.println("처리 시간: " + elapsedTime + "ms");
|
||||
|
||||
return resultVO;
|
||||
}
|
||||
|
||||
|
||||
private JSONArray buildJsonTree(Map<Integer, List<Map<String, Object>>> nodeMap, int docLevel, Integer upperParentgroupSeq) {
|
||||
JSONArray items = new JSONArray();
|
||||
List<Map<String, Object>> currentNodes = nodeMap.get(docLevel);
|
||||
|
||||
for (Map<String, Object> node : currentNodes) {
|
||||
Integer groupSeq = (Integer) node.get("group_seq");
|
||||
Integer parentGroupSeq = (Integer) node.get("parent_group_seq");
|
||||
JSONObject item = new JSONObject();
|
||||
if( upperParentgroupSeq == null || upperParentgroupSeq.equals( parentGroupSeq) ) {
|
||||
String kcscCd = (String)node.get("kcsc_cd");
|
||||
String groupFullCd = (String) node.get("group_full_cd");
|
||||
item.put("docLevel", node.get("doc_level"));
|
||||
item.put("groupTitle", makeCode(kcscCd, groupFullCd, docLevel));
|
||||
item.put("groupNm", node.get("group_nm"));
|
||||
item.put("groupSeq", groupSeq);
|
||||
if (nodeMap.containsKey(docLevel + 1)) { // 자식 노드 존재 여부 확인
|
||||
item.put("children", buildJsonTree(nodeMap, docLevel + 1, groupSeq)); // 재귀 호출
|
||||
} else {
|
||||
item.put("children", new JSONArray());
|
||||
}
|
||||
|
||||
items.add(item);
|
||||
}
|
||||
}
|
||||
|
||||
return items;
|
||||
}
|
||||
|
||||
private String makeCode(String kcscCd, String groupFullCd, int docLevel) {
|
||||
if( docLevel < 3 ) {
|
||||
int codeLength = groupFullCd.length();
|
||||
String firstWord = kcscCd.split(" ")[0]; // 공백을 기준으로 문자열을 분리하고 첫 번째 요소를 가져옴
|
||||
|
||||
if (codeLength == 2) {
|
||||
return String.format("%s %s %s", firstWord, groupFullCd, "00 00");
|
||||
} else {
|
||||
return String.format("%s %s %s", spaceEveryTwoChars(firstWord), groupFullCd, "00");
|
||||
}
|
||||
|
||||
} else {
|
||||
return kcscCd;
|
||||
}
|
||||
}
|
||||
|
||||
public static String spaceEveryTwoChars(String input) {
|
||||
StringBuilder result = new StringBuilder();
|
||||
for (int i = 0; i < input.length(); i++) {
|
||||
result.append(input.charAt(i));
|
||||
if ((i + 1) % 2 == 0 && i != input.length() - 1) { // 짝수 번째 문자이고 마지막 문자가 아닌 경우
|
||||
result.append(" "); // 띄어쓰기 추가
|
||||
}
|
||||
}
|
||||
return result.toString();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -464,7 +464,7 @@ public class AdminConfigController extends BaseController {
|
|||
@ApiResponse(responseCode = "200", description = "등록 성공"),
|
||||
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
|
||||
})
|
||||
@DeleteMapping(value = "/committee-code-mgt/{orgId}")
|
||||
@PostMapping(value = "/committee-code-mgt/{orgId}")
|
||||
public ResultVO deleteSchedule
|
||||
(
|
||||
@AuthenticationPrincipal LoginVO user,
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ public class PopUpApiController {
|
|||
@ApiResponse(responseCode = "200", description = "등록 성공"),
|
||||
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님"),
|
||||
})
|
||||
@DeleteMapping(value = "/contents/api/popup-manage/{popupId}")
|
||||
@PostMapping(value = "/contents/api/popup-manage/{popupId}")
|
||||
public ResultVO contentsApiPopUpManageDelete
|
||||
(
|
||||
@AuthenticationPrincipal LoginVO user,
|
||||
|
|
@ -282,7 +282,7 @@ public class PopUpApiController {
|
|||
@ApiResponse(responseCode = "200", description = "등록 성공"),
|
||||
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님"),
|
||||
})
|
||||
@DeleteMapping(value = "/contents/api/popup-manage/file/{fileSeq}")
|
||||
@PostMapping(value = "/contents/api/popup-manage/file/{fileSeq}")
|
||||
public ResultVO deleteFileContentsApiPopUpManage
|
||||
(
|
||||
@AuthenticationPrincipal LoginVO user,
|
||||
|
|
|
|||
|
|
@ -164,7 +164,7 @@ public class AdminStandardResearchController {
|
|||
@ApiResponse(responseCode = "200", description = "등록 성공"),
|
||||
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님"),
|
||||
})
|
||||
@DeleteMapping(value = "/contents/standard-research/{rsId}")
|
||||
@PostMapping(value = "/contents/standard-research/{rsId}")
|
||||
public ResultVO contentsStandardResearchDelete
|
||||
(
|
||||
@AuthenticationPrincipal LoginVO user,
|
||||
|
|
|
|||
|
|
@ -282,4 +282,26 @@ public interface TnCmtDraftRepository extends JpaRepository<TnCmtDraft, Long> {
|
|||
);
|
||||
|
||||
|
||||
@Query(value =
|
||||
"select\n" +
|
||||
" tdg.group_seq,\n" +
|
||||
" tdg.kcsc_cd,\n" +
|
||||
" tdg.group_cur_cd,\n" +
|
||||
" tdg.group_nm,\n" +
|
||||
" tdg.group_full_cd,\n" +
|
||||
" tdg.doc_level,\n" +
|
||||
" tdg.parent_group_seq\n" +
|
||||
"from\n" +
|
||||
" tn_document_group tdg\n" +
|
||||
" left join tc_code_item tci on tdg.item_cd = tci.item_cd\n" +
|
||||
"where\n" +
|
||||
" tdg.use_yn = 'Y' and\n" +
|
||||
" tdg.item_cd <> '00'\n" +
|
||||
"order by \n" +
|
||||
" tdg.group_full_cd\n" +
|
||||
"limit 10000",
|
||||
nativeQuery = true)
|
||||
List<Map<String, Object>> getCommitteeProgressStatusStandardCodeApiList( );
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,10 @@ Globals.Allow.Origin = http://localhost:3000
|
|||
spring.devtools.livereload.enabled=true
|
||||
#Datasource Configuration
|
||||
spring.sql.init.encoding=utf-8
|
||||
|
||||
spring.servlet.multipart.max-file-size=20MB
|
||||
spring.servlet.multipart.max-request-size=50MB
|
||||
|
||||
#maximum-pool-size: CPU core count
|
||||
spring.datasource.hikari.maximum-pool-size=4
|
||||
#postgresql
|
||||
|
|
|
|||
|
|
@ -0,0 +1,44 @@
|
|||
# ??? ? ?? ?? properties ?? ?? ? ?? ??.
|
||||
|
||||
# Access-Control-Allow-Origin
|
||||
Globals.Allow.Origin = https://back.dbnt.co.kr
|
||||
|
||||
server.port=50688
|
||||
|
||||
spring.devtools.livereload.enabled=false
|
||||
server.error.path=/errors
|
||||
|
||||
logging.level.org.apache.tomcat: info
|
||||
logging.level.org.apache.catalina: info
|
||||
|
||||
spring.servlet.multipart.max-file-size=20MB
|
||||
spring.servlet.multipart.max-request-size=50MB
|
||||
|
||||
#Datasource Configuration
|
||||
spring.sql.init.encoding=utf-8
|
||||
#maximum-pool-size: CPU core count
|
||||
spring.datasource.hikari.maximum-pool-size=4
|
||||
#postgresql
|
||||
spring.datasource.driverClassName=org.postgresql.Driver
|
||||
spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/kcsc
|
||||
spring.datasource.username=dbnt0031
|
||||
spring.datasource.password=dbnt0928!
|
||||
|
||||
#jpa
|
||||
spring.jpa.show-sql=false
|
||||
spring.jpa.generate-ddl=false
|
||||
spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
|
||||
spring.jpa.properties.hibernate.proc.param_null_passing=true
|
||||
|
||||
# MyBatis
|
||||
mybatis.mapper-locations: mybatisMapper/*.xml
|
||||
mybatis.configuration.map-underscore-to-camel-case=true
|
||||
mybatis.type-aliases-package=com.dbnt.kcscbackend.**.entity
|
||||
logging.level.com.atoz_develop.mybatissample.repository=info
|
||||
|
||||
# File Config
|
||||
Globals.posblAtchFileSize=5242880
|
||||
Globals.fileStorePath=/kcscUploadFiles
|
||||
Globals.addedOptions=false
|
||||
|
||||
kcsc.opensearch.url=http://192.168.0.89:8090
|
||||
|
|
@ -12,6 +12,9 @@ server.error.path=/errors
|
|||
logging.level.org.apache.tomcat: info
|
||||
logging.level.org.apache.catalina: info
|
||||
|
||||
spring.servlet.multipart.max-file-size=20MB
|
||||
spring.servlet.multipart.max-request-size=50MB
|
||||
|
||||
#Datasource Configuration
|
||||
spring.sql.init.encoding=utf-8
|
||||
#maximum-pool-size: CPU core count
|
||||
|
|
|
|||
|
|
@ -11,6 +11,9 @@ server.error.path=/errors
|
|||
logging.level.org.apache.tomcat: info
|
||||
logging.level.org.apache.catalina: info
|
||||
|
||||
spring.servlet.multipart.max-file-size=20MB
|
||||
spring.servlet.multipart.max-request-size=50MB
|
||||
|
||||
#Datasource Configuration
|
||||
spring.sql.init.encoding=utf-8
|
||||
#maximum-pool-size: CPU core count
|
||||
|
|
|
|||
Loading…
Reference in New Issue