main
parent
df93148a51
commit
1047cbe2be
|
|
@ -1,6 +1,4 @@
|
|||
/target
|
||||
#/src/main/webapp/**/**.jar
|
||||
#/src/main/webapp/**/**.class
|
||||
|
||||
|
||||
HELP.md
|
||||
|
|
@ -14,7 +12,6 @@ build/
|
|||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
#.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
|
|
@ -64,7 +61,6 @@ out/
|
|||
.mtj.tmp/
|
||||
|
||||
# Package Files #
|
||||
#*.jar
|
||||
*.war
|
||||
*.nar
|
||||
*.ear
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import java.io.FileOutputStream;
|
|||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import java.text.ParseException;
|
||||
|
|
@ -29,6 +30,7 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
|
@ -55,64 +57,83 @@ import ictway.whois.whoisSMS;
|
|||
@Controller
|
||||
public class DrillingInquiryController {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(DrillingInquiryController.class);
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(DrillingInquiryController.class);
|
||||
|
||||
@Autowired
|
||||
@Autowired
|
||||
DrillingInquiryService drillingInquiryService;
|
||||
|
||||
@RequestMapping(value = "/drilling/inquiry.do")
|
||||
public String memberRegi(@RequestParam HashMap<String, Object> params, ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
@RequestMapping(value = "/drilling/inquiry.do")
|
||||
public String memberRegi(@RequestParam HashMap<String, Object> params, ModelMap model, HttpServletRequest request, HttpServletResponse response) throws Exception {
|
||||
|
||||
if(request.getSession().getAttribute("USERNAME") == null){
|
||||
return "isError";
|
||||
}
|
||||
if(request.getSession().getAttribute("USERNAME") == null){
|
||||
return "isError";
|
||||
}
|
||||
|
||||
return "/drilling/inquiry/drilling_inquiry";
|
||||
}
|
||||
return "/drilling/inquiry/drilling_inquiry";
|
||||
}
|
||||
|
||||
@RequestMapping(value = "/drilling/inquiry/list.do", method = RequestMethod.GET)
|
||||
@ResponseBody
|
||||
public JSONObject drillingInquiryList (
|
||||
HttpServletRequest request,
|
||||
@RequestParam HashMap<String, Object> params,
|
||||
@RequestMapping(value = "/drilling/inquiry/list.do", method = RequestMethod.GET, produces = { "application/json; charset=utf-8" })
|
||||
@ResponseBody
|
||||
public ResponseEntity<JSONObject> drillingInquiryList (
|
||||
HttpServletRequest request,
|
||||
@RequestParam HashMap<String, Object> params,
|
||||
HttpServletResponse response
|
||||
) {
|
||||
|
||||
System.out.println(
|
||||
"\n--------------------------------------------------------------\n" +
|
||||
System.out.println(
|
||||
"\n--------------------------------------------------------------\n" +
|
||||
request.getRequestURI() + " IN:" +
|
||||
"\n--------------------------------------------------------------\n" +
|
||||
"params" + params.toString() + "\n" +
|
||||
"\n--------------------------------------------------------------\n"
|
||||
);
|
||||
|
||||
JSONObject jSONOResponse = null;
|
||||
JSONObject jSONOResponse = null;
|
||||
try {
|
||||
jSONOResponse = drillingInquiryService.drillingInquiryList( request, params );
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
jSONOResponse = new JSONObject();
|
||||
String strTxt =
|
||||
"---------- BUG REPORTING START ----------" + "\n" +
|
||||
jSONOResponse = drillingInquiryService.drillingInquiryList( request, params );
|
||||
} catch (Exception e) {
|
||||
// TODO Auto-generated catch block
|
||||
jSONOResponse = new JSONObject();
|
||||
String strTxt =
|
||||
"---------- BUG REPORTING START ----------" + "\n" +
|
||||
"에러 문구:[" + request.getRequestURI() + " " + "]" + "\n" +
|
||||
"params:[\n" + params.toString() + "\n]\n" +
|
||||
"e.getMessage():[\n" + e.getMessage() + "\n]\n" + "\n" +
|
||||
"new Date().toString():[" + new Date().toString() + "]\n" + "\n" +
|
||||
"---------- BUG REPORTING END ----------" + "\n" +
|
||||
"";
|
||||
System.out.println(strTxt);
|
||||
jSONOResponse.put("resultCode", -1);
|
||||
jSONOResponse.put("result", "false");
|
||||
jSONOResponse.put("message", e.getMessage());
|
||||
}
|
||||
System.out.println(strTxt);
|
||||
jSONOResponse.put("resultCode", -1);
|
||||
jSONOResponse.put("result", "false");
|
||||
jSONOResponse.put("message", e.getMessage());
|
||||
}
|
||||
|
||||
|
||||
System.out.println("\n--------------------------------------------------------------\n" +
|
||||
request.getRequestURI() + " OUT:" +
|
||||
"\n--------------------------------------------------------------\n" +
|
||||
"jSONOResponse.toJSONString():[" + jSONOResponse.toJSONString() + "]\n" +
|
||||
"\n--------------------------------------------------------------\n");
|
||||
System.out.println("\n--------------------------------------------------------------\n" +
|
||||
request.getRequestURI() + " OUT:" +
|
||||
"\n--------------------------------------------------------------\n" +
|
||||
"jSONOResponse.toJSONString():[" + jSONOResponse.toJSONString() + "]\n" +
|
||||
"\n--------------------------------------------------------------\n");
|
||||
|
||||
return jSONOResponse;
|
||||
}
|
||||
|
||||
int contentLength = 0;
|
||||
try {
|
||||
contentLength = jSONOResponse.toJSONString().getBytes("UTF-8").length;
|
||||
} catch (UnsupportedEncodingException e1) {
|
||||
// TODO Auto-generated catch block
|
||||
e1.printStackTrace();
|
||||
}
|
||||
response.setStatus(HttpServletResponse.SC_OK);
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setHeader("Content-Type", "application/json; charset=utf-8");
|
||||
response.setContentLength(contentLength); // Content-Length 설정
|
||||
try {
|
||||
response.getWriter().print(jSONOResponse);
|
||||
} catch (IOException e) {
|
||||
// TODO Auto-generated catch block
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,9 @@ import geoinfo.drilling.inquiry.service.DrillingInquiryMapper;
|
|||
import geoinfo.drilling.inquiry.service.DrillingInquiryService;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Timestamp;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
@ -19,44 +22,65 @@ import org.springframework.stereotype.Service;
|
|||
public class DrillingInquiryServiceImpl implements DrillingInquiryService {
|
||||
|
||||
|
||||
@Resource(name="drillingInquiryMapper")
|
||||
private DrillingInquiryMapper drillingInquiryMapper;
|
||||
@Resource(name="drillingInquiryMapper")
|
||||
private DrillingInquiryMapper drillingInquiryMapper;
|
||||
|
||||
|
||||
@Override
|
||||
public JSONObject drillingInquiryList(HttpServletRequest request, HashMap<String, Object> params) throws Exception {
|
||||
@Override
|
||||
public JSONObject drillingInquiryList(HttpServletRequest request, HashMap<String, Object> params) throws Exception {
|
||||
|
||||
JSONObject jsonResponse = new JSONObject();
|
||||
JSONObject jsonResponse = new JSONObject();
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
try {
|
||||
try {
|
||||
|
||||
try {
|
||||
Long count = drillingInquiryMapper.sPCntTblCsiByKeyword(params);
|
||||
List<HashMap<String, Object>> data = drillingInquiryMapper.sPGetTblCsiByKeyword(params);
|
||||
jsonResponse.put("count", count);
|
||||
jsonResponse.put("data", data);
|
||||
return jsonResponse;
|
||||
} catch (SQLException e) {
|
||||
throw new Exception( e.getMessage() );
|
||||
try {
|
||||
Long count = drillingInquiryMapper.sPCntTblCsiByKeyword(params);
|
||||
List<HashMap<String, Object>> datas = drillingInquiryMapper.sPGetTblCsiByKeyword(params);
|
||||
|
||||
String crtDtKey = "crtDt";
|
||||
|
||||
for( HashMap<String, Object> data : datas ) {
|
||||
|
||||
|
||||
//TIMESTAMP oracleTimestamp = (TIMESTAMP)data.get(crtDtKey);
|
||||
//Timestamp javaTimestamp = oracleTimestamp.timestampValue();
|
||||
//String formattedDate = dateFormat.format(javaTimestamp);
|
||||
//data.put(crtDtKey, formattedDate);
|
||||
}
|
||||
jsonResponse.put("count", count);
|
||||
jsonResponse.put("datas", datas);
|
||||
return jsonResponse;
|
||||
} catch (SQLException e) {
|
||||
String strTxt =
|
||||
"---------- BUG REPORTING START ----------" + "\n" +
|
||||
"에러 문구:[" + request.getRequestURI() + " " + "]" + "\n" +
|
||||
"params:[\n" + params.toString() + "\n]\n" +
|
||||
"e.getMessage():[\n" + e.getMessage() + "\n]\n" + "\n" +
|
||||
"new Date().toString():[" + new Date().toString() + "]\n" + "\n" +
|
||||
"---------- BUG REPORTING END ----------" + "\n" +
|
||||
"";
|
||||
System.out.println(strTxt);
|
||||
throw new Exception( "오류가 발생하였습니다." + "\n" + "SQLException" );
|
||||
}
|
||||
|
||||
|
||||
} catch (org.json.simple.parser.ParseException e) {
|
||||
// TODO Auto-generated catch block
|
||||
throw new Exception( e.getMessage() );
|
||||
}
|
||||
}
|
||||
/*
|
||||
*
|
||||
* @Override
|
||||
public JSONObject drillingInquiryList(HttpServletRequest request, String strJSON) throws Exception {
|
||||
} catch (org.json.simple.parser.ParseException e) {
|
||||
// TODO Auto-generated catch block
|
||||
throw new Exception( e.getMessage() );
|
||||
}
|
||||
}
|
||||
/*
|
||||
*
|
||||
* @Override
|
||||
public JSONObject drillingInquiryList(HttpServletRequest request, String strJSON) throws Exception {
|
||||
|
||||
JSONObject jsonResponse = new JSONObject();
|
||||
JSONParser jsonParser = new JSONParser();
|
||||
JSONObject jsonResponse = new JSONObject();
|
||||
JSONParser jsonParser = new JSONParser();
|
||||
|
||||
try {
|
||||
try {
|
||||
|
||||
JSONObject jsonObject = (JSONObject)jsonParser.parse(strJSON);
|
||||
JSONObject jsonObject = (JSONObject)jsonParser.parse(strJSON);
|
||||
|
||||
// JSONObject를 HashMap으로 변환
|
||||
HashMap<String, Object> params = new HashMap<>();
|
||||
|
|
@ -66,22 +90,22 @@ public class DrillingInquiryServiceImpl implements DrillingInquiryService {
|
|||
params.put(keyStr, value);
|
||||
}
|
||||
|
||||
try {
|
||||
Long count = drillingInquiryMapper.sPCntTblCsiByKeyword(params);
|
||||
List<HashMap<String, Object>> data = drillingInquiryMapper.sPGetTblCsiByKeyword(params);
|
||||
jsonResponse.put("count", count);
|
||||
jsonResponse.put("data", data);
|
||||
return jsonResponse;
|
||||
} catch (SQLException e) {
|
||||
try {
|
||||
Long count = drillingInquiryMapper.sPCntTblCsiByKeyword(params);
|
||||
List<HashMap<String, Object>> data = drillingInquiryMapper.sPGetTblCsiByKeyword(params);
|
||||
jsonResponse.put("count", count);
|
||||
jsonResponse.put("data", data);
|
||||
return jsonResponse;
|
||||
} catch (SQLException e) {
|
||||
throw new Exception( e.getMessage() );
|
||||
}
|
||||
|
||||
|
||||
} catch (org.json.simple.parser.ParseException e) {
|
||||
// TODO Auto-generated catch block
|
||||
throw new Exception( e.getMessage() );
|
||||
}
|
||||
}
|
||||
*/
|
||||
} catch (org.json.simple.parser.ParseException e) {
|
||||
// TODO Auto-generated catch block
|
||||
throw new Exception( e.getMessage() );
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
|||
<tr>
|
||||
<th>사업명</th>
|
||||
<td colspan="3">
|
||||
<input type="text" value="사업명 20240816 1634 " class="input-box" id="const-name-` + tableId + `" placeholder="사업명">
|
||||
<input type="text" value="사업명 20240820 1154 " class="input-box" id="const-name-` + tableId + `" placeholder="사업명">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ if (request.getSession().getAttribute("USERID") == null) {
|
|||
%>
|
||||
<script>alert('로그인후 이용하실 수 있습니다.');window.location.href='/index.do';</script>
|
||||
<%
|
||||
return;
|
||||
return;
|
||||
}
|
||||
%>
|
||||
<%
|
||||
|
|
@ -21,7 +21,7 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
|||
%>
|
||||
<script>alert('발주 기관 회원만 이용가능합니다.');window.location.href='/index.do';</script>
|
||||
<%
|
||||
return;
|
||||
return;
|
||||
}
|
||||
%>
|
||||
|
||||
|
|
@ -37,44 +37,67 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
|||
<!-- javascript start-->
|
||||
<script type="text/javascript">
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
|
||||
document.getElementById('btn-search').addEventListener('click', function() {
|
||||
document.getElementById('btn-search').addEventListener('click', function() {
|
||||
|
||||
var jsonData = {
|
||||
"test" : "1234"
|
||||
}
|
||||
var jsonData = {
|
||||
"test" : "1234"
|
||||
}
|
||||
|
||||
let xhr;
|
||||
if(window.XMLHttpRequest) {
|
||||
xhr = new XMLHttpRequest();
|
||||
} else {
|
||||
// IE5, IE6 일때
|
||||
xhr = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
let xhr;
|
||||
if(window.XMLHttpRequest) {
|
||||
xhr = new XMLHttpRequest();
|
||||
} else {
|
||||
// IE5, IE6 일때
|
||||
xhr = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}
|
||||
|
||||
xhr.open('GET', '/drilling/inquiry/list.do', true);
|
||||
xhr.setRequestHeader('Content-type', 'application/json');
|
||||
xhr.open('GET', '/drilling/inquiry/list.do', true);
|
||||
xhr.setRequestHeader('Content-type', 'application/json');
|
||||
|
||||
xhr.onreadystatechange = function() {
|
||||
if (xhr.readyState === 4 && xhr.status === 200) {
|
||||
// 요청 성공 시 처리
|
||||
console.log(xhr.responseText);
|
||||
const obj = JSON.parse(xhr.responseText);
|
||||
alert(obj.message)
|
||||
} else if (xhr.readyState === 4) {
|
||||
// 요청 실패 시 처리
|
||||
console.error('요청 실패:', xhr.status);
|
||||
}
|
||||
};
|
||||
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 = '';
|
||||
|
||||
xhr.send(JSON.stringify(jsonData));
|
||||
});
|
||||
|
||||
// 초기 테이블 추가 트리거
|
||||
document.getElementById('btn-search').click();
|
||||
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>
|
||||
`;
|
||||
dataListEle.innerHTML = tt;
|
||||
} else if (xhr.readyState === 4) {
|
||||
// 요청 실패 시 처리
|
||||
console.error('요청 실패:', xhr.status);
|
||||
}
|
||||
};
|
||||
|
||||
xhr.send(JSON.stringify(jsonData));
|
||||
});
|
||||
|
||||
// 초기 테이블 추가 트리거
|
||||
document.getElementById('btn-search').click();
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
<!-- javascript end-->
|
||||
|
|
@ -164,137 +187,8 @@ if (request.getSession().getAttribute("CLS") == null || "2".equals(request.getSe
|
|||
<th>담당연락처</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
||||
<td>미입력</td>
|
||||
<td>2020.01~2027.12</td>
|
||||
<td>유지관리 단계</td>
|
||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
<td>계롱건설산업(주)</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
||||
<td>미입력</td>
|
||||
<td>2020.01~2027.12</td>
|
||||
<td>유지관리 단계</td>
|
||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
<td>계롱건설산업(주)</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
||||
<td>미입력</td>
|
||||
<td>2020.01~2027.12</td>
|
||||
<td>유지관리 단계</td>
|
||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
<td>계롱건설산업(주)</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
||||
<td>미입력</td>
|
||||
<td>2020.01~2027.12</td>
|
||||
<td>유지관리 단계</td>
|
||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
<td>계롱건설산업(주)</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
||||
<td>미입력</td>
|
||||
<td>2020.01~2027.12</td>
|
||||
<td>유지관리 단계</td>
|
||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
<td>계롱건설산업(주)</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
||||
<td>미입력</td>
|
||||
<td>2020.01~2027.12</td>
|
||||
<td>유지관리 단계</td>
|
||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
<td>계롱건설산업(주)</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
||||
<td>미입력</td>
|
||||
<td>2020.01~2027.12</td>
|
||||
<td>유지관리 단계</td>
|
||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
<td>계롱건설산업(주)</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
||||
<td>미입력</td>
|
||||
<td>2020.01~2027.12</td>
|
||||
<td>유지관리 단계</td>
|
||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
<td>계롱건설산업(주)</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
||||
<td>미입력</td>
|
||||
<td>2020.01~2027.12</td>
|
||||
<td>유지관리 단계</td>
|
||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
<td>계롱건설산업(주)</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td style="text-align: left; text-indent: 10px;">남부내륙철도 건설사업 (제1공구 노반 기본 및 실시설계)</td>
|
||||
<td>미입력</td>
|
||||
<td>2020.01~2027.12</td>
|
||||
<td>유지관리 단계</td>
|
||||
<td>수도권사업단 인덕원동탄월곶판교 PM</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
<td>계롱건설산업(주)</td>
|
||||
<td>남궁길동</td>
|
||||
<td>070-123-4567</td>
|
||||
</tr>
|
||||
<tbody id="data-list">
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue