# Conflicts:
#	egovframe-template-simple-react-contribution/.env.production
thkim
유민형 2024-06-20 11:39:25 +09:00
commit 023c641e1c
14 changed files with 602 additions and 24 deletions

View File

@ -4,6 +4,10 @@
NODE_PATH=src/
## 절대경로 지정
<<<<<<< HEAD
=======
## REACT_APP_EGOV_CONTEXT_URL=https://back.kcsc.dbnt.co.kr
>>>>>>> 6849850039413527a8e94951eb8b08586f5bdfe7
REACT_APP_EGOV_CONTEXT_URL=58.234.249.138:50688
## [보안] 소스맵 삭제

View File

@ -1,18 +1,96 @@
import React from 'react';
import { NavLink } from 'react-router-dom';
import {NavLink, useLocation} from 'react-router-dom';
import {Accordion} from "react-bootstrap";
import Row from 'react-bootstrap/Row';
import Col from 'react-bootstrap/Col';
import Button from 'react-bootstrap/Button';
import URL from 'constants/url';
function EgovLeftNavIntro() {
const location = useLocation();
const getLastFolder = (url) => { //
const parts = url.split('/').filter(Boolean); // '/'
if (parts.length >= 2) {
return parts[2]; // 3
}
return null;
};
const activeFolder = getLastFolder(location.pathname);
return (
<div className="nav">
let activeKey;
if (activeFolder === "3") {
activeKey = 1;
} else if (activeFolder === "4") {
activeKey = 2;
} else if (activeFolder === "5") {
activeKey = 3;
} else {
activeKey = 0;
}
return (
<div className="nav2">
<div className="inner">
<h2>정보마당</h2>
<ul className="menu4">
<li><NavLink to={URL.INTRO_WORKS} className={({ isActive }) => (isActive ? "cur" : "")}>주요사업 소개</NavLink></li>
<li><NavLink to={URL.INTRO_SERVICE} className={({ isActive }) => (isActive ? "cur" : "")}>대표서비스 소개</NavLink></li>
</ul>
<Row className={"pt-4 pb-2 mb-1"}>
<Col xs={10}><input type={"text"} className={"form-control shadow-none w-100 h_40"} placeholder={"구)건설기준 검색"} /></Col>
<Col xs={2} className={"ps-0"}><Button className={"btn-22498E h_40"} type={"button"} >검색</Button></Col>
</Row>
<Accordion defaultActiveKey={activeKey}>
<Accordion.Item eventKey={0}>
<Accordion.Header>()설계기준(22)</Accordion.Header>
<Accordion.Body>
<ul className="menu5">
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>강구조 설계기준(2)</NavLink></li>
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>강구조 설계기준(하중저항계수 설계법)(3)</NavLink></li>
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>건설공사 비탈면 설계기준(4)</NavLink></li>
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>건축 구조기준(8)</NavLink></li>
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>건축기계설비 설계기준(4)</NavLink></li>
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>건축전기설비 설계기준(4)</NavLink></li>
{/*리스트 쭉 보여주세요*/}
</ul>
</Accordion.Body>
</Accordion.Item>
<Accordion.Item eventKey={1}>
<Accordion.Header>()표준시방서(21)</Accordion.Header>
<Accordion.Body>
<ul className="menu5">
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>가설공사 표준시방서(5)</NavLink></li>
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>강구조공사 표준시방서(2)</NavLink></li>
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>건설공사 비탈면 표준시방서(3)</NavLink></li>
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>건설환경관리 표준시방서(1)</NavLink></li>
{/*리스트 쭉 보여주세요*/}
</ul>
</Accordion.Body>
</Accordion.Item>
<Accordion.Item eventKey={2}>
<Accordion.Header>()전문시방서(9)</Accordion.Header>
<Accordion.Body>
<ul className="menu5">
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>고속도로공사 전문시방서(10)</NavLink></li>
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>농어촌정비공사 전문시방서(1)</NavLink></li>
{/*리스트 쭉 보여주세요*/}
</ul>
</Accordion.Body>
</Accordion.Item>
<Accordion.Item eventKey={3}>
<Accordion.Header>()훈령/예규/지침(11)</Accordion.Header>
<Accordion.Body>
<ul className="menu5">
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>건설정책(198)</NavLink></li>
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>교통물류(77)</NavLink></li>
<li><NavLink to={URL.STANDARD_CODE_OLD} className={({ isActive }) => (isActive ? "cur" : "")}>국토도시(156)</NavLink></li>
{/*리스트 쭉 보여주세요*/}
</ul>
</Accordion.Body>
</Accordion.Item>
</Accordion>
</div>
</div>
);

View File

@ -43,6 +43,8 @@ const URL = {
SUPPORT_API : "/support/api", // API 서비스
SUPPORT_RESEARCH : "/support/research", // 건설기준 연구
SUPPORT_POLL : "/support/poll", // 설문조사
SUPPORT_SURVEY : "/support/survey/:Id", // 설문조사 참여
SUPPORT_SURVEY_NOID : "/support/survey/", // 설문조사 참여
SUPPORT_DOWNLOAD : "/support/download", // 고객지원/자료실
// SUPPORT_DOWNLOAD_DETAIL : "/support/download/detail", // 고객지원/자료실/상세
// SUPPORT_DOWNLOAD_CREATE : "/support/download/create", // 고객지원/자료실/등록
@ -54,7 +56,8 @@ const URL = {
STANDARD_CODE_INFO : "/standardCode/info", //건설기준코드/건설기준코드 안내
STANDARD_CODE_TERM : "/standardCode/term", //건설기준코드/건설기준코드 용어
STANDARD_CODE_ENG : "/standardCode/eng", //건설기준코드/영문 건설기준코드
STANDARD_CODE_OLD : "/standardCode/old", //건설기준코드/(구)건설기준코드
STANDARD_CODE_OLD : "/standardCode/old/:Code", //건설기준코드/(구)건설기준코드
STANDARD_CODE_OLD_NOCODE : "/standardCode/old", //건설기준코드/(구)건설기준코드
STANDARD_CODE_LIST : "/standardCode/list", //건설기준코드/리스트
STANDARD_CODE_LIST_LINK : "/standardCode/list/:listCode", //건설기준코드/리스트
STANDARD_CODE_DETAIL : "/standardCode/detail", //건설기준코드/리스트

View File

@ -84,6 +84,7 @@ button {cursor: pointer;}
.h_25 {height: 25px;}
.h_30 {height: 30px;}
.h_40 {height: 40px;}
.h_50 {height: 50px;}
.h_100 {height: 100px;}
.h_300 {height: 300px;}

View File

@ -82,7 +82,7 @@ body {min-width: 1400px;}
.c_wrap { margin: auto 0; } /* removed by lim width: 1400px; padding: 0 50px; */
.c_wrap .layout {display: table; width: 100%; table-layout: fixed; padding-bottom: 20px;} /* added by lim padding-bottom: 20px; */
/* sub navigation */
/* 관리자 (왼쪽메뉴) */
.c_wrap .layout .nav:not(.tabs) {display: table-cell; width: 220px; vertical-align: top;} /* changed by lim width: 260px; */
/*.c_wrap .layout .nav .inner {border: 1px solid #dde2e5; border-radius: 10px;}*/
.nav_title{padding: 35px 30px 26px 20px;} /* changed by lim border-bottom: 4px solid #dde2e5; */
@ -94,18 +94,28 @@ body {min-width: 1400px;}
.c_wrap .layout .nav ul li a:hover::after {content: ""; display: block; position: absolute; right: 0px; top: 50%; transform: translateY(-50%); width: 9px; height: 15px; background: url(css/images/ico_arrow_r_gray_9x15.png) no-repeat;}
.c_wrap .layout .nav ul li a.cur {color: #222; font-weight: 700;}
.c_wrap .layout .contents {display: table-cell; width: auto; vertical-align: top; padding-left: 30px;} /* changed by lim padding: 0 0 120px 70px; */
/* (구)건설기준 (왼쪽메뉴) */
.c_wrap .layout .nav2:not(.tabs) {display: table-cell; width: 350px; vertical-align: top;}
/*.c_wrap .layout .nav2 h2 {color: #222; font-size: 22px; font-weight: 700;}*/
.c_wrap .layout .nav2 button {font-size: 15px;}
.c_wrap .layout .nav2 .accordion-button {background: #FAFAFA;}
.c_wrap .layout .nav2 ul li a {display: block; position: relative; color: #666; font-size: 14px; }
.c_wrap .layout .nav2 ul li a.cur {color: #222; font-weight: 700; }
/* 센터소개 */
.c_wrap .layout .contents .border-secondary {border : 1px solid #6c757d;}
.c_wrap .layout .contents .border-secondary-no_top {border-left: 1px solid #6c757d; border-right: 1px solid #6c757d; border-bottom: 1px solid #6c757d; height: 500px; overflow-y: scroll;}
.c_wrap .layout .contents {display: table-cell; width: auto; vertical-align: top; padding-left: 30px;}
/* 센터소개 (왼쪽메뉴) */
.c_wrap .layout .nav1:not(.tabs) {display: table-cell; width: 220px; vertical-align: top;}
.c_wrap .layout .nav1 h2 {color: #222; font-size: 24px; font-weight: 700;}
.c_wrap .layout .nav1 .menu10 {mnargin: 0; border: 1px solid #dde2e5;}
/*.c_wrap .layout .nav1 li {margin: 10px;}*/
.c_wrap .layout .nav1 .menu10 li + li {border-top: 1px solid #dde2e5; }
.c_wrap .layout .nav1 ul li a {display: block; position: relative; color: #666; font-size: 14px; padding: 10px;} /* changed by lim font-size: 18px; */
/*.c_wrap .layout .nav1 ul li a:hover {}*/
.c_wrap .layout .nav1 ul li a {display: block; position: relative; color: #666; font-size: 14px; padding: 10px;}
.c_wrap .layout .nav1 ul li a:hover::after {content: ""; display: block; position: absolute; right: 10px; top: 50%; transform: translateY(-50%); width: 9px; height: 15px; background: url(css/images/ico_arrow_r_gray_9x15.png) no-repeat; }
.c_wrap .layout .nav1 ul li a.cur {color: #fff; font-weight: 700; background-color: #004994; }
/* location */
.location {height: 30px; padding-top: 23px; text-align: right;} /* chagned by lim height: 70px; padding-top: 43px; */
.location ul, .location ul li {display: inline-block; vertical-align: top;}

View File

@ -445,6 +445,49 @@
.BRD015 .result .list_item > div:nth-child(3) {width: 30%; text-align: left; padding-left: 5px;}
.BRD015 .result .list_item > div:nth-child(4) {width: 30%; text-align: left; padding-left: 5px;}
/* API */
.BRD016 .head > span:nth-child(1) {position: relative; width: 20%; }
.BRD016 .head > span:nth-child(2) {position: relative; width: 50%; }
.BRD016 .head > span:nth-child(3) {position: relative; width: 30%; }
.BRD016 .head > span:nth-child(-n+2)::after {position: absolute; content: ''; right: 0; bottom: 0; height: 50%; border-right: 1px solid #B5B5B5;}
.BRD016 .result .list_item > div:nth-child(1) {width: 20%; padding: 10px 0;}
.BRD016 .result .list_item > div:nth-child(2) {width: 50%; padding: 10px 0;}
.BRD016 .result .list_item > div:nth-child(3) {width: 30%; padding: 10px 0;}
.BRD017 .head > span:nth-child(1) {position: relative; width: 20%; }
.BRD017 .head > span:nth-child(2) {position: relative; width: 20%; }
.BRD017 .head > span:nth-child(3) {position: relative; width: 25%; }
.BRD017 .head > span:nth-child(4) {position: relative; width: 20%; }
.BRD017 .head > span:nth-child(5) {position: relative; width: 15%; }
.BRD017 .head > span:nth-child(-n+4)::after {position: absolute; content: ''; right: 0; bottom: 0; height: 50%; border-right: 1px solid #B5B5B5;}
.BRD017 .result .list_item > div:nth-child(1) {width: 20%; padding: 10px 0;}
.BRD017 .result .list_item > div:nth-child(2) {width: 20%; padding: 10px 0;}
.BRD017 .result .list_item > div:nth-child(3) {width: 25%; padding: 10px 0;}
.BRD017 .result .list_item > div:nth-child(4) {width: 20%; padding: 10px 0;}
.BRD017 .result .list_item > div:nth-child(5) {width: 15%; padding: 10px 0;}
.BRD018 .head > span:nth-child(1) {position: relative; width: 15%; }
.BRD018 .head > span:nth-child(2) {position: relative; width: 85%; padding: 10px; text-align: left;}
.BRD018 .head > span:nth-child(1)::after {position: absolute; content: ''; right: 0; bottom: 0; height: 50%; border-right: 1px solid #B5B5B5;}
.BRD018 .result .list_item > div:nth-child(1) {width: 15%; padding: 10px 0;}
.BRD018 .result .list_item > div:nth-child(2) {width: 85%; padding: 10px; text-align: left;}
.BRD019 .head > span:nth-child(1) {position: relative; width: 60%;}
.BRD019 .head > span:nth-child(2) {position: relative; width: 8%; text-align: center;}
.BRD019 .head > span:nth-child(3) {position: relative; width: 8%; text-align: center;}
.BRD019 .head > span:nth-child(4) {position: relative; width: 8%; text-align: center;}
.BRD019 .head > span:nth-child(5) {position: relative; width: 8%; text-align: center;}
.BRD019 .head > span:nth-child(6) {position: relative; width: 8%; text-align: center;}
.BRD019 .head > span:nth-child(-n+5)::after {position: absolute; content: ''; right: 0; bottom: 0; height: 50%; border-right: 1px solid #B5B5B5;}
.BRD019 .result .list_item > div:nth-child(1) {width: 60%; text-align: left; padding-left: 10px;}
.BRD019 .result .list_item > div:nth-child(2) {width: 8%; text-align: center;}
.BRD019 .result .list_item > div:nth-child(3) {width: 8%; text-align: center;}
.BRD019 .result .list_item > div:nth-child(4) {width: 8%; text-align: center;}
.BRD019 .result .list_item > div:nth-child(5) {width: 8%; text-align: center;}
.BRD019 .result .list_item > div:nth-child(6) {width: 8%; text-align: center;}
.poll_title {font-size: 15px; padding-left: 10px;}
.poll_answer {padding-left: 20px;}
/* 찾아오시는길 */
.SITE_CONTACT_US .map {margin-top: 43px;}

View File

@ -48,6 +48,7 @@
.c_wrap .layout .nav h2 {position: absolute; top: -9999px;}
.c_wrap .layout .nav ul {padding: 0 20px;}
.c_wrap .layout .nav ul.menu4 {max-width: 570px;}
.c_wrap .layout .nav div.menu5 {max-width: 570px;}
.c_wrap .layout .nav ul.menu6 {width: 1000px;}
.c_wrap .layout .nav ul::after {content: ""; display: block; clear: both;}
.c_wrap .layout .nav ul li {float: left; width: 50%; text-overflow: ellipsis; white-space: nowrap; overflow: hidden; } /* added by lim width: 50%; ~~~~ overflow: hidden;*/

View File

@ -274,7 +274,7 @@ function EgovMain(props) {
</Row>
<Row>
<Col>
<Link to={URL.STANDARD_CODE_OLD} className="link-wrapper">
<Link to={URL.STANDARD_CODE_OLD_NOCODE+'/5'} className="link-wrapper">
<div className={"topbox_13"}><img src="/assets/images/ico-landing5.png" /></div>
<div className={"topbox_14"}>훈령/예규/지침</div>
</Link>

View File

@ -1,13 +1,15 @@
import React, { useState } from 'react';
import {Link, useLocation, useNavigate} from 'react-router-dom';
import * as EgovNet from 'api/egovFetch';
import {default as EgovLeftNav} from 'components/leftmenu/EgovLeftNavIntro';
import URL from "constants/url";
import Row from 'react-bootstrap/Row';
import Col from 'react-bootstrap/Col';
import Button from 'react-bootstrap/Button';
function CodeOld(){
return (
<div className="container">
<div className="c_wrap">
@ -22,10 +24,45 @@ function CodeOld(){
{/* <!--// Location --> */}
<div className="layout">
{/* <!-- Navigation --> */}
<EgovLeftNav></EgovLeftNav>
{/* <!--// Navigation --> */}
<div className="contents" id="contents">
{/* <!-- 본문 --> */}
<h1 className="tit_3">()건설기준</h1>
<Row className={"w-100 bg-fa p-3 m-0 border-secondary"}>
<Col className={"f_16"}>설계기준 > 강구조 설계기준(2)</Col>
</Row>
<Row className={"border-secondary-no_top m-0"}>
<Col className={"p-4"}>
<Row className={"py-2"}>
<Col>1 . 강구조설계기준, 2007(부분개정내용-관보)</Col>
</Row>
<Row className={"border-bottom pb-2"}>
<Col><Button variant={"outline-secondary"} type={"button"}>설계기준</Button></Col>
</Row>
<Row className={"py-2"}>
<Col>2 . 강구조설계기준, 2007(부분개정내용-관보)</Col>
</Row>
<Row className={"border-bottom pb-2"}>
<Col><Button variant={"outline-secondary"} type={"button"}>설계기준</Button></Col>
</Row>
<Row className={"py-2"}>
<Col>3 . 강구조설계기준, 2007(부분개정내용-관보)</Col>
</Row>
<Row className={"border-bottom pb-2"}>
<Col><Button variant={"outline-secondary"} type={"button"}>설계기준</Button></Col>
</Row>
<Row className={"py-2"}>
<Col>4 . 강구조설계기준, 2007(부분개정내용-관보)</Col>
</Row>
<Row className={"border-bottom pb-2"}>
<Col><Button variant={"outline-secondary"} type={"button"}>설계기준</Button></Col>
</Row>
</Col>
</Row>
</div>
</div>
</div>

View File

@ -1,11 +1,23 @@
import React, { useState } from 'react';
import {Link, useLocation, useNavigate} from 'react-router-dom';
import * as EgovNet from 'api/egovFetch';
import URL from "../../constants/url";
import URL from "constants/url";
import Row from 'react-bootstrap/Row';
import Col from 'react-bootstrap/Col';
import Button from 'react-bootstrap/Button';
import Modal from 'react-bootstrap/Modal';
function API(){
const [show, setShow] = useState(false);
const [modalContent, setModalContent] = useState({});
const handleClose = () => setShow(false);
const goToCreate = () => {
//
setModalContent();
setShow(true);
};
return (
<div className="container">
@ -25,9 +37,210 @@ function API(){
<div className="contents" id="contents">
{/* <!-- 본문 --> */}
<h1 className="tit_3">API 서비스</h1>
<Row className={"pb-2 justify-content-between"} >
<Col className={"f_17 text-4c6 pt-3"}>1. API 기본정보</Col>
<Col className={"text-end"}><Button type={"button"} className={"btn btn-22498E px-4"} onClick={goToCreate} >인증키 발급신청</Button></Col>
</Row>
<div className="board_list BRD016">
<div className="head">
<span>Method</span>
<span>Request URL</span>
<span>형식</span>
</div>
<div className="result">
<div className="list_item">
<div>GET</div>
<div>https://kcsc.re.kr/OpenApi/CodeViewer</div>
<div>JSON</div>
</div>
<div className="list_item">
<div>GET</div>
<div>https://kcsc.re.kr/OpenApi/CodeList</div>
<div>JSON</div>
</div>
</div>
</div>
<Row className={"py-2"} >
<Col className={"f_17 text-4c6 pt-3"}>2. 요청 변수</Col>
</Row>
<div className="board_list BRD017">
<div className="head">
<span>요청 변수명</span>
<span>설명</span>
<span>예시</span>
<span>Type</span>
<span>필수 여부</span>
</div>
<div className="result">
<div className="list_item">
<div>Type</div>
<div>문서 타입</div>
<div>KDS</div>
<div>string</div>
<div>Y</div>
</div>
<div className="list_item">
<div>Code</div>
<div>문서 번호</div>
<div>101000</div>
<div>string</div>
<div>Y</div>
</div>
<div className="list_item">
<div>Key</div>
<div>인증키</div>
<div>bdf239cd309cc876293ff3</div>
<div>string</div>
<div>Y</div>
</div>
</div>
</div>
<Row className={"py-2"} >
<Col className={"f_17 text-4c6 pt-3"}>3. 출력 결과</Col>
</Row>
<div className="board_list BRD016">
<div className="head">
<span>필드</span>
<span>설명</span>
<span>Type</span>
</div>
<div className="result">
<div className="list_item">
<div>No</div>
<div>코드 고유번호입니다.</div>
<div>int</div>
</div>
<div className="list_item">
<div>CodeType</div>
<div>코드 타입입니다.</div>
<div>string</div>
</div>
<div className="list_item">
<div>Code</div>
<div>코드 번호입니다.</div>
<div>string</div>
</div>
<div className="list_item">
<div>FullCode</div>
<div>카테고리 타입이 있는 코드 번호입니다.</div>
<div>string</div>
</div>
<div className="list_item">
<div>Name</div>
<div>코드 이름입니다.</div>
<div>string</div>
</div>
<div className="list_item">
<div>Version</div>
<div>코드 버전입니다.</div>
<div>string</div>
</div>
<div className="list_item">
<div>UpdateDate</div>
<div>코드 수정일자입니다.</div>
<div>datetime</div>
</div>
<div className="list_item">
<div>Sort</div>
<div>목차 정렬 순서 번호입니다.</div>
<div>int</div>
</div>
<div className="list_item">
<div>Title</div>
<div>목차 입니다.</div>
<div>string</div>
</div>
<div className="list_item">
<div>Contents</div>
<div>목차의 상세내용입니다.</div>
<div>string</div>
</div>
<div className="list_item">
<div>List</div>
<div>특정코드 상세내용 리스트입니다.</div>
<div>list</div>
</div>
<div className="list_item">
<div>ListParentCodes</div>
<div>카테고리 속성 리스트입니다.</div>
<div>list</div>
</div>
<div className="list_item">
<div>Message</div>
<div>에러 내용입니다.</div>
<div>string</div>
</div>
</div>
</div>
<Row className={"py-2"} >
<Col className={"f_17 text-4c6 pt-3"}>4. 예시</Col>
</Row>
<div className="board_list BRD018">
<div className="head">
<span>Request</span>
<span>https://kcsc.re.kr/OpenApi/CodeViewer/KCS/114010?key=bdf239cd309cc876293ff3</span>
</div>
<div className="result">
<div className="list_item">
<div>Response</div>
<div>
No : 30155<br />
CodeType : KCS<br />
Code : 114010<br />
FullCode : 2010114010<br />
Name : 파형강판 암거<br />
Version : 2019<br />
UpdateDate : {`{2019-06-27 오전 10:52:07}`}<br />
List : {`[{"No": 30155, "Sort": 4, "Title": "1.1 적용범위", "Contents": "<ρ>(1) 이 기준은 구조용 파형강판을 이용하여 통로암거, 수로암거, 소교량 및 가설 구조물 등의 파형강판 암거.."}, ...]`}<br />
ListParentCodes : null<br />
Message : null'
</div>
</div>
</div>
<div className="head">
<span>Request</span>
<span>https://kcsc.re.kr/OpenApi/CodeList?key=bdf239cd309cc876293ff3</span>
</div>
<div className="result">
<div className="list_item">
<div>Response</div>
<div>
{`[{No : 20256`}<br />
CodeType : KDS<br />
Code : 100000<br />
FullCode : 10101000<br />
Name : 공통설계기준<br />
Version : 2018<br />
UpdateDate : {`{2019-06-04 오전 10:52:07}`}<br />
List : null<br />
ListParentCodes : {`{"codeType":"KDS","fullCode":"10","name":"설계기준"},{"codeType":"KDS","fullCode":"1010","name":"공통편"},{"codeType":"KDS","fullCode":"101010","name":"공통 설계기준"}`}<br />
Message : {`null}, ...]`}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<Modal show={show} onHide={handleClose}>
<Modal.Header closeButton>
<Modal.Title>API 서비스 신청</Modal.Title>
</Modal.Header>
<Modal.Body>
<h6 className={"text-224"}>아이디 : ***1234</h6>
<div className={"py-3"}><Button type={"button"} className={"btn btn-22498E px-4 w-100"} onClick={""} >발급신청</Button></div>
<div className={"f_14 text-center"}>발급신청 완료 관리자 승인절차에 따라 발급됩니다.</div>
</Modal.Body>
</Modal>
</div>
);
}

View File

@ -11,10 +11,38 @@ import Button from "react-bootstrap/Button";
function Poll(){
const navigate = useNavigate();
const goToDetail = () => {
// navigate('/support/list/KCSC-QA');
const goToDetail = (id, isClosed) => {
if (isClosed) {
alert('마감된 설문조사입니다.');
} else {
//
navigate(`${URL.SUPPORT_SURVEY_NOID}${id}`);
}
};
const surveys = [
{
id: 1,
title: "2023년 건설기준 포털시스템 이용자 만족도 조사",
isClosed: false,
period: "2014-06-25 ~ 2015-09-17",
content: "본 연구의 목적은 “건설공사기준 코드체계(국토교통부 고시 제2013-640호, 13.10)” 전환에 따른 분야별 코드별로 현행 설계기준과 표준시방서에 대하여 중복 및 상충 항목의 검토 정비하여 통합 코드(안) 마련."
},
{
id: 2,
title: "2022년 건설기준 포털시스템 이용자 만족도 조사",
isClosed: true,
period: "2013-12-26 ~ 2015-06-30",
content: "본 연구의 목적은 “건설공사기준 코드체계(국토교통부 고시 제2013-640호, 13.10)” 전환에 따른 분야별 코드별로 현행 설계기준과 표준시방서에 대하여 중복 및 상충 항목의 검토 정비하여 통합 코드(안) 마련."
},
{
id: 3,
title: "2021년 건설기준 포털시스템 이용자 만족도 조사",
isClosed: true,
period: "2013-03-01 ~ 2014-07-01",
content: "ㅇ 현장 여건 변화 및 민원 등에 따른 합리적 표준시방서 개정 ㅇ 2009년 개정 이후 민원 및 감사원 지적 등에 따른 시방서 내용 개정"
}
];
return (
<div className="container">
@ -35,6 +63,32 @@ function Poll(){
<h1 className="tit_3">설문조사</h1>
{/* <!-- 건설기준연구 안내 (리스트 5개씩만 뿌려주세요.)--> */}
{surveys.map((survey) => (
<React.Fragment key={survey.id}>
<Row className="py-3 justify-content-between align-items-end">
<Col className="fs-6 fw-bold text-4c6 ps-4">{survey.title}</Col>
<Col className="text-end">
<Button
type="button"
className={survey.isClosed ? "btn btn-secondary px-4" : "btn btn-22498E px-4"}
onClick={() => goToDetail(survey.id, survey.isClosed)}>
{survey.isClosed ? '설문마감' : '참여하기'}
</Button>
</Col>
</Row>
<div className="board_view2 pb-4">
<dl>
<dt>참여기간</dt>
<dd>{survey.period}</dd>
</dl>
<dl>
<dt>내용</dt>
<dd>{survey.content}</dd>
</dl>
</div>
</React.Fragment>
))}
<Row className={"py-3 justify-content-between align-items-end"} >
<Col className={"fs-6 fw-bold text-4c6 ps-4"}>2023 건설기준 포털시스템 이용자 만족도 조사</Col>
<Col className={"text-end"}><Button type={"button"} className={"btn btn-22498E px-4"} onClick={goToDetail} >참여하기</Button></Col>

View File

@ -0,0 +1,131 @@
import React, { useState } from 'react';
import {Link, useLocation, useNavigate} from 'react-router-dom';
import * as EgovNet from 'api/egovFetch';
import URL from "constants/url";
import Row from "react-bootstrap/Row";
import Col from "react-bootstrap/Col";
import Button from "react-bootstrap/Button";
function Poll_Detail(){
return (
<div className="container">
<div className="c_wrap">
{/* <!-- Location --> */}
<div className="location">
<ul>
<li><Link to={URL.MAIN} className="home" >Home</Link></li>
<li><Link to={URL.SUPPORT_LIST_NOCODE+'/KCSC-NTC'}>정보제공</Link></li>
<li><Link to={URL.SUPPORT_POLL}>설문조사</Link></li>
<li>설문조사 참여하기</li>
</ul>
</div>
{/* <!--// Location --> */}
<div className="layout">
<div className="contents" id="contents">
{/* <!-- 본문 --> */}
<h1 className="tit_3">설문조사 참여하기</h1><div className="board_list BRD018">
<div className="head">
<span>설문조사명</span>
<span>건설기준 포털시스템 이용자 만족도 조사</span>
</div>
<div className="result">
<div className="list_item">
<div>목적</div>
<div>건설기준 포털시스템의 사용자 만족도를 조사하여 향후 시스템 개선에 반영</div>
</div>
<div className="list_item">
<div>첨부파일</div>
<div></div>
</div>
<div className="list_item">
<div>설문기간</div>
<div>2023-12-15 ~ 2023-12-29</div>
</div>
</div>
<div className={"pt-4 pb-1 fs-4 fw-bold"}><img src={"/assets/images/question.png"} className={"p-2"} /> 건설기준 포털시스템 접속 목적(복수 응답 가능)</div>
<div className={"poll_title"}>1) 질문 문항입니다.</div>
<div className={"poll_answer"}><input type={"checkbox"} id={"c1"} /> <label htmlFor={"c1"}>국가건설기준코드 검색</label></div>
<div className={"poll_answer"}><input type={"checkbox"} id={"c2"} /> <label htmlFor={"c2"}>국가건설기준코드 검색</label></div>
<div className={"poll_answer"}><input type={"checkbox"} id={"c3"} /> <label htmlFor={"c3"}>국가건설기준코드 검색</label></div>
<div className={"poll_answer"}><input type={"checkbox"} id={"c4"} /> <label htmlFor={"c4"}>국가건설기준코드 검색</label></div>
<div className={"poll_answer"}><input type={"checkbox"} id={"c5"} /> <label htmlFor={"c5"}>국가건설기준코드 검색</label></div>
<div className={"poll_answer"}><input type={"checkbox"} id={"c6"} /> <label htmlFor={"c6"}>국가건설기준코드 검색</label></div>
<div className={"pt-4 ps-2"}>기타</div>
<div><textarea className={"w-100 h_50"}></textarea></div>
<div className={"pt-4 pb-1 fs-4 fw-bold"}><img src={"/assets/images/question.png"} className={"p-2"} />이용자 만족도</div>
<div className={"poll_title"}>건설기준 포털시스템의 만족도에 대한 설문 입니다. 귀하의 의견과 일치되는 곳에 'O' 표해 주십시오.</div>
<div className="board_list BRD019">
<div className="head">
<span>질문내용</span>
<span>매우만족</span>
<span>다소만족</span>
<span>보통</span>
<span>다소불만족</span>
<span>매우불만족</span>
</div>
<div className="result">
<div className="list_item">
<div className={"text-center fw-bold"}>(정보제공)</div>
</div>
<div className="list_item">
<div>(1) 업무와 관련된 정보를 제공하고 있습니까?</div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
</div>
<div className="list_item">
<div>(2) 업무와 관련된 정보를 제공하고 있습니까?</div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
</div>
<div className="list_item">
<div>(3) 업무와 관련된 정보를 제공하고 있습니까?</div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
</div>
<div className="list_item">
<div className={"text-center fw-bold"}>(시스템 일반현황)</div>
</div>
<div className="list_item">
<div>(1) 시스템의 응답속도는 만족하십니까?</div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
<div><input type={"radio"}/></div>
</div>
</div>
</div>
<div className={"pt-4 pb-1 fs-4 fw-bold"}><img src={"/assets/images/question.png"} className={"p-2"} />건의사항 향후 발전방향</div>
<div className={"poll_title"}>건설기준 포털시스템에 개선이 필요한 부분이나 건의사항이 있으시면 기재해 주시기 바랍니다.</div>
<div><textarea className={"w-100 h_100"}></textarea></div>
<Row className={"py-3n"} >
<Col className={"text-center"}><Button type={"button"} className={"btn btn-22498E px-4"} onClick={""} >설문조사 최종 참여하기</Button></Col>
</Row>
</div>
</div>
</div>
</div>
</div>
);
}
export default Poll_Detail;

View File

@ -44,6 +44,7 @@ import SupportSite from 'pages/support/Site';
import SupportApi from 'pages/support/Api';
import SupportResearch from 'pages/support/Research';
import SupportPoll from 'pages/support/Poll';
import SupportSurvey from 'pages/support/Survey';
import EgovSupportDownloadList from 'pages/support/download/EgovDownloadList';
// import EgovSupportDownloadDetail from 'pages/support/download/EgovDownloadDetail';
@ -266,6 +267,7 @@ const SecondRoutes = () => {
<Route path={URL.SUPPORT_API} element={<SupportApi />} />
<Route path={URL.SUPPORT_RESEARCH} element={<SupportResearch />} />
<Route path={URL.SUPPORT_POLL} element={<SupportPoll />} />
<Route path={URL.SUPPORT_SURVEY} element={<SupportSurvey />} />
<Route path={URL.SUPPORT_DOWNLOAD} element={<EgovSupportDownloadList />} />
{/*<Route path={URL.SUPPORT_DOWNLOAD_DETAIL} element={<EgovSupportDownloadDetail />} />*/}

View File

@ -1,7 +1,8 @@
# ??? ? ?? ?? properties ?? ?? ? ?? ??.
# Access-Control-Allow-Origin
Globals.Allow.Origin = https://back.dbnt.co.kr
#Globals.Allow.Origin = https://back.dbnt.co.kr
Globals.Allow.Origin = http://58.234.249.138:50680/
server.port=50688