kcscDev/egovframe-template-simple-r.../src/pages/standardCode/list/StandardCodeSearchForm.jsx

164 lines
7.9 KiB
React
Raw Normal View History

2024-01-29 09:01:11 +00:00
import React, {useEffect, useState} from "react";
2024-01-30 08:59:30 +00:00
import {Nav} from "react-bootstrap";
import Row from "react-bootstrap/Row";
import Col from "react-bootstrap/Col";
import {Link} from "react-router-dom";
import Button from "react-bootstrap/Button";
2024-01-31 09:00:33 +00:00
import * as EgovNet from "../../../api/egovFetch";
2024-01-29 09:01:11 +00:00
2024-01-30 08:59:30 +00:00
function StandardCodeSearchForm({param, reloadFunction, resultCnt, remarkCnt}){
2024-01-29 09:01:11 +00:00
const [searchCondition, setSearchCondition] = useState({
tab: Number(param?.substring(0, 2)),
category1: param?.substring(2, 4),
category2: param?.substring(4, 6),
2024-01-31 09:00:33 +00:00
category3: param?.substring(6, 8),
2024-01-29 09:01:11 +00:00
});
const [subTabsVisible, setSubTabsVisible] = useState(false);
const [cat1SelectOption, setCat1SelectOption] = useState([])
const [cat2SelectOption, setCat2SelectOption] = useState([])
const [cat3SelectOption, setCat3SelectOption] = useState([])
2024-01-31 09:00:33 +00:00
function getSelectBoxOption(groupCd, handler){
EgovNet.requestFetch(
'/standardCode/category-option?listCode='+groupCd,
{
method: "GET",
headers: {
'Content-type': 'application/json',
}
},
handler,
function (resp) {
console.log("err response : ", resp);
}
);
}
2024-01-29 09:01:11 +00:00
useEffect(() => {
if(searchCondition.tab){
if(searchCondition.tab !== 10 && searchCondition.tab !== 20){
setSubTabsVisible(true)
}else{
setSubTabsVisible(false)
}
}
reloadFunction(searchCondition)
}, [searchCondition]);
2024-01-31 09:00:33 +00:00
useEffect(() => {
setSearchCondition({...searchCondition, category1: '', category2: '', category3: ''})
const groupCd = searchCondition.tab;
getSelectBoxOption(groupCd, (resp)=>{
const options = [];
resp.result.groupList.forEach(function (item, index){
options.push(<option value={item.groupCurCd}>{item.groupNm}</option>)
2024-01-31 09:00:33 +00:00
})
setCat1SelectOption(options)
})
2024-01-31 09:00:33 +00:00
}, [searchCondition.tab]);
useEffect(() => {
setSearchCondition({...searchCondition, category2: '', category3: ''})
const groupCd = searchCondition.tab+searchCondition.category1;
getSelectBoxOption(groupCd, (resp)=>{
const options = [];
resp.result.groupList.forEach(function (item, index){
options.push(<option value={item.groupCurCd}>{item.groupNm}</option>)
})
setCat2SelectOption(options)
})
2024-01-31 09:00:33 +00:00
}, [searchCondition.category1]);
useEffect(() => {
setSearchCondition({...searchCondition, category3: ''})
const groupCd = searchCondition.tab+searchCondition.category1+searchCondition.category2;
getSelectBoxOption(groupCd, (resp)=>{
const options = [];
resp.result.groupList.forEach(function (item, index){
options.push(<option value={item.groupCurCd}>{item.groupNm}</option>)
})
setCat3SelectOption(options)
})
2024-01-31 09:00:33 +00:00
}, [searchCondition.category2]);
2024-01-29 09:01:11 +00:00
return (
<>
<div className="condition">
<ul>
<li className="third_1 L">
<div className={`tab ${searchCondition.tab === 10 ? 'active' : ''}`}
onClick={() => {setSearchCondition({...searchCondition, tab: 10})}}>설계기준</div>
</li>
<li className="third_1 L">
<div className={`tab ${searchCondition.tab === 20 ? 'active' : ''}`}
onClick={() => {setSearchCondition({...searchCondition, tab: 20})}}>표준시방서</div>
</li>
<li className="third_1 L">
<div className={`tab ${[40, 50, 60, 70, 80, 90].includes(searchCondition.tab) ? 'active' : ''}`}
onClick={() => {setSearchCondition({...searchCondition, tab: 40})}}>전문시방서</div>
</li>
<li className="third_1 L">
<label className="f_select" htmlFor="sel1">
<select id="sel1" title="조건" value={searchCondition.category1}
onChange={(e)=>{setSearchCondition({...searchCondition, category1: e.target.value})}}>
2024-01-29 09:01:11 +00:00
<option value="">전체</option>
{cat1SelectOption}
2024-01-29 09:01:11 +00:00
</select>
</label>
</li>
<li className="third_1 L">
<label className="f_select w_306" htmlFor="sel1">
<select id="sel2" title="조건" value={searchCondition.category2}
onChange={(e)=>{setSearchCondition({...searchCondition, category2: e.target.value})}}>
2024-01-29 09:01:11 +00:00
<option value="">전체</option>
{cat2SelectOption}
2024-01-29 09:01:11 +00:00
</select>
</label>
</li>
<li className="third_1 L">
<label className="f_select w_306" htmlFor="sel1">
<select id="sel3" title="조건" value={searchCondition.category3}
onChange={(e)=>{setSearchCondition({...searchCondition, category3: e.target.value})}}>
2024-01-29 09:01:11 +00:00
<option value="">전체</option>
{cat3SelectOption}
2024-01-29 09:01:11 +00:00
</select>
</label>
</li>
2024-01-30 08:59:30 +00:00
<li className="third_1 L">
{remarkCnt?(
<span>전체 {resultCnt} / <span className={"text-danger"}>{remarkCnt}</span> </span>
):(
<span>전체 {resultCnt} </span>
)}
</li>
2024-01-29 09:01:11 +00:00
<li className="third_1 L">
<div className={`tab`}>통합 다운로드</div>
</li>
</ul>
</div>
2024-01-30 08:59:30 +00:00
<Row className={"justify-content-between"}>
<Col>
{subTabsVisible && (
2024-01-31 00:51:55 +00:00
<Nav className={"tabs"} variant={"tabs"} >
2024-01-30 08:59:30 +00:00
<Nav.Item><Nav.Link className={`${searchCondition.tab === 40 ? 'active' : ''}`} onClick={() => {setSearchCondition({...searchCondition, tab: 40})}}>서울특별시</Nav.Link></Nav.Item>
<Nav.Item><Nav.Link className={`${searchCondition.tab === 50 ? 'active' : ''}`} onClick={() => {setSearchCondition({...searchCondition, tab: 50})}}>고속도로공사</Nav.Link></Nav.Item>
<Nav.Item><Nav.Link className={`${searchCondition.tab === 60 ? 'active' : ''}`} onClick={() => {setSearchCondition({...searchCondition, tab: 60})}}>한국농어촌공사</Nav.Link></Nav.Item>
<Nav.Item><Nav.Link className={`${searchCondition.tab === 70 ? 'active' : ''}`} onClick={() => {setSearchCondition({...searchCondition, tab: 70})}}>철도건설공사</Nav.Link></Nav.Item>
<Nav.Item><Nav.Link className={`${searchCondition.tab === 80 ? 'active' : ''}`} onClick={() => {setSearchCondition({...searchCondition, tab: 80})}}>LH한국토지주택공사</Nav.Link></Nav.Item>
<Nav.Item><Nav.Link className={`${searchCondition.tab === 90 ? 'active' : ''}`} onClick={() => {setSearchCondition({...searchCondition, tab: 90})}}>K-Water</Nav.Link></Nav.Item>
</Nav>
)}
</Col>
<Col xs={"auto"}>
<Button href={"/standardCode/info"} size={"sm"} variant={"secondary"}>건설기준코드 안내</Button>
</Col>
</Row>
2024-01-29 09:01:11 +00:00
</>
);
}
export default StandardCodeSearchForm;