feat: 건설현장 관리 기능 개발 중
parent
8bdc50fefc
commit
df93148a51
|
|
@ -0,0 +1,47 @@
|
||||||
|
@echo off
|
||||||
|
setlocal enabledelayedexpansion
|
||||||
|
|
||||||
|
set source_prefix=src\main\webapp\
|
||||||
|
set target_prefix=C:\Users\dbnt\eclipse-workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\geoinfo_eGov_work\
|
||||||
|
set target_directory=C:\Users\dbnt\git\dbnt\geoinfo.or.kr\geoinfo_eGov_work\
|
||||||
|
|
||||||
|
set source_file=
|
||||||
|
set target_file=
|
||||||
|
|
||||||
|
for /f "delims=" %%i in (list.txt) do (
|
||||||
|
set line=%%i
|
||||||
|
|
||||||
|
if "!line:~-5!" == ".java" (
|
||||||
|
echo Skip
|
||||||
|
) else if "!line:~-4!" == ".xml" (
|
||||||
|
set source_file=%target_directory%!line!
|
||||||
|
set relative_path=!line:%source_prefix%=!
|
||||||
|
:: "src\main\resources\" Á¦°Å
|
||||||
|
set relative_path=!relative_path:*src\main\resources\=!
|
||||||
|
set target_file=%target_prefix%WEB-INF\classes\!relative_path!
|
||||||
|
) else if "!line:~-4!" == ".jsp" (
|
||||||
|
set source_file=%target_directory%!line!
|
||||||
|
set relative_path=!line:%source_prefix%=!
|
||||||
|
set target_file=%target_prefix%!relative_path!
|
||||||
|
) else if "!line:~-4!" == ".css" (
|
||||||
|
set source_file=%target_directory%!line!
|
||||||
|
set relative_path=!line:%source_prefix%=!
|
||||||
|
set target_file=%target_prefix%!relative_path!
|
||||||
|
) else if "!line:~-4!" == ".png" (
|
||||||
|
set source_file=%target_directory%!line!
|
||||||
|
set relative_path=!line:%source_prefix%=!
|
||||||
|
set target_file=%target_prefix%!relative_path!
|
||||||
|
) else if "!line:~-4!" == ".svg" (
|
||||||
|
set source_file=%target_directory%!line!
|
||||||
|
set relative_path=!line:%source_prefix%=!
|
||||||
|
set target_file=%target_prefix%!relative_path!
|
||||||
|
) else if "!line:~-3!" == ".js" (
|
||||||
|
set source_file=%target_directory%!line!
|
||||||
|
set relative_path=!line:%source_prefix%=!
|
||||||
|
set target_file=%target_prefix%!relative_path!
|
||||||
|
)
|
||||||
|
|
||||||
|
rem Copy the source file to the target location, overwriting if necessary
|
||||||
|
echo Copying "!source_file!" to "!target_file!"
|
||||||
|
copy /Y "!source_file!" "!target_file!"
|
||||||
|
)
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
src\main\webapp\WEB-INF\views\home\include\top.jsp
|
||||||
|
src\main\webapp\com\css\common.v2.0.css
|
||||||
|
src\main\webapp\com\css\common.v2.0.css.map
|
||||||
|
src\main\webapp\com\img\common\icon\ico_header_menu_05.svg
|
||||||
|
src\main\webapp\js\home\index.js
|
||||||
|
src\main\java\geoinfo\drilling\inquiry\DrillingInquiryController.java
|
||||||
|
src\main\webapp\WEB-INF\views\drilling\inquiry\drilling_inquiry.jsp
|
||||||
|
src\main\webapp\WEB-INF\views\drilling\common\includeTopMenu.jsp
|
||||||
|
src\main\java\geoinfo\drilling\common\DrillingCommonController.java
|
||||||
|
src\main\webapp\com\img\common\icon\ico_chevron.svg
|
||||||
|
src\main\java\geoinfo\drilling\input\DrillingInputController.java
|
||||||
|
src\main\webapp\WEB-INF\views\drilling\input\drilling_input.jsp
|
||||||
|
src\main\java\geoinfo\drilling\input\service\DrillingInputService.java
|
||||||
|
src\main\java\geoinfo\drilling\input\service\impl\DrillingInputServiceImpl.java
|
||||||
|
src\main\java\geoinfo\drilling\input\service\DrillingInputMapper.java
|
||||||
|
src\main\resources\egovframework\sqlmap\mapper\drilling\input\DrillingInputMapper.xml
|
||||||
|
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
|
||||||
|
|
@ -40,7 +40,21 @@ public class FileServiceImpl implements FileService{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Map<String, Object>> selectFiles(Map<String, Object> map) throws Exception, SQLException {
|
public List<Map<String, Object>> selectFiles(Map<String, Object> map) throws Exception, SQLException {
|
||||||
return fileMapper.selectFiles(map);
|
|
||||||
|
List<Map<String, Object>> res = null;
|
||||||
|
try {
|
||||||
|
res = fileMapper.selectFiles(map);
|
||||||
|
} catch (SQLException e) {
|
||||||
|
if (e.getMessage().contains("Socket read timed out")) {
|
||||||
|
// 시간 초과 예외 처리 로직
|
||||||
|
System.err.println("데이터베이스 연결 시간 초과!");
|
||||||
|
// 예외 상황에 대한 적절한 처리 (재시도, 사용자에게 알림 등)
|
||||||
|
} else {
|
||||||
|
// 다른 SQL 예외 처리
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,65 @@
|
||||||
|
package geoinfo.drilling.common;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.jfree.util.Log;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.ui.ModelMap;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
||||||
|
import geoinfo.com.WebConfirm;
|
||||||
|
import geoinfo.map.mapControl.service.MapControlService;
|
||||||
|
import geoinfo.regi.selectClassInfo.service.SelectClassService;
|
||||||
|
import geoinfo.regi.status.service.RegiPageService;
|
||||||
|
import geoinfo.regi.util.exportGeotechnicalPointShp2;
|
||||||
|
import ictway.comm.util.parseData;
|
||||||
|
import ictway.comm.util.strUtil;
|
||||||
|
import ictway.comm.web.WebUtil;
|
||||||
|
import ictway.whois.whoisSMS;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class DrillingCommonController {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(DrillingCommonController.class);
|
||||||
|
|
||||||
|
|
||||||
|
@RequestMapping(value = "/drilling/common/includeTopMenu.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";
|
||||||
|
}
|
||||||
|
|
||||||
|
model.put("userName", String.valueOf(request.getSession().getAttribute("USERNAME")));
|
||||||
|
model.put("cls", String.valueOf(request.getSession().getAttribute("CLS")));
|
||||||
|
model.put("companyName", request.getSession().getAttribute("COMPANYNAME"));
|
||||||
|
|
||||||
|
return "/drilling/common/includeTopMenu";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,166 @@
|
||||||
|
package geoinfo.drilling.input;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.jfree.util.Log;
|
||||||
|
import org.json.simple.JSONArray;
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
import org.json.simple.parser.JSONParser;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.ui.ModelMap;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
||||||
|
|
||||||
|
import geoinfo.com.WebConfirm;
|
||||||
|
import geoinfo.drilling.input.service.DrillingInputService;
|
||||||
|
import geoinfo.map.mapControl.service.MapControlService;
|
||||||
|
import geoinfo.regi.selectClassInfo.service.SelectClassService;
|
||||||
|
import geoinfo.regi.status.service.RegiPageService;
|
||||||
|
import geoinfo.regi.util.exportGeotechnicalPointShp2;
|
||||||
|
import geoinfo.util.MyUtil;
|
||||||
|
import ictway.comm.util.parseData;
|
||||||
|
import ictway.comm.util.strUtil;
|
||||||
|
import ictway.comm.web.WebUtil;
|
||||||
|
import ictway.whois.whoisSMS;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class DrillingInputController {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(DrillingInputController.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
DrillingInputService drillingInputService;
|
||||||
|
|
||||||
|
|
||||||
|
@RequestMapping(value = "/drilling/input.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";
|
||||||
|
}
|
||||||
|
|
||||||
|
return "/drilling/input/drilling_input";
|
||||||
|
}
|
||||||
|
|
||||||
|
@RequestMapping(value = "/drilling/input/add.do", method = RequestMethod.POST)
|
||||||
|
@ResponseBody
|
||||||
|
public JSONObject drillingInputAdd(
|
||||||
|
HttpServletRequest request,
|
||||||
|
@RequestBody String strJSON,
|
||||||
|
HttpServletResponse response) {
|
||||||
|
|
||||||
|
JSONObject jSONOResponse = new JSONObject();
|
||||||
|
|
||||||
|
System.out.println(
|
||||||
|
"\n--------------------------------------------------------------\n" +
|
||||||
|
request.getRequestURI() + " IN:" +
|
||||||
|
"\n--------------------------------------------------------------\n" +
|
||||||
|
"jstrJSON" + strJSON + "\n" +
|
||||||
|
"\n--------------------------------------------------------------\n"
|
||||||
|
);
|
||||||
|
|
||||||
|
JSONParser jsonParser = new JSONParser();
|
||||||
|
JSONArray jsonArr = null;
|
||||||
|
boolean isFail = false;
|
||||||
|
String failMsg = "";
|
||||||
|
try {
|
||||||
|
jsonArr = (JSONArray)jsonParser.parse(strJSON);
|
||||||
|
for (Object obj : jsonArr) {
|
||||||
|
JSONObject jsonObject = (JSONObject) obj;
|
||||||
|
|
||||||
|
// JSONObject를 HashMap으로 변환
|
||||||
|
HashMap<String, Object> params = new HashMap<>();
|
||||||
|
for (Object key : jsonObject.keySet()) {
|
||||||
|
String keyStr = (String) key;
|
||||||
|
Object value = jsonObject.get(keyStr);
|
||||||
|
params.put(keyStr, value);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
HashMap<String, Object> hashMap = drillingInputService.drillingInputAdd(request, params);
|
||||||
|
int nRetCode = MyUtil.getIntegerFromObject(hashMap.get("v_RetCode"));
|
||||||
|
String lpszRetMsg = MyUtil.getStringFromObject(hashMap.get("v_RetMsg"));
|
||||||
|
|
||||||
|
if( nRetCode == 100 ) {
|
||||||
|
jSONOResponse.put("resultCode", nRetCode);
|
||||||
|
jSONOResponse.put("result", "true");
|
||||||
|
jSONOResponse.put("message", "등록이 완료되었습니다.");
|
||||||
|
} else {
|
||||||
|
if( nRetCode == 11 ) {
|
||||||
|
lpszRetMsg += "\n" +
|
||||||
|
"사업명: " + params.get("constName");
|
||||||
|
}
|
||||||
|
jSONOResponse.put("resultCode", nRetCode);
|
||||||
|
jSONOResponse.put("result", "false");
|
||||||
|
jSONOResponse.put("message", lpszRetMsg);
|
||||||
|
|
||||||
|
isFail = true;
|
||||||
|
failMsg = lpszRetMsg;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (Exception e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
String strTxt =
|
||||||
|
"---------- BUG REPORTING START ----------" + "\n" +
|
||||||
|
"에러 문구:[" + request.getRequestURI() + " " + "]" + "\n" +
|
||||||
|
"strJSON:[\n" + strJSON + "\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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (org.json.simple.parser.ParseException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if( isFail ) {
|
||||||
|
jSONOResponse.put("resultCode", -2);
|
||||||
|
jSONOResponse.put("result", "false");
|
||||||
|
jSONOResponse.put("message", failMsg);
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("\n--------------------------------------------------------------\n" +
|
||||||
|
request.getRequestURI() + " OUT:" +
|
||||||
|
"\n--------------------------------------------------------------\n" +
|
||||||
|
"jSONOResponse.toJSONString():[" + jSONOResponse.toJSONString() + "]\n" +
|
||||||
|
"\n--------------------------------------------------------------\n");
|
||||||
|
|
||||||
|
return jSONOResponse;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
package geoinfo.drilling.input.service;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import egovframework.rte.psl.dataaccess.mapper.Mapper;
|
||||||
|
|
||||||
|
@Mapper("drillingInputMapper")
|
||||||
|
public interface DrillingInputMapper {
|
||||||
|
public HashMap<String, Object> callSpAddTblCsi(HashMap<String, Object> params) throws SQLException;
|
||||||
|
public String test(HashMap<String, Object> params) throws SQLException;
|
||||||
|
public Long findConstCompanyCodeByConstCompanyName(HashMap<String, Object> params) throws SQLException;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
package geoinfo.drilling.input.service;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
|
||||||
|
public interface DrillingInputService {
|
||||||
|
HashMap<String, Object> drillingInputAdd(HttpServletRequest request, HashMap<String, Object> params) throws Exception;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
package geoinfo.drilling.input.service.impl;
|
||||||
|
|
||||||
|
import geoinfo.drilling.input.service.DrillingInputMapper;
|
||||||
|
import geoinfo.drilling.input.service.DrillingInputService;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service("drillingInputService")
|
||||||
|
public class DrillingInputServiceImpl implements DrillingInputService {
|
||||||
|
|
||||||
|
@Resource(name="drillingInputMapper")
|
||||||
|
private DrillingInputMapper drillingInputMapper;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HashMap<String, Object> drillingInputAdd(HttpServletRequest request, HashMap<String, Object> params) throws Exception {
|
||||||
|
|
||||||
|
String userId = (String)request.getSession().getAttribute("USERID");
|
||||||
|
params.put("userId", userId);
|
||||||
|
|
||||||
|
params.put("masterCompanyOCode", "01");
|
||||||
|
params.put("masterCompanyTwCode", "01");
|
||||||
|
params.put("masterCompanyThCode", "001");
|
||||||
|
params.put("masterCompanyName", null);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
Long constCompanyCode = drillingInputMapper.findConstCompanyCodeByConstCompanyName(params);
|
||||||
|
params.put("constCompanyCode", constCompanyCode);
|
||||||
|
drillingInputMapper.callSpAddTblCsi(params);
|
||||||
|
return params;
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw new Exception( e.getMessage() );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,118 @@
|
||||||
|
package geoinfo.drilling.inquiry;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
|
import org.jfree.util.Log;
|
||||||
|
import org.json.simple.JSONArray;
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
import org.json.simple.parser.JSONParser;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.ui.ModelMap;
|
||||||
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
||||||
|
import geoinfo.com.WebConfirm;
|
||||||
|
import geoinfo.drilling.input.service.DrillingInputService;
|
||||||
|
import geoinfo.drilling.inquiry.service.DrillingInquiryService;
|
||||||
|
import geoinfo.map.mapControl.service.MapControlService;
|
||||||
|
import geoinfo.regi.selectClassInfo.service.SelectClassService;
|
||||||
|
import geoinfo.regi.status.service.RegiPageService;
|
||||||
|
import geoinfo.regi.util.exportGeotechnicalPointShp2;
|
||||||
|
import geoinfo.util.MyUtil;
|
||||||
|
import ictway.comm.util.parseData;
|
||||||
|
import ictway.comm.util.strUtil;
|
||||||
|
import ictway.comm.web.WebUtil;
|
||||||
|
import ictway.whois.whoisSMS;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
public class DrillingInquiryController {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(DrillingInquiryController.class);
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
DrillingInquiryService drillingInquiryService;
|
||||||
|
|
||||||
|
@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";
|
||||||
|
}
|
||||||
|
|
||||||
|
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,
|
||||||
|
HttpServletResponse response
|
||||||
|
) {
|
||||||
|
|
||||||
|
System.out.println(
|
||||||
|
"\n--------------------------------------------------------------\n" +
|
||||||
|
request.getRequestURI() + " IN:" +
|
||||||
|
"\n--------------------------------------------------------------\n" +
|
||||||
|
"params" + params.toString() + "\n" +
|
||||||
|
"\n--------------------------------------------------------------\n"
|
||||||
|
);
|
||||||
|
|
||||||
|
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" +
|
||||||
|
"에러 문구:[" + 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("\n--------------------------------------------------------------\n" +
|
||||||
|
request.getRequestURI() + " OUT:" +
|
||||||
|
"\n--------------------------------------------------------------\n" +
|
||||||
|
"jSONOResponse.toJSONString():[" + jSONOResponse.toJSONString() + "]\n" +
|
||||||
|
"\n--------------------------------------------------------------\n");
|
||||||
|
|
||||||
|
return jSONOResponse;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
package geoinfo.drilling.inquiry.service;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import egovframework.rte.psl.dataaccess.mapper.Mapper;
|
||||||
|
|
||||||
|
@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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
package geoinfo.drilling.inquiry.service;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
|
||||||
|
|
||||||
|
public interface DrillingInquiryService {
|
||||||
|
JSONObject drillingInquiryList(HttpServletRequest request, HashMap<String, Object> params) throws Exception;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,87 @@
|
||||||
|
package geoinfo.drilling.inquiry.service.impl;
|
||||||
|
|
||||||
|
import geoinfo.drilling.inquiry.service.DrillingInquiryMapper;
|
||||||
|
import geoinfo.drilling.inquiry.service.DrillingInquiryService;
|
||||||
|
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
import org.json.simple.parser.JSONParser;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
@Service("drillingInquiryService")
|
||||||
|
public class DrillingInquiryServiceImpl implements DrillingInquiryService {
|
||||||
|
|
||||||
|
|
||||||
|
@Resource(name="drillingInquiryMapper")
|
||||||
|
private DrillingInquiryMapper drillingInquiryMapper;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public JSONObject drillingInquiryList(HttpServletRequest request, HashMap<String, Object> params) throws Exception {
|
||||||
|
|
||||||
|
JSONObject jsonResponse = new JSONObject();
|
||||||
|
|
||||||
|
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() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} 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();
|
||||||
|
|
||||||
|
try {
|
||||||
|
|
||||||
|
JSONObject jsonObject = (JSONObject)jsonParser.parse(strJSON);
|
||||||
|
|
||||||
|
// JSONObject를 HashMap으로 변환
|
||||||
|
HashMap<String, Object> params = new HashMap<>();
|
||||||
|
for (Object key : jsonObject.keySet()) {
|
||||||
|
String keyStr = (String) key;
|
||||||
|
Object value = jsonObject.get(keyStr);
|
||||||
|
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) {
|
||||||
|
throw new Exception( e.getMessage() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
} catch (org.json.simple.parser.ParseException e) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
throw new Exception( e.getMessage() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -34,8 +34,6 @@ import javax.xml.bind.DatatypeConverter;
|
||||||
import org.apache.commons.collections.map.MultiValueMap;
|
import org.apache.commons.collections.map.MultiValueMap;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.jfree.util.Log;
|
import org.jfree.util.Log;
|
||||||
import org.json.simple.JSONObject;
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.ui.Model;
|
import org.springframework.ui.Model;
|
||||||
import org.springframework.ui.ModelMap;
|
import org.springframework.ui.ModelMap;
|
||||||
|
|
@ -52,21 +50,17 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
|
||||||
|
|
||||||
import com.clipsoft.clipreport.oof.OOFDocument;
|
import com.clipsoft.clipreport.oof.OOFDocument;
|
||||||
import com.clipsoft.clipreport.server.service.ReportUtil;
|
import com.clipsoft.clipreport.server.service.ReportUtil;
|
||||||
import com.oreilly.servlet.MultipartRequest;
|
|
||||||
import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;
|
|
||||||
|
|
||||||
import comm.util.strUtil;
|
import comm.util.strUtil;
|
||||||
import egovframework.com.cmm.EgovMessageSource;
|
import egovframework.com.cmm.EgovMessageSource;
|
||||||
import egovframework.com.cmm.service.EgovProperties;
|
import egovframework.com.cmm.service.EgovProperties;
|
||||||
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
||||||
import geoinfo.com.GeoInfoSessionMgrListener;
|
|
||||||
import geoinfo.com.GeoinfoCommon;
|
import geoinfo.com.GeoinfoCommon;
|
||||||
import geoinfo.main.login.service.LoginService;
|
import geoinfo.main.login.service.LoginService;
|
||||||
import geoinfo.main.main.MainController;
|
import geoinfo.main.main.MainController;
|
||||||
import geoinfo.map.mapControl.service.MapControlService;
|
import geoinfo.map.mapControl.service.MapControlService;
|
||||||
import geoinfo.util.MobileCertificationUtil;
|
import geoinfo.util.MobileCertificationUtil;
|
||||||
import geoinfo.util.ScriptUtil;
|
import geoinfo.util.ScriptUtil;
|
||||||
import geoinfo.websocket.WSHandler;
|
|
||||||
import ictway.comm.web.WebUtil;
|
import ictway.comm.web.WebUtil;
|
||||||
import sun.misc.BASE64Decoder;
|
import sun.misc.BASE64Decoder;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -985,7 +985,7 @@ public class MainController
|
||||||
List<Map<String, Object>> lstFile = fileService.selectFiles(map);
|
List<Map<String, Object>> lstFile = fileService.selectFiles(map);
|
||||||
mv.addObject("files", lstFile);
|
mv.addObject("files", lstFile);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
System.out.println("thkim test: " + e.getMessage());
|
System.out.println("SQLException: " + e.getMessage());
|
||||||
|
|
||||||
if (true && e.getMessage().contains("Already closed")) {
|
if (true && e.getMessage().contains("Already closed")) {
|
||||||
System.out.println("Already closed");
|
System.out.println("Already closed");
|
||||||
|
|
|
||||||
|
|
@ -49,10 +49,7 @@ public class ProjectListController {
|
||||||
|
|
||||||
String projectName = sUtil.checkNull((String)params.get("projectName"));
|
String projectName = sUtil.checkNull((String)params.get("projectName"));
|
||||||
String projectCode = sUtil.checkNull((String)params.get("projectCode"));
|
String projectCode = sUtil.checkNull((String)params.get("projectCode"));
|
||||||
String isProjectNameChecking = sUtil.checkNull((String)params.get("isProjectNameChecking"));
|
String isProjectNameChecking = sUtil.checkNull((String)params.get("isProjectNameChecking"));
|
||||||
|
|
||||||
System.out.println( "thkim 20240719:" + projectCode );
|
|
||||||
|
|
||||||
|
|
||||||
if(isProjectNameChecking != null && isProjectNameChecking.toLowerCase().equals("true") && projectName == ""){
|
if(isProjectNameChecking != null && isProjectNameChecking.toLowerCase().equals("true") && projectName == ""){
|
||||||
jsonObject.put("result", "false");
|
jsonObject.put("result", "false");
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,802 @@
|
||||||
|
package geoinfo.util;
|
||||||
|
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.net.URLDecoder;
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.text.DecimalFormat;
|
||||||
|
import java.text.DecimalFormatSymbols;
|
||||||
|
import java.text.NumberFormat;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.apache.http.NameValuePair;
|
||||||
|
import org.json.simple.JSONObject;
|
||||||
|
import org.json.simple.parser.JSONParser;
|
||||||
|
import org.json.simple.parser.ParseException;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
|
||||||
|
|
||||||
|
|
||||||
|
public final class MyUtil {
|
||||||
|
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(MyUtil.class);
|
||||||
|
|
||||||
|
public static final String VERSION = "20240816_1430";
|
||||||
|
|
||||||
|
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd.HH.mm.ss");
|
||||||
|
|
||||||
|
// 주석 다는 기준: https://www.oracle.com/technetwork/java/javase/tech/index-137868.html
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 특정 자리수의 랜덤 숫자를 생성한다.
|
||||||
|
* @param nLength 랜덤문자의 길이
|
||||||
|
* @return 생성된 랜덤 문자
|
||||||
|
*/
|
||||||
|
public static String getRandomNumber(int nLength) {
|
||||||
|
Random generator = new Random();
|
||||||
|
String strRandValue = "";
|
||||||
|
|
||||||
|
for (int i = 0; i < nLength; i++) {
|
||||||
|
strRandValue += Integer.toString( generator.nextInt(10) );
|
||||||
|
}
|
||||||
|
|
||||||
|
return strRandValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 현재 Timestamp를 반환한다
|
||||||
|
* @return 현재 Timestamp yyyy-MM-dd hh:mm:ss
|
||||||
|
*/
|
||||||
|
public static String getCurrentDateTime() {
|
||||||
|
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
|
||||||
|
System.out.println(timestamp);
|
||||||
|
|
||||||
|
return new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(timestamp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 현재 date를 반환한다
|
||||||
|
* @return 현재 Timestamp yyyy-MM-dd
|
||||||
|
*/
|
||||||
|
public static String getCurrentDate() {
|
||||||
|
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
|
||||||
|
System.out.println(timestamp);
|
||||||
|
|
||||||
|
return new SimpleDateFormat("yyyy-MM-dd").format(timestamp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 현재 시각 구하기
|
||||||
|
* @return 현재 Timestamp hh:mm:ss
|
||||||
|
*/
|
||||||
|
public static String getCurrentTime() {
|
||||||
|
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
|
||||||
|
System.out.println(timestamp);
|
||||||
|
|
||||||
|
return new SimpleDateFormat("hh:mm:ss").format(timestamp);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 년 월 일 날짜 더하기
|
||||||
|
*
|
||||||
|
* @param dt(날짜) , y(년) , m(월), d(일)
|
||||||
|
* @Exam addDate("2018-09-10",1,12,1) -->20200911 addDate("2018-09-10",1,-2,1) -->20200711
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public static String addDate(String dt, int y, int m, int d) throws Exception {
|
||||||
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
|
||||||
|
Calendar cal = Calendar.getInstance();
|
||||||
|
Date date = format.parse(dt);
|
||||||
|
cal.setTime(date);
|
||||||
|
cal.add(Calendar.YEAR, y); //년 더하기
|
||||||
|
cal.add(Calendar.MONTH, m); //월 더하기
|
||||||
|
cal.add(Calendar.DATE, d); //일 더하기
|
||||||
|
|
||||||
|
return format.format(cal.getTime());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 일 구하기
|
||||||
|
*
|
||||||
|
* @param dt(날짜)
|
||||||
|
* @Exam addDate("2018-09-10",1,12,1) -->20200911 addDate("2018-09-10",1,-2,1) -->20200711
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public static int getDate(String dt) throws Exception {
|
||||||
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
|
|
||||||
|
Calendar cal = Calendar.getInstance();
|
||||||
|
Date date = format.parse(dt);
|
||||||
|
cal.setTime(date);
|
||||||
|
logger.info("getDate:" + cal.get(cal.DATE));
|
||||||
|
return cal.get(cal.DATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UPDATE 문에서 문자열 타입의 필드를 추가한다.
|
||||||
|
*
|
||||||
|
* @param strQuery 쿼리, strColumnName 컬럼명, strTarget
|
||||||
|
* @Exam addUpdateString("UPDATE SET ", "name", "홍길동") --> UPDATE SET name='홍길동',
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public static String addUpdateString(String strQuery, String strColumnName, String strValue ) {
|
||||||
|
|
||||||
|
if( strValue != null && strValue.isEmpty() == false && strValue.equals("undefined") == false && strValue.equals("null") == false ) {
|
||||||
|
strQuery += strColumnName + "='" + strValue + "',";
|
||||||
|
}
|
||||||
|
return strQuery;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UPDATE 문에서 Long 타입의 필드를 추가한다.
|
||||||
|
*
|
||||||
|
* @param strQuery 쿼리, strColumnName 컬럼명, longTarget
|
||||||
|
* @Exam addUpdateString("UPDATE SET ", "age", 2l) --> UPDATE SET age=2,
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public static String addUpdateLong(String strQuery, String strColumnName, Long longTarget ) {
|
||||||
|
|
||||||
|
if( longTarget != null ) {
|
||||||
|
strQuery += strColumnName + "=" + longTarget + ",";
|
||||||
|
}
|
||||||
|
return strQuery;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
public static boolean isJSONValid(String test) {
|
||||||
|
try {
|
||||||
|
new JSONObject(test);
|
||||||
|
} catch (JSONException ex) {
|
||||||
|
// edited, to include @Arthur's comment
|
||||||
|
// e.g. in case JSONArray is valid as well...
|
||||||
|
try {
|
||||||
|
new JSONArray(test);
|
||||||
|
} catch (JSONException ex1) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static String getQuery(List<NameValuePair> params) throws UnsupportedEncodingException
|
||||||
|
{
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
boolean first = true;
|
||||||
|
|
||||||
|
for (NameValuePair pair : params)
|
||||||
|
{
|
||||||
|
if (first)
|
||||||
|
first = false;
|
||||||
|
else
|
||||||
|
result.append("&");
|
||||||
|
|
||||||
|
//result.append(URLEncoder.encode(pair.getName(), "UTF-8"));
|
||||||
|
result.append(pair.getName());
|
||||||
|
result.append("=");
|
||||||
|
result.append(pair.getValue());
|
||||||
|
//result.append(URLEncoder.encode(pair.getValue(), "UTF-8"));
|
||||||
|
}
|
||||||
|
|
||||||
|
return result.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SHA-256으로 해싱하는 메소드
|
||||||
|
* @param msg
|
||||||
|
* @return
|
||||||
|
* @throws NoSuchAlgorithmException
|
||||||
|
*/
|
||||||
|
public static String sha256(String msg) throws NoSuchAlgorithmException {
|
||||||
|
MessageDigest md = MessageDigest.getInstance("SHA-256");
|
||||||
|
md.update(msg.getBytes());
|
||||||
|
|
||||||
|
return bytesToHex(md.digest());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 바이트를 헥스값으로 변환한다
|
||||||
|
*
|
||||||
|
* @param bytes
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String bytesToHex(byte[] bytes) {
|
||||||
|
StringBuilder builder = new StringBuilder();
|
||||||
|
for (byte b: bytes) {
|
||||||
|
builder.append(String.format("%02x", b));
|
||||||
|
}
|
||||||
|
return builder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 세틀뱅크 수취인 조회 서비스 HTML문서에서 특정 값 추출하기
|
||||||
|
* @param html_line
|
||||||
|
* @param inputName
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String parseInpuValueForSettleBankResponse(String html_line, String inputName) {
|
||||||
|
|
||||||
|
String[] strArrValue = html_line.split("name=\"" + inputName + "\" value=");
|
||||||
|
String strValue = "";
|
||||||
|
|
||||||
|
if( strArrValue.length == 2 ) {
|
||||||
|
strValue = strArrValue[1].replaceAll("[\"|>|\\r\\n|\\n\\r|\\r|\\n|\\s|\\+)]","");
|
||||||
|
try {
|
||||||
|
//logger.info("Encoding EUC-KR:" + URLDecoder.decode(strValue, "EUC-KR"));
|
||||||
|
//logger.info("Encoding UTF-8:" + URLDecoder.decode(strValue, "UTF-8"));
|
||||||
|
strValue = URLDecoder.decode(strValue, "UTF-8");
|
||||||
|
} catch (UnsupportedEncodingException e2) {
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
e2.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return strValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 숫자 외 소수점을 포함한 모든 특수문자를 제거해준다.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static String removeSpecialChractersNumber( String decimalNumber ) {
|
||||||
|
decimalNumber = decimalNumber.replaceAll("[^0-9]", ""); //숫자 외 모두 제거한다.
|
||||||
|
return decimalNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 수수점을 제외한 나머지 특수문자를 제거해준다. 그리고 소수점은 1개만 들어가도록 해준다.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static String removeSpecialChractersDecimalNumber( String decimalNumber ) {
|
||||||
|
decimalNumber = decimalNumber.replaceAll("[^0-9.\\-]", ""); //숫자와 쩜.-말고는 제거한다.
|
||||||
|
// 소수점 1개만 넣도록 하기
|
||||||
|
int nDotIdx = decimalNumber.indexOf(".");
|
||||||
|
if( nDotIdx > -1 ) {
|
||||||
|
String[] arrSplit = decimalNumber.split("\\.");
|
||||||
|
if( arrSplit.length != 0) {
|
||||||
|
decimalNumber = "";
|
||||||
|
}
|
||||||
|
for( int i = 0; i < arrSplit.length ; i++ ) {
|
||||||
|
decimalNumber += arrSplit[i];
|
||||||
|
if( i == 0 ) {
|
||||||
|
decimalNumber += ".";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logger.info("removeSpecialChractersDecimalNumber() decimalNumber:" + decimalNumber);
|
||||||
|
return decimalNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 소수점자리수가 3자리 이상이면 2자리까지만 남기고 나머지는 지운다.
|
||||||
|
* @param decimalNumber 소수점 자리 n개 이상 인 경우, 지울 숫자가 들어있는 문자열
|
||||||
|
* @param nLimitDecimalNumber 허용할 소수점 자
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String removeOverDecimalNumber( String decimalNumber, int nLimitDecimalNumber ) {
|
||||||
|
logger.error("decimalNumber:" + decimalNumber);
|
||||||
|
int nDotIdx = decimalNumber.indexOf(".");
|
||||||
|
if( nDotIdx > -1 ) {
|
||||||
|
String[] arrSplit = decimalNumber.split("\\.");
|
||||||
|
if( arrSplit[1].length() > nLimitDecimalNumber ) {
|
||||||
|
return arrSplit[0] + "." + arrSplit[1].substring(0,2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
logger.error("decimalNumber:" + decimalNumber);
|
||||||
|
return decimalNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1,000 단위마다 콤마를 찍는다.
|
||||||
|
* @param bdAmount
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String addComma(BigDecimal bdAmount) {
|
||||||
|
return addComma(bdAmount.toPlainString());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1,000 단위마다 콤마를 찍는다.
|
||||||
|
* @param doubleAmount
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String addComma(Double doubleAmount) {
|
||||||
|
return addComma(BigDecimal.valueOf(doubleAmount));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1,000 단위마다 콤마를 찍는다.
|
||||||
|
* @param longAmount
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String addComma(Long longAmount) {
|
||||||
|
return addComma(BigDecimal.valueOf(longAmount));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 1,000 단위마다 콤마를 찍는다.
|
||||||
|
* @param strAmount
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String addComma(String strAmount) {
|
||||||
|
DecimalFormat formatter = (DecimalFormat) NumberFormat.getInstance(Locale.US);
|
||||||
|
DecimalFormatSymbols symbols = formatter.getDecimalFormatSymbols();
|
||||||
|
|
||||||
|
if( isNumeric(strAmount) == false ) {
|
||||||
|
return strAmount;
|
||||||
|
}
|
||||||
|
|
||||||
|
int nDotIndex = strAmount.indexOf(".");
|
||||||
|
|
||||||
|
|
||||||
|
symbols.setGroupingSeparator(',');
|
||||||
|
formatter.setDecimalFormatSymbols(symbols);
|
||||||
|
if( nDotIndex > -1 ) {
|
||||||
|
return formatter.format(Double.parseDouble( strAmount ));
|
||||||
|
} else {
|
||||||
|
return formatter.format(Long.parseLong( strAmount ));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 숫자에서 끝에 0000을 제거한다.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public static String trimTrailingZero( String decimalNumber ) {
|
||||||
|
decimalNumber = decimalNumber.replaceAll("[^0-9.\\-]", ""); //숫자와 쩜.-말고는 제거한다.
|
||||||
|
decimalNumber = decimalNumber.indexOf(".") < 0 ? decimalNumber : decimalNumber.replaceAll("0*$", "").replaceAll("\\.$", "");
|
||||||
|
logger.info("trimTrailingZero() decimalNumber:" + decimalNumber);
|
||||||
|
return decimalNumber;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SQL 인젝션 방어를 위해 특수문자를 제거한다.
|
||||||
|
* @param myString
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String removeSQLInjectionSpecialCharacter(String myString) {
|
||||||
|
if( myString == null ) {
|
||||||
|
return myString;
|
||||||
|
}
|
||||||
|
myString = myString.replaceAll( "<|>|\\(|\\)|'|\"|\\|;|=|\\+|\\||&|#|\\.\\.", " ");
|
||||||
|
|
||||||
|
return myString;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UUID(GUID)를 얻는다.
|
||||||
|
* @return 구한 UUID(GUID) 값.
|
||||||
|
*/
|
||||||
|
public static String getUuid() {
|
||||||
|
String uuid = UUID.randomUUID().toString();
|
||||||
|
return uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 숫자인지 아닌지 확인한다. */
|
||||||
|
public static boolean isNumeric(String strNum) {
|
||||||
|
if (strNum == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
double d = Double.parseDouble(strNum);
|
||||||
|
} catch (NumberFormatException nfe) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isNumeric(Double num) {
|
||||||
|
if (num == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return isNumeric(num.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isNumeric(Integer num) {
|
||||||
|
if (num == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return isNumeric(num.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isNumeric(Long num) {
|
||||||
|
if (num == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return isNumeric(num.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Long형태의 숫자인지 아닌지 확인한다. */
|
||||||
|
public static boolean isNumericForLong(String strNum) {
|
||||||
|
if (strNum == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
Long lValue = Long.parseLong(strNum);
|
||||||
|
} catch (NumberFormatException nfe) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static Integer getIntegerFromObject(Object obj) {
|
||||||
|
if (obj instanceof Integer ) {
|
||||||
|
return (Integer) obj;
|
||||||
|
} else if (obj instanceof String ) {
|
||||||
|
return Integer.parseInt((String) obj);
|
||||||
|
} else if (obj instanceof Long) {
|
||||||
|
return ((Long) obj).intValue();
|
||||||
|
} else if (obj instanceof Double) {
|
||||||
|
return ((Long)Math.round((Double)obj)).intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Long getLongFromObject(Object obj) {
|
||||||
|
if (obj instanceof String ) {
|
||||||
|
String strObj = (String) obj;
|
||||||
|
if( isNumeric(strObj) ) {
|
||||||
|
return Long.parseLong((String) obj);
|
||||||
|
}
|
||||||
|
} else if (obj instanceof Integer) {
|
||||||
|
return ((Integer) obj).longValue();
|
||||||
|
} else if (obj instanceof Long) {
|
||||||
|
return (Long) obj;
|
||||||
|
} else if (obj instanceof Double) {
|
||||||
|
return ((Long)Math.round((Double)obj));
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Double getDoubleFromObject(Object obj) throws Exception {
|
||||||
|
String str = getStringFromObject(obj);
|
||||||
|
str = removeSpecialChractersDecimalNumber(str);
|
||||||
|
return Double.parseDouble((String) str);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static BigDecimal getBigDecimalFromObject(Object obj) throws Exception {
|
||||||
|
return BigDecimal.valueOf(getDoubleFromObject(obj));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static String getStringFromObject(Object obj) throws Exception {
|
||||||
|
if (obj == null) {
|
||||||
|
return null;
|
||||||
|
} else if (obj instanceof String ) {
|
||||||
|
return (String) obj;
|
||||||
|
} else if (obj instanceof Integer) {
|
||||||
|
return ((Integer)obj).toString();
|
||||||
|
} else if (obj instanceof Long) {
|
||||||
|
return ((Long) obj).toString();
|
||||||
|
} else if (obj instanceof Float) {
|
||||||
|
return ((Float)obj).toString();
|
||||||
|
} else if (obj instanceof Double) {
|
||||||
|
return ((Double)obj).toString();
|
||||||
|
} else if (obj instanceof BigDecimal) {
|
||||||
|
return ((BigDecimal)obj).toPlainString();
|
||||||
|
} else if (obj instanceof Date) {
|
||||||
|
return ((Date)obj).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static org.json.simple.JSONObject getJSONObjectFromObject(Object obj) {
|
||||||
|
if (obj instanceof org.json.simple.JSONObject ) {
|
||||||
|
return (org.json.simple.JSONObject) obj;
|
||||||
|
} else if (obj instanceof String ) {
|
||||||
|
JSONParser parser = new JSONParser();
|
||||||
|
try {
|
||||||
|
obj = parser.parse( (String) obj );
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return (org.json.simple.JSONObject) obj;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static org.json.simple.JSONArray getJSONArrayFromObject(Object obj) {
|
||||||
|
if (obj instanceof org.json.simple.JSONArray ) {
|
||||||
|
return (org.json.simple.JSONArray) obj;
|
||||||
|
} else if (obj instanceof String ) {
|
||||||
|
JSONParser parser = new JSONParser();
|
||||||
|
try {
|
||||||
|
obj = parser.parse( (String) obj );
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return (org.json.simple.JSONArray) obj;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean getBooleanFromObject(Object obj) {
|
||||||
|
|
||||||
|
if (obj instanceof String ) {
|
||||||
|
return Boolean.parseBoolean( ((String)obj).trim() );
|
||||||
|
} else if (obj instanceof Boolean) {
|
||||||
|
return (Boolean)obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parse a URI String into Name-Value Collection
|
||||||
|
* 쿼리스트링을 분석해서 Map형태로 return해준다.
|
||||||
|
* @param query
|
||||||
|
* @return query string name-value Map.
|
||||||
|
* @throws UnsupportedEncodingException
|
||||||
|
*/
|
||||||
|
public static Map<String, String> splitQuery(String query, String token) throws UnsupportedEncodingException {
|
||||||
|
Map<String, String> query_pairs = new LinkedHashMap<String, String>();
|
||||||
|
String[] pairs = query.split(token);
|
||||||
|
for (String pair : pairs) {
|
||||||
|
int idx = pair.indexOf("=");
|
||||||
|
query_pairs.put(URLDecoder.decode(pair.substring(0, idx), "UTF-8"), URLDecoder.decode(pair.substring(idx + 1), "UTF-8"));
|
||||||
|
}
|
||||||
|
return query_pairs;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static SortedMap<String,String[]> getParameterMap(HttpServletRequest request) {
|
||||||
|
|
||||||
|
SortedMap<String,String[]> sMap = Collections.synchronizedSortedMap
|
||||||
|
( new TreeMap<String,String[]>(request.getParameterMap()));
|
||||||
|
|
||||||
|
String params = "\n--------------------------------------------------------------\n" +
|
||||||
|
MyUtil.getBASEURL(request) + request.getRequestURI() + " IN:" +
|
||||||
|
"\n--------------------------------------------------------------\n";
|
||||||
|
synchronized(sMap) {
|
||||||
|
for(String key : sMap.keySet()) {
|
||||||
|
String[] value = sMap.get(key);
|
||||||
|
for(int i=0; i<value.length; i++) {
|
||||||
|
params += key + "[" + value[i] + "]\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
params += "--------------------------------------------------------------\n";
|
||||||
|
logger.info(params);
|
||||||
|
|
||||||
|
return sMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getParametersForLog(HttpServletRequest request) {
|
||||||
|
|
||||||
|
SortedMap<String,String[]> sMap = Collections.synchronizedSortedMap
|
||||||
|
( new TreeMap<String,String[]>(request.getParameterMap()));
|
||||||
|
|
||||||
|
String params = "\n--------------------------------------------------------------\n" +
|
||||||
|
MyUtil.getBASEURL(request) + request.getRequestURI() + " IN:" +
|
||||||
|
"\n--------------------------------------------------------------\n";
|
||||||
|
synchronized(sMap) {
|
||||||
|
for(String key : sMap.keySet()) {
|
||||||
|
String[] value = sMap.get(key);
|
||||||
|
for(int i=0; i<value.length; i++) {
|
||||||
|
params += key + "[" + value[i] + "]\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
params += "--------------------------------------------------------------\n";
|
||||||
|
return params;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static String getBASEURL(HttpServletRequest request) {
|
||||||
|
|
||||||
|
String baseUrl = ServletUriComponentsBuilder.fromRequestUri(request)
|
||||||
|
.replacePath(null)
|
||||||
|
.build()
|
||||||
|
.toUriString();
|
||||||
|
|
||||||
|
//첫번째 글자가 아닌경우,
|
||||||
|
if(
|
||||||
|
(baseUrl.indexOf("http://localhost") == -1 && baseUrl.indexOf("http://127.") == -1) ||
|
||||||
|
(baseUrl.indexOf("http://localhost") != 0 && baseUrl.indexOf("http://127.") != 0) ) {
|
||||||
|
baseUrl = baseUrl.replace("http","https");
|
||||||
|
}
|
||||||
|
return baseUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getRefererBASEURL(HttpServletRequest request) {
|
||||||
|
|
||||||
|
|
||||||
|
String referer = request.getHeader("Referer");
|
||||||
|
|
||||||
|
if( referer == null ) {
|
||||||
|
return referer;
|
||||||
|
}
|
||||||
|
String baseUrl = ServletUriComponentsBuilder.fromUriString(referer).replacePath(null)
|
||||||
|
.build()
|
||||||
|
.toUriString();
|
||||||
|
|
||||||
|
//첫번째 글자가 아닌경우,
|
||||||
|
if(
|
||||||
|
(baseUrl.indexOf("http://localhost") == -1 && baseUrl.indexOf("http://127.") == -1) ||
|
||||||
|
(baseUrl.indexOf("http://localhost") != 0 && baseUrl.indexOf("http://127.") != 0) ) {
|
||||||
|
baseUrl = baseUrl.replace("http","https");
|
||||||
|
}
|
||||||
|
return baseUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 소수점 첫째 자리가 0인 경우 표시하지 않기.
|
||||||
|
* @param number
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static String noDisplayDecimalPlacesIfZero(double number) {
|
||||||
|
DecimalFormat df=new DecimalFormat("#.##");
|
||||||
|
return df.format(number);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* strJSON로 부터 JSONObject를 추출한다.
|
||||||
|
* @param strJSON
|
||||||
|
* @return
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static JSONObject getJSONObjectFromStrJSON(String strJSON) throws Exception {
|
||||||
|
JSONParser parser = new JSONParser();
|
||||||
|
JSONObject jsonObject = null;
|
||||||
|
try {
|
||||||
|
Object obj = parser.parse(strJSON);
|
||||||
|
jsonObject = (JSONObject) obj;
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jsonObject == null) {
|
||||||
|
throw new Exception("요청이 잘 못 되었습니다. jsonObject is null");
|
||||||
|
}
|
||||||
|
|
||||||
|
return jsonObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 특정 소수점을 버림 처리한다.
|
||||||
|
* @param strAmount 문자열 형태로 들어간 소수
|
||||||
|
* @param decimalPlace 이 값이 2라면 1.2371234 -> 1.23
|
||||||
|
* @return
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static Double floor(String strAmount, int decimalPlace) throws Exception {
|
||||||
|
|
||||||
|
Double dPoint = Double.parseDouble(strAmount);
|
||||||
|
|
||||||
|
String[] arrSplitedDot = strAmount.split("\\.");
|
||||||
|
int nLength = arrSplitedDot.length;
|
||||||
|
if (arrSplitedDot.length == 2) {
|
||||||
|
if (MyUtil.isNumeric(arrSplitedDot[1])) {
|
||||||
|
|
||||||
|
//소수부 끝에 0을 제거해준다.
|
||||||
|
arrSplitedDot[1] = arrSplitedDot[1].replaceAll("0+$", "");
|
||||||
|
|
||||||
|
int nDecimalLength = arrSplitedDot[1].length();
|
||||||
|
if( nDecimalLength >= decimalPlace ) {
|
||||||
|
String strDecimal = "1";
|
||||||
|
for (int i = 0; i < decimalPlace; i++) {
|
||||||
|
strDecimal += "0";
|
||||||
|
}
|
||||||
|
dPoint = Math.floor(dPoint*Long.valueOf(strDecimal)) / Long.valueOf(strDecimal);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dPoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* days안에는 "월" 또는 "월,수,금" 이런 요일에 대한 한글문자가 들어가고 오늘이 주어진 요일 안에 포함되는지 여부를 알아낸다.
|
||||||
|
*
|
||||||
|
* @param days "월" 또는 "월,수,금'과 같이 요일이 한글로 들어있다.
|
||||||
|
* @return 만약 days에 "월"이 들어가 있고 오늘이 월요일이라면 true를 return한다.
|
||||||
|
*/
|
||||||
|
public static Boolean isContainDayOfWeekToday( String days ) {
|
||||||
|
|
||||||
|
// 1. Date 생성 / 현재 날짜
|
||||||
|
Date currentDate = new Date();
|
||||||
|
System.out.println(currentDate);
|
||||||
|
|
||||||
|
// 2. Calendar 생성
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTime(currentDate);
|
||||||
|
|
||||||
|
// 3. 텍스트 요일 구하기 (숫자)
|
||||||
|
int dayOfWeekNumber = calendar.get(Calendar.DAY_OF_WEEK);
|
||||||
|
|
||||||
|
if( dayOfWeekNumber == 1 ) {
|
||||||
|
if( days.indexOf("일") > -1 ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if( dayOfWeekNumber == 2 ) {
|
||||||
|
if( days.indexOf("월") > -1 ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if( dayOfWeekNumber == 3 ) {
|
||||||
|
if( days.indexOf("화") > -1 ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if( dayOfWeekNumber == 4 ) {
|
||||||
|
if( days.indexOf("수") > -1 ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if( dayOfWeekNumber == 5 ) {
|
||||||
|
if( days.indexOf("목") > -1 ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if( dayOfWeekNumber == 6 ) {
|
||||||
|
if( days.indexOf("금") > -1 ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else if( dayOfWeekNumber == 7 ) {
|
||||||
|
if( days.indexOf("토") > -1 ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 현재 시각이 timeRange에 명시한 시간대 안에 포함되는지 여부를 return 한다.
|
||||||
|
* @param timeRange 01~14 -> 오전 1시부터 오후 2시를 의미하며 ~ 구분자를 사용한다.
|
||||||
|
* @return 현재 시각이 해당 시간대 내에 포함되면 true를 return 한다.
|
||||||
|
* @throws Exception timeRange이 형식에 맞지 않으면 Exception이 발생한다.
|
||||||
|
*/
|
||||||
|
public static Boolean isInTimeRange( String timeRange ) throws Exception {
|
||||||
|
|
||||||
|
String[] arrTimeRange = timeRange.split("~");
|
||||||
|
if( arrTimeRange.length != 2 ) {
|
||||||
|
throw new Exception("timeRange이 형식에 맞지 않습니다.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if( MyUtil.isNumeric(arrTimeRange[0]) == false ) {
|
||||||
|
throw new Exception("timeRange이 형식에 맞지 않습니다 - 1");
|
||||||
|
}
|
||||||
|
|
||||||
|
if( MyUtil.isNumeric(arrTimeRange[1]) == false ) {
|
||||||
|
throw new Exception("timeRange이 형식에 맞지 않습니다 - 1");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Date currentDate = new Date();
|
||||||
|
// 포맷팅 정의
|
||||||
|
SimpleDateFormat formatter = new SimpleDateFormat("HH");
|
||||||
|
// 포맷팅 적용
|
||||||
|
String formatedNow = formatter.format(currentDate);
|
||||||
|
|
||||||
|
Integer currentHour = MyUtil.getIntegerFromObject( formatedNow );
|
||||||
|
Integer rangeStart = MyUtil.getIntegerFromObject( arrTimeRange[0] );
|
||||||
|
Integer rangeEnd = MyUtil.getIntegerFromObject( arrTimeRange[0] );
|
||||||
|
|
||||||
|
if( rangeStart <= rangeEnd && rangeEnd <= rangeEnd ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
<bean id="sqlSession" class="geoinfo.com.database.HotDeployableMybatisSessionFactoryBean">
|
<bean id="sqlSession" class="geoinfo.com.database.HotDeployableMybatisSessionFactoryBean">
|
||||||
<property name="dataSource" ref="dataSource" />
|
<property name="dataSource" ref="dataSource" />
|
||||||
<property name="configLocation" value="classpath:/egovframework/sqlmap/sql-map-config.xml" />
|
<property name="configLocation" value="classpath:/egovframework/sqlmap/sql-map-config.xml" />
|
||||||
<property name="mapperLocations" value="classpath:/egovframework/sqlmap/mapper/*/*.xml" />
|
<property name="mapperLocations" value="classpath:/egovframework/sqlmap/mapper/**/*.xml" />
|
||||||
<property name="interval" value="500" /><!-- ms -->
|
<property name="interval" value="500" /><!-- ms -->
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
|
||||||
|
<mapper namespace="geoinfo.drilling.input.service.DrillingInputMapper">
|
||||||
|
|
||||||
|
<resultMap id="spAddTblCsiResult" type="java.util.HashMap">
|
||||||
|
<result property="cid" column="p_cid" jdbcType="NUMERIC"/>
|
||||||
|
<result property="resultCode" column="p_result_code" jdbcType="VARCHAR"/>
|
||||||
|
<result property="errMsg" column="p_err_msg" jdbcType="VARCHAR"/>
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<select id="callSpAddTblCsi" parameterType="map" statementType="CALLABLE" resultMap="spAddTblCsiResult">
|
||||||
|
{ CALL SP_ADD_TBL_CSI(
|
||||||
|
#{constName},
|
||||||
|
#{constStartDate},
|
||||||
|
#{constStartDate},
|
||||||
|
#{constStateCode},
|
||||||
|
#{masterCompanyOCode},
|
||||||
|
#{masterCompanyTwCode},
|
||||||
|
#{masterCompanyThCode},
|
||||||
|
#{masterCompanyName},
|
||||||
|
#{masterCompanyDept},
|
||||||
|
#{masterCompanyAdmin},
|
||||||
|
#{masterCompanyTel},
|
||||||
|
#{constCompanyCode},
|
||||||
|
#{constCompanyAdmin},
|
||||||
|
#{constCompanyTel},
|
||||||
|
'C',
|
||||||
|
#{userId},
|
||||||
|
#{v_CID, mode=OUT, jdbcType=INTEGER},
|
||||||
|
#{v_RetCode, mode=OUT, jdbcType=INTEGER},
|
||||||
|
#{v_RetMsg, mode=OUT, jdbcType=VARCHAR}
|
||||||
|
) }
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="test" parameterType="map" resultType="string">
|
||||||
|
SELECT 'Hello, ' || 'World!' AS Greeting FROM DUAL
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="findConstCompanyCodeByConstCompanyName" parameterType="map" resultType="long">
|
||||||
|
SELECT SP_GET_CONST_COMPANY_CODE(#{constCompanyDept}) FROM dual
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
|
</mapper>
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!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>
|
||||||
|
|
||||||
|
<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>
|
||||||
|
|
||||||
|
|
||||||
|
</mapper>
|
||||||
|
|
@ -0,0 +1,64 @@
|
||||||
|
<%@ 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"%>
|
||||||
|
<c:if test="${'2' == cls}">
|
||||||
|
<header>
|
||||||
|
<!-- 네비게이션 시작 -->
|
||||||
|
<nav class="navbar navbar-default bootsnav navbar-fixed-top">
|
||||||
|
<div class="nav-header-bg"></div>
|
||||||
|
<div class="nav-header-line"></div>
|
||||||
|
<div class="nav-header-container">
|
||||||
|
<div class="nav-header-inner">
|
||||||
|
<!-- 글로벌 시작 -->
|
||||||
|
<div class="navbar-global-wrapper">
|
||||||
|
<!-- 로고 시작 -->
|
||||||
|
<div class="logo-wrapper">
|
||||||
|
<a href="index.do?cntyn=0" target="_self" onfocus="this.blur()" title="국토지반정보 포털시스템" class="logo">
|
||||||
|
<img src="${pageContext.request.contextPath}/com/img/common/header/logo_v2.png" class="logo-dark" alt="국토지반정보 포털시스템 로고">
|
||||||
|
</a>
|
||||||
|
<span class="page-system-title">프로젝트 등록</span>
|
||||||
|
</div>
|
||||||
|
<!-- 로고 끝 -->
|
||||||
|
<!-- 글로벌 링크 시작 -->
|
||||||
|
<div class="global-link-wrapper">
|
||||||
|
<ul>
|
||||||
|
<!-- 로그인시 시작 -->
|
||||||
|
<li>
|
||||||
|
<c:choose>
|
||||||
|
<c:when test="${cls != 1}">
|
||||||
|
<span class="username-zone"><span class="username">${userName}(${userId})</span>님이 로그인하셨습니다.</span>
|
||||||
|
</c:when>
|
||||||
|
<c:otherwise>
|
||||||
|
<span class="username-zone"><span class="username">${companyName}(${userId})</span>님이 로그인하셨습니다.</span>
|
||||||
|
</c:otherwise>
|
||||||
|
</c:choose>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="/logout.do?location=left" onFocus='this.blur()' class="btn top-btn-member logout-btn">로그아웃</a>
|
||||||
|
</li>
|
||||||
|
<!-- 로그인시 끝 -->
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- 글로벌 링크 끝 -->
|
||||||
|
</div>
|
||||||
|
<!-- 글로벌 끝 -->
|
||||||
|
<!-- 메뉴 시작 -->
|
||||||
|
<div class="navbar-collapse-wrapper">
|
||||||
|
<div class="navbar-collapse collapse">
|
||||||
|
<ul id="accordion" class="nav navbar-nav">
|
||||||
|
<!-- 1뎁스 메뉴 시작 -->
|
||||||
|
<li id="projectList" class="dropdown simple-dropdown">
|
||||||
|
<a href="/drilling/inquiry.do" data-target="navbar-nav-webManage">건설현장 관리</a>
|
||||||
|
</li>
|
||||||
|
<!-- 1뎁스 메뉴 끝 -->
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<!-- 메뉴 끝 -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<!-- 네비게이션 끝 -->
|
||||||
|
</header>
|
||||||
|
</c:if>
|
||||||
|
|
@ -0,0 +1,284 @@
|
||||||
|
<%@ 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">
|
||||||
|
var tableId = 0;
|
||||||
|
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
document.getElementById('add-table').addEventListener('click', function() {
|
||||||
|
tableId += 1;
|
||||||
|
var newTable = `
|
||||||
|
<div class="table-scrollable" data-index="` + tableId + `" data-` + tableId + `>
|
||||||
|
<table class="table-bordered table-data" data-index="` + tableId + `">
|
||||||
|
<colgroup>
|
||||||
|
<col style="width: 15%;">
|
||||||
|
<col style="width: 35%;">
|
||||||
|
<col style="width: 15%;">
|
||||||
|
<col style="width: 35%;">
|
||||||
|
</colgroup>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>사업명</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<input type="text" value="사업명 20240816 1634 " class="input-box" id="const-name-` + tableId + `" placeholder="사업명">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>사업기간</th>
|
||||||
|
<td>
|
||||||
|
<input type="date" value="2024-08-16" class="date" id="const-start-date-` + tableId + `">
|
||||||
|
<span>~</span>
|
||||||
|
<input type="date" value="2024-08-16" class="date date-2" id="const-end-date-` + tableId + `">
|
||||||
|
</td>
|
||||||
|
<th>사업단계</th>
|
||||||
|
<td>
|
||||||
|
<select class="selectbox" id="const-state-code-` + tableId + `">
|
||||||
|
<option disabled>사업단계선택</option>
|
||||||
|
<option selected value="1">타당성조사 및 계획검토</option>
|
||||||
|
<option value="2">기본설계</option>
|
||||||
|
<option value="3">실시설계</option>
|
||||||
|
<option value="4">시공중</option>
|
||||||
|
<option value="5">준공</option>
|
||||||
|
<option value="6">유지보수</option>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>발주기관</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<input type="text" value="발주기관 부서명" class="input-box information1" id="master-company-dept-` + tableId + `" placeholder="담당부서">
|
||||||
|
<input type="text" value="발주기관 담당자" class="input-box information2" id="master-company-admin-` + tableId + `" placeholder="담당자">
|
||||||
|
<input type="text" value="발주기관 연락처" class="input-box information3" id="master-company-tel-` + tableId + `" placeholder="담당자 연락처">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>건설사</th>
|
||||||
|
<td colspan="3">
|
||||||
|
<input type="text" value="건설사 부서명" class="input-box information1" id="const-company-dept-` + tableId + `" placeholder="담당부서">
|
||||||
|
<input type="text" value="건설사 담당자" class="input-box information2" id="const-company-admin-` + tableId + `" placeholder="담당자">
|
||||||
|
<input type="text" value="건설사 연락처" class="input-box information3" id="const-company-tel-` + tableId + `" placeholder="담당자 연락처">
|
||||||
|
<label class="check-box unselected-constructor-label" for="unselected-constructor-` + tableId + `"><input type="checkbox" id="unselected-constructor-` + tableId + `">
|
||||||
|
<span class="unselected-constructor-label-text">건설사 미선정</span>
|
||||||
|
</label>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
`;
|
||||||
|
document.getElementById('table-container').innerHTML += newTable;
|
||||||
|
});
|
||||||
|
|
||||||
|
// 초기 테이블 추가 트리거
|
||||||
|
document.getElementById('add-table').click();
|
||||||
|
|
||||||
|
document.getElementById('minus-table').addEventListener('click', function() {
|
||||||
|
var tableContainer = document.getElementById('table-container');
|
||||||
|
var tables = tableContainer.getElementsByClassName('table-scrollable');
|
||||||
|
if (tables.length > 0) {
|
||||||
|
tableContainer.removeChild(tables[tables.length - 1]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
document.getElementById('btn-save').addEventListener('click', function() {
|
||||||
|
|
||||||
|
var tableDataElements = document.getElementsByClassName('table-data');
|
||||||
|
|
||||||
|
console.log(tableDataElements);
|
||||||
|
|
||||||
|
var dataIndexValue;
|
||||||
|
|
||||||
|
var jsonData = new Array();
|
||||||
|
for (var i = 0; i < tableDataElements.length; i++) {
|
||||||
|
var jsonItem = {};
|
||||||
|
dataIndexValue = tableDataElements[i].getAttribute('data-index');
|
||||||
|
|
||||||
|
// 사업명
|
||||||
|
var constNameEle = document.getElementById('const-name-' + (i + 1));
|
||||||
|
if (constNameEle) {
|
||||||
|
jsonItem.constName = constNameEle.value;
|
||||||
|
}
|
||||||
|
// 사업기간 - 시작
|
||||||
|
var constStartDateEle = document.getElementById('const-start-date-' + (i + 1));
|
||||||
|
if (constStartDateEle) {
|
||||||
|
jsonItem.constStartDate = constStartDateEle.value;
|
||||||
|
}
|
||||||
|
// 사업기간 - 종료
|
||||||
|
var constEndDateEle = document.getElementById('const-end-date-' + (i + 1));
|
||||||
|
if (constEndDateEle) {
|
||||||
|
jsonItem.constEndDate = constEndDateEle.value;
|
||||||
|
}
|
||||||
|
// 사업단계
|
||||||
|
var constStateCodeEle = document.getElementById('const-state-code-' + (i + 1));
|
||||||
|
if (constStateCodeEle) {
|
||||||
|
jsonItem.constStateCode = constStateCodeEle.value;
|
||||||
|
}
|
||||||
|
// 발주기관 - 담당부서
|
||||||
|
var masterCompanyDeptEle = document.getElementById('master-company-dept-' + (i + 1));
|
||||||
|
if (masterCompanyDeptEle) {
|
||||||
|
jsonItem.masterCompanyDept = masterCompanyDeptEle.value;
|
||||||
|
}
|
||||||
|
// 발주기관 - 담당자
|
||||||
|
var masterCompanyAdminEle = document.getElementById('master-company-admin-' + (i + 1));
|
||||||
|
if (masterCompanyAdminEle) {
|
||||||
|
jsonItem.masterCompanyAdmin = masterCompanyAdminEle.value;
|
||||||
|
}
|
||||||
|
// 발주기관 - 담당자 연락처
|
||||||
|
var masterCompanyTelEle = document.getElementById('master-company-tel-' + (i + 1));
|
||||||
|
if (masterCompanyTelEle) {
|
||||||
|
jsonItem.masterCompanyTel = masterCompanyTelEle.value;
|
||||||
|
}
|
||||||
|
// 건설사 - 담당부서
|
||||||
|
var constCompanyDeptEle = document.getElementById('const-company-dept-' + (i + 1));
|
||||||
|
if (constCompanyDeptEle) {
|
||||||
|
jsonItem.constCompanyDept = constCompanyDeptEle.value;
|
||||||
|
}
|
||||||
|
// 건설사 - 담당자
|
||||||
|
var constCompanyAdminEle = document.getElementById('const-company-admin-' + (i + 1));
|
||||||
|
if (constCompanyAdminEle) {
|
||||||
|
jsonItem.constCompanyAdmin = constCompanyAdminEle.value;
|
||||||
|
}
|
||||||
|
// 건설사 - 담당자 연락처
|
||||||
|
var constCompanyTelEle = document.getElementById('const-company-tel-' + (i + 1));
|
||||||
|
if (constCompanyTelEle) {
|
||||||
|
jsonItem.constCompanyTel = constCompanyTelEle.value;
|
||||||
|
}
|
||||||
|
jsonData.push(jsonItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('%o', jsonData);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let xhr;
|
||||||
|
if(window.XMLHttpRequest) {
|
||||||
|
xhr = new XMLHttpRequest();
|
||||||
|
} else {
|
||||||
|
// IE5, IE6 일때
|
||||||
|
xhr = new ActiveXObject("Microsoft.XMLHTTP");
|
||||||
|
}
|
||||||
|
|
||||||
|
xhr.open('POST', '/drilling/input/add.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.send(JSON.stringify(jsonData));
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
</script>
|
||||||
|
<!-- javascript end-->
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 페이지 컨테이너 시작 -->
|
||||||
|
<section class="page-container">
|
||||||
|
<div class="page-content-wrapper drilling input">
|
||||||
|
<!-- 서브메뉴 시작 -->
|
||||||
|
<div class="page-sidebar-wrapper">
|
||||||
|
<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.do">건설현장 조회</a></p>
|
||||||
|
<p class="project-value value-is-active">건설현장 입력</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-check">
|
||||||
|
<p class="check-title"><span class="last-team-name">서울지방항공청</span></p>
|
||||||
|
<ul class="check-category">
|
||||||
|
<li>국토교통부</li>
|
||||||
|
<li>소속기관</li>
|
||||||
|
<li>지방항공청</li>
|
||||||
|
<li>서울지방항공청</li>
|
||||||
|
</ul>
|
||||||
|
<p class="check-title">기관명이 없을 시, 연락 바랍니다. 연락처: <span class="contact-tel">031-995-0934</span></p>
|
||||||
|
</div>
|
||||||
|
<button class="btn-green" type="button">엑셀자료입력</button>
|
||||||
|
</div>
|
||||||
|
<div id="table-container">
|
||||||
|
</div>
|
||||||
|
<div class="">
|
||||||
|
<button class="btn btn-plus" id="add-table" type="button"></button>
|
||||||
|
<button class="btn btn-minus" id="minus-table" type="button"></button>
|
||||||
|
<button class="btn-green btn-save" id="btn-save" type="button">
|
||||||
|
<span>저장</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 내용 끝 -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 콘텐츠 끝 -->
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<!-- 페이지 컨테이너 끝 -->
|
||||||
|
|
||||||
|
<div id="calenderDiv" class="trViewOff" style="position:absolute;"></div>
|
||||||
|
|
||||||
|
<%@ include file="/include/inc_footer_2021_new.jsp" %>
|
||||||
|
|
@ -0,0 +1,329 @@
|
||||||
|
<%@ 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">
|
||||||
|
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
|
||||||
|
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.send(JSON.stringify(jsonData));
|
||||||
|
});
|
||||||
|
|
||||||
|
// 초기 테이블 추가 트리거
|
||||||
|
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"><a href="/drilling/search.do">프로젝트 조회</a></p>
|
||||||
|
<p class="project-value value-is-active">건설현장 조회</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="search" id="name-input" name="q" class="input" placeholder="프로젝트명" title="" value="">
|
||||||
|
<input type="date" data-placeholder="20240321" >
|
||||||
|
<span>~</span>
|
||||||
|
<input type="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="">
|
||||||
|
<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-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>
|
||||||
|
<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>
|
||||||
|
</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>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 내용 끝 -->
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- 콘텐츠 끝 -->
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<!-- 페이지 컨테이너 끝 -->
|
||||||
|
|
||||||
|
<div id="calenderDiv" class="trViewOff" style="position:absolute;"></div>
|
||||||
|
|
||||||
|
<%@ include file="/include/inc_footer_2021_new.jsp" %>
|
||||||
|
|
@ -185,29 +185,47 @@
|
||||||
<a href="#" class="header-right-menu header-menu-02" onFocus="this.blur()" onclick="alert('로그인 후 이용가능 합니다.')"><span class="header-menu-text">검색<br />유통</span></a>
|
<a href="#" class="header-right-menu header-menu-02" onFocus="this.blur()" onclick="alert('로그인 후 이용가능 합니다.')"><span class="header-menu-text">검색<br />유통</span></a>
|
||||||
<a href="#" class="header-right-menu header-menu-03" onClick="gourl_hyun('','')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />현황</span></a>
|
<a href="#" class="header-right-menu header-menu-03" onClick="gourl_hyun('','')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />현황</span></a>
|
||||||
<a href="#" class="header-right-menu header-menu-04" onClick="gourl_webinsert('','','','')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />등록</span></a>
|
<a href="#" class="header-right-menu header-menu-04" onClick="gourl_webinsert('','','','')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />등록</span></a>
|
||||||
|
<a href="#menu-all" class="header-right-menu header-menu-all"></a>
|
||||||
</c:if>
|
</c:if>
|
||||||
<c:if test="${isLogin == true}">
|
<c:if test="${isLogin == true}">
|
||||||
<c:set var="cls" value="${cls}" />
|
<c:set var="cls" value="${cls}" />
|
||||||
|
|
||||||
|
<c:if test="${cls == 0}">
|
||||||
|
<a href="#" class="header-right-menu header-menu-01" onclick="gourl('psboard')"><span class="header-menu-text">시추정보<br />Q&A</span></a>
|
||||||
|
<a href="#" class="header-right-menu header-menu-02" onFocus="this.blur()" onclick="openMap('${userid}','${cls}')"><span class="header-menu-text">검색<br />유통</span></a>
|
||||||
|
<a href="#" class="header-right-menu header-menu-03" onClick="gourl_hyun('${userid}','${cls}')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />현황</span></a>
|
||||||
|
<a href="#" class="header-right-menu header-menu-04" onClick="alert('기업회원만 이용가능합니다.')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />등록</span></a>
|
||||||
|
<a href="#menu-all" class="header-right-menu header-menu-all"></a>
|
||||||
|
</c:if>
|
||||||
<c:if test="${cls == 1}">
|
<c:if test="${cls == 1}">
|
||||||
<a href="#" class="header-right-menu header-menu-01" onclick="gourl('psboard')"><span class="header-menu-text">시추정보<br />Q&A</span></a>
|
<a href="#" class="header-right-menu header-menu-01" onclick="gourl('psboard')"><span class="header-menu-text">시추정보<br />Q&A</span></a>
|
||||||
<a href="#" class="header-right-menu header-menu-02" onFocus="this.blur()" onClick="alert('개인회원만 이용가능합니다.')"><span class="header-menu-text">검색<br />유통</span></a>
|
<a href="#" class="header-right-menu header-menu-02" onFocus="this.blur()" onClick="alert('개인회원만 이용가능합니다.')"><span class="header-menu-text">검색<br />유통</span></a>
|
||||||
<a href="#" class="header-right-menu header-menu-03" onClick="gourl_hyun('${userid}','${cls}')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />현황</span></a>
|
<a href="#" class="header-right-menu header-menu-03" onClick="gourl_hyun('${userid}','${cls}')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />현황</span></a>
|
||||||
<a href="#" class="header-right-menu header-menu-04" onClick="gourl_webinsert('${userid}','${cls}','${input_cnt}','${mod_cnt}');" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />등록</span></a>
|
<a href="#" class="header-right-menu header-menu-04" onClick="gourl_webinsert('${userid}','${cls}','${input_cnt}','${mod_cnt}');" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />등록</span></a>
|
||||||
|
<a href="#menu-all" class="header-right-menu header-menu-all"></a>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${cls == 2}">
|
||||||
|
<a href="#" class="header-right-menu header-menu-01" onclick="gourl('psboard')"><span class="header-menu-text">시추정보<br />Q&A</span></a>
|
||||||
|
<a href="#" class="header-right-menu header-menu-02" onFocus="this.blur()" onClick="alert('개인회원만 이용가능합니다.')"><span class="header-menu-text">검색<br />유통</span></a>
|
||||||
|
<a href="#" class="header-right-menu header-menu-03" onClick="alert('개인회원만 이용가능합니다.')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />현황</span></a>
|
||||||
|
<a href="#" class="header-right-menu header-menu-04" onClick="alert('기업회원만 이용가능합니다.')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />등록</span></a>
|
||||||
|
<a href="#" class="header-right-menu header-menu-05" onClick="gourl_drilling_inquiry('${userid}','${cls}');" ><span class="header-menu-text">건설현장<br />등록</span></a>
|
||||||
|
</c:if>
|
||||||
|
<c:if test="${cls == 3}">
|
||||||
|
<a href="#" class="header-right-menu header-menu-01" onclick="gourl('psboard')"><span class="header-menu-text">시추정보<br />Q&A</span></a>
|
||||||
|
<a href="#" class="header-right-menu header-menu-02" onFocus="this.blur()" onclick="openMap('${userid}','${cls}')"><span class="header-menu-text">검색<br />유통</span></a>
|
||||||
|
<a href="#" class="header-right-menu header-menu-03" onClick="gourl_hyun('${userid}','${cls}')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />현황</span></a>
|
||||||
|
<a href="#" class="header-right-menu header-menu-04" onClick="alert('기업회원만 이용가능합니다.')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />등록</span></a>
|
||||||
|
<a href="#menu-all" class="header-right-menu header-menu-all"></a>
|
||||||
</c:if>
|
</c:if>
|
||||||
<c:if test="${cls == 9}">
|
<c:if test="${cls == 9}">
|
||||||
<a href="#" class="header-right-menu header-menu-01" onclick="gourl('psboard')"><span class="header-menu-text">시추정보<br />Q&A</span></a>
|
<a href="#" class="header-right-menu header-menu-01" onclick="gourl('psboard')"><span class="header-menu-text">시추정보<br />Q&A</span></a>
|
||||||
<a href="#" class="header-right-menu header-menu-02" onFocus="this.blur()" onclick="openMap('${userid}','${cls}')"><span class="header-menu-text">검색<br />유통</span></a>
|
<a href="#" class="header-right-menu header-menu-02" onFocus="this.blur()" onclick="openMap('${userid}','${cls}')"><span class="header-menu-text">검색<br />유통</span></a>
|
||||||
<a href="#" class="header-right-menu header-menu-03" onClick="gourl_hyun('${userid}','${cls}')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />현황</span></a>
|
<a href="#" class="header-right-menu header-menu-03" onClick="gourl_hyun('${userid}','${cls}')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />현황</span></a>
|
||||||
<a href="#" class="header-right-menu header-menu-04" onClick="gourl_webinsert('${userid}','${cls}','${input_cnt}','${mod_cnt}')" onfocus="this.blur()")><span class="header-menu-text">시추정보<br />등록</span></a>
|
<a href="#" class="header-right-menu header-menu-04" onClick="gourl_webinsert('${userid}','${cls}','${input_cnt}','${mod_cnt}')" onfocus="this.blur()")><span class="header-menu-text">시추정보<br />등록</span></a>
|
||||||
</c:if>
|
<a href="#menu-all" class="header-right-menu header-menu-all"></a>
|
||||||
<c:if test="${cls == 0 || cls == 3}">
|
|
||||||
<a href="#" class="header-right-menu header-menu-01" onclick="gourl('psboard')"><span class="header-menu-text">시추정보<br />Q&A</span></a>
|
|
||||||
<a href="#" class="header-right-menu header-menu-02" onFocus="this.blur()" onclick="openMap('${userid}','${cls}')"><span class="header-menu-text">검색<br />유통</span></a>
|
|
||||||
<a href="#" class="header-right-menu header-menu-03" onClick="gourl_hyun('${userid}','${cls}')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />현황</span></a>
|
|
||||||
<a href="#" class="header-right-menu header-menu-04" onClick="alert('기업회원만 이용가능합니다.')" onfocus="this.blur()"><span class="header-menu-text">시추정보<br />등록</span></a>
|
|
||||||
</c:if>
|
</c:if>
|
||||||
</c:if>
|
</c:if>
|
||||||
<a href="#menu-all" class="header-right-menu header-menu-all"></a>
|
|
||||||
</div>
|
</div>
|
||||||
<!-- 메뉴 버튼그룹 끝 -->
|
<!-- 메뉴 버튼그룹 끝 -->
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -903,26 +903,25 @@ header .header-right-menu {
|
||||||
height: 80px;
|
height: 80px;
|
||||||
float: left;
|
float: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
header .header-right-menu.header-menu-all {
|
header .header-right-menu.header-menu-all {
|
||||||
background: #00345f url(../img/common/icon/ico_header_menu_all.png) no-repeat 50% 50%;
|
background: #00345f url(../img/common/icon/ico_header_menu_all.png) no-repeat 50% 50%;
|
||||||
}
|
}
|
||||||
|
|
||||||
header .header-right-menu.header-menu-01 {
|
header .header-right-menu.header-menu-01 {
|
||||||
background: #00a999 url(../img/common/icon/ico_header_menu_01.png) no-repeat 50% 10px;
|
background: #00a999 url(../img/common/icon/ico_header_menu_01.png) no-repeat 50% 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
header .header-right-menu.header-menu-02 {
|
header .header-right-menu.header-menu-02 {
|
||||||
background: #02bdac url(../img/common/icon/ico_header_menu_02.png) no-repeat 50% 5px;
|
background: #02bdac url(../img/common/icon/ico_header_menu_02.png) no-repeat 50% 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
header .header-right-menu.header-menu-03 {
|
header .header-right-menu.header-menu-03 {
|
||||||
background: #13a7ce url(../img/common/icon/ico_header_menu_03.png) no-repeat 50% 10px;
|
background: #13a7ce url(../img/common/icon/ico_header_menu_03.png) no-repeat 50% 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
header .header-right-menu.header-menu-04 {
|
header .header-right-menu.header-menu-04 {
|
||||||
background: #3378c1 url(../img/common/icon/ico_header_menu_04.png) no-repeat 50% 8px;
|
background: #3378c1 url(../img/common/icon/ico_header_menu_04.png) no-repeat 50% 8px;
|
||||||
}
|
}
|
||||||
|
header .header-right-menu.header-menu-05 {
|
||||||
|
background: #150f69 url(../img/common/icon/ico_header_menu_05.svg) no-repeat 50% 7px;
|
||||||
|
background-size: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
header .global-link-wrapper ul li a.btn.notice-btn {
|
header .global-link-wrapper ul li a.btn.notice-btn {
|
||||||
background: #3378c1 url(../img/common/icon/ico_top_notice_02.png) no-repeat 12px center;
|
background: #3378c1 url(../img/common/icon/ico_top_notice_02.png) no-repeat 12px center;
|
||||||
|
|
@ -3302,6 +3301,473 @@ ul.faq-q > li textarea {
|
||||||
color: #999999;
|
color: #999999;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ====================================== */
|
||||||
|
/* ====================================== */
|
||||||
|
/* ====================================== */
|
||||||
|
/* ====================================== */
|
||||||
|
.drilling {
|
||||||
|
/* 트리메뉴 시작 */
|
||||||
|
/* 콘텐츠 시작 */
|
||||||
|
/* 내용 시작 ) */
|
||||||
|
/* 건설현장 조회 */
|
||||||
|
/* 테이블 css */
|
||||||
|
/* 건설현장 입력 */
|
||||||
|
}
|
||||||
|
.drilling .page-content-wrapper {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
.drilling .page-sidebar-wrapper {
|
||||||
|
width: 280px;
|
||||||
|
background-color: #eaecec;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.drilling .page-sidebar {
|
||||||
|
height: 1000px;
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 30px 15px;
|
||||||
|
}
|
||||||
|
.drilling .treeview-project-name {
|
||||||
|
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
.drilling .project-title {
|
||||||
|
background-color: #2cbfc8;
|
||||||
|
padding: 10px 2px;
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
.drilling .project-value {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 10px 18px;
|
||||||
|
line-height: 24px;
|
||||||
|
text-align: left;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
.drilling .value-is-active {
|
||||||
|
background-color: #000;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
.drilling .project-value:hover a {
|
||||||
|
color: #3378c1;
|
||||||
|
}
|
||||||
|
.drilling .page-content {
|
||||||
|
width: 100%;
|
||||||
|
flex: 1;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.drilling .page-content-inner {
|
||||||
|
padding: 30px;
|
||||||
|
}
|
||||||
|
.drilling .category-wrapper {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
display: table;
|
||||||
|
height: 50px;
|
||||||
|
background-color: #fff;
|
||||||
|
box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.2);
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.drilling .category-wrapper .page-category {
|
||||||
|
position: absolute;
|
||||||
|
top: 13px;
|
||||||
|
left: 26px;
|
||||||
|
right: auto;
|
||||||
|
padding-left: 30px;
|
||||||
|
background: url(/com/img/common/icon/ico_category_home.png) no-repeat 0 3px;
|
||||||
|
}
|
||||||
|
.drilling .category-wrapper .page-category .category-item {
|
||||||
|
float: left;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 24px;
|
||||||
|
padding-left: 30px;
|
||||||
|
background: url(/com/img/common/icon/ico_category_arrow.png) no-repeat 12px 50%;
|
||||||
|
}
|
||||||
|
.drilling .category-wrapper .page-category .category-item:first-child {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
.drilling .category-wrapper .btn-help {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
color: #fff;
|
||||||
|
height: 50px;
|
||||||
|
border-radius: 0;
|
||||||
|
width: auto;
|
||||||
|
line-height: 39px;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 6px 16px 6px 54px;
|
||||||
|
background: #19b3e5 url(/com/img/ground-info/icon/ico_category_btn_help.png) no-repeat 10px 11px;
|
||||||
|
}
|
||||||
|
.drilling .page-title-1depth {
|
||||||
|
font-size: 24px;
|
||||||
|
line-height: 30px;
|
||||||
|
font-weight: normal;
|
||||||
|
text-align: left;
|
||||||
|
color: #000;
|
||||||
|
padding: 0 0 10px 24px;
|
||||||
|
background: url(/com/img/ground-info/bu/bu_title_1depth.png) no-repeat 0 4px;
|
||||||
|
}
|
||||||
|
.drilling .content-wrapper {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20px;
|
||||||
|
box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.2);
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.drilling .content1 {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
display: table;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.drilling .page-top-search {
|
||||||
|
background-color: #efefef;
|
||||||
|
border: 1px solid #d5d5d5;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 18px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.drilling .form-inline {
|
||||||
|
margin-bottom: 18px;
|
||||||
|
vertical-align: bottom;
|
||||||
|
}
|
||||||
|
.drilling .form-inline-row {
|
||||||
|
margin-left: 66px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.drilling .input-label-display {
|
||||||
|
font-size: 16px;
|
||||||
|
padding: 0 10px 0 20px;
|
||||||
|
background: url(/com/img/common/bu/bu_title_4depth.png) no-repeat 0 50%;
|
||||||
|
}
|
||||||
|
.drilling .form-inline input, .drilling .form-inline-row input {
|
||||||
|
height: 34px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: #cccccc;
|
||||||
|
margin: 0 8px;
|
||||||
|
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||||
|
width: unset;
|
||||||
|
max-width: unset;
|
||||||
|
}
|
||||||
|
.drilling .input::placeholder {
|
||||||
|
text-indent: 10px;
|
||||||
|
}
|
||||||
|
.drilling .btn {
|
||||||
|
width: 120px;
|
||||||
|
height: 34px;
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #19b3e5;
|
||||||
|
border: 1px solid #19b3e5;
|
||||||
|
transition: all 0.3s linear;
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
padding: 4px 14px 4px 40px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 12px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.drilling .btn-search {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
margin-left: 6px;
|
||||||
|
}
|
||||||
|
.drilling .btn-search span {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 28px;
|
||||||
|
}
|
||||||
|
.drilling .btn-search::before {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 4px;
|
||||||
|
left: 8px;
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
background: url(/com/img/common/icon/ico_btn_search.png) no-repeat 50% 50%;
|
||||||
|
}
|
||||||
|
.drilling input[type=search] {
|
||||||
|
width: 380px;
|
||||||
|
}
|
||||||
|
.drilling .input-1 {
|
||||||
|
width: 312px;
|
||||||
|
}
|
||||||
|
.drilling .input-2 {
|
||||||
|
width: 70px;
|
||||||
|
}
|
||||||
|
.drilling .input-3 {
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
.drilling .table-info-group {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.drilling .table-wrap {
|
||||||
|
overflow-x: scroll;
|
||||||
|
}
|
||||||
|
.drilling .table-wrap table {
|
||||||
|
width: 160%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
table-layout: fixed;
|
||||||
|
}
|
||||||
|
.drilling .table-wrap table th {
|
||||||
|
background: #e5ebf0;
|
||||||
|
text-align: center;
|
||||||
|
color: #333;
|
||||||
|
height: 50px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 21px;
|
||||||
|
border-top: 2px solid #114672;
|
||||||
|
border-bottom: 2px solid #ddd;
|
||||||
|
border-left: 1px solid #ddd;
|
||||||
|
border-right: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
.drilling .table-wrap table tr:hover {
|
||||||
|
color: #333;
|
||||||
|
background-color: #dde8f5 !important;
|
||||||
|
}
|
||||||
|
.drilling .table-wrap table td {
|
||||||
|
color: #666;
|
||||||
|
font-size: 12px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
text-align: center;
|
||||||
|
padding: 10px 12px;
|
||||||
|
}
|
||||||
|
.drilling .table-wrap table tr:nth-child(even) {
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
}
|
||||||
|
.drilling .paging {
|
||||||
|
padding: 20px 0;
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
.drilling .paging ul {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
.drilling .paging ul li {
|
||||||
|
position: relative;
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
.drilling .paging ul li a {
|
||||||
|
display: block;
|
||||||
|
border: 1px solid #dadada;
|
||||||
|
border-radius: 4px;
|
||||||
|
min-width: 30px;
|
||||||
|
height: 26px;
|
||||||
|
padding: 0px 8px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 24px;
|
||||||
|
text-align: center;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
.drilling .paging ul li:hover a {
|
||||||
|
cursor: pointer;
|
||||||
|
color: #19b3e5;
|
||||||
|
border: 1px solid #19b3e5;
|
||||||
|
}
|
||||||
|
.drilling .is-active a {
|
||||||
|
background: #19b3e5;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
.drilling .page-prev {
|
||||||
|
position: absolute;
|
||||||
|
top: -1px;
|
||||||
|
left: 2px;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
.drilling .page-next {
|
||||||
|
position: absolute;
|
||||||
|
top: -1px;
|
||||||
|
left: 2px;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
transform: rotate(-90deg);
|
||||||
|
}
|
||||||
|
.drilling .paging ul li:first-child:hover .page-prev,
|
||||||
|
.drilling .paging ul li:last-child:hover .page-next {
|
||||||
|
filter: invert(45%) sepia(63%) saturate(1946%) hue-rotate(162deg) brightness(95%) contrast(101%);
|
||||||
|
}
|
||||||
|
.drilling .page-top-check {
|
||||||
|
background-color: #efefef;
|
||||||
|
border: 1px solid #d5d5d5;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 18px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
.drilling .check-title {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 18px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.drilling .check-title .last-team-name {
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
.drilling .check-category {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
.drilling .check-category li {
|
||||||
|
float: left;
|
||||||
|
margin-right: 8px;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.drilling .check-category li:last-child {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
.drilling .check-category li:last-child::after {
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
.drilling .check-category li::after {
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
width: 24px;
|
||||||
|
height: 16px;
|
||||||
|
background: url(/com/img/common/icon/ico_category_arrow.png) no-repeat 14px 4px;
|
||||||
|
}
|
||||||
|
.drilling .btn-green {
|
||||||
|
padding: 4px 14px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
height: 34px;
|
||||||
|
background-color: #00c48a;
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: 1px solid #00c48a;
|
||||||
|
float: right;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.drilling .table-scrollable {
|
||||||
|
border-top: 2px solid #114672;
|
||||||
|
border-bottom: 1px solid #114672;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.drilling .table-bordered {
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
.drilling .table-bordered tbody tr th {
|
||||||
|
background-color: #ebebeb;
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
border: 1px solid #d5d5d5;
|
||||||
|
box-sizing: border-box;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.drilling .table-bordered tbody tr td {
|
||||||
|
border: 1px solid #ebebeb;
|
||||||
|
padding: 6px 6px;
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: middle;
|
||||||
|
font-size: 14px;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
.drilling .input-box {
|
||||||
|
border: 1px solid #d1d1d1;
|
||||||
|
width: 100%;
|
||||||
|
height: 34px;
|
||||||
|
padding: 6px 0;
|
||||||
|
text-indent: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 14px;
|
||||||
|
max-width: 100%;
|
||||||
|
resize: none;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.drilling .check-box {
|
||||||
|
padding-left: 0px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.drilling .table-bordered tbody tr td .date, .drilling .selectbox {
|
||||||
|
border: 1px solid #d1d1d1;
|
||||||
|
height: 34px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin-right: 8px;
|
||||||
|
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
|
||||||
|
width: unset;
|
||||||
|
max-width: unset;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
.drilling .date-2 {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
.drilling .selectbox {
|
||||||
|
width: 100%;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
.drilling .information1 {
|
||||||
|
width: 300px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
.drilling .information2 {
|
||||||
|
width: 200px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
.drilling .information3 {
|
||||||
|
width: 430px;
|
||||||
|
}
|
||||||
|
.drilling .unselected-constructor-label .unselected-constructor-label-text {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
.drilling .btn-plus, .drilling .btn-minus {
|
||||||
|
width: 60px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.drilling .btn-plus::before {
|
||||||
|
display: inline-block;
|
||||||
|
content: "";
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
position: absolute;
|
||||||
|
top: 5px;
|
||||||
|
left: 20px;
|
||||||
|
background: url(/com/img/common/icon/ico_btn_pm_plus.png) no-repeat 50% 50%;
|
||||||
|
}
|
||||||
|
.drilling .btn-minus::before {
|
||||||
|
display: inline-block;
|
||||||
|
content: "";
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
position: absolute;
|
||||||
|
top: 5px;
|
||||||
|
left: 20px;
|
||||||
|
background: url(/com/img/common/icon/ico_btn_pm_minus.png) no-repeat 50% 50%;
|
||||||
|
}
|
||||||
|
.drilling .btn-save {
|
||||||
|
padding: 4px 14px 4px 46px;
|
||||||
|
position: relative;
|
||||||
|
font-size: 14px;
|
||||||
|
height: 34px;
|
||||||
|
font-weight: bold;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background-color: #19b3e5;
|
||||||
|
border: 1px solid #19b3e5;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
.drilling .btn-save::before {
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
top: 3px;
|
||||||
|
left: 12px;
|
||||||
|
content: "";
|
||||||
|
background: url(/com/img/common/icon/ico_btn_save.png) no-repeat 50% 50%;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
/* ====================================== */
|
/* ====================================== */
|
||||||
/* ====================================== */
|
/* ====================================== */
|
||||||
|
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -399,7 +399,7 @@ iframe,
|
||||||
border: solid #fff;
|
border: solid #fff;
|
||||||
border-width: 0 2px 2px 0;
|
border-width: 0 2px 2px 0;
|
||||||
}
|
}
|
||||||
.popup-hiddenFrame{
|
.popup-hiddenFrame {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
/* 메인팝업 끝 */
|
/* 메인팝업 끝 */
|
||||||
|
|
@ -849,22 +849,27 @@ header .header-right-menu {
|
||||||
width: 80px;
|
width: 80px;
|
||||||
height: 80px;
|
height: 80px;
|
||||||
float: left;
|
float: left;
|
||||||
|
&.header-menu-all {
|
||||||
|
background: #00345f url(../img/common/icon/ico_header_menu_all.png) no-repeat 50% 50%;
|
||||||
|
}
|
||||||
|
&.header-menu-01 {
|
||||||
|
background: #00a999 url(../img/common/icon/ico_header_menu_01.png) no-repeat 50% 10px;
|
||||||
|
}
|
||||||
|
&.header-menu-02 {
|
||||||
|
background: #02bdac url(../img/common/icon/ico_header_menu_02.png) no-repeat 50% 5px;
|
||||||
|
}
|
||||||
|
&.header-menu-03 {
|
||||||
|
background: #13a7ce url(../img/common/icon/ico_header_menu_03.png) no-repeat 50% 10px;
|
||||||
|
}
|
||||||
|
&.header-menu-04 {
|
||||||
|
background: #3378c1 url(../img/common/icon/ico_header_menu_04.png) no-repeat 50% 8px;
|
||||||
|
}
|
||||||
|
&.header-menu-05 {
|
||||||
|
background: #150f69 url(../img/common/icon/ico_header_menu_05.svg) no-repeat 50% 7px;
|
||||||
|
background-size: 30px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
header .header-right-menu.header-menu-all {
|
|
||||||
background: #00345f url(../img/common/icon/ico_header_menu_all.png) no-repeat 50% 50%;
|
|
||||||
}
|
|
||||||
header .header-right-menu.header-menu-01 {
|
|
||||||
background: #00a999 url(../img/common/icon/ico_header_menu_01.png) no-repeat 50% 10px;
|
|
||||||
}
|
|
||||||
header .header-right-menu.header-menu-02 {
|
|
||||||
background: #02bdac url(../img/common/icon/ico_header_menu_02.png) no-repeat 50% 5px;
|
|
||||||
}
|
|
||||||
header .header-right-menu.header-menu-03 {
|
|
||||||
background: #13a7ce url(../img/common/icon/ico_header_menu_03.png) no-repeat 50% 10px;
|
|
||||||
}
|
|
||||||
header .header-right-menu.header-menu-04 {
|
|
||||||
background: #3378c1 url(../img/common/icon/ico_header_menu_04.png) no-repeat 50% 8px;
|
|
||||||
}
|
|
||||||
header .global-link-wrapper ul li a.btn.notice-btn {
|
header .global-link-wrapper ul li a.btn.notice-btn {
|
||||||
background: #3378c1 url(../img/common/icon/ico_top_notice_02.png) no-repeat 12px center;
|
background: #3378c1 url(../img/common/icon/ico_top_notice_02.png) no-repeat 12px center;
|
||||||
}
|
}
|
||||||
|
|
@ -2910,4 +2915,524 @@ ul.faq-q > li textarea {
|
||||||
}
|
}
|
||||||
/* ====================================== */
|
/* ====================================== */
|
||||||
// 메인 로그인 팝업 끝
|
// 메인 로그인 팝업 끝
|
||||||
|
/* ====================================== */
|
||||||
|
|
||||||
|
/* ====================================== */
|
||||||
|
// 발주 기관 - 건설현장 등록 시작
|
||||||
|
/* ====================================== */
|
||||||
|
.drilling {
|
||||||
|
.page-content-wrapper {
|
||||||
|
background-color: #f9f9f9;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
min-height: 100vh;
|
||||||
|
}
|
||||||
|
.page-sidebar-wrapper {
|
||||||
|
width: 280px;
|
||||||
|
background-color: #eaecec;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 트리메뉴 시작 */
|
||||||
|
.page-sidebar {
|
||||||
|
height: 1000px;
|
||||||
|
overflow-y: auto;
|
||||||
|
padding: 30px 15px;
|
||||||
|
}
|
||||||
|
.treeview-project-name {
|
||||||
|
box-shadow: 2px 2px 4px rgba(0,0,0,0.2);
|
||||||
|
}
|
||||||
|
.project-title {
|
||||||
|
background-color: #2cbfc8;
|
||||||
|
padding: 10px 2px;
|
||||||
|
color: #fff;
|
||||||
|
font-weight: bold;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 20px;
|
||||||
|
}
|
||||||
|
.project-value {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 10px 18px;
|
||||||
|
line-height: 24px;
|
||||||
|
text-align: left;
|
||||||
|
font-size: 16px;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
.value-is-active {
|
||||||
|
background-color: #000;
|
||||||
|
color:#fff !important;
|
||||||
|
}
|
||||||
|
.project-value:hover a {
|
||||||
|
color:#3378c1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 콘텐츠 시작 */
|
||||||
|
|
||||||
|
.page-content {
|
||||||
|
width: 100%;
|
||||||
|
flex: 1;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
.page-content-inner {
|
||||||
|
padding: 30px;
|
||||||
|
}
|
||||||
|
.category-wrapper {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
display: table;
|
||||||
|
height: 50px;
|
||||||
|
background-color: #fff;
|
||||||
|
box-shadow: 4px 4px 10px rgba(0,0,0,0.2);
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.category-wrapper {
|
||||||
|
.page-category {
|
||||||
|
position: absolute;
|
||||||
|
top: 13px;
|
||||||
|
left: 26px;
|
||||||
|
right: auto;
|
||||||
|
padding-left: 30px;
|
||||||
|
background: url(/com/img/common/icon/ico_category_home.png) no-repeat 0 3px;
|
||||||
|
|
||||||
|
.category-item {
|
||||||
|
float: left;
|
||||||
|
font-size: 16px;
|
||||||
|
line-height: 24px;
|
||||||
|
padding-left: 30px;
|
||||||
|
background: url(/com/img/common/icon/ico_category_arrow.png) no-repeat 12px 50% ;
|
||||||
|
|
||||||
|
&:first-child {
|
||||||
|
padding-left: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btn-help {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
color: #fff;
|
||||||
|
height: 50px;
|
||||||
|
border-radius: 0;
|
||||||
|
width: auto;
|
||||||
|
line-height: 39px;
|
||||||
|
font-weight: bold;
|
||||||
|
padding: 6px 16px 6px 54px;
|
||||||
|
background: #19b3e5 url(/com/img/ground-info/icon/ico_category_btn_help.png) no-repeat 10px 11px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.page-title-1depth {
|
||||||
|
font-size: 24px;
|
||||||
|
line-height: 30px;
|
||||||
|
font-weight: normal;
|
||||||
|
text-align: left;
|
||||||
|
color: #000;
|
||||||
|
padding: 0 0 10px 24px;
|
||||||
|
background: url(/com/img/ground-info/bu/bu_title_1depth.png) no-repeat 0 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* 내용 시작 ) */
|
||||||
|
.content-wrapper {
|
||||||
|
background-color: #fff;
|
||||||
|
padding: 20px;
|
||||||
|
box-shadow: 4px 4px 10px rgba(0,0,0,0.2);
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.content1 {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
display: table;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 건설현장 조회 */
|
||||||
|
.page-top-search {
|
||||||
|
background-color: #efefef;
|
||||||
|
border:1px solid #d5d5d5;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 18px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.form-inline {
|
||||||
|
margin-bottom:18px;
|
||||||
|
vertical-align:bottom;
|
||||||
|
}
|
||||||
|
.form-inline-row {
|
||||||
|
margin-left: 66px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
.input-label-display {
|
||||||
|
font-size: 16px;
|
||||||
|
padding: 0 10px 0 20px;
|
||||||
|
background: url(/com/img/common/bu/bu_title_4depth.png) no-repeat 0 50%;
|
||||||
|
}
|
||||||
|
.form-inline input,.form-inline-row input {
|
||||||
|
height: 34px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border: #cccccc;
|
||||||
|
margin: 0 8px;
|
||||||
|
box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
|
||||||
|
width: unset;
|
||||||
|
max-width: unset;
|
||||||
|
}
|
||||||
|
.input::placeholder {
|
||||||
|
text-indent: 10px;
|
||||||
|
}
|
||||||
|
.btn {
|
||||||
|
width: 120px;
|
||||||
|
height: 34px;
|
||||||
|
color: #fff;
|
||||||
|
border-radius: 5px;
|
||||||
|
background-color: #19b3e5;
|
||||||
|
border:1px solid #19b3e5;
|
||||||
|
transition: all 0.3s linear;
|
||||||
|
cursor: pointer;
|
||||||
|
position: relative;
|
||||||
|
padding: 4px 14px 4px 40px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 12px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
.btn-search {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
margin-left: 6px;
|
||||||
|
}
|
||||||
|
.btn-search span {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 28px;
|
||||||
|
}
|
||||||
|
.btn-search::before {
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
top: 4px;
|
||||||
|
left: 8px;
|
||||||
|
width: 24px;
|
||||||
|
height: 24px;
|
||||||
|
background: url(/com/img/common/icon/ico_btn_search.png) no-repeat 50% 50%;
|
||||||
|
}
|
||||||
|
input[type="search"]{
|
||||||
|
width: 380px;
|
||||||
|
}
|
||||||
|
.input-1 {
|
||||||
|
width: 312px;
|
||||||
|
}
|
||||||
|
.input-2 {
|
||||||
|
width: 70px;
|
||||||
|
}
|
||||||
|
.input-3 {
|
||||||
|
width: 100px;
|
||||||
|
}
|
||||||
|
.table-info-group {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 테이블 css */
|
||||||
|
|
||||||
|
.table-wrap {
|
||||||
|
overflow-x: scroll;
|
||||||
|
}
|
||||||
|
.table-wrap table {
|
||||||
|
width: 160%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
table-layout: fixed;
|
||||||
|
}
|
||||||
|
.table-wrap table th {
|
||||||
|
background: #e5ebf0;
|
||||||
|
text-align: center;
|
||||||
|
color: #333;
|
||||||
|
height: 50px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 21px;
|
||||||
|
border-top: 2px solid #114672;
|
||||||
|
border-bottom: 2px solid #ddd;
|
||||||
|
border-left: 1px solid #ddd;
|
||||||
|
border-right: 1px solid #ddd;
|
||||||
|
}
|
||||||
|
.table-wrap table tr:hover {
|
||||||
|
color: #333;
|
||||||
|
background-color: #dde8f5 !important;
|
||||||
|
}
|
||||||
|
.table-wrap table td {
|
||||||
|
color: #666;
|
||||||
|
font-size: 12px;
|
||||||
|
border: 1px solid #ddd;
|
||||||
|
text-align: center;
|
||||||
|
padding: 10px 12px;
|
||||||
|
}
|
||||||
|
.table-wrap table tr:nth-child(even){
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
}
|
||||||
|
.paging {
|
||||||
|
padding: 20px 0;
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 auto;
|
||||||
|
|
||||||
|
ul {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
li {
|
||||||
|
position: relative;
|
||||||
|
margin-left: 10px;
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: block;
|
||||||
|
border:1px solid #dadada;
|
||||||
|
border-radius: 4px;
|
||||||
|
min-width: 30px;
|
||||||
|
height: 26px;
|
||||||
|
padding: 0px 8px;
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 24px;
|
||||||
|
text-align: center;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
a {
|
||||||
|
cursor: pointer;
|
||||||
|
color: #19b3e5;
|
||||||
|
border:1px solid #19b3e5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.is-active a {
|
||||||
|
background: #19b3e5 ;
|
||||||
|
color: #fff !important;
|
||||||
|
}
|
||||||
|
.page-prev {
|
||||||
|
position: absolute;
|
||||||
|
top:-1px;
|
||||||
|
left: 2px;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
transform: rotate(90deg);
|
||||||
|
}
|
||||||
|
.page-next {
|
||||||
|
position: absolute;
|
||||||
|
top:-1px;
|
||||||
|
left: 2px;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
transform: rotate(-90deg);
|
||||||
|
}
|
||||||
|
.paging ul li:first-child:hover .page-prev,
|
||||||
|
.paging ul li:last-child:hover .page-next {
|
||||||
|
filter: invert(45%) sepia(63%) saturate(1946%) hue-rotate(162deg)
|
||||||
|
brightness(95%) contrast(101%);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* 건설현장 입력 */
|
||||||
|
.page-top-check {
|
||||||
|
background-color: #efefef;
|
||||||
|
border:1px solid #d5d5d5;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 18px;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
.check-title {
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 18px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
.last-team-name {
|
||||||
|
font-size: 24px;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 32px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.check-category {
|
||||||
|
overflow: hidden;
|
||||||
|
li {
|
||||||
|
float: left;
|
||||||
|
margin-right: 8px;
|
||||||
|
font-size: 14px;
|
||||||
|
&:last-child {
|
||||||
|
margin-right: 0;
|
||||||
|
&::after {
|
||||||
|
content: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&::after {
|
||||||
|
content: "";
|
||||||
|
display: inline-block;
|
||||||
|
width: 24px;
|
||||||
|
height: 16px;
|
||||||
|
background:url(/com/img/common/icon/ico_category_arrow.png) no-repeat 14px 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btn-green {
|
||||||
|
padding: 4px 14px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
height: 34px;
|
||||||
|
background-color: #00c48a;
|
||||||
|
color:#fff;
|
||||||
|
border-radius: 4px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border:1px solid #00c48a;
|
||||||
|
float:right;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
.table-scrollable {
|
||||||
|
border-top: 2px solid #114672;
|
||||||
|
border-bottom: 1px solid #114672;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
.table-bordered {
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-spacing: 0;
|
||||||
|
|
||||||
|
tbody {
|
||||||
|
tr {
|
||||||
|
th {
|
||||||
|
background-color: #ebebeb;
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
border:1px solid #d5d5d5;
|
||||||
|
box-sizing: border-box;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
td {
|
||||||
|
border: 1px solid #ebebeb;
|
||||||
|
padding: 6px 6px;
|
||||||
|
text-align: left;
|
||||||
|
vertical-align: middle;
|
||||||
|
font-size: 14px;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-box {
|
||||||
|
border: 1px solid #d1d1d1;
|
||||||
|
width: 100%;
|
||||||
|
height: 34px;
|
||||||
|
padding: 6px 0;
|
||||||
|
text-indent: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 14px;
|
||||||
|
max-width: 100%;
|
||||||
|
resize: none;
|
||||||
|
margin: 0 ;
|
||||||
|
}
|
||||||
|
.check-box {
|
||||||
|
padding-left: 0px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.table-bordered tbody tr td .date,.selectbox {
|
||||||
|
border: 1px solid #d1d1d1;
|
||||||
|
height: 34px;
|
||||||
|
box-sizing: border-box;
|
||||||
|
margin-right: 8px;
|
||||||
|
box-shadow: inset 0 1px 1px rgba(0,0,0,0.075);
|
||||||
|
width: unset;
|
||||||
|
max-width: unset;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.date-2 {
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
.selectbox {
|
||||||
|
width: 100%;
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
.information1 {
|
||||||
|
width: 300px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
.information2 {
|
||||||
|
width: 200px;
|
||||||
|
margin-right: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.information3 {
|
||||||
|
width: 430px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.unselected-constructor-label {
|
||||||
|
.unselected-constructor-label-text {
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-plus,.btn-minus {
|
||||||
|
width: 60px;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-plus::before {
|
||||||
|
display: inline-block;
|
||||||
|
content: "";
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
position: absolute;
|
||||||
|
top: 5px;
|
||||||
|
left: 20px;
|
||||||
|
background: url(/com/img/common/icon/ico_btn_pm_plus.png) no-repeat 50% 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.btn-minus::before {
|
||||||
|
display: inline-block;
|
||||||
|
content: "";
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
position: absolute;
|
||||||
|
top: 5px;
|
||||||
|
left: 20px;
|
||||||
|
background: url(/com/img/common/icon/ico_btn_pm_minus.png) no-repeat 50% 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.btn-save {
|
||||||
|
padding: 4px 14px 4px 46px;
|
||||||
|
position: relative;
|
||||||
|
font-size: 14px;
|
||||||
|
height: 34px;
|
||||||
|
font-weight: bold;
|
||||||
|
box-sizing: border-box;
|
||||||
|
background-color: #19b3e5;
|
||||||
|
border:1px solid #19b3e5;
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.btn-save::before {
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
top: 3px;
|
||||||
|
left: 12px;
|
||||||
|
content: "";
|
||||||
|
background: url(/com/img/common/icon/ico_btn_save.png) no-repeat 50% 50%;
|
||||||
|
width: 26px;
|
||||||
|
height: 26px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
/* ====================================== */
|
||||||
|
// 발주 기관 - 건설현장 등록 끝
|
||||||
/* ====================================== */
|
/* ====================================== */
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="24" height="25" viewBox="0 0 24 25" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.29289 8.8929C5.68342 8.50238 6.31658 8.50238 6.70711 8.8929L12 14.1858L17.2929 8.8929C17.6834 8.50238 18.3166 8.50238 18.7071 8.8929C19.0976 9.28342 19.0976 9.91659 18.7071 10.3071L12.7071 16.3071C12.3166 16.6976 11.6834 16.6976 11.2929 16.3071L5.29289 10.3071C4.90237 9.91659 4.90237 9.28342 5.29289 8.8929Z" fill="black"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 480 B |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 9.7 KiB |
|
|
@ -243,6 +243,21 @@ function gourl_webinsert(userid, cls , input_cnt, mod_cnt){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function gourl_drilling_inquiry(userid, cls){
|
||||||
|
if(userid == "" || userid == null){
|
||||||
|
alert("로그인 하셔야 합니다.");
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cls == 2) {
|
||||||
|
window.open("/drilling/inquiry.do");
|
||||||
|
} else {
|
||||||
|
alert("잘못된 접근 입니다.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function gourl_weblist(userid){
|
function gourl_weblist(userid){
|
||||||
if(userid == "" || userid == null){
|
if(userid == "" || userid == null){
|
||||||
alert("로그인 하셔야 합니다.");
|
alert("로그인 하셔야 합니다.");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue