feat: 건설현장 관리 > 프로젝트 조회 추가

main
thkim 2024-08-20 19:41:19 +09:00
parent 1047cbe2be
commit ea62570439
13 changed files with 657 additions and 90 deletions

View File

@ -18,4 +18,6 @@ src\main\resources\egovframework\spring\context-mybatis.xml
src\main\java\geoinfo\drilling\inquiry\service\DrillingInquiryService.java
src\main\java\geoinfo\drilling\inquiry\service\impl\DrillingInquiryServiceImpl.java
src\main\java\geoinfo\drilling\inquiry\service\DrillingInquiryMapper.java
src\main\resources\egovframework\sqlmap\mapper\drilling\inquiry\DrillingInquiryMapper.xml
src\main\resources\egovframework\sqlmap\mapper\drilling\inquiry\DrillingInquiryMapper.xml
src\main\java\geoinfo\util\MyUtil.java
src\main\webapp\WEB-INF\views\drilling\inquiry\drilling_inquiry_project.jsp

View File

@ -63,7 +63,7 @@ public class DrillingInquiryController {
DrillingInquiryService drillingInquiryService;
@RequestMapping(value = "/drilling/inquiry.do")
public String memberRegi(@RequestParam HashMap<String, Object> params, ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception {
public String drillingInquiry(@RequestParam HashMap<String, Object> params, ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception {
if(request.getSession().getAttribute("USERNAME") == null){
return "isError";
@ -71,6 +71,17 @@ public class DrillingInquiryController {
return "/drilling/inquiry/drilling_inquiry";
}
@RequestMapping(value = "/drilling/inquiry-project.do")
public String drillingInquiryProject(@RequestParam HashMap<String, Object> params, ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception {
if(request.getSession().getAttribute("USERNAME") == null){
return "isError";
}
return "/drilling/inquiry/drilling_inquiry_project";
}
@RequestMapping(value = "/drilling/inquiry/list.do", method = RequestMethod.GET, produces = { "application/json; charset=utf-8" })
@ResponseBody

View File

@ -5,12 +5,15 @@ import java.util.HashMap;
import java.util.List;
import egovframework.rte.psl.dataaccess.mapper.Mapper;
import egovframework.rte.psl.dataaccess.util.EgovMap;
@Mapper("drillingInquiryMapper")
public interface DrillingInquiryMapper {
public Long sPCntTblCsiByKeyword(HashMap<String, Object> params) throws SQLException;
public List<HashMap<String, Object>> sPGetTblCsiByKeyword(HashMap<String, Object> params) throws SQLException;
public List<EgovMap> sPGetTblCsiByKeyword(HashMap<String, Object> params) throws SQLException;
public String sPGetConstCompanyName(Long constCompanyCode) throws SQLException;
}

View File

@ -2,6 +2,7 @@ package geoinfo.drilling.inquiry.service.impl;
import geoinfo.drilling.inquiry.service.DrillingInquiryMapper;
import geoinfo.drilling.inquiry.service.DrillingInquiryService;
import geoinfo.util.MyUtil;
import java.sql.SQLException;
import java.sql.Timestamp;
@ -9,15 +10,17 @@ import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import oracle.sql.TIMESTAMP;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.springframework.stereotype.Service;
import egovframework.rte.psl.dataaccess.util.EgovMap;
@Service("drillingInquiryService")
public class DrillingInquiryServiceImpl implements DrillingInquiryService {
@ -32,21 +35,133 @@ public class DrillingInquiryServiceImpl implements DrillingInquiryService {
JSONObject jsonResponse = new JSONObject();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(request.getSession().getAttribute("USERID") == null){
throw new Exception( "로그인이 필요한 서비스입니다." );
}
//로그인된 계정으로 아래 코드를 구해야 함. 20240820 1915
String masterCompanyOCode = "01";
if( request.getRequestURI().equals("/drilling/inquiry/list.do") ) {
masterCompanyOCode = "null";
}
params.put("masterCompanyOCode", masterCompanyOCode);
String masterCompanyTwCode = "01";
if( request.getRequestURI().equals("/drilling/inquiry/list.do") ) {
masterCompanyTwCode = "null";
}
params.put("masterCompanyTwCode", masterCompanyTwCode);
String masterCompanyThCode = "002";
if( request.getRequestURI().equals("/drilling/inquiry/list.do") ) {
masterCompanyThCode = "null";
}
params.put("masterCompanyThCode", masterCompanyThCode);
String masterCompanyName = null;
params.put("masterCompanyName", masterCompanyName);
try {
try {
Long count = drillingInquiryMapper.sPCntTblCsiByKeyword(params);
List<HashMap<String, Object>> datas = drillingInquiryMapper.sPGetTblCsiByKeyword(params);
Long count = drillingInquiryMapper.sPCntTblCsiByKeyword(params);
List<EgovMap> datas = drillingInquiryMapper.sPGetTblCsiByKeyword(params);
String crtDtKey = "crtDt";
for( HashMap<String, Object> data : datas ) {
String constStateCodeKey = "constStateCode";
String constCompanyCodeKey = "constCompanyCode";
String projectStateCodeKey = "projectStateCode";
String crtDtKey = "crtDt";
for( EgovMap data : datas ) {
Integer nConstStateCodeKey = MyUtil.getIntegerFromObject(data.get(constStateCodeKey));
if( nConstStateCodeKey == null ) {
nConstStateCodeKey = -1;
}
String constStateCodeName = "";
switch(nConstStateCodeKey) {
case 1:
constStateCodeName = "타당성조사 및 계획검토";
break;
case 2:
constStateCodeName = "기본설계";
break;
case 3:
constStateCodeName = "실시설계";
break;
case 4:
constStateCodeName = "시공중";
break;
case 5:
constStateCodeName = "준공";
break;
case 6:
constStateCodeName = "유지보수";
break;
default:
constStateCodeName = "알 수 없음";
break;
}
data.put("constStateCodeName", constStateCodeName);
Long nConstCompanyCodeKey = MyUtil.getLongFromObject(data.get(constCompanyCodeKey));
if( nConstCompanyCodeKey != null ) {
params.put(constCompanyCodeKey, nConstCompanyCodeKey);
String coinstCompanyDept = drillingInquiryMapper.sPGetConstCompanyName(nConstCompanyCodeKey);
data.put("coinstCompanyDept", coinstCompanyDept);
}
Integer nProjectStateCodeKey = MyUtil.getIntegerFromObject(data.get(projectStateCodeKey) );
if( nProjectStateCodeKey == null ) {
nProjectStateCodeKey = -1;
}
String projectStateCodeName = "";
switch(nProjectStateCodeKey) {
case 0:
projectStateCodeName = "미입력";
break;
case 1:
projectStateCodeName = "입력 중";
break;
case 2:
projectStateCodeName = "검수 준비 대기중";
break;
case 3:
projectStateCodeName = "검수 중";
break;
case 4:
projectStateCodeName = "수정 요청";
break;
case 5:
projectStateCodeName = "검수 완료";
break;
default:
constStateCodeName = "알 수 없음";
break;
}
data.put("projectStateCodeName", projectStateCodeName);
//TIMESTAMP oracleTimestamp = (TIMESTAMP)data.get(crtDtKey);
//Timestamp javaTimestamp = oracleTimestamp.timestampValue();
//String formattedDate = dateFormat.format(javaTimestamp);
//data.put(crtDtKey, formattedDate);
TIMESTAMP oracleTimestamp = (TIMESTAMP)data.get(crtDtKey);
if( oracleTimestamp != null ) {
Timestamp javaTimestamp = oracleTimestamp.timestampValue();
String formattedDate = dateFormat.format(javaTimestamp);
data.put(crtDtKey, formattedDate);
}
}
jsonResponse.put("count", count);
jsonResponse.put("datas", datas);

View File

@ -14,7 +14,7 @@ import java.util.*;
import javax.servlet.http.HttpServletRequest;
import org.apache.http.NameValuePair;
import org.apache.commons.httpclient.NameValuePair;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

View File

@ -2,17 +2,27 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="geoinfo.drilling.inquiry.service.DrillingInquiryMapper">
<select id="sPCntTblCsiByKeyword" parameterType="map" resultType="long">
SELECT SP_CNT_TBL_CSI_BY_KEYWORD('C',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL) FROM DUAL
SELECT SP_CNT_TBL_CSI_BY_KEYWORD(
#{constTag, jdbcType=VARCHAR},#{constName, jdbcType=VARCHAR},#{constStartDate, jdbcType=VARCHAR},#{constEndDate, jdbcType=VARCHAR},#{constStateCode, jdbcType=VARCHAR},
#{masterCompanyOCode, jdbcType=VARCHAR},#{masterCompanyTwCode, jdbcType=VARCHAR},#{masterCompanyThCode, jdbcType=VARCHAR}, #{masterCompanyName, jdbcType=VARCHAR},
#{constCompanyDept, jdbcType=VARCHAR},#{constCompanyAdmin, jdbcType=VARCHAR},#{constCompanyTel, jdbcType=VARCHAR},NULL) FROM DUAL
</select>
<select id="sPGetTblCsiByKeyword" parameterType="map" resultType="egovMap">
SELECT * FROM TABLE(SP_GET_TBL_CSI_BY_KEYWORD('C',NULL,NULL,NULL,NULL,NULL,NULL,NULL,
NULL,NULL,NULL,NULL,NULL,2,2,15,1))
SELECT * FROM TABLE(SP_GET_TBL_CSI_BY_KEYWORD(
#{constTag, jdbcType=VARCHAR},#{constName, jdbcType=VARCHAR},#{constStartDate, jdbcType=VARCHAR},#{constEndDate, jdbcType=VARCHAR},#{constStateCode, jdbcType=VARCHAR},
#{masterCompanyOCode, jdbcType=VARCHAR},#{masterCompanyTwCode, jdbcType=VARCHAR},#{masterCompanyThCode, jdbcType=VARCHAR}, #{masterCompanyName, jdbcType=VARCHAR},
#{constCompanyDept, jdbcType=VARCHAR},#{constCompanyAdmin, jdbcType=VARCHAR},#{constCompanyTel, jdbcType=VARCHAR},NULL,
2,2,#{nCount},#{nPage}))
</select>
<select id="sPGetConstCompanyName" parameterType="Long" resultType="String">
SELECT SP_GET_CONST_COMPANY_NAME(#{constCompanyCode}) FROM DUAL
</select>
</mapper>

Binary file not shown.

View File

@ -225,7 +225,7 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
<div class="page-sidebar inside-treeview">
<div class="treeview-project-name">
<p class="project-title">건설현장 관리</p>
<p class="project-value"><a href="/drilling/search.do">프로젝트 조회</a></p>
<p class="project-value"><a href="/drilling/inquiry-project.do">프로젝트 조회</a></p>
<p class="project-value"><a href="/drilling/inquiry.do">건설현장 조회</a></p>
<p class="project-value value-is-active">건설현장 입력</p>
</div>

View File

@ -37,66 +37,178 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
<!-- javascript start-->
<script type="text/javascript">
let xhr;
if(window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
// IE5, IE6 일때
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
function trim(str) {
str = String(str);
return str.replace(/^\s+|\s+$/g, '');
}
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('btn-search').addEventListener('click', function() {
var jsonData = {
"test" : "1234"
}
let xhr;
if(window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
// IE5, IE6 일때
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
const pagingEle = document.getElementById('paging');
const activeLinks = pagingEle.querySelectorAll('li.is-active a');
xhr.open('GET', '/drilling/inquiry/list.do', true);
const constTag = trim( document.getElementById('const-tag').value );
const constName = trim( document.getElementById('const-name').value );
const constStartDate = trim( document.getElementById('const-start-date').value );
const constEndDate = trim( document.getElementById('const-end-date').value );
const constStateCode = trim( document.getElementById('const-state-code').value );
const constCompanyDept = trim( document.getElementById('company-dept').value );
const constCompanyAdmin = trim( document.getElementById('company-admin').value );
const constCompanyTel = trim( document.getElementById('company-tel').value );
const nCount = Number(pagingEle.getAttribute('data-ncount'));
const nPage = Number(pagingEle.getAttribute('data-npage'));
xhr.open('GET', '/drilling/inquiry/list.do?' +
'constTag='+ constTag +
'&' +'constName='+ constName +
'&' +'constStartDate='+ constStartDate +
'&' +'constEndDate='+ constEndDate +
'&' +'constStateCode='+ constStateCode +
'&' +'constCompanyDept='+ constCompanyDept +
'&' +'constCompanyAdmin='+ constCompanyAdmin +
'&' +'constCompanyTel='+ constCompanyTel +
'&' +'nPage='+ nPage +
'&' +'nCount='+ nCount,
true);
xhr.setRequestHeader('Content-type', 'application/json');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// 요청 성공 시 처리
console.log('%o', xhr.responseText);
const obj = JSON.parse(xhr.responseText);
var dataListEle = document.getElementById('data-list');
dataListEle.innerHTML = '';
var content = '';
for( idx in obj.data ) {
content +=
`
<tr>
<td>1</td>
<td style="text-align: left; text-indent: 10px;">` + obj.data[idx].constName + `</td>
<td>` + obj.data[idx].constStateCode + `</td>
<td>` + obj.data[idx].constStartDate + ` ~ ` + obj.data[idx].constEndDate + `</td>
<td>` + obj.data[idx].constName + `</td>
<td>` + obj.data[idx].masterCompanyDept + `</td>
<td>` + obj.data[idx].masterCompanyAdmin + `</td>
<td>` + obj.data[idx].masterCompanyTel + `</td>
<td>` + obj.data[idx].coinstCompanyDept + `</td>
<td>` + obj.data[idx].constCompanyAdmin + `</td>
<td>` + obj.data[idx].constCompanyTel + `</td>
</tr>
// 요청 성공 시 처리
console.log('%o', xhr.responseText);
const obj = JSON.parse(xhr.responseText);
var dataListEle = document.getElementById('data-list');
dataListEle.innerHTML = '';
var content = '';
for( idx in obj.datas ) {
const constStartDate = obj.datas[idx].constStartDate == null ? '알 수 없음' : obj.datas[idx].constStartDate;
const constEndDate = obj.datas[idx].constEndDate == null ? '알 수 없음' : obj.datas[idx].constEndDate;
const masterCompanyDept = obj.datas[idx].masterCompanyDept == null ? '-' : obj.datas[idx].masterCompanyDept;
const masterCompanyAdmin = obj.datas[idx].masterCompanyAdmin == null ? '-' : obj.datas[idx].masterCompanyAdmin;
const masterCompanyTel = obj.datas[idx].masterCompanyTel == null ? '-' : obj.datas[idx].masterCompanyTel;
const coinstCompanyDept = obj.datas[idx].coinstCompanyDept == null ? '-' : obj.datas[idx].coinstCompanyDept;
const constCompanyAdmin = obj.datas[idx].constCompanyAdmin == null ? '-' : obj.datas[idx].constCompanyAdmin;
const constCompanyTel = obj.datas[idx].constCompanyTel == null ? '-' : obj.datas[idx].constCompanyTel;
content +=
`
<tr>
<td>` + (obj.count - idx - (nCount * (nPage - 1))) + `</td>
<td style="text-align: left; text-indent: 10px;">` + obj.datas[idx].constName + `</td>
<td>` + obj.datas[idx].projectStateCodeName + `</td>
<td>` + constStartDate + ` ~ ` + constEndDate + `</td>
<td>` + obj.datas[idx].constStateCodeName + `</td>
<td>` + masterCompanyDept + `</td>
<td>` + masterCompanyAdmin + `</td>
<td>` + masterCompanyTel + `</td>
<td>` + coinstCompanyDept + `</td>
<td>` + constCompanyAdmin + `</td>
<td>` + constCompanyTel + `</td>
</tr>
`;
}
dataListEle.innerHTML = content;
document.getElementById('count').innerHTML = obj.count;
let pagingEleHTML = `
<ul>
<li><a href="#"><img src="/com/img/common/icon/ico_chevron.svg" alt="Chevron-prev" class="page-prev"></a></li>
`;
dataListEle.innerHTML = tt;
} else if (xhr.readyState === 4) {
// 요청 실패 시 처리
console.error('요청 실패:', xhr.status);
}
for( let i = 1; i<Math.floor(obj.count / nCount)+2; i++ ) {
if( i === nPage ) {
pagingEleHTML += `<li data-npage="` + i + `" class="page-button is-active"><a href="#">` + i + `</a></li>`;
} else {
pagingEleHTML += `<li data-npage="` + i + `" class="page-button" ><a href="#">` + i + `</a></li>`;
}
}
pagingEleHTML += `
<li><a href="#"><img src="/com/img/common/icon/ico_chevron.svg" alt="Chevron-next" class="page-next"></a></li>
</ul>
`;
pagingEle.innerHTML = pagingEleHTML;
// 모든 .page-button 요소 가져오기
const pageButtons = document.querySelectorAll('.page-button');
// 각 버튼에 클릭 이벤트 리스너 추가
pageButtons.forEach(button => {
button.addEventListener('click', () => {
// 클릭된 버튼의 내용 (페이지 번호 등) 가져오기
const pageNumber = button.getAttribute('data-npage');
// 페이지 이동 등 원하는 동작 수행
console.log(`페이지 ` + pageNumber + `로 이동합니다.`);
pagingEle.setAttribute('data-npage', pageNumber);
document.getElementById('btn-search').click();
});
});
} else if (xhr.readyState === 4) {
// 요청 실패 시 처리
console.error('요청 실패:', xhr.status);
}
};
xhr.send(JSON.stringify(jsonData));
xhr.send();
});
// 초기 테이블 추가 트리거
document.getElementById('btn-search').click();
document.getElementById('const-name').addEventListener('keydown', function(event) {
if (event.key === 'Enter') {
event.preventDefault(); // 폼 제출 방지
document.getElementById('btn-search').click();
}
});
document.getElementById('company-dept').addEventListener('keydown', function(event) {
if (event.key === 'Enter') {
event.preventDefault(); // 폼 제출 방지
document.getElementById('btn-search').click();
}
});
document.getElementById('company-admin').addEventListener('keydown', function(event) {
if (event.key === 'Enter') {
event.preventDefault(); // 폼 제출 방지
document.getElementById('btn-search').click();
}
});
document.getElementById('company-tel').addEventListener('keydown', function(event) {
if (event.key === 'Enter') {
event.preventDefault(); // 폼 제출 방지
document.getElementById('btn-search').click();
}
});
});
</script>
@ -110,7 +222,7 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
<div class="page-sidebar">
<div class="treeview-project-name">
<p class="project-title">건설현장 관리</p>
<p class="project-value"><a href="/drilling/search.do">프로젝트 조회</a></p>
<p class="project-value"><a href="/drilling/inquiry-project.do">프로젝트 조회</a></p>
<p class="project-value value-is-active">건설현장 조회</p>
<p class="project-value"><a href="/drilling/input.do">건설현장 입력</a></p>
</div>
@ -137,21 +249,23 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
<div class="page-top-search">
<form class="form-inline">
<label class="input-label-display">검색</label>
<input type="search" id="name-input" name="q" class="input" placeholder="프로젝트명" title="" value="">
<input type="date" data-placeholder="20240321" >
<input type="hidden" id="const-tag" name="const-tag" value="C" >
<input type="search" id="const-name" name="const-name" class="input" placeholder="프로젝트명" title="" value="">
<input type="date" id="const-start-date" name="const-start-date" >
<span>~</span>
<input type="date">
<input type="date" id="const-end-date" name="const-end-date" >
<input type="hidden" id="const-state-code" name="const-end-date">
</form>
<form class="form-inline-row">
<input type="text" class="input input-1" placeholder="담당부서,건설사명" title="" value="">
<input type="text" class="input input-2" placeholder="담당자" title="" value="">
<input type="text" class="input input-3" placeholder="담당 연락처" title="" value="">
<input type="text" id="company-dept" name="company-dept" class="input input-1" placeholder="담당부서,건설사명" title="" value="">
<input type="text" id="company-admin" name="company-admin" class="input input-2" placeholder="담당자" title="" value="">
<input type="text" id="company-tel" name="company-tel" class="input input-3" placeholder="담당 연락처" title="" value="">
<button type="button" id="btn-search" class="btn btn-search">
<span>조회하기</span>
</button>
</form>
</div>
<div class="table-info-group">Total: 132건</div>
<div class="table-info-group">Total: <span id="count">-</span>건</div>
<div class="table-wrap">
<table>
<colgroup>
@ -192,21 +306,7 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
</tbody>
</table>
</div>
<div class="paging">
<ul>
<li><a href="#"><img src="/com/img/common/icon/ico_chevron.svg" alt="Chevron-prev" class="page-prev"></a></li>
<li class="is-active"><a href="#">1</a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">6</a></li>
<li><a href="#">7</a></li>
<li><a href="#">8</a></li>
<li><a href="#">9</a></li>
<li><a href="#">10</a></li>
<li><a href="#"><img src="/com/img/common/icon/ico_chevron.svg" alt="Chevron-next" class="page-next"></a></li>
</ul>
<div id="paging" class="paging" data-npage="1" data-ncount="10">
</div>
</div>
</div>

View File

@ -0,0 +1,326 @@
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%
if (request.getSession().getAttribute("USERID") == null) {
%>
<script>alert('로그인후 이용하실 수 있습니다.');window.location.href='/index.do';</script>
<%
return;
}
%>
<%
if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSession().getAttribute("CLS") ) == false ) {
%>
<script>alert('발주 기관 회원만 이용가능합니다.');window.location.href='/index.do';</script>
<%
return;
}
%>
<%@ include file="/include/inc_head_2021_new.jsp" %>
<!-- header start-->
<c:import url="/drilling/common/includeTopMenu.do" charEncoding="UTF-8" />
<!-- header end-->
<!-- javascript start-->
<script type="text/javascript">
let xhr;
if(window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
} else {
// IE5, IE6 일때
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
function trim(str) {
str = String(str);
return str.replace(/^\s+|\s+$/g, '');
}
document.addEventListener('DOMContentLoaded', function() {
document.getElementById('btn-search').addEventListener('click', function() {
const pagingEle = document.getElementById('paging');
const activeLinks = pagingEle.querySelectorAll('li.is-active a');
const constTag = trim( document.getElementById('const-tag').value );
const constName = trim( document.getElementById('const-name').value );
const constStartDate = trim( document.getElementById('const-start-date').value );
const constEndDate = trim( document.getElementById('const-end-date').value );
const constStateCode = trim( document.getElementById('const-state-code').value );
const constCompanyDept = trim( document.getElementById('company-dept').value );
const constCompanyAdmin = trim( document.getElementById('company-admin').value );
const constCompanyTel = trim( document.getElementById('company-tel').value );
const nCount = Number(pagingEle.getAttribute('data-ncount'));
const nPage = Number(pagingEle.getAttribute('data-npage'));
xhr.open('GET', '/drilling/inquiry/list.do?' +
'constTag='+ constTag +
'&' +'constName='+ constName +
'&' +'constStartDate='+ constStartDate +
'&' +'constEndDate='+ constEndDate +
'&' +'constStateCode='+ constStateCode +
'&' +'constCompanyDept='+ constCompanyDept +
'&' +'constCompanyAdmin='+ constCompanyAdmin +
'&' +'constCompanyTel='+ constCompanyTel +
'&' +'nPage='+ nPage +
'&' +'nCount='+ nCount,
true);
xhr.setRequestHeader('Content-type', 'application/json');
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// 요청 성공 시 처리
console.log('%o', xhr.responseText);
const obj = JSON.parse(xhr.responseText);
var dataListEle = document.getElementById('data-list');
dataListEle.innerHTML = '';
var content = '';
for( idx in obj.datas ) {
const constStartDate = obj.datas[idx].constStartDate == null ? '알 수 없음' : obj.datas[idx].constStartDate;
const constEndDate = obj.datas[idx].constEndDate == null ? '알 수 없음' : obj.datas[idx].constEndDate;
const masterCompanyDept = obj.datas[idx].masterCompanyDept == null ? '-' : obj.datas[idx].masterCompanyDept;
const masterCompanyAdmin = obj.datas[idx].masterCompanyAdmin == null ? '-' : obj.datas[idx].masterCompanyAdmin;
const masterCompanyTel = obj.datas[idx].masterCompanyTel == null ? '-' : obj.datas[idx].masterCompanyTel;
const coinstCompanyDept = obj.datas[idx].coinstCompanyDept == null ? '-' : obj.datas[idx].coinstCompanyDept;
const constCompanyAdmin = obj.datas[idx].constCompanyAdmin == null ? '-' : obj.datas[idx].constCompanyAdmin;
const constCompanyTel = obj.datas[idx].constCompanyTel == null ? '-' : obj.datas[idx].constCompanyTel;
content +=
`
<tr>
<td>` + (obj.count - idx - (nCount * (nPage - 1))) + `</td>
<td style="text-align: left; text-indent: 10px;">` + obj.datas[idx].constName + `</td>
<td>` + obj.datas[idx].projectStateCodeName + `</td>
<td>` + constStartDate + ` ~ ` + constEndDate + `</td>
<td>` + obj.datas[idx].constStateCodeName + `</td>
<td>` + masterCompanyDept + `</td>
<td>` + masterCompanyAdmin + `</td>
<td>` + masterCompanyTel + `</td>
<td>` + coinstCompanyDept + `</td>
<td>` + constCompanyAdmin + `</td>
<td>` + constCompanyTel + `</td>
</tr>
`;
}
dataListEle.innerHTML = content;
document.getElementById('count').innerHTML = obj.count;
let pagingEleHTML = `
<ul>
<li><a href="#"><img src="/com/img/common/icon/ico_chevron.svg" alt="Chevron-prev" class="page-prev"></a></li>
`;
for( let i = 1; i<Math.floor(obj.count / nCount)+2; i++ ) {
if( 10 < i ) {
break;
}
if( i === nPage ) {
pagingEleHTML += `<li data-npage="` + i + `" class="page-button is-active"><a href="#">` + i + `</a></li>`;
} else {
pagingEleHTML += `<li data-npage="` + i + `" class="page-button" ><a href="#">` + i + `</a></li>`;
}
}
pagingEleHTML += `
<li><a href="#"><img src="/com/img/common/icon/ico_chevron.svg" alt="Chevron-next" class="page-next"></a></li>
</ul>
`;
pagingEle.innerHTML = pagingEleHTML;
// 모든 .page-button 요소 가져오기
const pageButtons = document.querySelectorAll('.page-button');
// 각 버튼에 클릭 이벤트 리스너 추가
pageButtons.forEach(button => {
button.addEventListener('click', () => {
// 클릭된 버튼의 내용 (페이지 번호 등) 가져오기
const pageNumber = button.getAttribute('data-npage');
// 페이지 이동 등 원하는 동작 수행
console.log(`페이지 ` + pageNumber + `로 이동합니다.`);
pagingEle.setAttribute('data-npage', pageNumber);
document.getElementById('btn-search').click();
});
});
} else if (xhr.readyState === 4) {
// 요청 실패 시 처리
console.error('요청 실패:', xhr.status);
}
};
xhr.send();
});
// 초기 테이블 추가 트리거
document.getElementById('btn-search').click();
document.getElementById('const-name').addEventListener('keydown', function(event) {
if (event.key === 'Enter') {
event.preventDefault(); // 폼 제출 방지
document.getElementById('btn-search').click();
}
});
document.getElementById('company-dept').addEventListener('keydown', function(event) {
if (event.key === 'Enter') {
event.preventDefault(); // 폼 제출 방지
document.getElementById('btn-search').click();
}
});
document.getElementById('company-admin').addEventListener('keydown', function(event) {
if (event.key === 'Enter') {
event.preventDefault(); // 폼 제출 방지
document.getElementById('btn-search').click();
}
});
document.getElementById('company-tel').addEventListener('keydown', function(event) {
if (event.key === 'Enter') {
event.preventDefault(); // 폼 제출 방지
document.getElementById('btn-search').click();
}
});
});
</script>
<!-- javascript end-->
<!-- 페이지 컨테이너 시작 -->
<section class="page-container">
<div class="page-content-wrapper drilling inquiry">
<!-- 서브메뉴 시작 -->
<div class="page-sidebar-wrapper">
<div class="page-sidebar">
<div class="treeview-project-name">
<p class="project-title">건설현장 관리</p>
<p class="project-value value-is-active">프로젝트 조회</p>
<p class="project-value"><a href="/drilling/inquiry.do">건설현장 조회</a></p>
<p class="project-value"><a href="/drilling/input.do">건설현장 입력</a></p>
</div>
</div>
</div>
<!-- 서브메뉴 끝 -->
<!-- 콘텐츠 시작 -->
<div class="page-content">
<div class="page-content-inner">
<!-- 카테고리 시작 -->
<div class="category-wrapper">
<ul class="page-category">
<li class="category-item"></li>
<li class="category-item">프로젝트 조회</li>
</ul>
<a href="#" class="btn btn-help">도움말</a>
</div>
<!-- 카테고리 끝 -->
<h1 class="page-title-1depth">프로젝트 조회</h1>
<!-- 내용 시작 -->
<div class="content-wrapper">
<div class="content1">
<div class="page-top-search">
<form class="form-inline">
<label class="input-label-display">검색</label>
<input type="hidden" id="const-tag" name="const-tag" value="P" >
<input type="search" id="const-name" name="const-name" class="input" placeholder="프로젝트명" title="" value="">
<input type="date" id="const-start-date" name="const-start-date" >
<span>~</span>
<input type="date" id="const-end-date" name="const-end-date" >
<input type="hidden" id="const-state-code" name="const-end-date">
</form>
<form class="form-inline-row">
<input type="text" id="company-dept" name="company-dept" class="input input-1" placeholder="담당부서,건설사명" title="" value="">
<input type="text" id="company-admin" name="company-admin" class="input input-2" placeholder="담당자" title="" value="">
<input type="text" id="company-tel" name="company-tel" class="input input-3" placeholder="담당 연락처" title="" value="">
<button type="button" id="btn-search" class="btn btn-search">
<span>조회하기</span>
</button>
</form>
</div>
<div class="table-info-group">Total: <span id="count">-</span>건</div>
<div class="table-wrap">
<table>
<colgroup>
<col style="width: 3%;">
<col style="width: 27%;">
<col style="width: 5%;">
<col style="width: 10%;">
<col style="width: 10%;">
<col style="width: 13%;">
<col style="width: 5%;">
<col style="width: 7%;">
<col style="width: 8%;">
<col style="width: 5%;">
<col style="width: 7%;">
</colgroup>
<thead>
<tr>
<th rowspan="2">연번</th>
<th rowspan="2">사업명</th>
<th rowspan="2">입력상태</th>
<th colspan="2">사업내용</th>
<th colspan="3">발주기관현황</th>
<th colspan="3">건설사현황</th>
</tr>
<tr>
<th>사업기간</th>
<th>사업단계 <br>(설계 시공 준공 유지관리)</th>
<th>담당부서</th>
<th>담당자</th>
<th>담당연락처</th>
<th>건설사명</th>
<th>담당자</th>
<th>담당연락처</th>
</tr>
</thead>
<tbody id="data-list">
</tbody>
</table>
</div>
<div id="paging" class="paging" data-npage="1" data-ncount="10">
</div>
</div>
</div>
<!-- 내용 끝 -->
</div>
</div>
<!-- 콘텐츠 끝 -->
</div>
</section>
<!-- 페이지 컨테이너 끝 -->
<div id="calenderDiv" class="trViewOff" style="position:absolute;"></div>
<%@ include file="/include/inc_footer_2021_new.jsp" %>

View File

@ -3512,7 +3512,6 @@ ul.faq-q > li textarea {
overflow-x: scroll;
}
.drilling .table-wrap table {
width: 160%;
border-collapse: collapse;
table-layout: fixed;
}
@ -3537,7 +3536,8 @@ ul.faq-q > li textarea {
font-size: 12px;
border: 1px solid #ddd;
text-align: center;
padding: 10px 12px;
padding: 10px 15px;
white-space: nowrap;
}
.drilling .table-wrap table tr:nth-child(even) {
background-color: #f5f5f5;

File diff suppressed because one or more lines are too long

View File

@ -3137,7 +3137,6 @@ ul.faq-q > li textarea {
overflow-x: scroll;
}
.table-wrap table {
width: 160%;
border-collapse: collapse;
table-layout: fixed;
}
@ -3162,7 +3161,8 @@ ul.faq-q > li textarea {
font-size: 12px;
border: 1px solid #ddd;
text-align: center;
padding: 10px 12px;
padding: 10px 15px;
white-space: nowrap;
}
.table-wrap table tr:nth-child(even){
background-color: #f5f5f5;