feat: 건설현장 관리 > 프로젝트 조회 추가
parent
1047cbe2be
commit
ea62570439
4
list.txt
4
list.txt
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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.
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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" %>
|
||||
|
|
@ -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
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue