kcscDev/egovframe-template-simple-r.../src/pages/admin/committee/ProgressStatus.jsx

250 lines
8.3 KiB
JavaScript

import React, { useState, useEffect } from 'react';
import { Link, useLocation } from 'react-router-dom';
import LinearProgress from '@mui/material/LinearProgress';
import * as EgovNet from 'api/egovFetch';
import URL from 'constants/url';
import { default as EgovLeftNav } from 'components/leftmenu/EgovLeftNavAdmin';
import EgovPagingPaginationInfo from 'components/EgovPagingPaginationInfo';
import styled from "styled-components";
const StyledDiv = styled.div`
.BRD008 {
.head {
span {
text-align: left;
&:nth-child(1) {
width: 32px;
text-align: center;
}
&:nth-child(2) {
width: 60px;
text-align: center;
}
&:nth-child(3) {
width: 300px;
}
&:nth-child(4) {
width: 110px;
}
&:nth-child(5) {
width: 70px;
}
&:nth-child(6) {
width: 60px;
}
&:nth-child(7) {
width: 50px;
text-align: center;
}
&:nth-child(8) {
width: 50px;
text-align: center;
}
}
}
.result .list_item {
& > div {
text-align: left;
&:nth-child(1) {
width: 32px;
text-align: center;
}
&:nth-child(2) {
width: 60px;
text-align: center;
}
&:nth-child(3) {
width: 300px;
}
&:nth-child(4) {
width: 110px;
}
&:nth-child(5) {
width: 70px;
}
&:nth-child(6) {
width: 60px;
}
&:nth-child(7) {
width: 50px;
text-align: center;
}
&:nth-child(8) {
width: 50px;
text-align: center;
}
}
.code-name {
color: #001574;
padding: 0px 0px 3px 0px;
border-bottom: 0px solid #e8e8e8;
&:hover {
border-bottom: 1px solid #001574;
}
font-weight: 500;
}
}
}
.board-bot {
margin-top: 20px;
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: flex-start;
align-items: stretch;
justify-content: center;
& > *:nth-child(1) {
width: 16%;
justify-content: left;
}
& > *:nth-child(2) {
width: 68%;
justify-content: center;
}
& > *:nth-child(3) {
width: 16%;
justify-content: right;
}
}
`;
function ProgressStatus(props) {
const location = useLocation();
const [listItem, setListItem] = useState();
const [paginationInfo, setPaginationInfo] = useState({});
const [searchCondition, setSearchCondition] = useState(location.state?.searchCondition || { pageIndex: 1, searchCnd: '0', searchWrd: '' });
useEffect(function () {
getList(searchCondition);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
const requestOptions = {
method: "GET",
headers: {
'Content-type': 'application/json'
}
}
const getList = (searchCondition) => {
EgovNet.requestFetch(`/admin/committee/progress-status/list?page=${searchCondition.pageIndex-1}&size=10&sort=popupSeq,desc`,
requestOptions,
function (resp) {
console.log('%o', resp);
setListItem(resp.result.list);
setPaginationInfo({...resp.result.paginationInfo});
}
);
}
const Location = React.memo(function Location() {
return (
<div className="location">
<ul>
<li><Link to={URL.MAIN} className="home">Home</Link></li>
<li><Link to={URL.ADMIN}>사이트 관리</Link></li>
<li>위원회 관리</li>
<li>진행현황 관리</li>
</ul>
</div>
)
});
return (
<div className="container">
<div className="c_wrap">
{/* <!-- Location --> */}
<Location />
{/* <!--// Location --> */}
<div className="layout">
{/* <!-- Navigation --> */}
<EgovLeftNav></EgovLeftNav>
{/* <!--// Navigation --> */}
<div className="contents " id="contents">
{/* <!-- 본문 --> */}
<StyledDiv>
<div className="top_tit">
<h1 className="tit_1">진행현황 관리</h1>
</div>
{/* <!-- 게시판목록 --> */}
<div className="board_list BRD008">
<div className="head">
<span>#</span>
<span>구분</span>
<span>제목 / 코드명</span>
<span>진행위원회</span>
<span>진행단계</span>
<span>등록일</span>
<span>수정</span>
<span>삭제</span>
</div>
<div className="result">
{/* <!-- case : 데이터 없을때 --> */}
{typeof listItem === 'undefined' &&
<p className="no_data" key="0"><LinearProgress /></p>
}
{listItem && listItem.length === 0 &&
<p className="no_data" key="0">검색된 결과가 없습니다.</p>
}
{listItem && listItem.map((it)=>(
<div className='list_item' key={it.seq}>
<div>{it.number}</div>
<div>{it.drftTypeNm}</div>
<div>{it.categoryNm}<br /><Link to={URL.ADMIN__COMMITTEE__PROGRESS_STATUS__DETAIL} state={{drftSeq: it.seq}} className="code-name">{it.title}</Link></div>
<div>{it.orgNm}</div>
<div>진행단계표시</div>
<div>{it.regDate}</div>
<div><button type='button' className='btn btn_skyblue_h32 px-1'>수정</button></div>
<div><button type='button' className='btn btn_red_h32 px-1'>삭제</button></div>
</div>
))}
</div>
</div>
{/* <!--// 게시판목록 --> */}
{/* <!-- Paging --> */}
<div className="board-bot">
<div></div>
<EgovPagingPaginationInfo pagination={paginationInfo} setPaginationInfo={setPaginationInfo} moveToPage={passedPage => {
getList({ ...searchCondition, pageIndex: passedPage })
}} />
<div className="right_col btn1">
<Link to={URL.ADMIN__COMMITTEE__PROGRESS_STATUS__CREATE} className="btn btn_blue_h32 w_100">등록</Link>
</div>
</div>
{/* <!--/ Paging --> */}
</StyledDiv>
{/* <!--// 본문 --> */}
</div>
</div>
</div>
</div>
);
}
export default ProgressStatus;