Merge branch 'master' of http://118.219.150.34:50501/DBNT/kcscDev into thkim

thkim
thkim 2024-06-13 17:16:30 +09:00
commit 611895be83
25 changed files with 1090 additions and 19917 deletions

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

View File

@ -72,6 +72,10 @@ function EgovHeader({ loginUser, onChangeLogin }) {
navigate(URL.JOIN); navigate(URL.JOIN);
} }
const SearchHandler = () => {
navigate(URL.STANDARD_CODE_SEARCH);
}
function allMenuControl(){ function allMenuControl(){
setMenuDiv(!menuDiv); setMenuDiv(!menuDiv);
} }
@ -115,7 +119,7 @@ function EgovHeader({ loginUser, onChangeLogin }) {
<div className="col-10 d-flex justify-content-between"> <div className="col-10 d-flex justify-content-between">
<div className="col-11"><input type="text" className="form-control shadow-none" placeholder="검색어를 입력하세요." lang="ko" /></div> <div className="col-11"><input type="text" className="form-control shadow-none" placeholder="검색어를 입력하세요." lang="ko" /></div>
<div className="col-1 text-center"> <div className="col-1 text-center">
<button type="button" className="topsearch"></button> <button type="button" className="topsearch" onClick={SearchHandler}></button>
</div> </div>
</div> </div>
</form> </form>

View File

@ -60,6 +60,7 @@ const URL = {
STANDARD_CODE_DETAIL : "/standardCode/detail", //건설기준코드/리스트 STANDARD_CODE_DETAIL : "/standardCode/detail", //건설기준코드/리스트
STANDARD_CODE_VIEWER : "/standardCode/viewer", //건설기준코드/뷰어 STANDARD_CODE_VIEWER : "/standardCode/viewer", //건설기준코드/뷰어
STANDARD_CODE_VIEWER_LINK : "/standardCode/viewer/:linkedDocCode", //건설기준코드/뷰어/새 창 링크 STANDARD_CODE_VIEWER_LINK : "/standardCode/viewer/:linkedDocCode", //건설기준코드/뷰어/새 창 링크
STANDARD_CODE_SEARCH : "/standardCode/search", // 통합검색
//INFORM //INFORM
// INFORM : "/inform", // 알림마당 // INFORM : "/inform", // 알림마당

View File

@ -86,6 +86,7 @@ button {cursor: pointer;}
.h_30 {height: 30px;} .h_30 {height: 30px;}
.h_50 {height: 50px;} .h_50 {height: 50px;}
.h_100 {height: 100px;} .h_100 {height: 100px;}
.h_300 {height: 300px;}
.h-100 {height: 100%;} .h-100 {height: 100%;}
.f_11 {font-size: 11px;} .f_11 {font-size: 11px;}

View File

@ -22,19 +22,19 @@
.btn_red_h46 {height: 46px; border-radius: 5px; color: darkred; font-size: 15px; line-height: 46px; text-align: center; background: #ed898b; padding: 0 1rem 0 1rem !important;} .btn_red_h46 {height: 46px; border-radius: 5px; color: darkred; font-size: 15px; line-height: 46px; text-align: center; background: #ed898b; padding: 0 1rem 0 1rem !important;}
.btn_red_h46:hover {height: 46px; border-radius: 5px; color: darkred; font-size: 15px; line-height: 46px; text-align: center; border: 1px solid #ed898b; padding: 0 1rem 0 1rem !important;} .btn_red_h46:hover {height: 46px; border-radius: 5px; color: darkred; font-size: 15px; line-height: 46px; text-align: center; border: 1px solid #ed898b; padding: 0 1rem 0 1rem !important;}
.btn_blue_h32 {height: 32px; border-radius: 5px; color: #fff; font-size: 15px; line-height: 32px; text-align: center; background: #169bd5; padding: 0 1rem 0 1rem !important;} .btn_blue_h32 {height: 32px; border-radius: 5px; color: #fff; font-size: 15px; line-height: 32px; text-align: center; background: #22498E; padding: 0 1rem 0 1rem !important;}
.btn_blue_h32:hover {height: 32px; border-radius: 5px; color: #169bd5; font-size: 15px; line-height: 32px; text-align: center; border: 1px solid #169bd5; padding: 0 1rem 0 1rem !important;} .btn_blue_h32:hover {height: 32px; border-radius: 5px; color: #22498E; font-size: 15px; line-height: 32px; text-align: center; border: 1px solid #169bd5; padding: 0 1rem 0 1rem !important;}
.btn_skyblue_h32 {height: 32px; border-radius: 5px; color: #005b82; font-size: 15px; line-height: 32px; text-align: center; background: #daedf5; padding: 0 1rem 0 1rem !important;} .btn_skyblue_h32 {height: 32px; border-radius: 5px; color: #fff; font-size: 15px; line-height: 32px; text-align: center; background: #4476D2; padding: 0 1rem 0 1rem !important;}
.btn_skyblue_h32:hover {height: 32px; border-radius: 5px; color: #005b82; font-size: 15px; line-height: 32px; text-align: center; border: 1px solid #daedf5; padding: 0 1rem 0 1rem !important;} .btn_skyblue_h32:hover {height: 32px; border-radius: 5px; color: #005b82; font-size: 15px; line-height: 32px; text-align: center; border: 1px solid #4476D2; padding: 0 1rem 0 1rem !important;}
.btn_red_h32 {height: 32px; border-radius: 5px; color: darkred; font-size: 15px; line-height: 32px; text-align: center; background: #ed898b; padding: 0 1rem 0 1rem !important;} .btn_red_h32 {height: 32px; border-radius: 5px; color: #fff; font-size: 15px; line-height: 32px; text-align: center; background: #B92B2E; padding: 0 1rem 0 1rem !important;}
.btn_red_h32:hover {height: 32px; border-radius: 5px; color: darkred; font-size: 15px; line-height: 32px; text-align: center; border: 1px solid #ed898b; padding: 0 1rem 0 1rem !important;} .btn_red_h32:hover {height: 32px; border-radius: 5px; color: darkred; font-size: 15px; line-height: 32px; text-align: center; border: 1px solid #B92B2E; padding: 0 1rem 0 1rem !important;}
.btn_blue_h31 {height: 31px; border-radius: 5px; color: #fff; font-size: 15px; line-height: 31px; text-align: center; background: #169bd5; padding: 0 1rem 0 1rem !important;} .btn_blue_h31 {height: 31px; border-radius: 5px; color: #fff; font-size: 15px; line-height: 31px; text-align: center; background: #22498E; padding: 0 1rem 0 1rem !important;}
.btn_blue_h31:hover {height: 31px; border-radius: 5px; color: #169bd5; font-size: 15px; line-height: 31px; text-align: center; border: 1px solid #169bd5; padding: 0 1rem 0 1rem !important;} .btn_blue_h31:hover {height: 31px; border-radius: 5px; color: #22498E; font-size: 15px; line-height: 31px; text-align: center; border: 1px solid #169bd5; padding: 0 1rem 0 1rem !important;}
.btn_skyblue_h31 {height: 31px; border-radius: 5px; color: #005b82; font-size: 15px; line-height: 31px; text-align: center; background: #daedf5; padding: 0 1rem 0 1rem !important;} .btn_skyblue_h31 {height: 31px; border-radius: 5px; color: #fff; font-size: 15px; line-height: 31px; text-align: center; background: #4476D2; padding: 0 1rem 0 1rem !important;}
.btn_skyblue_h31:hover {height: 31px; border-radius: 5px; color: #005b82; font-size: 15px; line-height: 31px; text-align: center; border: 1px solid #daedf5; padding: 0 1rem 0 1rem !important;} .btn_skyblue_h31:hover {height: 31px; border-radius: 5px; color: #005b82; font-size: 15px; line-height: 31px; text-align: center; border: 1px solid #4476D2; padding: 0 1rem 0 1rem !important;}
.btn_red_h31 {height: 31px; border-radius: 5px; color: darkred; font-size: 15px; line-height: 31px; text-align: center; background: #ed898b; padding: 0 1rem 0 1rem !important;} .btn_red_h31 {height: 31px; border-radius: 5px; color: #fff; font-size: 15px; line-height: 31px; text-align: center; background: #B92B2E; padding: 0 1rem 0 1rem !important;}
.btn_red_h31:hover {height: 31px; border-radius: 5px; color: darkred; font-size: 15px; line-height: 31px; text-align: center; border: 1px solid #ed898b; padding: 0 1rem 0 1rem !important;} .btn_red_h31:hover {height: 31px; border-radius: 5px; color: darkred; font-size: 15px; line-height: 31px; text-align: center; border: 1px solid #B92B2E; padding: 0 1rem 0 1rem !important;}
.btn_upload {position: relative; width: 180px; height: 46px; border-radius: 5px; color: #fff; font-size: 16px; line-height: 46px; text-align: center; background: #169bd5;} .btn_upload {position: relative; width: 180px; height: 46px; border-radius: 5px; color: #fff; font-size: 16px; line-height: 46px; text-align: center; background: #169bd5;}
.btn_upload span {display: inline-block; height: 46px; line-height: 46px;} .btn_upload span {display: inline-block; height: 46px; line-height: 46px;}

View File

@ -49,28 +49,29 @@
/* 메인 */ /* 메인 */
/*.P_MAIN {position: relative; background: #f5f5f5;}*/ /*.P_MAIN {position: relative; background: #f5f5f5;}*/
/*.P_MAIN::before {content: ""; display: block; position: absolute; left: 0; top: 0; width: 100%; height: 360px; background: #fff;}*/ /*.P_MAIN::before {content: ""; display: block; position: absolute; left: 0; top: 0; width: 100%; height: 360px; background: #fff;}*/
.P_MAIN .c_wrap .topbox {width: 100%; height:490px; background: #F8F8F8; margin: 0 auto;} .P_MAIN .c_wrap .topbox {width: 100%; height:390px; background: #F8F8F8; margin: 0 auto;}
.P_MAIN .c_wrap .topbox .topbox_1 {width: 360px; height: 390px; border: 1px solid #dde2e5; border-radius: 25px; box-shadow: 0 4px 5px #ccc; background: #fff; padding: 30px;} .P_MAIN .c_wrap .topbox .topbox_1 {width: 360px; height: 340px; border: 1px solid #dde2e5; border-radius: 25px; box-shadow: 0 4px 5px #ccc; background: #fff; padding: 30px;}
.P_MAIN .c_wrap .topbox .topbox_1 .topbox_11{font-size: 22px; font-weight: 700; padding-bottom: 20px;} .P_MAIN .c_wrap .topbox .topbox_1 .topbox_11{font-size: 22px; font-weight: 700; padding-bottom: 15px;}
.P_MAIN .c_wrap .topbox .topbox_1 .topbox_12{font-size: 14px; } .P_MAIN .c_wrap .topbox .topbox_1 .topbox_12{font-size: 14px; }
.P_MAIN .c_wrap .topbox .topbox_1 .topbox_13{font-size: 12px; font-weight: 700; color: #22498E; padding-bottom: 30px;} .P_MAIN .c_wrap .topbox .topbox_1 .topbox_13{font-size: 12px; font-weight: 700; color: #22498E; padding-bottom: 5px;}
.P_MAIN .c_wrap .topbox .topbox_1 .topbox_14{font-size: 17px; font-weight: 600; line-height: 42px; white-space: nowrap;} .P_MAIN .c_wrap .topbox .topbox_1 .topbox_14{font-size: 17px; font-weight: 600; line-height: 42px; white-space: nowrap;}
.P_MAIN .c_wrap .topbox .topbox_2 {width: 630px; height: 390px; border: 1px solid #dde2e5; border-radius: 25px; box-shadow: 0 4px 5px #ccc; background: #fff; margin: 0 25px; padding: 30px;} .P_MAIN .c_wrap .topbox .topbox_2 {width: 630px; height: 340px; border: 1px solid #dde2e5; border-radius: 25px; box-shadow: 0 4px 5px #ccc; background: #fff; margin: 0 25px; padding: 30px;}
.P_MAIN .c_wrap .topbox .topbox_2 .topbox_11{font-size: 22px; font-weight: 700; padding-bottom: 20px;} .P_MAIN .c_wrap .topbox .topbox_2 .topbox_11{font-size: 22px; font-weight: 700; padding-bottom: 10px;}
.P_MAIN .c_wrap .topbox .topbox_2 .topbox_12{font-size: 19px; padding-bottom: 70px;} .P_MAIN .c_wrap .topbox .topbox_2 .topbox_12{font-size: 19px; padding-bottom: 70px;}
.P_MAIN .c_wrap .topbox .topbox_2 .topbox_13 {width: 80px; height: 80px; border-radius: 50%; background: #E2E9F6; display: flex; justify-content: center; align-items: center; margin-left: 1.2rem;} .P_MAIN .c_wrap .topbox .topbox_2 .topbox_13 {width: 80px; height: 80px; border-radius: 50%; background: #E2E9F6; display: flex; justify-content: center; align-items: center; margin-left: 1.2rem;}
.P_MAIN .c_wrap .topbox .topbox_2 .topbox_14{font-size: 16px; font-weight: 600; text-align: center; line-height: 40px; color: #222; padding: 10px 0;} .P_MAIN .c_wrap .topbox .topbox_2 .topbox_14{font-size: 16px; font-weight: 600; text-align: center; line-height: 40px; color: #222;}
.P_MAIN .c_wrap .topbox .topbox_2 .topbox_15{text-align: center; line-height: 40px;} .P_MAIN .c_wrap .topbox .topbox_2 .topbox_15{text-align: center; line-height: 40px;}
.P_MAIN .c_wrap .topbox .topbox_3 {width: 360px; height: 390px; border: 1px solid #dde2e5; border-radius: 25px; box-shadow: 0 4px 5px #ccc; background: #fff; padding: 30px;} .P_MAIN .c_wrap .topbox .topbox_3 {width: 360px; height: 340px; border: 1px solid #dde2e5; border-radius: 25px; box-shadow: 0 4px 5px #ccc; background: #fff; padding: 30px;}
.P_MAIN .c_wrap .topbox .topbox_3 .topbox_11{font-size: 22px; font-weight: 700; padding-bottom: 20px;} .P_MAIN .c_wrap .topbox .topbox_3 .topbox_11{font-size: 22px; font-weight: 700; padding-bottom: 20px;}
.P_MAIN .c_wrap .login_search {border: 1px solid #6F6F6F; border-radius: 10px; overflow: hidden;} .P_MAIN .c_wrap .login_search {border: 1px solid #6F6F6F; border-radius: 10px; overflow: hidden;}
.P_MAIN .c_wrap .login_border {border: 1px solid #6F6F6F; margin-top: 5px;}
.P_MAIN .c_wrap .login_search_word {max-height: 125px; padding: 5px; overflow-x: auto; overflow-y: auto;} .P_MAIN .c_wrap .login_search_word {max-height: 125px; padding: 5px; overflow-x: auto; overflow-y: auto;}
.P_MAIN .c_wrap .menubox {width: 100%; height:200px;} .P_MAIN .c_wrap .menubox {width: 100%; height:200px;}
.P_MAIN .c_wrap .menubox .menubox_n {padding: 0 50px;} .P_MAIN .c_wrap .menubox .menubox_n {padding: 0 50px;}
.P_MAIN .c_wrap .menubox .menu_img {width: 100px; height: 100px; border-radius: 50%; background: #E2E9F6; display: flex; justify-content: center; align-items: center;} .P_MAIN .c_wrap .menubox .menu_img {width: 100px; height: 100px; border-radius: 50%; background: #E2E9F6; display: flex; justify-content: center; align-items: center;}
.P_MAIN .c_wrap .menubox .menu_text {font-size: 16px; font-weight: 700; padding-top: 10px; justify-content: center; color: #222;} .P_MAIN .c_wrap .menubox .menu_text {font-size: 16px; font-weight: 700; padding-top: 10px; justify-content: center; color: #222;}
.P_MAIN .c_wrap .qnabox {width: 100%; height:390px; background: #F8FAFC;} .P_MAIN .c_wrap .qnabox {width: 100%; height:340px; background: #F8FAFC;}
.P_MAIN .c_wrap .qnabox .qnabox_1 {width: 1400px; height: 100px; margin:0 auto; padding: 0 10px; font-size: 35px; font-weight: 700; color: #004994;} .P_MAIN .c_wrap .qnabox .qnabox_1 {width: 1400px; height: 80px; margin:0 auto; padding: 0 10px; font-size: 35px; font-weight: 700; color: #004994;}
.P_MAIN .c_wrap .qnabox .qnabox_11 {width: 50%; font-size: 35px; font-weight: 700; color: #004994;} .P_MAIN .c_wrap .qnabox .qnabox_11 {width: 50%; font-size: 35px; font-weight: 700; color: #004994;}
.P_MAIN .c_wrap .qnabox .qnabox_12 {width: 50%; font-size: 20px; font-weight: 500; color: #6C6C6C;} .P_MAIN .c_wrap .qnabox .qnabox_12 {width: 50%; font-size: 20px; font-weight: 500; color: #6C6C6C;}
.P_MAIN .c_wrap .qnabox .qnabox_12 .rounded_circle_qna {width: 32px; height: 32px; border-radius: 50%; background: #FFF; box-shadow: 0 4px 5px #ccc; align-items: center; text-align: center; display: flex; } .P_MAIN .c_wrap .qnabox .qnabox_12 .rounded_circle_qna {width: 32px; height: 32px; border-radius: 50%; background: #FFF; box-shadow: 0 4px 5px #ccc; align-items: center; text-align: center; display: flex; }
@ -79,13 +80,15 @@
.P_MAIN .c_wrap .qnabox .qnabox_n .qnabox_n_file {background: #EBF1FF; border-radius: 10px; color: #22498E; font-size: 12px;} .P_MAIN .c_wrap .qnabox .qnabox_n .qnabox_n_file {background: #EBF1FF; border-radius: 10px; color: #22498E; font-size: 12px;}
.P_MAIN .c_wrap .qnabox .qnabox_n .qnabox_n_title {height: 100px; font-size: 18px; overflow: hidden; text-overflow: ellipsis; font-weight: 600;} .P_MAIN .c_wrap .qnabox .qnabox_n .qnabox_n_title {height: 100px; font-size: 18px; overflow: hidden; text-overflow: ellipsis; font-weight: 600;}
.P_MAIN .c_wrap .qnabox .qnabox_n .qnabox_n_date {font-size: 13px; } .P_MAIN .c_wrap .qnabox .qnabox_n .qnabox_n_date {font-size: 13px; }
.P_MAIN .c_wrap .numbox {width: 100%; height:200px; background: #4C6C84;} .P_MAIN .c_wrap .numbox {width: 100%; height:100px; background: #4C6C84;}
.P_MAIN .c_wrap .numbox .numbox_n {width: 300px; color: #fff; text-align: center;} .P_MAIN .c_wrap .numbox .numbox_n {width: 300px; color: #fff; text-align: center;}
.P_MAIN .c_wrap .numbox .num_text {font-size: 22px; font-weight: 700;} .P_MAIN .c_wrap .numbox .num_text {font-size: 16px; font-weight: 600;}
.P_MAIN .c_wrap .numbox .num_count {font-size: 40px; font-weight: 700; padding-top: 10px;} .P_MAIN .c_wrap .numbox .num_count {font-size: 25px; font-weight: 700;}
.P_MAIN .c_wrap .numbox .num_count span.unit {font-size: 22px;} .P_MAIN .c_wrap .numbox .num_count span.unit {font-size: 20px;}
.P_MAIN .c_wrap .bbsbox {width: 100%; height:430px; border-bottom: 1px solid #E6E6E6; margin: 0 auto; padding-top: 85px;} .P_MAIN .c_wrap .bbsbox {width: 100%; height:350px; border-bottom: 1px solid #E6E6E6; margin: 0 auto; padding-top: 25px;}
.P_MAIN .c_wrap .bbsbox .bbsbox_1 {width: 980px; } .P_MAIN .c_wrap .bbsbox .bbsbox_1 {width: 980px; }
.P_MAIN .c_wrap .bbsbox .bbsbox_1 .bbsbox_11 {border-bottom: 1px solid #D3D3D3; padding: 14px 0;}
.P_MAIN .c_wrap .bbsbox .bbsbox_1 .bbsbox_11 .bbsbox_11_title {font-size: 15px; color: #222;}
.P_MAIN .c_wrap .bbsbox .bbsbox_2 {width: 370px; margin-left: 50px;} .P_MAIN .c_wrap .bbsbox .bbsbox_2 {width: 370px; margin-left: 50px;}
.P_MAIN .c_wrap .bbsbox .bbsbox_2 img {max-width: 370px; border-radius: 20px; } .P_MAIN .c_wrap .bbsbox .bbsbox_2 img {max-width: 370px; border-radius: 20px; }
@ -101,7 +104,8 @@
/*.P_MAIN .colbox .left_col img {max-width: 100%; border-radius: 38px; box-shadow: 8px 8px 13px #ccc;}*/ /*.P_MAIN .colbox .left_col img {max-width: 100%; border-radius: 38px; box-shadow: 8px 8px 13px #ccc;}*/
/*.P_MAIN .colbox .right_col {width: 620px; padding-top: 25px;}*/ /*.P_MAIN .colbox .right_col {width: 620px; padding-top: 25px;}*/
/*.P_MAIN .mini_board {position: relative;}*/ /*.P_MAIN .mini_board {position: relative;}*/t
/*.P_MAIN .mini_board .tab::after {content: ""; display: block; clear: both;}*/ /*.P_MAIN .mini_board .tab::after {content: ""; display: block; clear: both;}*/
/*.P_MAIN .mini_board .tab li {float: left;}*/ /*.P_MAIN .mini_board .tab li {float: left;}*/
/*.P_MAIN .mini_board .tab li + li {margin-left: 40px;}*/ /*.P_MAIN .mini_board .tab li + li {margin-left: 40px;}*/

View File

@ -68,7 +68,7 @@ function MenuAuthMgt(props) {
<div>{item.menuTitle}</div> <div>{item.menuTitle}</div>
{checkboxs} {checkboxs}
<div className={"saveBtnDiv"}> <div className={"saveBtnDiv"}>
<button className={"btn btn_blue_h31 px-1"} onClick={()=>{editMenu(item)}}>저장</button> <button className={"btn btn_skyblue_h31 px-1"} onClick={()=>{editMenu(item)}}>저장</button>
</div> </div>
</div> </div>
); );

View File

@ -35,10 +35,10 @@ function MenuMgt({}) {
<div className={"list_item"} key={"userListDiv_"+index}> <div className={"list_item"} key={"userListDiv_"+index}>
<div>{item.menuGroup?'└ ':''}{item.menuId}</div> <div>{item.menuGroup?'└ ':''}{item.menuId}</div>
<div>{item.menuTitle}</div> <div>{item.menuTitle}</div>
<div>{item.menuUrl}</div> <div className={"text-start ps-5"}>{item.menuUrl}</div>
<div>{item.menuTypeValue}</div> <div>{item.menuTypeValue}</div>
<div> <div>
<button className={"btn btn_blue_h31 px-1"} onClick={()=>{editMenu(item)}}>수정</button> <button className={"btn btn_skyblue_h31 px-1"} onClick={()=>{editMenu(item)}}>수정</button>
</div> </div>
</div> </div>
); );

View File

@ -1,11 +1,14 @@
import React, {useState, useEffect, useRef} from 'react'; import React, {useState, useEffect, useRef} from 'react';
import {Link, useNavigate, useLocation, useParams} from 'react-router-dom'; import {Link, useNavigate, useLocation, useParams} from 'react-router-dom';
import Modal from "react-bootstrap/Modal"; import Modal from "react-bootstrap/Modal";
import Row from 'react-bootstrap/Row';
import Col from 'react-bootstrap/Col';
import * as EgovNet from 'api/egovFetch'; import * as EgovNet from 'api/egovFetch';
import URL from 'constants/url'; import URL from 'constants/url';
import CODE from 'constants/code'; import CODE from 'constants/code';
import {default as EgovLeftNav} from 'components/leftmenu/EgovLeftNavAdmin'; import {default as EgovLeftNav} from 'components/leftmenu/EgovLeftNavAdmin';
import EgovRadioButtonGroup from 'components/EgovRadioButtonGroup'; import EgovRadioButtonGroup from 'components/EgovRadioButtonGroup';
import {Form} from "react-bootstrap"; import {Form} from "react-bootstrap";
@ -259,19 +262,18 @@ function AboutSiteModal({props, reloadFunction}) {
</dl> </dl>
{/* <!-- 버튼영역 --> */} {/* <!-- 버튼영역 --> */}
<div className="board_btn_area"> <Row className="board_btn_area">
<div className="left_col btn1"> <Col>
<button type="submit" className="btn btn_skyblue_h46 w_100">저장 <button type={"button"} className="btn btn_blue_h32" onClick={()=>{reloadFunction()}}>목록</button>
</Col>
<Col className="text-end">
<button type="submit" className="btn btn_skyblue_h32">저장
</button> </button>
{modeInfo.mode === CODE.MODE_MODIFY && {modeInfo.mode === CODE.MODE_MODIFY &&
<button type={"button"} className="btn btn_skyblue_h46 w_100" onClick={()=>{deletePartnerSite(props)}}>삭제</button> <button type={"button"} className="btn btn_red_h32" onClick={()=>{deletePartnerSite(props)}}>삭제</button>
} }
</div> </Col>
</Row>
<div className="right_col btn1">
<button type={"button"} className="btn btn_blue_h46 w_100" onClick={()=>{reloadFunction()}}>목록</button>
</div>
</div>
{/* <!--// 버튼영역 --> */} {/* <!--// 버튼영역 --> */}
</Form> </Form>
</div> </div>

View File

@ -138,7 +138,7 @@ function MenuModal({savedInfo, reloadFunction}){
{savedInfo !== undefined?<Col xs={2}><button type={"button"} className={"btn btn_red_h31 px-3"} onClick={()=>{deleteMenu(savedInfo.menuId)}}>삭제</button></Col>:''} {savedInfo !== undefined?<Col xs={2}><button type={"button"} className={"btn btn_red_h31 px-3"} onClick={()=>{deleteMenu(savedInfo.menuId)}}>삭제</button></Col>:''}
<Col xs={{span: savedInfo!==undefined?8:10}}></Col> <Col xs={{span: savedInfo!==undefined?8:10}}></Col>
<Col xs={2}> <Col xs={2}>
<button type="submit" className={"btn btn_blue_h31 px-3"}>저장</button> <button type="submit" className={"btn btn_skyblue_h31 px-3"}>저장</button>
</Col> </Col>
</Row> </Row>
</Form> </Form>

View File

@ -137,20 +137,16 @@ function EgovLoginContent(props) {
<div className={"text-truncate"}>검색어</div> <div className={"text-truncate"}>검색어</div>
</div> </div>
</div> </div>
<div className="line_t"></div> <div className="pt-2"></div>
<div className="line_b"></div> <Row className={"h_30 d-flex align-items-end"}>
<Row> <Col xs={6} className={"fw-bold f_15"}>Q&A 접수현황</Col>
<Col xs={6} className={"fw-bold f_15 d-flex align-items-center"}>Q&A 접수현황</Col>
<Col xs={6} className={"text-end"}><span className={"fs-5 text-224"}>0</span> </Col> <Col xs={6} className={"text-end"}><span className={"fs-5 text-224"}>0</span> </Col>
</Row> </Row>
<div className="line_t"></div> <div className="login_border"></div>
<div className="line_b"></div> <Row className={"h_30 d-flex align-items-end"}>
<Row> <Col xs={6} className={"fw-bold f_15"}>즐겨찾기</Col>
<Col xs={6} className={"fw-bold f_15 d-flex align-items-center"}>즐겨찾기</Col>
<Col xs={6} className={"text-end text-224"}><Link to={URL.MY}><span className={"f_12"}>바로가기</span> ></Link></Col> <Col xs={6} className={"text-end text-224"}><Link to={URL.MY}><span className={"f_12"}>바로가기</span> ></Link></Col>
</Row> </Row>
<div className="line_t"></div>
<div className="line_b"></div>
</div> </div>
) : ( ) : (
<> <>
@ -166,7 +162,7 @@ function EgovLoginContent(props) {
<input type="password" className="form-control shadow-none py-3" title="비밀번호" placeholder="비밀번호" <input type="password" className="form-control shadow-none py-3" title="비밀번호" placeholder="비밀번호"
onChange={e => setUserInfo({ ...userInfo, password: e.target.value })} /> onChange={e => setUserInfo({ ...userInfo, password: e.target.value })} />
</div> </div>
<Row className="chk justify-content-between f_12 py-2"> <Row className="chk justify-content-between f_12 pt-2">
<Col xs={5}> <Col xs={5}>
<Form.Check inline label={"아이디 저장"} id={"saveid"} name={""} checked={saveIDFlag} onChange={handleSaveIDFlag}/> <Form.Check inline label={"아이디 저장"} id={"saveid"} name={""} checked={saveIDFlag} onChange={handleSaveIDFlag}/>
</Col> </Col>
@ -176,10 +172,12 @@ function EgovLoginContent(props) {
<em className="clickable" onClick={pwFindModal}>비밀번호 찾기</em> <em className="clickable" onClick={pwFindModal}>비밀번호 찾기</em>
</Col> </Col>
</Row> </Row>
<button type="button" onClick={submitFormHandler} className="btn btn-22498E w-100 f_13 py-2"> </button> <Row>
<div className="line_t"></div> <Col xs={6} className={"pe-1"}><Link to={URL.JOIN} className="btn btn-outline-secondary w-100 f_14 py-3">회원가입</Link></Col>
<div className="line_b"></div> <Col xs={6} className={"ps-1"}><button type="button" onClick={submitFormHandler} className="btn btn-22498E w-100 f_14 py-3"> </button></Col>
<Link to={URL.JOIN} className="btn btn-outline-secondary w-100 f_13">회원가입</Link> </Row>
</fieldset> </fieldset>
<Modal show={findModalState} onHide={handleClose}> <Modal show={findModalState} onHide={handleClose}>

View File

@ -12,12 +12,12 @@ import "slick-carousel/slick/slick.css";
import "slick-carousel/slick/slick-theme.css"; import "slick-carousel/slick/slick-theme.css";
import * as EgovNet from 'api/egovFetch'; import * as EgovNet from 'api/egovFetch';
import URL from 'constants/url';
import EgovLogin from "../main/EgovLogin"; import EgovLogin from "../main/EgovLogin";
import {parseJwt} from "../../utils/parseJwt"; import {parseJwt} from "../../utils/parseJwt";
import {getLocalItem, setLocalItem} from "utils/storage"; import {getLocalItem, setLocalItem} from "utils/storage";
import CODE from "../../constants/code"; import URL from 'constants/url';
import CODE from "constants/code";
function a11yProps(index) { function a11yProps(index) {
@ -41,9 +41,9 @@ function EgovMain(props) {
const handlePlusClick = () => { const handlePlusClick = () => {
const urls = [ const urls = [
URL.SUPPORT_LIST_NOCODE+'/KCSC-NOT',
URL.SUPPORT_LIST_NOCODE+'/KCSC-NTC', URL.SUPPORT_LIST_NOCODE+'/KCSC-NTC',
URL.COMMITTEE_PROGRESS, URL.COMMITTEE_PROGRESS,
URL.SUPPORT_LIST_NOCODE+'/KCSC-NOT',
URL.SUPPORT_RESEARCH, URL.SUPPORT_RESEARCH,
URL.SUPPORT_LIST_NOCODE+'/KCSC-TEC', URL.SUPPORT_LIST_NOCODE+'/KCSC-TEC',
URL.SUPPORT_LIST_NOCODE+'/KCSC-NWS' URL.SUPPORT_LIST_NOCODE+'/KCSC-NWS'
@ -220,7 +220,7 @@ function EgovMain(props) {
<div className="topbox d-flex justify-content-center align-items-center"> <div className="topbox d-flex justify-content-center align-items-center">
<div className="topbox_1"> <div className="topbox_1">
<div className="topbox_11">실시간 인기키워드</div> <div className="topbox_11">실시간 인기키워드</div>
<div className="topbox_12">현재 기준 사용자가 가장 많이 검색하는 키워드입니다.</div> {/*<div className="topbox_12">현재 기준 사용자가 가장 많이 검색하는 키워드입니다.</div>*/}
<div className="topbox_13">2024 5 9 목요일 오전 11:45</div> <div className="topbox_13">2024 5 9 목요일 오전 11:45</div>
<Row className="topbox_14"> <Row className="topbox_14">
<Col xs={6}> <Col xs={6}>
@ -241,34 +241,64 @@ function EgovMain(props) {
</div> </div>
<div className="topbox_2"> <div className="topbox_2">
<div className={"topbox_11"}>자주찾는 서비스</div> <div className={"topbox_11"}>자주찾는 서비스</div>
<div className={"topbox_12"}>버튼을 선택하시면 해당 서비스로 이동합니다.</div> {/*<div className={"topbox_12"}>버튼을 선택하시면 해당 서비스로 이동합니다.</div>*/}
<Row> <Row>
<Col> <Col>
<Link to={URL.STANDARD_CODE_LIST} className="link-wrapper"> <Link to={URL.STANDARD_CODE_LIST} className="link-wrapper">
<div className={"topbox_13"}><img src="/assets/images/ico-landing1.png" /></div> <div className={"topbox_13"}><img src="/assets/images/ico-landing1.png" /></div>
<div className={"topbox_14"}>코드검색</div> <div className={"topbox_14"}>코드검색</div>
<div className={"topbox_15"}><Button type={"button"} className={"btn btn-22498E px-3"}>바로가기</Button> </div> {/*<div className={"topbox_15"}><Button type={"button"} className={"btn btn-22498E px-3"}>바로가기</Button> </div>*/}
</Link> </Link>
</Col> </Col>
<Col> <Col>
<Link to={URL.STANDARD_CODE_INFO} className="link-wrapper"> <Link to={URL.STANDARD_CODE_INFO} className="link-wrapper">
<div className={"topbox_13"}><img src="/assets/images/ico-landing2.png" /></div> <div className={"topbox_13"}><img src="/assets/images/ico-landing2.png" /></div>
<div className={"topbox_14"}>코드안내</div> <div className={"topbox_14"}>코드안내</div>
<div className={"topbox_15"}><Button type={"button"} className={"btn btn-22498E px-3"}>바로가기</Button> </div> {/*<div className={"topbox_15"}><Button type={"button"} className={"btn btn-22498E px-3"}>바로가기</Button> </div>*/}
</Link> </Link>
</Col> </Col>
<Col> <Col>
<Link to={URL.COMMITTEE_SCHEDULE} className="link-wrapper"> <Link to={URL.COMMITTEE_SCHEDULE} className="link-wrapper">
<div className={"topbox_13"}><img src="/assets/images/ico-landing3.png" /></div> <div className={"topbox_13"}><img src="/assets/images/ico-landing3.png" /></div>
<div className={"topbox_14"}>위원회일정</div> <div className={"topbox_14"}>위원회일정</div>
<div className={"topbox_15"}><Button type={"button"} className={"btn btn-22498E px-3"}>바로가기</Button> </div> {/*<div className={"topbox_15"}><Button type={"button"} className={"btn btn-22498E px-3"}>바로가기</Button> </div>*/}
</Link> </Link>
</Col> </Col>
<Col> <Col>
<Link to={URL.STANDARD_CODE_LIST + '/5000'} className="link-wrapper"> <Link to={URL.STANDARD_CODE_LIST + '/5000'} className="link-wrapper">
<div className={"topbox_13"}><img src="/assets/images/ico-landing4.png" /></div> <div className={"topbox_13"}><img src="/assets/images/ico-landing4.png" /></div>
<div className={"topbox_14"}>전문시방서</div> <div className={"topbox_14"}>전문시방서</div>
<div className={"topbox_15"}><Button type={"button"} className={"btn btn-22498E px-3"}>바로가기</Button> </div> {/*<div className={"topbox_15"}><Button type={"button"} className={"btn btn-22498E px-3"}>바로가기</Button> </div>*/}
</Link>
</Col>
</Row>
<Row>
<Col>
<Link to={URL.STANDARD_CODE_LIST} className="link-wrapper">
<div className={"topbox_13"}><img src="/assets/images/ico-landing5.png" /></div>
<div className={"topbox_14"}>훈령/예규/지침</div>
{/*<div className={"topbox_15"}><Button type={"button"} className={"btn btn-22498E px-3"}>바로가기</Button> </div>*/}
</Link>
</Col>
<Col>
<Link to={URL.STANDARD_CODE_INFO} className="link-wrapper">
<div className={"topbox_13"}><img src="/assets/images/ico-landing6.png" /></div>
<div className={"topbox_14"}>영문건설기준</div>
{/*<div className={"topbox_15"}><Button type={"button"} className={"btn btn-22498E px-3"}>바로가기</Button> </div>*/}
</Link>
</Col>
<Col>
<Link to={URL.COMMITTEE_SCHEDULE} className="link-wrapper">
<div className={"topbox_13"}><img src="/assets/images/ico-landing8.png" /></div>
<div className={"topbox_14"}>건설기준용어</div>
{/*<div className={"topbox_15"}><Button type={"button"} className={"btn btn-22498E px-3"}>바로가기</Button> </div>*/}
</Link>
</Col>
<Col>
<Link to={URL.STANDARD_CODE_LIST + '/5000'} className="link-wrapper">
<div className={"topbox_13"}><img src="/assets/images/ico-landing10.png" /></div>
<div className={"topbox_14"}>API 서비스</div>
{/*<div className={"topbox_15"}><Button type={"button"} className={"btn btn-22498E px-3"}>바로가기</Button> </div>*/}
</Link> </Link>
</Col> </Col>
</Row> </Row>
@ -288,15 +318,97 @@ function EgovMain(props) {
</div> </div>
</div> </div>
</div> </div>
<div className="menubox d-flex justify-content-center align-items-center">
<div className="menubox_n text-center"><Link to={URL.STANDARD_CODE_OLD}><div className="menu_img"><img src="/assets/images/ico-landing5.png" /></div><div className="menu_text">훈령/예규/지침</div></Link></div>
<div className="menubox_n text-center"><Link to={URL.STANDARD_CODE_ENG}><div className="menu_img"><img src="/assets/images/ico-landing6.png" /></div><div className="menu_text">영문건설기준</div></Link></div> <div className="numbox d-flex justify-content-center align-items-center">
<div className="menubox_n text-center"><Link to={URL.STANDARD_CODE_TERM}><div className="menu_img"><img src="/assets/images/ico-landing8.png" /></div><div className="menu_text">건설기준용어</div></Link></div> <div className="numbox_n"><div className="num_text">다운로드 </div><div className="num_count"><CountUp start={0} end={334345} duration={2.5} separator="," /><span className="unit"></span></div></div>
<div className="menubox_n text-center"><Link to={URL.SUPPORT_LIST_NOCODE+'/KCSC-EVT'}><div className="menu_img"><img src="/assets/images/ico-landing7.png" /></div><div className="menu_text">주요행사</div></Link></div> <div className="numbox_n"><div className="num_text">회원가입자 </div><div className="num_count"><CountUp start={0} end={12345} duration={2.5} separator="," /><span className="unit"></span></div></div>
<div className="menubox_n text-center"><Link to={URL.SUPPORT_LIST_NOCODE+'/KCSC-INV'}><div className="menu_img"><img src="/assets/images/ico-landing9.png" /></div><div className="menu_text">수요조사</div></Link></div> <div className="numbox_n"><div className="num_text"> 평균 방문자</div><div className="num_count"><CountUp start={0} end={56427} duration={2.5} separator="," /><span className="unit"></span></div></div>
<div className="menubox_n text-center"><Link to={URL.SUPPORT_API}><div className="menu_img"><img src="/assets/images/ico-landing10.png" /></div><div className="menu_text">API 서비스</div></Link></div> <div className="numbox_n"><div className="num_text">개정고시</div><div className="num_count"><CountUp start={0} end={99875} duration={2.5} separator="," /><span className="unit"></span></div></div>
<div className="menubox_n text-center"><Link to={URL.SUPPORT_SITE}><div className="menu_img"><img src="/assets/images/ico-landing11.png" /></div><div className="menu_text">관련사이트</div></Link></div>
</div> </div>
{/*<div className="menubox d-flex justify-content-center align-items-center">*/}
{/* <div className="menubox_n text-center"><Link to={URL.STANDARD_CODE_OLD}><div className="menu_img"><img src="/assets/images/ico-landing5.png" /></div><div className="menu_text">훈령/예규/지침</div></Link></div>*/}
{/* <div className="menubox_n text-center"><Link to={URL.STANDARD_CODE_ENG}><div className="menu_img"><img src="/assets/images/ico-landing6.png" /></div><div className="menu_text">영문건설기준</div></Link></div>*/}
{/* <div className="menubox_n text-center"><Link to={URL.STANDARD_CODE_TERM}><div className="menu_img"><img src="/assets/images/ico-landing8.png" /></div><div className="menu_text">건설기준용어</div></Link></div>*/}
{/* <div className="menubox_n text-center"><Link to={URL.SUPPORT_LIST_NOCODE+'/KCSC-EVT'}><div className="menu_img"><img src="/assets/images/ico-landing7.png" /></div><div className="menu_text">주요행사</div></Link></div>*/}
{/* <div className="menubox_n text-center"><Link to={URL.SUPPORT_LIST_NOCODE+'/KCSC-INV'}><div className="menu_img"><img src="/assets/images/ico-landing9.png" /></div><div className="menu_text">수요조사</div></Link></div>*/}
{/* <div className="menubox_n text-center"><Link to={URL.SUPPORT_API}><div className="menu_img"><img src="/assets/images/ico-landing10.png" /></div><div className="menu_text">API 서비스</div></Link></div>*/}
{/* <div className="menubox_n text-center"><Link to={URL.SUPPORT_SITE}><div className="menu_img"><img src="/assets/images/ico-landing11.png" /></div><div className="menu_text">관련사이트</div></Link></div>*/}
{/*</div>*/}
<div className="bbsbox d-flex justify-content-center align-items-start">
<div className="bbsbox_1">
<Box sx={{ borderBottom: 2, borderColor: 'divider' }}>
<Tabs
value={value}
onChange={handleChange}
indicatorColor="secondary"
textColor="secondary"
>
<Tab value={0} {...a11yProps(0)} sx={{ fontSize: value === 0 ? '1.5rem' : '1rem', fontWeight: 700}} label="건설기준고시" wrapped />
<Tab value={1} {...a11yProps(1)} sx={{ fontSize: value === 1 ? '1.5rem' : '1rem', fontWeight: 700}} label="공지사항" />
<Tab value={2} {...a11yProps(2)} sx={{ fontSize: value === 2 ? '1.5rem' : '1rem', fontWeight: 700}} label="위원회 진행현황" />
<Tab value={3} {...a11yProps(3)} sx={{ fontSize: value === 3 ? '1.5rem' : '1rem', fontWeight: 700}} label="건설기준연구" />
<Tab value={4} {...a11yProps(4)} sx={{ fontSize: value === 4 ? '1.5rem' : '1rem', fontWeight: 700}} label="기술자료" />
<Tab value={5} {...a11yProps(5)} sx={{ fontSize: value === 5 ? '1.5rem' : '1rem', fontWeight: 700}} label="보도자료" />
<Tab value="" label="+" sx={{ fontSize: '1.75rem', ml: 'auto' }} onClick={handlePlusClick} />
</Tabs>
</Box>
<TabPanel value={value} index={0}>
<Row className={"bbsbox_11"}>
<Col xs={9} className={"text-truncate"}><Link to={URL.SUPPORT_DETAIL} className={"bbsbox_11_title"}>국토교통부고시_제2024-147(내진설계일반(KDS_17_10_00))_정정_고시</Link></Col>
<Col xs={2} className={"text-end"}>2024.01.23.</Col>
<Col xs={1} className={"text-end"}><img src={"/assets/images/file.png"} /></Col>
</Row>
<Row className={"bbsbox_11"}>
<Col xs={9} className={"text-truncate"}><Link to={URL.SUPPORT_DETAIL} className={"bbsbox_11_title"}>국토교통부고시_제2024-147(내진설계일반(KDS_17_10_00))_정정_고시</Link></Col>
<Col xs={2} className={"text-end"}>2024.01.23.</Col>
<Col xs={1} className={"text-end"}><img src={"/assets/images/file.png"} /></Col>
</Row>
<Row className={"bbsbox_11"}>
<Col xs={9} className={"text-truncate"}><Link to={URL.SUPPORT_DETAIL} className={"bbsbox_11_title"}>국토교통부고시_제2024-147(내진설계일반(KDS_17_10_00))_정정_고시</Link></Col>
<Col xs={2} className={"text-end"}>2024.01.23.</Col>
<Col xs={1} className={"text-end"}><img src={"/assets/images/file.png"} /></Col>
</Row>
<Row className={"bbsbox_11"}>
<Col xs={9} className={"text-truncate"}><Link to={URL.SUPPORT_DETAIL} className={"bbsbox_11_title"}>국토교통부고시_제2024-147(내진설계일반(KDS_17_10_00))_정정_고시_정정_고시_정정_고시_정정_고시_정정_고시_정정_고시_정정_고시</Link></Col>
<Col xs={2} className={"text-end"}>2024.01.23.</Col>
<Col xs={1} className={"text-end"}><img src={"/assets/images/file.png"} /></Col>
</Row>
</TabPanel>
<TabPanel value={value} index={1}>
<Row className={"bbsbox_11"}>
<Col xs={9} className={"text-truncate"}>2024 제7차 건설기준위원회</Col>
<Col xs={2} className={"text-end"}>2024.01.23.</Col>
<Col xs={1} className={"text-end"}><img src={"/assets/images/file.png"} /></Col>
</Row>
<Row className={"bbsbox_11"}>
<Col xs={9} className={"text-truncate"}>2024 제7차 건설기준위원회</Col>
<Col xs={2} className={"text-end"}>2024.01.23.</Col>
<Col xs={1} className={"text-end"}><img src={"/assets/images/file.png"} /></Col>
</Row>
<Row className={"bbsbox_11"}>
<Col xs={9} className={"text-truncate"}>2024 제7차 건설기준위원회</Col>
<Col xs={2} className={"text-end"}>2024.01.23.</Col>
<Col xs={1} className={"text-end"}><img src={"/assets/images/file.png"} /></Col>
</Row>
<Row className={"bbsbox_11"}>
<Col xs={9} className={"text-truncate"}>2024 제7차 건설기준위원회</Col>
<Col xs={2} className={"text-end"}>2024.01.23.</Col>
<Col xs={1} className={"text-end"}><img src={"/assets/images/file.png"} /></Col>
</Row></TabPanel>
<TabPanel value={value} index={2}>건설기준고시 리스트 출력</TabPanel>
<TabPanel value={value} index={3}>건설기준연구 리스트 출력</TabPanel>
<TabPanel value={value} index={4}>기술자료 리스트 출력</TabPanel>
<TabPanel value={value} index={5}>보도자료 리스트 출력</TabPanel>
</div>
<div className="bbsbox_2"><Link to={URL.ABOUT_PROMOTE}><img src="/assets/images/narae.jpg" /></Link></div>
</div>
<div className="qnabox"> <div className="qnabox">
<div className="qnabox_1 d-flex justify-content-center"> <div className="qnabox_1 d-flex justify-content-center">
<div className="qnabox_11 d-flex justify-content-start align-items-end">Q&A</div> <div className="qnabox_11 d-flex justify-content-start align-items-end">Q&A</div>
@ -313,7 +425,7 @@ function EgovMain(props) {
<Col xs={10} className={"qnabox_n_file py-1"}>00.jpg</Col> <Col xs={10} className={"qnabox_n_file py-1"}>00.jpg</Col>
<Col xs={2} className={"text-end p-0"}><img src={"/assets/images/file.png"} /></Col> <Col xs={2} className={"text-end p-0"}><img src={"/assets/images/file.png"} /></Col>
</Row> </Row>
<Row className={"qnabox_n_title pt-2"}>콘크리트 내구성 설계 평가 문의요.. 정말 되나요? 콘크리트 내구성 설계 평가 문의요.. 정말 되나요?</Row> <Row className={"qnabox_n_title pt-2"}><Link to={URL.SUPPORT_DETAIL} className={"text-secondary p-0"}>콘크리트 내구성 설계 평가 문의요.. 정말 되나요? 콘크리트 내구성 설계 평가 문의요.. 정말 되나요?</Link></Row>
<Row className={"qnabox_n_date justify-content-end"}>2024.01.23</Row> <Row className={"qnabox_n_date justify-content-end"}>2024.01.23</Row>
</div> </div>
<div className="qnabox_n"> <div className="qnabox_n">
@ -321,57 +433,29 @@ function EgovMain(props) {
<Col xs={10} className={"qnabox_n_file py-1"}>00.jpg</Col> <Col xs={10} className={"qnabox_n_file py-1"}>00.jpg</Col>
<Col xs={2} className={"text-end p-0"}><img src={"/assets/images/file.png"} /></Col> <Col xs={2} className={"text-end p-0"}><img src={"/assets/images/file.png"} /></Col>
</Row> </Row>
<Row className={"qnabox_n_title pt-2"}>콘크리트 내구성 설계 평가 문의요.. 정말 되나요? 콘크리트 내구성 설계 평가 문의요.. 정말 되나요?</Row> <Row className={"qnabox_n_title pt-2"}><Link to={URL.SUPPORT_DETAIL} className={"text-secondary p-0"}>콘크리트 내구성 설계 평가 문의요.. 정말 되나요? 콘크리트 내구성 설계 평가 문의요.. 정말 되나요?</Link></Row>
<Row className={"qnabox_n_date justify-content-end"}>2024.01.23</Row></div> <Row className={"qnabox_n_date justify-content-end"}>2024.01.23</Row>
</div>
<div className="qnabox_n"> <div className="qnabox_n">
<Row> <Row>
<Col xs={10} className={"qnabox_n_file py-1"}>00.jpg</Col> <Col xs={10} className={"qnabox_n_file py-1"}>00.jpg</Col>
<Col xs={2} className={"text-end p-0"}><img src={"/assets/images/file.png"} /></Col> <Col xs={2} className={"text-end p-0"}><img src={"/assets/images/file.png"} /></Col>
</Row> </Row>
<Row className={"qnabox_n_title pt-2"}>콘크리트 내구성 설계 평가 문의요.. 정말 되나요? 콘크리트 내구성 설계 평가 문의요.. 정말 되나요?</Row> <Row className={"qnabox_n_title pt-2"}><Link to={URL.SUPPORT_DETAIL} className={"text-secondary p-0"}>콘크리트 내구성 설계 평가 문의요.. 정말 되나요? 콘크리트 내구성 설계 평가 문의요.. 정말 되나요?</Link></Row>
<Row className={"qnabox_n_date justify-content-end"}>2024.01.23</Row></div> <Row className={"qnabox_n_date justify-content-end"}>2024.01.23</Row>
</div>
<div className="qnabox_n"> <div className="qnabox_n">
<Row> <Row>
<Col xs={10} className={"qnabox_n_file py-1"}>00.jpg</Col> <Col xs={10} className={"qnabox_n_file py-1"}>00.jpg</Col>
<Col xs={2} className={"text-end p-0"}><img src={"/assets/images/file.png"} /></Col> <Col xs={2} className={"text-end p-0"}><img src={"/assets/images/file.png"} /></Col>
</Row> </Row>
<Row className={"qnabox_n_title pt-2"}>콘크리트 내구성 설계 평가 문의요.. 정말 되나요? 콘크리트 내구성 설계 평가 문의요.. 정말 되나요?</Row> <Row className={"qnabox_n_title pt-2"}><Link to={URL.SUPPORT_DETAIL} className={"text-secondary p-0"}>콘크리트 내구성 설계 평가 문의요.. 정말 되나요? 콘크리트 내구성 설계 평가 문의요.. 정말 되나요?</Link></Row>
<Row className={"qnabox_n_date justify-content-end"}>2024.01.23</Row></div> <Row className={"qnabox_n_date justify-content-end"}>2024.01.23</Row>
</div> </div>
</div> </div>
<div className="numbox d-flex justify-content-center align-items-center">
<div className="numbox_n"><div className="num_text">다운로드 </div><div className="num_count"><CountUp start={0} end={334345} duration={2.5} separator="," /><span className="unit"></span></div></div>
<div className="numbox_n"><div className="num_text">회원가입자 </div><div className="num_count"><CountUp start={0} end={12345} duration={2.5} separator="," /><span className="unit"></span></div></div>
<div className="numbox_n"><div className="num_text"> 편균 방문자</div><div className="num_count"><CountUp start={0} end={56427} duration={2.5} separator="," /><span className="unit"></span></div></div>
<div className="numbox_n"><div className="num_text">개정고시</div><div className="num_count"><CountUp start={0} end={99875} duration={2.5} separator="," /><span className="unit"></span></div></div>
</div>
<div className="bbsbox d-flex justify-content-center align-items-start">
<div className="bbsbox_1">
<Box sx={{ borderBottom: 2, borderColor: 'divider' }}>
<Tabs
value={value}
onChange={handleChange}
indicatorColor="secondary"
textColor="secondary"
>
<Tab value={0} {...a11yProps(0)} sx={{ fontSize: value === 0 ? '1.5rem' : '1rem', fontWeight: 700}} label="공지사항" wrapped />
<Tab value={1} {...a11yProps(1)} sx={{ fontSize: value === 1 ? '1.5rem' : '1rem', fontWeight: 700}} label="위원회 진행현황" />
<Tab value={2} {...a11yProps(2)} sx={{ fontSize: value === 2 ? '1.5rem' : '1rem', fontWeight: 700}} label="건설기준고시" />
<Tab value={3} {...a11yProps(3)} sx={{ fontSize: value === 3 ? '1.5rem' : '1rem', fontWeight: 700}} label="건설기준연구" />
<Tab value={4} {...a11yProps(4)} sx={{ fontSize: value === 4 ? '1.5rem' : '1rem', fontWeight: 700}} label="기술자료" />
<Tab value={5} {...a11yProps(5)} sx={{ fontSize: value === 5 ? '1.5rem' : '1rem', fontWeight: 700}} label="보도자료" />
<Tab value="" label="+" sx={{ fontSize: '1.75rem', ml: 'auto' }} onClick={handlePlusClick} />
</Tabs>
</Box>
<TabPanel value={value} index={0}>Item 0</TabPanel>
<TabPanel value={value} index={1}>Item 1</TabPanel>
<TabPanel value={value} index={2}>Item 2</TabPanel>
<TabPanel value={value} index={3}>Item 3</TabPanel>
<TabPanel value={value} index={4}>Item 4</TabPanel>
<TabPanel value={value} index={5}>Item 5</TabPanel>
</div>
<div className="bbsbox_2"><Link to={URL.ABOUT_PROMOTE}><img src="/assets/images/narae.jpg" /></Link></div>
</div> </div>
<div className="bannerbox"> <div className="bannerbox">
<Slider {...settings}> <Slider {...settings}>
{banners.map((banner, index) => ( {banners.map((banner, index) => (

View File

@ -0,0 +1,14 @@
import React, { useState } from 'react';
import {Link, useLocation, useNavigate} from 'react-router-dom';
import * as EgovNet from 'api/egovFetch';
function StandardCodeSeearch(){
return (
<div>통합검색 페이지</div>
);
}
export default StandardCodeSeearch;

View File

@ -59,7 +59,7 @@ import StandardCodeInfo from "../pages/standardCode/info/StandardCodeInfo";
import StandardCodeTerm from "pages/standardCode/StandardCodeTerm"; import StandardCodeTerm from "pages/standardCode/StandardCodeTerm";
import StandardCodeEng from "pages/standardCode/StandardCodeEng"; import StandardCodeEng from "pages/standardCode/StandardCodeEng";
import StandardCodeOld from "pages/standardCode/StandardCodeOld"; import StandardCodeOld from "pages/standardCode/StandardCodeOld";
import StandardCodeSearch from "pages/standardCode/StandardCodeSearch";
//INFORM //INFORM
// import EgovDailyList from 'pages/inform/daily/EgovDailyList'; // import EgovDailyList from 'pages/inform/daily/EgovDailyList';
@ -303,6 +303,7 @@ const SecondRoutes = () => {
<Route path={URL.STANDARD_CODE_TERM} element={<StandardCodeTerm />} /> <Route path={URL.STANDARD_CODE_TERM} element={<StandardCodeTerm />} />
<Route path={URL.STANDARD_CODE_ENG} element={<StandardCodeEng />} /> <Route path={URL.STANDARD_CODE_ENG} element={<StandardCodeEng />} />
<Route path={URL.STANDARD_CODE_OLD} element={<StandardCodeOld />} /> <Route path={URL.STANDARD_CODE_OLD} element={<StandardCodeOld />} />
<Route path={URL.STANDARD_CODE_SEARCH} element={<StandardCodeSearch />} />
{/*기준코드리스트*/} {/*기준코드리스트*/}

View File

@ -44,7 +44,7 @@ import java.util.Map;
@RestController @RestController
@RequiredArgsConstructor @RequiredArgsConstructor
@RequestMapping("/admin/config") @RequestMapping("/admin/config")
@Tag(name="AdminConfigController", description = "사이트관리 환결설정 메뉴 컨트롤러") @Tag(name = "AdminConfigController", description = "사이트관리 환결설정 메뉴 컨트롤러")
public class AdminConfigController extends BaseController { public class AdminConfigController extends BaseController {
private final ConfigService configService; private final ConfigService configService;
@ -64,7 +64,7 @@ public class AdminConfigController extends BaseController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
}) })
@RequestMapping(method = RequestMethod.GET, value = "/base-code-mgt/code-grp") @RequestMapping(method = RequestMethod.GET, value = "/base-code-mgt/code-grp")
public ResultVO getCodeGrp() throws Exception{ public ResultVO getCodeGrp() throws Exception {
ResultVO resultVO = new ResultVO(); ResultVO resultVO = new ResultVO();
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
resultMap.put("codeGrpList", configService.selectCodeGrpList()); resultMap.put("codeGrpList", configService.selectCodeGrpList());
@ -83,26 +83,26 @@ public class AdminConfigController extends BaseController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
}) })
@RequestMapping(method = RequestMethod.POST, value = "/base-code-mgt/code-grp", consumes = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(method = RequestMethod.POST, value = "/base-code-mgt/code-grp", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResultVO addCodeGrp(@RequestBody TcCodeGrp codeGrp, @AuthenticationPrincipal LoginVO user) throws Exception{ public ResultVO addCodeGrp(@RequestBody TcCodeGrp codeGrp, @AuthenticationPrincipal LoginVO user) throws Exception {
ResultVO resultVO = new ResultVO(); ResultVO resultVO = new ResultVO();
if(user == null){ if (user == null) {
resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode()); resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode());
}else{ } else {
if(!user.getUserSe().equals("ACC_TP01")){ if (!user.getUserSe().equals("ACC_TP01")) {
resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode()); resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode());
resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage()); resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage());
}else if(codeGrp.getGrpCd().isEmpty()){ } else if (codeGrp.getGrpCd().isEmpty()) {
resultVO.setResultCode(ResponseCode.INPUT_CHECK_ERROR.getCode()); resultVO.setResultCode(ResponseCode.INPUT_CHECK_ERROR.getCode());
resultVO.setResultMessage(ResponseCode.INPUT_CHECK_ERROR.getMessage()); resultVO.setResultMessage(ResponseCode.INPUT_CHECK_ERROR.getMessage());
}else{ } else {
codeGrp.setFrstCrtDt(LocalDateTime.now()); codeGrp.setFrstCrtDt(LocalDateTime.now());
codeGrp.setFrstCrtId(user.getId()); codeGrp.setFrstCrtId(user.getId());
codeGrp.setUseYn("Y"); codeGrp.setUseYn("Y");
String result = configService.addCodeGrp(codeGrp); String result = configService.addCodeGrp(codeGrp);
if(result.equals("isSaved")){ if (result.equals("isSaved")) {
resultVO.setResultCode(ResponseCode.SAVE_ERROR.getCode()); resultVO.setResultCode(ResponseCode.SAVE_ERROR.getCode());
resultVO.setResultMessage("중복되는 코드그룹이 있습니다."); resultVO.setResultMessage("중복되는 코드그룹이 있습니다.");
}else{ } else {
resultVO.setResultCode(ResponseCode.SUCCESS.getCode()); resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
} }
} }
@ -121,24 +121,24 @@ public class AdminConfigController extends BaseController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
}) })
@RequestMapping(method = RequestMethod.PUT, value = "/base-code-mgt/code-grp", consumes = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(method = RequestMethod.PUT, value = "/base-code-mgt/code-grp", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResultVO modifyCodeGrp(@RequestBody TcCodeGrp codeGrp, @AuthenticationPrincipal LoginVO user) throws Exception{ public ResultVO modifyCodeGrp(@RequestBody TcCodeGrp codeGrp, @AuthenticationPrincipal LoginVO user) throws Exception {
ResultVO resultVO = new ResultVO(); ResultVO resultVO = new ResultVO();
if(user == null){ if (user == null) {
resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode()); resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode());
}else{ } else {
if(!user.getUserSe().equals("ACC_TP01")){ if (!user.getUserSe().equals("ACC_TP01")) {
resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode()); resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode());
resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage()); resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage());
}else if(codeGrp.getGrpCd().isEmpty()){ } else if (codeGrp.getGrpCd().isEmpty()) {
resultVO.setResultCode(ResponseCode.INPUT_CHECK_ERROR.getCode()); resultVO.setResultCode(ResponseCode.INPUT_CHECK_ERROR.getCode());
resultVO.setResultMessage(ResponseCode.INPUT_CHECK_ERROR.getMessage()); resultVO.setResultMessage(ResponseCode.INPUT_CHECK_ERROR.getMessage());
}else{ } else {
codeGrp.setLastChgDt(LocalDateTime.now()); codeGrp.setLastChgDt(LocalDateTime.now());
codeGrp.setLastChgId(user.getId()); codeGrp.setLastChgId(user.getId());
String result = configService.modifyCodeGrp(codeGrp); String result = configService.modifyCodeGrp(codeGrp);
if(result.equals("modified")){ if (result.equals("modified")) {
resultVO.setResultCode(ResponseCode.SUCCESS.getCode()); resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
}else{ } else {
resultVO.setResultCode(ResponseCode.SAVE_ERROR.getCode()); resultVO.setResultCode(ResponseCode.SAVE_ERROR.getCode());
} }
} }
@ -156,7 +156,7 @@ public class AdminConfigController extends BaseController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
}) })
@RequestMapping(method = RequestMethod.GET, value = "/base-code-mgt/code-item") @RequestMapping(method = RequestMethod.GET, value = "/base-code-mgt/code-item")
public ResultVO getCodeItem(String grpCd) throws Exception{ public ResultVO getCodeItem(String grpCd) throws Exception {
ResultVO resultVO = new ResultVO(); ResultVO resultVO = new ResultVO();
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
resultMap.put("codeItemList", configService.selectCodeItemList(grpCd)); resultMap.put("codeItemList", configService.selectCodeItemList(grpCd));
@ -175,26 +175,26 @@ public class AdminConfigController extends BaseController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
}) })
@RequestMapping(method = RequestMethod.POST, value = "/base-code-mgt/code-item", consumes = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(method = RequestMethod.POST, value = "/base-code-mgt/code-item", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResultVO addCodeItem(@RequestBody TcCodeItem codeItem, @AuthenticationPrincipal LoginVO user) throws Exception{ public ResultVO addCodeItem(@RequestBody TcCodeItem codeItem, @AuthenticationPrincipal LoginVO user) throws Exception {
ResultVO resultVO = new ResultVO(); ResultVO resultVO = new ResultVO();
if(user == null){ if (user == null) {
resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode()); resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode());
}else{ } else {
if(!user.getUserSe().equals("ACC_TP01")){ if (!user.getUserSe().equals("ACC_TP01")) {
resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode()); resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode());
resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage()); resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage());
}else if(codeItem.getGrpCd()==null || codeItem.getGrpCd().isEmpty()){ } else if (codeItem.getGrpCd() == null || codeItem.getGrpCd().isEmpty()) {
resultVO.setResultCode(ResponseCode.INPUT_CHECK_ERROR.getCode()); resultVO.setResultCode(ResponseCode.INPUT_CHECK_ERROR.getCode());
resultVO.setResultMessage(ResponseCode.INPUT_CHECK_ERROR.getMessage()); resultVO.setResultMessage(ResponseCode.INPUT_CHECK_ERROR.getMessage());
}else{ } else {
codeItem.setFrstCrtDt(LocalDateTime.now()); codeItem.setFrstCrtDt(LocalDateTime.now());
codeItem.setFrstCrtId(user.getId()); codeItem.setFrstCrtId(user.getId());
codeItem.setUseYn("Y"); codeItem.setUseYn("Y");
String result = configService.addCodeItem(codeItem); String result = configService.addCodeItem(codeItem);
if(result.equals("isSaved")){ if (result.equals("isSaved")) {
resultVO.setResultCode(ResponseCode.SAVE_ERROR.getCode()); resultVO.setResultCode(ResponseCode.SAVE_ERROR.getCode());
resultVO.setResultMessage("중복되는 코드가 있습니다."); resultVO.setResultMessage("중복되는 코드가 있습니다.");
}else{ } else {
resultVO.setResultCode(ResponseCode.SUCCESS.getCode()); resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
} }
} }
@ -213,24 +213,24 @@ public class AdminConfigController extends BaseController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
}) })
@RequestMapping(method = RequestMethod.PUT, value = "/base-code-mgt/code-item", consumes = MediaType.APPLICATION_JSON_VALUE) @RequestMapping(method = RequestMethod.PUT, value = "/base-code-mgt/code-item", consumes = MediaType.APPLICATION_JSON_VALUE)
public ResultVO modifyCodeItem(@RequestBody TcCodeItem codeItem, @AuthenticationPrincipal LoginVO user) throws Exception{ public ResultVO modifyCodeItem(@RequestBody TcCodeItem codeItem, @AuthenticationPrincipal LoginVO user) throws Exception {
ResultVO resultVO = new ResultVO(); ResultVO resultVO = new ResultVO();
if(user == null){ if (user == null) {
resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode()); resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode());
}else{ } else {
if(!user.getUserSe().equals("ACC_TP01")){ if (!user.getUserSe().equals("ACC_TP01")) {
resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode()); resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode());
resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage()); resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage());
}else if(codeItem.getGrpCd().isEmpty()){ } else if (codeItem.getGrpCd().isEmpty()) {
resultVO.setResultCode(ResponseCode.INPUT_CHECK_ERROR.getCode()); resultVO.setResultCode(ResponseCode.INPUT_CHECK_ERROR.getCode());
resultVO.setResultMessage(ResponseCode.INPUT_CHECK_ERROR.getMessage()); resultVO.setResultMessage(ResponseCode.INPUT_CHECK_ERROR.getMessage());
}else{ } else {
codeItem.setLastChgDt(LocalDateTime.now()); codeItem.setLastChgDt(LocalDateTime.now());
codeItem.setLastChgId(user.getId()); codeItem.setLastChgId(user.getId());
String result = configService.modifyCodeItem(codeItem); String result = configService.modifyCodeItem(codeItem);
if(result.equals("modified")){ if (result.equals("modified")) {
resultVO.setResultCode(ResponseCode.SUCCESS.getCode()); resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
}else{ } else {
resultVO.setResultCode(ResponseCode.SAVE_ERROR.getCode()); resultVO.setResultCode(ResponseCode.SAVE_ERROR.getCode());
} }
} }
@ -248,7 +248,7 @@ public class AdminConfigController extends BaseController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
}) })
@RequestMapping(method = RequestMethod.GET, value = "/menu-mgt") @RequestMapping(method = RequestMethod.GET, value = "/menu-mgt")
public ResultVO getMenuMgt(){ public ResultVO getMenuMgt() {
ResultVO resultVO = new ResultVO(); ResultVO resultVO = new ResultVO();
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
resultMap.put("menuList", configService.selectMenuList()); resultMap.put("menuList", configService.selectMenuList());
@ -266,21 +266,21 @@ public class AdminConfigController extends BaseController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
}) })
@RequestMapping(method = RequestMethod.PUT, value = "/menu-mgt") @RequestMapping(method = RequestMethod.PUT, value = "/menu-mgt")
public ResultVO saveMenuMgt(@RequestBody @Valid TcMenu menu, Errors errors, @AuthenticationPrincipal LoginVO user){ public ResultVO saveMenuMgt(@RequestBody @Valid TcMenu menu, Errors errors, @AuthenticationPrincipal LoginVO user) {
ResultVO resultVO = new ResultVO(); ResultVO resultVO = new ResultVO();
if(user == null){ if (user == null) {
resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode()); resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode());
}else { } else {
menu.setRoleGrpId(menu.getMenuTypeCd().equals("MNU_0000")?"ADMIN_USER":"ALL_USER"); menu.setRoleGrpId(menu.getMenuTypeCd().equals("MNU_0000") ? "ADMIN_USER" : "ALL_USER");
if(errors.hasErrors()){ if (errors.hasErrors()) {
StringBuilder msg = new StringBuilder(); StringBuilder msg = new StringBuilder();
for(FieldError error: errors.getFieldErrors()){ for (FieldError error : errors.getFieldErrors()) {
msg.append(error.getDefaultMessage()); msg.append(error.getDefaultMessage());
msg.append("\n"); msg.append("\n");
} }
resultVO.setResultCode(ResponseCode.INPUT_CHECK_ERROR.getCode()); resultVO.setResultCode(ResponseCode.INPUT_CHECK_ERROR.getCode());
resultVO.setResultMessage(msg.toString()); resultVO.setResultMessage(msg.toString());
}else if (!user.getUserSe().equals("ACC_TP01")) { } else if (!user.getUserSe().equals("ACC_TP01")) {
resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode()); resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode());
resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage()); resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage());
} else { } else {
@ -301,19 +301,19 @@ public class AdminConfigController extends BaseController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
}) })
@RequestMapping(method = RequestMethod.DELETE, value = "/menu-mgt") @RequestMapping(method = RequestMethod.DELETE, value = "/menu-mgt")
public ResultVO removeMenuMgt(@RequestBody TcMenu menu, @AuthenticationPrincipal LoginVO user){ public ResultVO removeMenuMgt(@RequestBody TcMenu menu, @AuthenticationPrincipal LoginVO user) {
ResultVO resultVO = new ResultVO(); ResultVO resultVO = new ResultVO();
if(user == null){ if (user == null) {
resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode()); resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode());
}else { } else {
if (!user.getUserSe().equals("ACC_TP01")) { if (!user.getUserSe().equals("ACC_TP01")) {
resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode()); resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode());
resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage()); resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage());
} else { } else {
String result = configService.deleteMenu(menu.getMenuId(), user.getId()); String result = configService.deleteMenu(menu.getMenuId(), user.getId());
if(result==null){ if (result == null) {
resultVO.setResultCode(ResponseCode.SUCCESS.getCode()); resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
}else if(result.equals("notFind")){ } else if (result.equals("notFind")) {
resultVO.setResultCode(ResponseCode.SAVE_ERROR.getCode()); resultVO.setResultCode(ResponseCode.SAVE_ERROR.getCode());
resultVO.setResultMessage("대상이 존재하지 않습니다."); resultVO.setResultMessage("대상이 존재하지 않습니다.");
} }
@ -332,7 +332,7 @@ public class AdminConfigController extends BaseController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
}) })
@RequestMapping(method = RequestMethod.GET, value = "/menu-auth-mgt") @RequestMapping(method = RequestMethod.GET, value = "/menu-auth-mgt")
public ResultVO getMenuAuthMgt(){ public ResultVO getMenuAuthMgt() {
ResultVO resultVO = new ResultVO(); ResultVO resultVO = new ResultVO();
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
resultMap.put("menuList", configService.selectMenuAuthList()); resultMap.put("menuList", configService.selectMenuAuthList());
@ -351,11 +351,11 @@ public class AdminConfigController extends BaseController {
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님") @ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
}) })
@RequestMapping(method = RequestMethod.PUT, value = "/menu-auth-mgt") @RequestMapping(method = RequestMethod.PUT, value = "/menu-auth-mgt")
public ResultVO editMenuAuthMgt(@RequestBody TcMenu menu, @AuthenticationPrincipal LoginVO user){ public ResultVO editMenuAuthMgt(@RequestBody TcMenu menu, @AuthenticationPrincipal LoginVO user) {
ResultVO resultVO = new ResultVO(); ResultVO resultVO = new ResultVO();
if(user == null){ if (user == null) {
resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode()); resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode());
}else { } else {
if (!user.getUserSe().equals("ACC_TP01")) { if (!user.getUserSe().equals("ACC_TP01")) {
resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode()); resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode());
resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage()); resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage());
@ -381,12 +381,12 @@ public class AdminConfigController extends BaseController {
public ResultVO getCommitteeCodeManagement( public ResultVO getCommitteeCodeManagement(
@AuthenticationPrincipal LoginVO user, @AuthenticationPrincipal LoginVO user,
HttpServletRequest request, HttpServletRequest request,
@ApiParam(value="상위 code") @RequestParam(required=true) String paramCodeGroup, @ApiParam(value = "상위 code") @RequestParam(required = true) String paramCodeGroup,
@ApiParam(value="code level") @RequestParam(required=true) String paramCodeLevel @ApiParam(value = "code level") @RequestParam(required = true) String paramCodeLevel
) throws Exception { ) throws Exception {
ResultVO resultVO = new ResultVO(); ResultVO resultVO = new ResultVO();
if(user == null) { if (user == null) {
resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode()); resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode());
} else { } else {
try { try {
@ -432,7 +432,7 @@ public class AdminConfigController extends BaseController {
) throws Exception { ) throws Exception {
ResultVO resultVO = new ResultVO(); ResultVO resultVO = new ResultVO();
if(user == null) { if (user == null) {
resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode()); resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode());
} else { } else {
try { try {
@ -511,11 +511,17 @@ public class AdminConfigController extends BaseController {
ResultVO resultVO = new ResultVO(); ResultVO resultVO = new ResultVO();
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
List<TnPartnerSite> tnPartnerSite = configService.selectPartnerSiteList(); List<TnPartnerSite> tnPartnerSite = configService.selectPartnerSiteList();
for (TnPartnerSite partnerSite : tnPartnerSite) { /*for (TnPartnerSite partnerSite : tnPartnerSite) {
String fileGrpId = partnerSite.getFileGrpId(); String fileGrpId = partnerSite.getFileGrpId();
String filePath = fileService.findByFileGrpId(fileGrpId).get(0).getFilePath(); List<TnAttachFile> files = fileService.findByFileGrpId(fileGrpId);
if (!files.isEmpty()) {
String filePath = files.get(0).getFilePath();
partnerSite.setFilePath(filePath); partnerSite.setFilePath(filePath);
} }
else {
partnerSite.setFilePath(null);
}
}*/
resultMap.put("partnerSiteList", tnPartnerSite); resultMap.put("partnerSiteList", tnPartnerSite);
resultVO.setResult(resultMap); resultVO.setResult(resultMap);
return resultVO; return resultVO;
@ -533,8 +539,12 @@ public class AdminConfigController extends BaseController {
@RequestMapping(method = RequestMethod.GET, value = "/about-site-mgt/get-site-image") @RequestMapping(method = RequestMethod.GET, value = "/about-site-mgt/get-site-image")
public void getSiteImage(HttpServletResponse response, @RequestParam String fileGrpId) throws Exception { public void getSiteImage(HttpServletResponse response, @RequestParam String fileGrpId) throws Exception {
List<TnAttachFile> dbImgList = fileService.findByFileGrpId(fileGrpId); List<TnAttachFile> dbImgList = fileService.findByFileGrpId(fileGrpId);
String realFile = dbImgList.get(0).getFilePath(); String realFile = "";
String fileNm = dbImgList.get(0).getFileNewName(); String fileNm = "";
if (!dbImgList.isEmpty()) {
realFile = dbImgList.get(0).getFilePath();
fileNm = dbImgList.get(0).getFileNewName();
}
BufferedOutputStream out = null; BufferedOutputStream out = null;
InputStream in = null; InputStream in = null;

View File

@ -93,7 +93,7 @@ public class SecurityConfig {
"/search/doc", "/search/doc",
/* 관련사이트 이미지 조회 */ /* 관련사이트 이미지 조회 */
"/admin/config/get-site-image/**", "/admin/config/about-site-mgt/get-site-image/**",
/*권한별 메뉴 호출*/ /*권한별 메뉴 호출*/
"/leftNav/menu" "/leftNav/menu"

View File

@ -30,7 +30,8 @@ public class WebMvcConfig implements WebMvcConfigurer {
registry.addInterceptor(authCheckInterceptor) registry.addInterceptor(authCheckInterceptor)
.addPathPatterns("/admin/**") .addPathPatterns("/admin/**")
.excludePathPatterns( .excludePathPatterns(
"/admin/dashboard/**" "/admin/dashboard/**",
"/admin/config/about-site-mgt/get-site-image/**"
); );
} }
@Override @Override