입력 검수 시스템 수정요청사항 개선
parent
1d3922405e
commit
3575881b96
|
|
@ -2,7 +2,7 @@ package geoinfo.regi.manageList;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
@ -10,18 +10,12 @@ import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Controller;
|
import org.springframework.stereotype.Controller;
|
||||||
import org.springframework.ui.ModelMap;
|
import org.springframework.ui.ModelMap;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.ResponseBody;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
||||||
|
|
||||||
import comm.web.WebConfirm;
|
|
||||||
import comm.web.WebSupplyXml;
|
|
||||||
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
import egovframework.rte.psl.dataaccess.util.EgovMap;
|
||||||
import geoinfo.regi.info.service.InfoService;
|
import geoinfo.regi.info.service.InfoService;
|
||||||
import geoinfo.regi.manageList.service.ManageListService;
|
import geoinfo.regi.manageList.service.ManageListService;
|
||||||
|
|
@ -30,8 +24,6 @@ import geoinfo.util.MyUtil;
|
||||||
import ictway.comm.util.parseData;
|
import ictway.comm.util.parseData;
|
||||||
import ictway.comm.util.strUtil;
|
import ictway.comm.util.strUtil;
|
||||||
import ictway.comm.web.WebUtil;
|
import ictway.comm.web.WebUtil;
|
||||||
import net.sf.json.JSONArray;
|
|
||||||
import net.sf.json.JSONObject;
|
|
||||||
|
|
||||||
@Controller
|
@Controller
|
||||||
public class ManageListController {
|
public class ManageListController {
|
||||||
|
|
@ -296,30 +288,86 @@ public class ManageListController {
|
||||||
@RequestMapping(value = "/modeifyCallReason.do")
|
@RequestMapping(value = "/modeifyCallReason.do")
|
||||||
public String modeifyCallReason(@RequestParam HashMap<String, Object> params, ModelMap model,HttpServletRequest request, HttpServletResponse response)throws Exception {
|
public String modeifyCallReason(@RequestParam HashMap<String, Object> params, ModelMap model,HttpServletRequest request, HttpServletResponse response)throws Exception {
|
||||||
|
|
||||||
HashMap resultList = new HashMap();
|
Map<String, Object> resultList = new HashMap<>();
|
||||||
|
|
||||||
strUtil sUtil = new strUtil();
|
strUtil sUtil = new strUtil();
|
||||||
String widthSize = sUtil.checkNull((String)params.get("width"));
|
String widthSize = sUtil.checkNull((String)params.get("width"));
|
||||||
String heightSize = "665";
|
String heightSize = "665";
|
||||||
String PROJECT_CODE = sUtil.checkNull((String)params.get("PROJECT_CODE"));
|
String PROJECT_CODE = sUtil.checkNull((String)params.get("PROJECT_CODE"));
|
||||||
String PROC = sUtil.checkNull((String)params.get("PROC"));
|
String HIST_SEQ = sUtil.checkNull((String)params.get("HIST_SEQ"));
|
||||||
|
String PROC = sUtil.checkNull((String)params.get("PROC")); // new: 검수자 수정요청항목 등록, edit: 검수자 선택 수정요청항목 확인 및 수정
|
||||||
ArrayList<?> MODI_ITEM_LIST = new ArrayList<>(); // "수정요청 대상" 체크 할 항목 조회
|
ArrayList<?> MODI_ITEM_LIST = new ArrayList<>(); // "수정요청 대상" 체크 할 항목 조회
|
||||||
|
|
||||||
String MODEIFY_CALL_REASON = "";
|
String MODEIFY_CALL_REASON = "";
|
||||||
if ("view".equals(PROC)) {
|
EgovMap result = masterService.getModeifyCallReason(params);
|
||||||
EgovMap result = masterService.getModeifyCallReason(params);
|
if (result != null) {
|
||||||
if (result != null) {
|
MODEIFY_CALL_REASON = (sUtil.checkNull(result.get("modeifyCallReason").toString())).replaceAll("\n","<br>");
|
||||||
MODEIFY_CALL_REASON = (sUtil.checkNull(result.get("modeifyCallReason").toString())).replaceAll("\n","<br>");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
MODI_ITEM_LIST = masterService.selectModifyItem(params);
|
|
||||||
}
|
}
|
||||||
|
MODI_ITEM_LIST = masterService.selectModifyItem(params);
|
||||||
|
|
||||||
|
Map<Object, Map<String, Object>> parentMap = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
for (Object obj : MODI_ITEM_LIST) {
|
||||||
|
|
||||||
|
Map<String, Object> row = (Map<String, Object>) obj;
|
||||||
|
|
||||||
|
Object parentGrpIdx = row.get("PARENT_GRP_IDX");
|
||||||
|
|
||||||
|
Map<String, Object> parent = parentMap.get(parentGrpIdx);
|
||||||
|
|
||||||
|
if (parent == null) {
|
||||||
|
parent = new HashMap<>();
|
||||||
|
|
||||||
|
parent.put("parentGrpIdx", parentGrpIdx);
|
||||||
|
parent.put("parentGrpName", row.get("PARENT_GRP_NAME"));
|
||||||
|
parent.put("parentDesc", row.get("PARENT_DESC"));
|
||||||
|
parent.put("groups", new ArrayList<Map<String, Object>>());
|
||||||
|
|
||||||
|
parentMap.put(parentGrpIdx, parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 중분류가 없는 경우
|
||||||
|
if (row.get("GRP_IDX") == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Map<String, Object>> groups =
|
||||||
|
(List<Map<String, Object>>) parent.get("groups");
|
||||||
|
|
||||||
|
Map<String, Object> group = null;
|
||||||
|
|
||||||
|
for (Map<String, Object> g : groups) {
|
||||||
|
if (g.get("grpIdx").equals(row.get("GRP_IDX"))) {
|
||||||
|
group = g;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (group == null) {
|
||||||
|
|
||||||
|
group = new HashMap<>();
|
||||||
|
|
||||||
|
group.put("grpIdx", row.get("GRP_IDX"));
|
||||||
|
group.put("grpName", row.get("GRP_NAME"));
|
||||||
|
group.put("items", new ArrayList<Map<String, Object>>());
|
||||||
|
|
||||||
|
groups.add(group);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (row.get("ITEM_NAME") != null) {
|
||||||
|
List<Map<String, Object>> items = (List<Map<String, Object>>) group.get("items");
|
||||||
|
items.add(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
resultList.put("modiItemList", new ArrayList<>(parentMap.values()));
|
||||||
resultList.put("modeifyCallReason", MODEIFY_CALL_REASON);
|
resultList.put("modeifyCallReason", MODEIFY_CALL_REASON);
|
||||||
resultList.put("modiItemList", MODI_ITEM_LIST);
|
|
||||||
resultList.put("heightSize", heightSize);
|
resultList.put("heightSize", heightSize);
|
||||||
resultList.put("widthSize", widthSize);
|
resultList.put("widthSize", widthSize);
|
||||||
resultList.put("projectCode", PROJECT_CODE);
|
resultList.put("projectCode", PROJECT_CODE);
|
||||||
resultList.put("proc", PROC);
|
resultList.put("proc", PROC);
|
||||||
|
resultList.put("histSeq", HIST_SEQ);
|
||||||
|
|
||||||
model.addAttribute("resultList", resultList);
|
model.addAttribute("resultList", resultList);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,12 @@ import java.io.InputStream;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -609,6 +608,7 @@ public class RegiController {
|
||||||
String PROJECT_CODE = sUtil.checkNull(String.valueOf(params.get("PROJECT_CODE")));
|
String PROJECT_CODE = sUtil.checkNull(String.valueOf(params.get("PROJECT_CODE")));
|
||||||
String PROC = sUtil.checkNull(String.valueOf(params.get("PROC")));
|
String PROC = sUtil.checkNull(String.valueOf(params.get("PROC")));
|
||||||
String MODEIFY_CALL_REASON = sUtil.checkNull(String.valueOf(params.get("MODEIFY_CALL_REASON")));
|
String MODEIFY_CALL_REASON = sUtil.checkNull(String.valueOf(params.get("MODEIFY_CALL_REASON")));
|
||||||
|
String HIST_SEQ = sUtil.checkNull(String.valueOf(params.get("HIST_SEQ")));
|
||||||
String MODIFY_ITEM = sUtil.checkNull(String.valueOf(params.get("MODIFY_ITEM")));
|
String MODIFY_ITEM = sUtil.checkNull(String.valueOf(params.get("MODIFY_ITEM")));
|
||||||
params.put("PROJECT_CODE", PROJECT_CODE);
|
params.put("PROJECT_CODE", PROJECT_CODE);
|
||||||
params.put("USERID", request.getSession().getAttribute("USERID"));
|
params.put("USERID", request.getSession().getAttribute("USERID"));
|
||||||
|
|
@ -760,8 +760,9 @@ public class RegiController {
|
||||||
} else {
|
} else {
|
||||||
affectRow = 0;
|
affectRow = 0;
|
||||||
}
|
}
|
||||||
|
// } else if ("".equals(PROJECT_CODE) == false && ("MODIFY".equals(PROC) == true || "MODIFY_POP".equals(PROC) == true)) {
|
||||||
} else if ("".equals(PROJECT_CODE) == false && ("MODIFY".equals(PROC) == true || "MODIFY_POP".equals(PROC) == true)) {
|
} else if ("".equals(PROJECT_CODE) == false && PROC.contains("MODIFY")) { // MODIFY, MODIFY_POP, MODIFY_NEW, MODIFY_EDIT
|
||||||
|
|
||||||
|
|
||||||
// TEMP_PROJECT_INFO STATE UPDATE
|
// TEMP_PROJECT_INFO STATE UPDATE
|
||||||
params.put("STATE", "5"); // 수정요청으로 변경
|
params.put("STATE", "5"); // 수정요청으로 변경
|
||||||
|
|
@ -770,9 +771,27 @@ public class RegiController {
|
||||||
// TEMP_MANAGE_STATE INSERT
|
// TEMP_MANAGE_STATE INSERT
|
||||||
params.put("STATE", "5");// 수정요청으로 변경
|
params.put("STATE", "5");// 수정요청으로 변경
|
||||||
params.put("MODEIFY_CALL_REASON", MODEIFY_CALL_REASON);// 수정요청으로
|
params.put("MODEIFY_CALL_REASON", MODEIFY_CALL_REASON);// 수정요청으로
|
||||||
params.put("MODIFY_ITEM", MODIFY_ITEM); // 변경
|
// params.put("MODIFY_ITEM", MODIFY_ITEM); // 변경
|
||||||
|
|
||||||
affectRow += masterService.mergeStateInsertModeify(params);
|
affectRow += masterService.mergeStateInsertModeify(params);
|
||||||
|
|
||||||
|
if("MODIFY_EDIT".equals(PROC)) { // 수정요청항목 수정시 TEMP_MANAGE_STATE_SEL_MODI_IT DELETE INSERT만 수행
|
||||||
|
params.put("HIST_SEQ", HIST_SEQ);
|
||||||
|
masterService.deleteTempManageStateSelModiIt(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 직전에 저장된 HIST_SEQ 조회
|
||||||
|
int histSeq = masterService.selectCurrentHistSeq(params);
|
||||||
|
|
||||||
|
String[] modifyItems = request.getParameterValues("MODIFY_ITEM_VAL");
|
||||||
|
|
||||||
|
if (modifyItems != null) {
|
||||||
|
params.put("HIST_SEQ", histSeq);
|
||||||
|
|
||||||
|
for (String itIdx : modifyItems) {
|
||||||
|
params.put("IT_IDX", Integer.parseInt(itIdx));
|
||||||
|
affectRow += masterService.insertTempManageStateSelModiIt(params);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// -------------------------------------------------------
|
// -------------------------------------------------------
|
||||||
// WEB_DATAINPUT STATE UPDATE Start
|
// WEB_DATAINPUT STATE UPDATE Start
|
||||||
|
|
@ -809,9 +828,27 @@ public class RegiController {
|
||||||
affectRow = 0;
|
affectRow = 0;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOGGER.debug("error" + e);
|
LOGGER.debug("error" + e);
|
||||||
|
String errorMsg = e.getMessage();
|
||||||
model.addAttribute("proce", e);
|
model.addAttribute("proce", e);
|
||||||
affectRow = 0;
|
affectRow = 0;
|
||||||
model.addAttribute("errorMessage", e.getMessage());
|
// model.addAttribute("errorMessage", e.getMessage());
|
||||||
|
if (errorMsg != null) {
|
||||||
|
errorMsg = errorMsg.replace("\n", "\\n"); // 줄바꿈 처리
|
||||||
|
errorMsg = errorMsg.replace("\"", "\\\""); // 쌍따옴표
|
||||||
|
errorMsg = errorMsg.replace("'", "\\'"); // 작은따옴표
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
errorMsg = errorMsg.replace("\r\n", "\\n")
|
||||||
|
.replace("\n", "\\n")
|
||||||
|
.replace("\r", "\\n")
|
||||||
|
.replace("\"", "\\\"")
|
||||||
|
.replace("'", "\\'");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
model.addAttribute("errorMessage", errorMsg);
|
||||||
}
|
}
|
||||||
|
|
||||||
model.addAttribute("projectCode", PROJECT_CODE);
|
model.addAttribute("projectCode", PROJECT_CODE);
|
||||||
|
|
@ -1788,11 +1825,67 @@ public class RegiController {
|
||||||
if(request.getSession().getAttribute("USERID").equals(params.get("USER_ID"))) {
|
if(request.getSession().getAttribute("USERID").equals(params.get("USER_ID"))) {
|
||||||
mav.setViewName("web/manage/select_modeify_call_reason");
|
mav.setViewName("web/manage/select_modeify_call_reason");
|
||||||
|
|
||||||
EgovMap result = masterService.selectModeifyCallReason(params);
|
EgovMap result = masterService.getModeifyCallReason(params);
|
||||||
MODI_ITEM_LIST = masterService.selectModifyItemBitmask(params);
|
// MODI_ITEM_LIST = masterService.selectModifyItemBitmask(params);
|
||||||
|
MODI_ITEM_LIST = masterService.selectModifySelItem(params);
|
||||||
|
|
||||||
|
Map<Object, Map<String, Object>> parentMap = new LinkedHashMap<>();
|
||||||
|
|
||||||
|
for (Object obj : MODI_ITEM_LIST) {
|
||||||
|
|
||||||
|
Map<String, Object> row = (Map<String, Object>) obj;
|
||||||
|
|
||||||
|
Object parentGrpIdx = row.get("PARENT_GRP_IDX");
|
||||||
|
|
||||||
|
Map<String, Object> parent = parentMap.get(parentGrpIdx);
|
||||||
|
|
||||||
|
if (parent == null) {
|
||||||
|
parent = new HashMap<>();
|
||||||
|
|
||||||
|
parent.put("parentGrpIdx", parentGrpIdx);
|
||||||
|
parent.put("parentGrpName", row.get("PARENT_GRP_NAME"));
|
||||||
|
parent.put("parentDesc", row.get("PARENT_DESC"));
|
||||||
|
parent.put("groups", new ArrayList<Map<String, Object>>());
|
||||||
|
|
||||||
|
parentMap.put(parentGrpIdx, parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (row.get("GRP_IDX") == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Map<String, Object>> groups =
|
||||||
|
(List<Map<String, Object>>) parent.get("groups");
|
||||||
|
|
||||||
|
Map<String, Object> group = null;
|
||||||
|
|
||||||
|
for (Map<String, Object> g : groups) {
|
||||||
|
if (g.get("grpIdx").equals(row.get("GRP_IDX"))) {
|
||||||
|
group = g;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (group == null) {
|
||||||
|
group = new HashMap<>();
|
||||||
|
|
||||||
|
group.put("grpIdx", row.get("GRP_IDX"));
|
||||||
|
group.put("grpName", row.get("GRP_NAME"));
|
||||||
|
group.put("items", new ArrayList<Map<String, Object>>());
|
||||||
|
|
||||||
|
groups.add(group);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (row.get("ITEM_NAME") != null) {
|
||||||
|
List<Map<String, Object>> items =
|
||||||
|
(List<Map<String, Object>>) group.get("items");
|
||||||
|
|
||||||
|
items.add(row);
|
||||||
|
}
|
||||||
|
}
|
||||||
mav.addObject("result", result);
|
mav.addObject("result", result);
|
||||||
mav.addObject("modiItem", MODI_ITEM_LIST);
|
// mav.addObject("modiItem", MODI_ITEM_LIST);
|
||||||
|
mav.addObject("modiItem", new ArrayList<>(parentMap.values()));
|
||||||
}
|
}
|
||||||
return mav;
|
return mav;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,13 @@ public interface RegiPageMapper {
|
||||||
|
|
||||||
public int updateQualityInformation(HashMap<String,Object> params) throws Exception;
|
public int updateQualityInformation(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
|
public int selectCurrentHistSeq(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
public int mergeStateInsertModeify(HashMap<String,Object> params) throws Exception;
|
public int mergeStateInsertModeify(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
|
public int insertTempManageStateSelModiIt(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
|
public int deleteTempManageStateSelModiIt(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
public HashMap getAjaxSmsData(HashMap<String,Object> params) throws Exception;
|
public HashMap getAjaxSmsData(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
|
|
@ -194,6 +200,10 @@ public interface RegiPageMapper {
|
||||||
public ArrayList<HashMap<String, Object>> getHoleNamesByProjectCode(HashMap<String,Object> params) throws Exception;
|
public ArrayList<HashMap<String, Object>> getHoleNamesByProjectCode(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
List<EgovMap> getInputdateRangeByUserid(Map<String, Object> params) throws Exception;
|
List<EgovMap> getInputdateRangeByUserid(Map<String, Object> params) throws Exception;
|
||||||
|
|
||||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String,Object> params) throws Exception;
|
public EgovMap getModeifyCallReason(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
|
// public ArrayList<?> selectModifyItemBitmask(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
|
public ArrayList<?> selectModifySelItem(HashMap<String,Object> params) throws Exception;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,12 @@ public interface RegiPageService {
|
||||||
|
|
||||||
public int mergeStateInsertModeify(HashMap<String,Object> params) throws Exception;
|
public int mergeStateInsertModeify(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
|
public int selectCurrentHistSeq(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
|
public int insertTempManageStateSelModiIt(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
|
public int deleteTempManageStateSelModiIt(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
public HashMap getAjaxSmsData(HashMap<String,Object> params) throws Exception;
|
public HashMap getAjaxSmsData(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
public HashMap getSmsId(HashMap<String,Object> params) throws Exception;
|
public HashMap getSmsId(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
@ -199,6 +205,10 @@ public interface RegiPageService {
|
||||||
public int deleteOldDatas(HashMap<String, Object> params) throws Exception;
|
public int deleteOldDatas(HashMap<String, Object> params) throws Exception;
|
||||||
|
|
||||||
List<EgovMap> getInputdateRangeByUserid(Map<String, Object> params) throws Exception;
|
List<EgovMap> getInputdateRangeByUserid(Map<String, Object> params) throws Exception;
|
||||||
|
|
||||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String,Object> params) throws Exception;
|
public EgovMap getModeifyCallReason(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
|
// public ArrayList<?> selectModifyItemBitmask(HashMap<String,Object> params) throws Exception;
|
||||||
|
|
||||||
|
public ArrayList<?> selectModifySelItem(HashMap<String, Object> params) throws Exception;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -164,12 +164,27 @@ public class RegiPageServiceImpl implements RegiPageService {
|
||||||
public ArrayList selectCompleteItems(HashMap<String, Object> params) throws Exception {
|
public ArrayList selectCompleteItems(HashMap<String, Object> params) throws Exception {
|
||||||
return regiPageMapper.selectCompleteItems(params);
|
return regiPageMapper.selectCompleteItems(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int selectCurrentHistSeq(HashMap<String, Object> params) throws Exception {
|
||||||
|
return regiPageMapper.selectCurrentHistSeq(params);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int mergeStateInsertModeify(HashMap<String, Object> params) throws Exception {
|
public int mergeStateInsertModeify(HashMap<String, Object> params) throws Exception {
|
||||||
return regiPageMapper.mergeStateInsertModeify(params);
|
return regiPageMapper.mergeStateInsertModeify(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int insertTempManageStateSelModiIt(HashMap<String, Object> params) throws Exception {
|
||||||
|
return regiPageMapper.insertTempManageStateSelModiIt(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int deleteTempManageStateSelModiIt(HashMap<String, Object> params) throws Exception {
|
||||||
|
return regiPageMapper.deleteTempManageStateSelModiIt(params);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HashMap getAjaxSmsData(HashMap<String,Object> params) throws Exception {
|
public HashMap getAjaxSmsData(HashMap<String,Object> params) throws Exception {
|
||||||
return regiPageMapper.getAjaxSmsData(params);
|
return regiPageMapper.getAjaxSmsData(params);
|
||||||
|
|
@ -501,9 +516,25 @@ public class RegiPageServiceImpl implements RegiPageService {
|
||||||
return regiPageMapper.getInputdateRangeByUserid(params);
|
return regiPageMapper.getInputdateRangeByUserid(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 수정요청 확인 팝업 수정요청정보 확인(TEMP_MANAGE_STATE.MODEIFY_CALL_REASON)
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public ArrayList<?> selectModifyItemBitmask(HashMap<String, Object> params) throws Exception {
|
public EgovMap getModeifyCallReason(HashMap<String,Object> params) throws Exception {
|
||||||
return regiPageMapper.selectModifyItemBitmask(params);
|
return regiPageMapper.getModeifyCallReason(params);
|
||||||
|
}
|
||||||
|
|
||||||
|
// @Override
|
||||||
|
// public ArrayList<?> selectModifyItemBitmask(HashMap<String, Object> params) throws Exception {
|
||||||
|
// return regiPageMapper.selectModifyItemBitmask(params);
|
||||||
|
// }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 관리자가 수정요청한 항목들을 입력자가 확인한다
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public ArrayList<?> selectModifySelItem(HashMap<String, Object> params) throws Exception {
|
||||||
|
return regiPageMapper.selectModifySelItem(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -298,7 +298,7 @@
|
||||||
, DECODE(STATE,'3','insert') AS INS
|
, DECODE(STATE,'3','insert') AS INS
|
||||||
, DECODE(STATE,'5','authins') AS AUTHINS
|
, DECODE(STATE,'5','authins') AS AUTHINS
|
||||||
, DECODE(REPORT_TYPE,'CH',DECODE(STATE,'5','','map'),'') AS MAP
|
, DECODE(REPORT_TYPE,'CH',DECODE(STATE,'5','','map'),'') AS MAP
|
||||||
, DECODE(STATE,'2','modifycall',DECODE(STATE,'3','modifycall','')) AS MODIFYCALL
|
, DECODE(STATE,'2','modifycall',DECODE(STATE,'3','modifycall',DECODE(STATE,'5','showModifycall',''))) AS MODIFYCALL
|
||||||
, PROJECT_MASTER_COMPANY_O_CODE
|
, PROJECT_MASTER_COMPANY_O_CODE
|
||||||
FROM TEMP_PROJECT_INFO INFO
|
FROM TEMP_PROJECT_INFO INFO
|
||||||
WHERE
|
WHERE
|
||||||
|
|
@ -398,16 +398,34 @@
|
||||||
|
|
||||||
<!-- 수정요청사유 팝업 > 수정요청대상에 표시 할 항목 조회 -->
|
<!-- 수정요청사유 팝업 > 수정요청대상에 표시 할 항목 조회 -->
|
||||||
<select id="selectModifyItem" parameterType="map" resultType="java.util.HashMap">
|
<select id="selectModifyItem" parameterType="map" resultType="java.util.HashMap">
|
||||||
SELECT GRP.GRP_IDX
|
SELECT P.GRP_IDX AS PARENT_GRP_IDX,
|
||||||
,IT.IT_IDX
|
P.NAME AS PARENT_GRP_NAME,
|
||||||
,GRP.NAME AS GRP_NAME
|
P."DESC" AS PARENT_DESC,
|
||||||
<!-- ,GRP."DESC" AS GRP_DESC -->
|
P."ORDER" AS PARENT_ORDER,
|
||||||
,REPLACE(GRP."DESC", CHR(13), '') AS GRP_DESC<!-- 줄바꿈 처리 필요 -->
|
|
||||||
,IT.NAME AS ITEM_NAME
|
C.GRP_IDX AS GRP_IDX,
|
||||||
FROM TEMP_MANAGE_STATE_MODI_IT IT
|
C.NAME AS GRP_NAME,
|
||||||
LEFT JOIN TEMP_MANAGE_STATE_MODI_GRP GRP ON GRP.GRP_IDX = IT.GRP_IDX
|
C."ORDER" AS GRP_ORDER,
|
||||||
WHERE IT.USE_YN = 'Y'
|
|
||||||
ORDER BY GRP."ORDER", IT."ORDER"
|
I.IT_IDX,
|
||||||
|
I.NAME AS ITEM_NAME,
|
||||||
|
I."ORDER" AS ITEM_ORDER,
|
||||||
|
|
||||||
|
CASE
|
||||||
|
WHEN S.IT_IDX IS NULL THEN 'N'
|
||||||
|
ELSE 'Y'
|
||||||
|
END AS CHECKED
|
||||||
|
FROM TEMP_MANAGE_STATE_MODI_GRP P
|
||||||
|
LEFT JOIN TEMP_MANAGE_STATE_MODI_GRP C ON C.PARENT_GRP_IDX = P.GRP_IDX
|
||||||
|
AND C.USE_YN = 'Y'
|
||||||
|
LEFT JOIN TEMP_MANAGE_STATE_MODI_IT I ON I.GRP_IDX = C.GRP_IDX
|
||||||
|
AND I.USE_YN = 'Y'
|
||||||
|
LEFT JOIN TEMP_MANAGE_STATE_SEL_MODI_IT S ON S.IT_IDX = I.IT_IDX
|
||||||
|
AND S.PROJECT_CODE = #{PROJECT_CODE}
|
||||||
|
AND S.HIST_SEQ = #{HIST_SEQ}
|
||||||
|
WHERE P.PARENT_GRP_IDX IS NULL
|
||||||
|
AND P.USE_YN='Y'
|
||||||
|
ORDER BY P."ORDER", C."ORDER", I."ORDER"
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -33,6 +33,7 @@
|
||||||
DECODE(A.STATE,'5','true','false') AS CURSOR,
|
DECODE(A.STATE,'5','true','false') AS CURSOR,
|
||||||
B.SMS_MSG,
|
B.SMS_MSG,
|
||||||
ST.MODIFY_ITEM,
|
ST.MODIFY_ITEM,
|
||||||
|
ST.HIST_SEQ,
|
||||||
tcsi.CID,
|
tcsi.CID,
|
||||||
tcsi.CRT_USERID,
|
tcsi.CRT_USERID,
|
||||||
tcsi.CONST_USERID,
|
tcsi.CONST_USERID,
|
||||||
|
|
@ -412,7 +413,11 @@
|
||||||
, DATETIME = SYSDATE
|
, DATETIME = SYSDATE
|
||||||
, COMPLETEDATE = ''
|
, COMPLETEDATE = ''
|
||||||
, CREATEDATE = ''
|
, CREATEDATE = ''
|
||||||
|
]]>
|
||||||
|
<if test ="PROC != 'MODIFY_EDIT'">
|
||||||
, HIST_SEQ = NVL(HIST_SEQ, 0) + 1
|
, HIST_SEQ = NVL(HIST_SEQ, 0) + 1
|
||||||
|
</if>
|
||||||
|
<![CDATA[
|
||||||
, MODIFY_CALL_DATE = SYSDATE
|
, MODIFY_CALL_DATE = SYSDATE
|
||||||
WHEN NOT MATCHED THEN
|
WHEN NOT MATCHED THEN
|
||||||
INSERT(
|
INSERT(
|
||||||
|
|
@ -443,7 +448,7 @@
|
||||||
]]>
|
]]>
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<select id="getManageState" parameterType="map" resultType="java.lang.Integer">
|
<select id="getManageState" parameterType="map" resultType="map">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
SELECT B.PROJECT_CODE, NVL(B.HIST_SEQ, 1)
|
SELECT B.PROJECT_CODE, NVL(B.HIST_SEQ, 1)
|
||||||
FROM TEMP_MANAGE_STATE A
|
FROM TEMP_MANAGE_STATE A
|
||||||
|
|
@ -584,6 +589,12 @@
|
||||||
ORDER BY T.DATETIME DESC
|
ORDER BY T.DATETIME DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectCurrentHistSeq" parameterType="map" resultType="int">
|
||||||
|
SELECT HIST_SEQ
|
||||||
|
FROM TEMP_MANAGE_STATE
|
||||||
|
WHERE PROJECT_CODE = #{PROJECT_CODE}
|
||||||
|
</select>
|
||||||
|
|
||||||
<update id="mergeStateInsertModeify">
|
<update id="mergeStateInsertModeify">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
MERGE INTO TEMP_MANAGE_STATE
|
MERGE INTO TEMP_MANAGE_STATE
|
||||||
|
|
@ -597,7 +608,11 @@ MERGE INTO TEMP_MANAGE_STATE
|
||||||
, DATETIME = SYSDATE
|
, DATETIME = SYSDATE
|
||||||
, COMPLETEDATE = ''
|
, COMPLETEDATE = ''
|
||||||
, CREATEDATE = ''
|
, CREATEDATE = ''
|
||||||
|
]]>
|
||||||
|
<if test ="PROC != 'MODIFY_EDIT'">
|
||||||
, HIST_SEQ = NVL(HIST_SEQ, 0) + 1
|
, HIST_SEQ = NVL(HIST_SEQ, 0) + 1
|
||||||
|
</if>
|
||||||
|
<![CDATA[
|
||||||
, MODIFY_CALL_DATE = SYSDATE
|
, MODIFY_CALL_DATE = SYSDATE
|
||||||
WHEN NOT MATCHED THEN
|
WHEN NOT MATCHED THEN
|
||||||
INSERT(
|
INSERT(
|
||||||
|
|
@ -622,6 +637,36 @@ MERGE INTO TEMP_MANAGE_STATE
|
||||||
]]>
|
]]>
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<insert id="insertTempManageStateSelModiIt" parameterType="map">
|
||||||
|
<![CDATA[
|
||||||
|
INSERT INTO TEMP_MANAGE_STATE_SEL_MODI_IT
|
||||||
|
(
|
||||||
|
PROJECT_CODE,
|
||||||
|
USERID,
|
||||||
|
DATETIME,
|
||||||
|
HIST_SEQ,
|
||||||
|
IT_IDX
|
||||||
|
) VALUES (
|
||||||
|
#{PROJECT_CODE},
|
||||||
|
#{USERID},
|
||||||
|
SYSDATE,
|
||||||
|
#{HIST_SEQ},
|
||||||
|
#{IT_IDX}
|
||||||
|
)
|
||||||
|
]]>
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<delete id="deleteTempManageStateSelModiIt" parameterType="map">
|
||||||
|
<![CDATA[
|
||||||
|
DELETE
|
||||||
|
FROM TEMP_MANAGE_STATE_SEL_MODI_IT
|
||||||
|
WHERE PROJECT_CODE = #{PROJECT_CODE}
|
||||||
|
AND HIST_SEQ = #{HIST_SEQ}
|
||||||
|
]]>
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<select id="getAjaxSmsData" parameterType="map" resultType="java.util.HashMap">
|
<select id="getAjaxSmsData" parameterType="map" resultType="java.util.HashMap">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
SELECT A.PROJECT_CODE
|
SELECT A.PROJECT_CODE
|
||||||
|
|
@ -1483,19 +1528,52 @@ INSERT INTO TEMP_SMS_LOG (
|
||||||
tmi.USERID = #{userId}
|
tmi.USERID = #{userId}
|
||||||
AND tmi.REPORT_TYPE = 'CH'
|
AND tmi.REPORT_TYPE = 'CH'
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="getModeifyCallReason" parameterType="map" resultType="EgovMap">
|
||||||
|
<![CDATA[
|
||||||
|
SELECT MODEIFY_CALL_REASON
|
||||||
|
FROM TEMP_MANAGE_STATE
|
||||||
|
WHERE PROJECT_CODE = #{PROJECT_CODE}
|
||||||
|
AND STATE = '5'
|
||||||
|
]]>
|
||||||
|
</select>
|
||||||
|
<!-- 수정요청사유 팝업 > 관리자가 체크한 수정대상 항목 조회 ★미사용★ -->
|
||||||
|
<!-- <select id="selectModifyItemBitmask" parameterType="map" resultType="java.util.HashMap"> -->
|
||||||
|
<!-- SELECT GRP.GRP_IDX -->
|
||||||
|
<!-- ,IT.IT_IDX -->
|
||||||
|
<!-- ,GRP.NAME AS GRP_NAME -->
|
||||||
|
<!-- <!- - ,GRP."DESC" AS GRP_DESC - -> -->
|
||||||
|
<!-- ,REPLACE(GRP."DESC", CHR(13), '') AS GRP_DESC줄바꿈 처리 필요 -->
|
||||||
|
<!-- ,IT.NAME AS ITEM_NAME -->
|
||||||
|
<!-- FROM TEMP_MANAGE_STATE_MODI_IT IT -->
|
||||||
|
<!-- LEFT JOIN TEMP_MANAGE_STATE_MODI_GRP GRP ON GRP.GRP_IDX = IT.GRP_IDX -->
|
||||||
|
<!-- WHERE BITAND(#{MODIFY_ITEM}, IT.IT_IDX) > 0 -->
|
||||||
|
<!-- AND IT.USE_YN = 'Y' -->
|
||||||
|
<!-- ORDER BY GRP."ORDER", IT."ORDER" -->
|
||||||
|
<!-- </select> -->
|
||||||
|
|
||||||
|
|
||||||
<!-- 수정요청사유 팝업 > 관리자가 체크한 수정대상 항목 조회 -->
|
<!-- 수정요청사유 팝업 > 관리자가 체크한 수정대상 항목 조회 -->
|
||||||
<select id="selectModifyItemBitmask" parameterType="map" resultType="java.util.HashMap">
|
<select id="selectModifySelItem" parameterType="map" resultType="java.util.HashMap">
|
||||||
SELECT GRP.GRP_IDX
|
SELECT P.GRP_IDX AS PARENT_GRP_IDX,
|
||||||
,IT.IT_IDX
|
P.NAME AS PARENT_GRP_NAME,
|
||||||
,GRP.NAME AS GRP_NAME
|
P."DESC" AS PARENT_DESC,
|
||||||
<!-- ,GRP."DESC" AS GRP_DESC -->
|
P."ORDER" AS PARENT_ORDER,
|
||||||
,REPLACE(GRP."DESC", CHR(13), '') AS GRP_DESC<!-- 줄바꿈 처리 필요 -->
|
|
||||||
,IT.NAME AS ITEM_NAME
|
C.GRP_IDX AS GRP_IDX,
|
||||||
FROM TEMP_MANAGE_STATE_MODI_IT IT
|
C.NAME AS GRP_NAME,
|
||||||
LEFT JOIN TEMP_MANAGE_STATE_MODI_GRP GRP ON GRP.GRP_IDX = IT.GRP_IDX
|
C."ORDER" AS GRP_ORDER,
|
||||||
WHERE BITAND(#{MODIFY_ITEM}, IT.IT_IDX) > 0
|
|
||||||
AND IT.USE_YN = 'Y'
|
I.IT_IDX,
|
||||||
ORDER BY GRP."ORDER", IT."ORDER"
|
I.NAME AS ITEM_NAME,
|
||||||
|
I."ORDER" AS ITEM_ORDER
|
||||||
|
FROM TEMP_MANAGE_STATE_MODI_GRP P
|
||||||
|
LEFT JOIN TEMP_MANAGE_STATE_MODI_GRP C ON C.PARENT_GRP_IDX = P.GRP_IDX
|
||||||
|
AND C.USE_YN = 'Y'
|
||||||
|
LEFT JOIN TEMP_MANAGE_STATE_MODI_IT I ON I.GRP_IDX = C.GRP_IDX
|
||||||
|
AND I.USE_YN = 'Y'
|
||||||
|
WHERE P.PARENT_GRP_IDX IS NULL
|
||||||
|
AND IT_IDX IN (SELECT IT_IDX FROM TEMP_MANAGE_STATE_SEL_MODI_IT WHERE PROJECT_CODE = #{PROJECT_CODE} AND HIST_SEQ = #{HIST_SEQ})
|
||||||
|
ORDER BY P."ORDER", C."ORDER", I."ORDER"
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|
@ -105,7 +105,7 @@ function mapBtnClick(project_code, projectName) {
|
||||||
// 삭제 버튼
|
// 삭제 버튼
|
||||||
function delBtnTemplate(report_type, project_code, del) {
|
function delBtnTemplate(report_type, project_code, del) {
|
||||||
if ( del == "delete" ) {
|
if ( del == "delete" ) {
|
||||||
return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="delBtnClick('+"'"+report_type+"','"+project_code+"'"+');">삭제</button>'
|
return '<button type="button" class="k-button k-button-delete popup_open" onclick="delBtnClick('+"'"+report_type+"','"+project_code+"'"+');">삭제</button>'
|
||||||
} else {
|
} else {
|
||||||
return " "
|
return " "
|
||||||
}
|
}
|
||||||
|
|
@ -120,10 +120,10 @@ function delBtnClick(report_type, project_code) {
|
||||||
|
|
||||||
// 수정 버튼
|
// 수정 버튼
|
||||||
// function msgBtnTemplate(report_type, project_code, message){
|
// function msgBtnTemplate(report_type, project_code, message){
|
||||||
function msgBtnTemplate(report_type, project_code, modify_item, message){
|
function msgBtnTemplate(report_type, project_code, modify_item, hist_seq, message){
|
||||||
if (msg = "message"){
|
if (msg = "message"){
|
||||||
// return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="selectModifycallBtnClick('+"'"+report_type+"','"+project_code+"'"+');">수정</button>';
|
// return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="selectModifycallBtnClick('+"'"+report_type+"','"+project_code+"'"+');">수정</button>';
|
||||||
return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="selectModifycallBtnClick('+"'"+report_type+"','"+project_code+"','"+modify_item+"'"+');">수정</button>';
|
return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="selectModifycallBtnClick('+"'"+report_type+"','"+project_code+"','"+hist_seq+"'"+');">요청사항보기</button>';
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
return " ";
|
return " ";
|
||||||
|
|
@ -131,11 +131,11 @@ function msgBtnTemplate(report_type, project_code, modify_item, message){
|
||||||
}
|
}
|
||||||
|
|
||||||
//수정요청 클릭
|
//수정요청 클릭
|
||||||
function selectModifycallBtnClick(projectCode, createUserid, modifyItem) {
|
function selectModifycallBtnClick(projectCode, createUserid, histSeq) {
|
||||||
var url = "/selectModeifyCallReason.do";
|
var url = "/selectModeifyCallReason.do";
|
||||||
var param = "PROJECT_CODE=" + projectCode + "&USER_ID=" + createUserid + "&MODIFY_ITEM=" + modifyItem;
|
var param = "PROJECT_CODE=" + projectCode + "&USER_ID=" + createUserid + "&HIST_SEQ=" + histSeq;
|
||||||
|
|
||||||
fn_openPopup(url, param, '480', '665');
|
fn_openPopup(url, param, '880', '665');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -215,18 +215,12 @@ function kendoGrid() {
|
||||||
title: "등록",
|
title: "등록",
|
||||||
template: "<div class='td-data'>#= insBtnTemplate(data.reportType, data.projectCode, data.ins) #</div>"
|
template: "<div class='td-data'>#= insBtnTemplate(data.reportType, data.projectCode, data.ins) #</div>"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
field: "del",
|
|
||||||
width: 60,
|
|
||||||
title: "삭제",
|
|
||||||
template: "<div class='td-data'>#= delBtnTemplate(data.reportType, data.projectCode, data.del) #</div>"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
field: "message",
|
field: "message",
|
||||||
width: 70,
|
width: 105,
|
||||||
title: "요청사항",
|
title: "수정요청보기",
|
||||||
// template: "#if (data.smsMsg != '') {# <div class='td-data'>#= msgBtnTemplate(data.projectCode, data.userid) #</div>#}#"
|
// template: "#if (data.smsMsg != '') {# <div class='td-data'>#= msgBtnTemplate(data.projectCode, data.userid) #</div>#}#"
|
||||||
template: "#if (data.state == '5') {# <div class='td-data'>#= msgBtnTemplate(data.projectCode, data.userid, data.modifyItem) #</div>#}#"
|
template: "#if (data.state == '5') {# <div class='td-data'>#= msgBtnTemplate(data.projectCode, data.userid, data.modifyItem, data.histSeq) #</div>#}#"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: "excelUpload",
|
field: "excelUpload",
|
||||||
|
|
@ -234,6 +228,12 @@ function kendoGrid() {
|
||||||
title: "엑셀입력",
|
title: "엑셀입력",
|
||||||
template: "<div class='td-data'>#= excelUploadBtnTemplate(data.reportType, data.projectCode) #</div>"
|
template: "<div class='td-data'>#= excelUploadBtnTemplate(data.reportType, data.projectCode) #</div>"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: "del",
|
||||||
|
width: 60,
|
||||||
|
title: "삭제",
|
||||||
|
template: "<div class='td-data'>#= delBtnTemplate(data.reportType, data.projectCode, data.del) #</div>"
|
||||||
|
}
|
||||||
],
|
],
|
||||||
sortable: true,
|
sortable: true,
|
||||||
scrollable: true,
|
scrollable: true,
|
||||||
|
|
|
||||||
|
|
@ -137,9 +137,9 @@ function modifycallBtnClick(projectCode, createUserid) {
|
||||||
|
|
||||||
// 수정요청사유 등록
|
// 수정요청사유 등록
|
||||||
var url = "/modeifyCallReason.do";
|
var url = "/modeifyCallReason.do";
|
||||||
var param = "PROJECT_CODE="+projectCode;
|
var param = "PROJECT_CODE="+projectCode+"&PROC=MODIFY_NEW";
|
||||||
|
|
||||||
fn_openPopup(url, param, '480', '275');
|
fn_openPopup(url, param, '880', '275');
|
||||||
}else{
|
}else{
|
||||||
alert("해당 검수자가 아닙니다.");
|
alert("해당 검수자가 아닙니다.");
|
||||||
}
|
}
|
||||||
|
|
@ -374,7 +374,7 @@ function kendoGrid() {
|
||||||
width: 80, title: "수정요청",
|
width: 80, title: "수정요청",
|
||||||
<%-- 2023-10-05 임효주: 고객 요청에 따라 등록완료 후 수정요청 프로세스 삭제.
|
<%-- 2023-10-05 임효주: 고객 요청에 따라 등록완료 후 수정요청 프로세스 삭제.
|
||||||
등록완료 후 프로젝트 정보 수정 시, TBL_HEADER_HOLE 테이블에서 수정 전 정보가 삭제되지 않아, 검색유통에 이중으로 나오는 문제 있음. --%>
|
등록완료 후 프로젝트 정보 수정 시, TBL_HEADER_HOLE 테이블에서 수정 전 정보가 삭제되지 않아, 검색유통에 이중으로 나오는 문제 있음. --%>
|
||||||
template: "<div class='td-data'>#= modifycallBtnTemplate(data.projectCode, data.createUserid, data.modifycall) #</div>"
|
template: "<div class='td-data'>#= modifycallBtnTemplate(data.projectCode, data.createUserid, data.modifycall, data.histSeq) #</div>"
|
||||||
},
|
},
|
||||||
{ field: "histSeq", width: 60, title: "차수",
|
{ field: "histSeq", width: 60, title: "차수",
|
||||||
template: function(data){
|
template: function(data){
|
||||||
|
|
|
||||||
|
|
@ -229,23 +229,26 @@ function mapBtnClick(project_code, projectName) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// 수정요청 버튼
|
// 수정요청 버튼
|
||||||
function modifycallBtnTemplate(project_code, checkuserid, modifycall) {
|
function modifycallBtnTemplate(project_code, checkuserid, modifycall, hist_seq) {
|
||||||
if ( modifycall == "modifycall" ) {
|
if ( modifycall == "modifycall" ) {
|
||||||
return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="modifycallBtnClick('+"'"+project_code+"','"+checkuserid+"'"+');">수정요청</button>'
|
// return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="modifycallBtnClick('+"'"+project_code+"','"+checkuserid+"','new'"+');">수정요청</button>'
|
||||||
|
return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="modifycallBtnClick('+"'"+project_code+"','"+checkuserid+"','" +hist_seq+ "','MODIFY_NEW'"+');">수정요청</button>'
|
||||||
|
} else if ( modifycall == "showModifycall" ) {
|
||||||
|
return '<button type="button" class="k-button k-button-modifycall popup_open" onclick="modifycallBtnClick('+"'"+project_code+"','"+checkuserid+"','" +hist_seq+ "','MODIFY_EDIT'"+');">요청보기</button>'
|
||||||
} else {
|
} else {
|
||||||
return " "
|
return " "
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 수정요청 클릭
|
// 수정요청 클릭
|
||||||
function modifycallBtnClick(project_code, checkuserid) {
|
function modifycallBtnClick(project_code, checkuserid, hist_seq, proc) {
|
||||||
if("admin_user"=="${LoginUserId}" || "65535" === "${cls}" || checkuserid == "${LoginUserId}"){ //사용자체크
|
if("admin_user"=="${LoginUserId}" || "65535" === "${cls}" || checkuserid == "${LoginUserId}"){ //사용자체크
|
||||||
$("#ProviderInfo").addClass("trViewOff"); //div 열려 있는거 닫기
|
$("#ProviderInfo").addClass("trViewOff"); //div 열려 있는거 닫기
|
||||||
|
|
||||||
// 수정요청사유 등록
|
// 수정요청사유 등록
|
||||||
var url = "/modeifyCallReason.do";
|
var url = "/modeifyCallReason.do";
|
||||||
var param = "PROJECT_CODE="+project_code;
|
var param = "PROJECT_CODE="+project_code+"&HIST_SEQ="+hist_seq+"&PROC="+proc;
|
||||||
|
|
||||||
fn_openPopup(url, param, '480', '775');
|
fn_openPopup(url, param, '880', '775');
|
||||||
}else{
|
}else{
|
||||||
alert("해당 검수자가 아닙니다.");
|
alert("해당 검수자가 아닙니다.");
|
||||||
}
|
}
|
||||||
|
|
@ -505,7 +508,7 @@ function reloadGrid() {
|
||||||
field: "modifycall",
|
field: "modifycall",
|
||||||
width: 80, title: "수정요청",
|
width: 80, title: "수정요청",
|
||||||
sortable: false,
|
sortable: false,
|
||||||
template: "<div class='td-data'>#= modifycallBtnTemplate(data.projectCode, data.checkuserid, data.modifycall) #</div>"
|
template: "<div class='td-data'>#= modifycallBtnTemplate(data.projectCode, data.checkuserid, data.modifycall, data.histSeq) #</div>"
|
||||||
},
|
},
|
||||||
{ field: "histSeq", width: 60, title: "차수", template: "<div class='td-data'>#: histSeq #</div>" },
|
{ field: "histSeq", width: 60, title: "차수", template: "<div class='td-data'>#: histSeq #</div>" },
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@
|
||||||
// 메시지 확인 후 다음 동작 수행
|
// 메시지 확인 후 다음 동작 수행
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<%-- 팝업 수정/등록인 경우 --%>
|
<%-- 팝업 수정/등록인 경우 --%>
|
||||||
<c:when test="${proc eq 'MODIFY_POP' || proc eq 'MODIFY'}">
|
<c:when test="${(proc eq 'MODIFY_NEW' || proc eq 'MODIFY_EDIT' ) || proc eq 'MODIFY_POP' || proc eq 'MODIFY'}">
|
||||||
window.close();
|
window.close();
|
||||||
if(window.opener && !window.opener.closed) {
|
if(window.opener && !window.opener.closed) {
|
||||||
window.opener.location.reload();
|
window.opener.location.reload();
|
||||||
|
|
|
||||||
|
|
@ -12,31 +12,92 @@
|
||||||
<script type="text/javascript" src="/web/js/tree/lib/jquery.js"></script>
|
<script type="text/javascript" src="/web/js/tree/lib/jquery.js"></script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
/* 1depth UL 전체 */
|
.popup_area .checkSwitch {
|
||||||
.pop_contents > ul {
|
float:right;
|
||||||
list-style: none;
|
text-align:right;
|
||||||
padding-left: 0;
|
margin-right: 10px;
|
||||||
margin: 0;
|
}
|
||||||
visibility: visible !important;
|
.popup_area .checkSwitch input[type="checkbox"],
|
||||||
|
.popup_area .groupSwitchOnOff[type="checkbox"],
|
||||||
|
.popup_area .itemSwitchOnOff[type="checkbox"] {
|
||||||
|
margin-left: 3px;
|
||||||
|
vertical-align: text-top;
|
||||||
|
}
|
||||||
|
.checkSwitch i.help::after {
|
||||||
|
left: -160px;
|
||||||
|
top: -70px;
|
||||||
|
width: 280px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
.checkSwitch i.help::before {
|
||||||
|
top: -14px;
|
||||||
|
left: 1px;
|
||||||
|
transform: rotate(0deg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pop_contents > ul {
|
||||||
|
list-style:none;
|
||||||
|
padding-left:0;
|
||||||
|
}
|
||||||
/* 1depth LI (제목) */
|
/* 1depth LI (제목) */
|
||||||
.pop_contents > ul > li {
|
.pop_contents > ul > li {
|
||||||
margin-bottom: 12px;
|
margin-bottom: 12px;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
padding: 8px 12px;
|
||||||
|
background: #e8e8e8;
|
||||||
|
border-left: 5px solid #cfcfd1;
|
||||||
|
background: #eef5ff;
|
||||||
|
border-left: 5px solid #4b87d9;
|
||||||
|
font-size: 15px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #2f5fa7;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 2depth UL — 라디오 리스트 가로 정렬 */
|
/* 2depth UL — 라디오 리스트 가로 정렬 */
|
||||||
.pop_contents ul ul {
|
/* .pop_contents ul ul { */
|
||||||
list-style: none;
|
/* list-style: none; */
|
||||||
margin: 6px 0 0 0;
|
/* margin: 6px 0 0 0; */
|
||||||
padding-left: 0;
|
/* padding-left: 0; */
|
||||||
|
|
||||||
display: flex; /* 가로 정렬 핵심 */
|
/* display: flex; /* 가로 정렬 핵심 */ */
|
||||||
flex-wrap: wrap; /* 라디오 많으면 자동 줄바꿈 */
|
/* flex-wrap: wrap; /* 라디오 많으면 자동 줄바꿈 */ */
|
||||||
gap: 20px; /* 라디오 간 간격 */
|
/* gap: 10px; /* 라디오 간 간격 */ */
|
||||||
|
/* } */
|
||||||
|
/* 대분류 > 중분류 */
|
||||||
|
.pop_contents > ul > li > ul {
|
||||||
|
list-style:none;
|
||||||
|
margin:6px 0 0 15px;
|
||||||
|
padding:0;
|
||||||
|
}
|
||||||
|
/* 중분류 */
|
||||||
|
.pop_contents > ul > li > ul > li {
|
||||||
|
margin: 10px 0 6px;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: bold;
|
||||||
|
color: #444;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ITEM 목록만 가로 정렬 */
|
||||||
|
.pop_contents > ul > li > ul > li > ul {
|
||||||
|
list-style:none;
|
||||||
|
display:flex;
|
||||||
|
flex-wrap:wrap;
|
||||||
|
gap:10px;
|
||||||
|
padding-left:0;
|
||||||
|
margin-top:5px;
|
||||||
|
overflow: hidden;
|
||||||
|
max-height: 800px;
|
||||||
|
transition: 0.4s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pop_contents > ul > li > ul > li > ul.close {
|
||||||
|
max-height: 0;
|
||||||
|
}
|
||||||
|
/* ITEM */
|
||||||
|
.pop_contents > ul > li > ul > li > ul > li {
|
||||||
|
font-size: 12px;
|
||||||
|
font-weight:normal;
|
||||||
|
}
|
||||||
.pop_contents ul ul input[type="checkbox"] {
|
.pop_contents ul ul input[type="checkbox"] {
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
margin-right: 4px;
|
margin-right: 4px;
|
||||||
|
|
@ -65,7 +126,7 @@ i.help {
|
||||||
content: attr(data-tooltip);
|
content: attr(data-tooltip);
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 24px;
|
top: 24px;
|
||||||
left: 0;
|
left: -20px;
|
||||||
white-space: pre-wrap; /* 줄바꿈 적용 */
|
white-space: pre-wrap; /* 줄바꿈 적용 */
|
||||||
width: 240px;
|
width: 240px;
|
||||||
background: #333;
|
background: #333;
|
||||||
|
|
@ -80,21 +141,175 @@ i.help {
|
||||||
.help:hover::before {
|
.help:hover::before {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 18px;
|
top: 14px;
|
||||||
left: 8px;
|
left: 0px;
|
||||||
border-width: 6px;
|
border-width: 6px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-color: #333 transparent transparent transparent;
|
border-color: #333 transparent transparent transparent;
|
||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
|
transform: rotate(180deg);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
strong em img, .groupToggle img {
|
||||||
|
transform: scale(1.3) rotate(90deg);
|
||||||
|
border-radius: 10px;
|
||||||
|
margin-right: 5px;
|
||||||
|
transition: 0.4s;
|
||||||
|
}
|
||||||
|
strong em:hover,
|
||||||
|
.groupToggle:hover {
|
||||||
|
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
strong em.close img,
|
||||||
|
.groupToggle.close img {
|
||||||
|
transform: scale(1.3) rotate(00deg);
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
let addNum = 0;
|
|
||||||
//html이 ready 된 상태에서 내용 적용.
|
//html이 ready 된 상태에서 내용 적용.
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
resize();
|
resize();
|
||||||
|
|
||||||
|
// 수정요청 항목이 하나라도 체크되어 있으면 전체선택/해제 스위치도 체크
|
||||||
|
if ($('input[name="MODIFY_ITEM_VAL"]:checked').length > 0) {
|
||||||
|
$('.switchOnOff').attr('checked', 'checked');
|
||||||
|
} else {
|
||||||
|
$('.switchOnOff').removeAttr('checked');
|
||||||
|
}
|
||||||
|
|
||||||
|
// 이벤트 함수 정의
|
||||||
|
bindEvent();
|
||||||
|
$('.groupToggle').click();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 이벤트 함수 정의
|
||||||
|
function bindEvent() {
|
||||||
|
// 그룹 전체 선택/해제
|
||||||
|
$('.switchOnOff').click(function() {
|
||||||
|
if ($(this).is(':checked')) {
|
||||||
|
/**
|
||||||
|
* input[name="MODIFY_ITEM_VAL"] : 각 수정항목 체크박스
|
||||||
|
* .groupSwitchOnOff: 대그룹 전체 선택/해제 체크박스
|
||||||
|
* .itemSwitchOnOff: 그룹 전체 선택/해제 체크박스
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
$('input[name="MODIFY_ITEM_VAL"], .groupSwitchOnOff, .itemSwitchOnOff').attr('checked', 'checked');
|
||||||
|
} else {
|
||||||
|
$('input[name="MODIFY_ITEM_VAL"], .groupSwitchOnOff, .itemSwitchOnOff').removeAttr('checked');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// 그룹 전체 선택/해제
|
||||||
|
$('.groupSwitchOnOff').click(function() {
|
||||||
|
var checked = $(this).is(':checked');
|
||||||
|
$(this).closest('li').find('input[name="MODIFY_ITEM_VAL"], .itemSwitchOnOff').attr('checked', checked);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 소그룹 전체 선택/해제
|
||||||
|
$('.itemSwitchOnOff').click(function() {
|
||||||
|
var checked = $(this).is(':checked');
|
||||||
|
$(this).closest('li').children('ul').find('input[name="MODIFY_ITEM_VAL"]').attr('checked', checked);
|
||||||
|
});
|
||||||
|
|
||||||
|
// 각 수정항목 체크박스 클릭시 소그룹 전체 체크박스 상태 동기화()
|
||||||
|
$('input[name="MODIFY_ITEM_VAL"]').click(function() {
|
||||||
|
|
||||||
|
/* ---------- itemSwitch 동기화 ---------- */
|
||||||
|
|
||||||
|
var $itemLi = $(this).closest('ul').parent('li');
|
||||||
|
|
||||||
|
var itemTotal = $itemLi.find('ul input[name="MODIFY_ITEM_VAL"]').length;
|
||||||
|
var itemChecked = $itemLi.find('ul input[name="MODIFY_ITEM_VAL"]:checked').length;
|
||||||
|
|
||||||
|
if(itemChecked === itemTotal){
|
||||||
|
$itemLi.find('.itemSwitchOnOff').attr('checked', true);
|
||||||
|
}else{
|
||||||
|
$itemLi.find('.itemSwitchOnOff').attr('checked', false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ---------- groupSwitch 동기화 ---------- */
|
||||||
|
|
||||||
|
var $groupLi = $(this).closest('.modiItem').parent('li');
|
||||||
|
|
||||||
|
var groupTotal = $groupLi.find('.modiItem input[name="MODIFY_ITEM_VAL"]').length;
|
||||||
|
var groupChecked = $groupLi.find('.modiItem input[name="MODIFY_ITEM_VAL"]:checked').length;
|
||||||
|
|
||||||
|
if(groupChecked === groupTotal){
|
||||||
|
$groupLi.find('> .groupSwitchOnOff').attr('checked', true);
|
||||||
|
}else{
|
||||||
|
$groupLi.find('> .groupSwitchOnOff').attr('checked', false);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// 수정요청 아이템 대그룹 별 아코디언
|
||||||
|
$('.groupToggle').click(function() {
|
||||||
|
var $btn = $(this);
|
||||||
|
var isClose = $(this).attr("class");
|
||||||
|
|
||||||
|
// 바로 아래 그룹 UL
|
||||||
|
var $group = $btn.siblings("ul");
|
||||||
|
|
||||||
|
// 하위 메뉴들
|
||||||
|
var $menus = $group.children("li").children("ul");
|
||||||
|
var $icons = $group.find("> li > strong > em");
|
||||||
|
|
||||||
|
if (!isClose.includes("close")) {
|
||||||
|
|
||||||
|
$menus.addClass("close");
|
||||||
|
$icons.removeClass("open").addClass("close");
|
||||||
|
|
||||||
|
$btn.removeClass("open").addClass("close");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$menus.removeClass("close");
|
||||||
|
$icons.removeClass("close").addClass("open");
|
||||||
|
|
||||||
|
$btn.removeClass("close").addClass("open");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
// 수정요청 아이템 소그룹 별 아코디언
|
||||||
|
$('.modiItem .close, .modiItem .open').click(function() {
|
||||||
|
/* 해당그룹 아코디언 처리 */
|
||||||
|
var openStatus = $(this).attr("class");
|
||||||
|
// var $ul = $(this).parent("strong").next().next("ul");
|
||||||
|
var $ul = $(this).parent("strong").next("ul");
|
||||||
|
/* groupToggle 상태 동기화 용 */
|
||||||
|
var $modiItem = $(this).closest('.modiItem');
|
||||||
|
var totalCnt = $modiItem.children('li').length;
|
||||||
|
|
||||||
|
|
||||||
|
$ul.toggleClass("close");
|
||||||
|
if (openStatus.includes("close")) {
|
||||||
|
$(this).addClass("open").removeClass("close");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
$(this).addClass("close").removeClass("open");
|
||||||
|
}
|
||||||
|
|
||||||
|
var closeCnt = $modiItem.children('li').find('> strong > em.close').length; //
|
||||||
|
var openCnt = $modiItem.children('li').find('> strong > em.open').length;
|
||||||
|
|
||||||
|
// 해당그룹이 모두 아코디언 상태가 일치하면 groupToggle 상태도 맞춰준다
|
||||||
|
if (closeCnt === totalCnt) {
|
||||||
|
$modiItem.siblings('.groupToggle').removeClass('open').addClass('close');
|
||||||
|
}
|
||||||
|
else if (openCnt === totalCnt) {
|
||||||
|
$modiItem.siblings('.groupToggle').removeClass('close').addClass('open');
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function popup_close(){
|
function popup_close(){
|
||||||
window.close();
|
window.close();
|
||||||
}
|
}
|
||||||
|
|
@ -128,8 +343,8 @@ function fn_smsOpenPop() {
|
||||||
|
|
||||||
// SMS전송결과 CALLBACK
|
// SMS전송결과 CALLBACK
|
||||||
function fn_smsGetResult(returnValue) {
|
function fn_smsGetResult(returnValue) {
|
||||||
addNum = 0;
|
// addNum = 0;
|
||||||
addNumModifyItemValue(); // 선택된 체크박스의 value값을 모두 더한다.(비트마스크 연산시 필요)
|
// addNumModifyItemValue(); // 선택된 체크박스의 value값을 모두 더한다.(비트마스크 연산시 필요)
|
||||||
var result = returnValue
|
var result = returnValue
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -151,20 +366,6 @@ function fn_smsGetResult(returnValue) {
|
||||||
|
|
||||||
//window.close();
|
//window.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 수정요청 항목(비트마스크연산) 저장을 위한 처리
|
|
||||||
* 0은 선택하지 않은것임
|
|
||||||
*/
|
|
||||||
function addNumModifyItemValue(){
|
|
||||||
var ele = $('input[name="MODIFY_ITEM_VAL"]:checked')
|
|
||||||
$.each(ele, function(index, item) {
|
|
||||||
<%-- console.log("this addNum : " + addNum + ", this val : " + parseInt($(item).val()))--%>
|
|
||||||
addNum = addNum + parseInt($(item).val())
|
|
||||||
<%-- console.log("=============================")--%>
|
|
||||||
});
|
|
||||||
$('#MODIFY_ITEM').val(addNum);
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -172,7 +373,8 @@ function addNumModifyItemValue(){
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<form name="frmModifyCall" id="frmModifyCall" method="post">
|
<form name="frmModifyCall" id="frmModifyCall" method="post">
|
||||||
<input type="hidden" id="PROC" name="PROC" value="MODIFY_POP" />
|
<input type="hidden" id="PROC" name="PROC" value="${resultList.proc}" />
|
||||||
|
<input type="hidden" id="HIST_SEQ" name="HIST_SEQ" value="${resultList.histSeq}" />
|
||||||
<input type="hidden" id="REPORT_TYPE" name="REPORT_TYPE" value="" />
|
<input type="hidden" id="REPORT_TYPE" name="REPORT_TYPE" value="" />
|
||||||
<input type="hidden" id="MODIFY_ITEM" name="MODIFY_ITEM" value="" />
|
<input type="hidden" id="MODIFY_ITEM" name="MODIFY_ITEM" value="" />
|
||||||
<input type="hidden" id="PROJECT_CODE" name="PROJECT_CODE" value="${resultList.projectCode}" />
|
<input type="hidden" id="PROJECT_CODE" name="PROJECT_CODE" value="${resultList.projectCode}" />
|
||||||
|
|
@ -181,44 +383,49 @@ function addNumModifyItemValue(){
|
||||||
<div class="btn_close_right" onclick="popup_close();return false;"><a href="#"><img src="/web/images/pop_btn_close.png" alt="창닫기" /></a></div>
|
<div class="btn_close_right" onclick="popup_close();return false;"><a href="#"><img src="/web/images/pop_btn_close.png" alt="창닫기" /></a></div>
|
||||||
<div class="pop_title" style="border-bottom:1px solid #dddddd;">수정요청사유</div>
|
<div class="pop_title" style="border-bottom:1px solid #dddddd;">수정요청사유</div>
|
||||||
|
|
||||||
|
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${resultList.proc eq 'view'}">
|
<c:when test="${resultList.proc eq 'view'}">
|
||||||
<div class="pop_contents" style="position:relative;word-wrap:break-word;min-height:147px;">${resultList.modeifyCallReason}</div>
|
<div class="pop_contents" style="position:relative;word-wrap:break-word;min-height:147px;">${resultList.modeifyCallReason}</div>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:otherwise>
|
<c:otherwise>
|
||||||
<div class="pop_contents"><textarea name="MODEIFY_CALL_REASON" id="MODEIFY_CALL_REASON" rows="5" style="width:96%;"></textarea></div>
|
<div class="pop_contents"><textarea name="MODEIFY_CALL_REASON" id="MODEIFY_CALL_REASON" rows="5" style="width:96%;">${resultList.modeifyCallReason}</textarea></div>
|
||||||
</c:otherwise>
|
</c:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="popup_area" style="background-color:#f9f9f9; border:1px solid #cfcfd1;">
|
<div class="popup_area" style="background-color:#f9f9f9; border:1px solid #cfcfd1;">
|
||||||
<div class="pop_title" style="border-bottom:1px solid #dddddd;">수정요청 대상</div>
|
<div class="pop_title" style="border-bottom:1px solid #dddddd;">수정요청 대상
|
||||||
|
<label class="checkSwitch btn_right"><i class="help" data-tooltip="수정요청 이력이 있을 경우 선택 항목들이 체크됩니다. 클릭하면 전체 해제 됩니다.">?</i> 전체선택/해제 <input type="checkbox" class="switchOnOff" /></label>
|
||||||
|
</div>
|
||||||
<div class="pop_contents">
|
<div class="pop_contents">
|
||||||
<c:set var="prevGrp" value="" />
|
<c:set var="prevGrp" value="" />
|
||||||
<ul>
|
<ul>
|
||||||
<c:forEach var="item" items="${resultList.modiItemList}" varStatus="st">
|
|
||||||
<c:if test="${prevGrp ne item.GRP_IDX}"><%-- 새로운 그룹이 시작되는 경우 --%>
|
<c:forEach items="${resultList.modiItemList}" var="parent">
|
||||||
<c:if test="${!st.first}"><%-- 첫 그룹이 아니라면 이전 그룹의 ul/li 닫기 --%>
|
<li>
|
||||||
</ul>
|
<%-- <em class="groupToggle open"><img src="/images/image_5.png" alt="${parent.parentGrpName} 전체 열기/닫기"/></em><label for="grp-${parent.parentGrpIdx }">${parent.parentGrpName}<input type="checkbox" class="groupSwitchOnOff" id="grp-${parent.parentGrpIdx }" /></label> --%>
|
||||||
</li>
|
<em class="groupToggle open"><img src="/images/image_5.png" alt="${parent.parentGrpName} 전체 열기/닫기"/></em>${parent.parentGrpName}
|
||||||
</c:if>
|
<c:if test="${not empty parent.parentDesc}">
|
||||||
<li data-grp="${item.GRP_IDX }"><%-- 그룹 제목 표시 --%>
|
<i class="help" data-tooltip="${parent.parentDesc}">?</i>
|
||||||
${item.GRP_NAME} <c:if test="${not empty item.GRP_DESC }"><i class="help" data-tooltip="${ item.GRP_DESC }">?</i></c:if>
|
</c:if>
|
||||||
<ul>
|
<ul class="modiItem">
|
||||||
</c:if>
|
<c:forEach items="${parent.groups}" var="group">
|
||||||
<li><%-- 아이템 출력 --%>
|
<li>
|
||||||
<label>
|
<%-- <strong><em class="close"><img src="/images/image_5.png" alt="${group.grpName} 열기/닫기"/></em> <label for="it-${group.grpIdx }">${group.grpName}<input type="checkbox" class="itemSwitchOnOff" id="it-${group.grpIdx }" /></label></strong> --%>
|
||||||
<input type="checkbox" name="MODIFY_ITEM_VAL" value="${item.IT_IDX}" />
|
<strong><em class="close"><img src="/images/image_5.png" alt="${group.grpName} 열기/닫기"/></em> ${group.grpName}</strong>
|
||||||
${item.ITEM_NAME}
|
<ul>
|
||||||
</label>
|
<c:forEach items="${group.items}" var="item">
|
||||||
</li>
|
<li>
|
||||||
<c:set var="prevGrp" value="${item.GRP_IDX}" /><%-- prevGrp 최신화 --%>
|
<label><input type="checkbox" name="MODIFY_ITEM_VAL" value="${item.IT_IDX}" ${item.CHECKED eq 'Y' ? 'checked="checked"' : ''} />${item.ITEM_NAME}</label>
|
||||||
<c:if test="${st.last}"><%-- 마지막 루프일 경우 태그 닫기 --%>
|
</li>
|
||||||
</ul>
|
</c:forEach>
|
||||||
</li>
|
</ul>
|
||||||
</c:if>
|
</li>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</c:forEach>
|
||||||
|
|
||||||
<%-- <li>시험 데이터 미입력/그래프 누락
|
<%-- <li>시험 데이터 미입력/그래프 누락
|
||||||
<ul>
|
<ul>
|
||||||
<li><label><input type="checkbox" name="sCls" />입도시험</label></li>
|
<li><label><input type="checkbox" name="sCls" />입도시험</label></li>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<%@ page language="java" contentType = "text/html; charset=utf-8"%>
|
<%@ page language="java" contentType="text/html; charset=utf-8"%>
|
||||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
|
||||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||||
|
|
||||||
|
|
@ -12,52 +12,64 @@
|
||||||
<script type="text/javascript" src="/web/js/tree/lib/jquery.js"></script>
|
<script type="text/javascript" src="/web/js/tree/lib/jquery.js"></script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
/* 1depth UL 전체 */
|
.pop_contents > ul{
|
||||||
.pop_contents > ul {
|
list-style:none;
|
||||||
list-style: none;
|
padding-left:0;
|
||||||
padding-left: 0;
|
margin:0;
|
||||||
margin: 0;
|
|
||||||
visibility: visible !important;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 1depth LI (제목) */
|
.pop_contents > ul > li{
|
||||||
.pop_contents > ul > li {
|
margin-bottom:15px;
|
||||||
margin-bottom: 12px;
|
padding:8px 12px;
|
||||||
font-weight: bold;
|
background:#eef5ff;
|
||||||
|
border-left:5px solid #4b87d9;
|
||||||
|
font-size:15px;
|
||||||
|
font-weight:bold;
|
||||||
|
color:#2f5fa7;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 2depth UL — 라디오 리스트 가로 정렬 */
|
.pop_contents > ul > li > ul{
|
||||||
.pop_contents ul ul {
|
list-style:none;
|
||||||
list-style: none;
|
margin:10px 0 0 15px;
|
||||||
margin: 6px 0 0 0;
|
padding:0;
|
||||||
padding-left: 0;
|
|
||||||
|
|
||||||
display: flex; /* 가로 정렬 핵심 */
|
|
||||||
flex-wrap: wrap; /* 라디오 많으면 자동 줄바꿈 */
|
|
||||||
gap: 10px; /* 라디오 간 간격 */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.pop_contents ul ul input[type="checkbox"] {
|
.pop_contents > ul > li > ul > li{
|
||||||
vertical-align: middle;
|
margin:10px 0 6px;
|
||||||
margin-right: 4px;
|
font-size:13px;
|
||||||
|
font-weight:bold;
|
||||||
|
color:#444;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 2depth 항목 */
|
.pop_contents > ul > li > ul > li > ul{
|
||||||
.pop_contents ul ul li {
|
list-style:none;
|
||||||
font-weight: normal;
|
display:flex;
|
||||||
margin: 0;
|
flex-wrap:wrap;
|
||||||
padding: 0;
|
gap:8px;
|
||||||
|
padding-left:0;
|
||||||
|
margin-top:6px;
|
||||||
}
|
}
|
||||||
i.help {
|
|
||||||
position: relative;
|
.pop_contents > ul > li > ul > li > ul > li{
|
||||||
margin-left: 5px;
|
padding:4px 10px;
|
||||||
border: 2px solid #89c2ff;
|
background:#f7f7f7;
|
||||||
padding: 0px 3px;
|
border:1px solid #ddd;
|
||||||
border-radius: 10px;
|
border-radius:3px;
|
||||||
color: #89c2ff;
|
font-size:12px;
|
||||||
background: #fff;
|
font-weight:normal;
|
||||||
font-size: 11px;
|
color:#333;
|
||||||
font-weight: 800;
|
}
|
||||||
|
|
||||||
|
i.help{
|
||||||
|
position:relative;
|
||||||
|
margin-left:5px;
|
||||||
|
border:2px solid #89c2ff;
|
||||||
|
padding:0 3px;
|
||||||
|
border-radius:10px;
|
||||||
|
color:#89c2ff;
|
||||||
|
background:#fff;
|
||||||
|
font-size:11px;
|
||||||
|
font-weight:800;
|
||||||
cursor:pointer;
|
cursor:pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -65,7 +77,7 @@ i.help {
|
||||||
content: attr(data-tooltip);
|
content: attr(data-tooltip);
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 24px;
|
top: 24px;
|
||||||
left: 0;
|
left: -20px;
|
||||||
white-space: pre-wrap; /* 줄바꿈 적용 */
|
white-space: pre-wrap; /* 줄바꿈 적용 */
|
||||||
width: 240px;
|
width: 240px;
|
||||||
background: #333;
|
background: #333;
|
||||||
|
|
@ -80,74 +92,77 @@ i.help {
|
||||||
.help:hover::before {
|
.help:hover::before {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 18px;
|
top: 14px;
|
||||||
left: 8px;
|
left: 0px;
|
||||||
border-width: 6px;
|
border-width: 6px;
|
||||||
border-style: solid;
|
border-style: solid;
|
||||||
border-color: #333 transparent transparent transparent;
|
border-color: #333 transparent transparent transparent;
|
||||||
z-index: 9999;
|
z-index: 9999;
|
||||||
|
transform: rotate(180deg);
|
||||||
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<script type="text/javascript">
|
|
||||||
|
|
||||||
//html이 ready 된 상태에서 내용 적용.
|
<script type="text/javascript">
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
resize();
|
resize();
|
||||||
});
|
});
|
||||||
|
|
||||||
function popup_close(){
|
function popup_close(){
|
||||||
window.close();
|
window.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
function resize(){
|
function resize(){
|
||||||
window.resizeTo('${resultList.widthSize}','${resultList.heightSize}');
|
window.resizeTo('${resultList.widthSize}','${resultList.heightSize}');
|
||||||
|
}
|
||||||
|
|
||||||
|
function fn_submit(){
|
||||||
|
fn_smsOpenPop();
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<form name="frmModifyCall" id="frmModifyCall" method="post">
|
<form id="frmModifyCall" name="frmModifyCall">
|
||||||
<div id="pop_wrap">
|
<div id="pop_wrap">
|
||||||
<div class="popup_area" style="background-color:#f9f9f9; border:1px solid #cfcfd1;">
|
<div class="popup_area" style="background:#f9f9f9;border:1px solid #cfcfd1;">
|
||||||
<div class="btn_close_right" onclick="popup_close();return false;"><a href="#"><img src="/web/images/pop_btn_close.png" alt="창닫기" /></a></div>
|
<div class="btn_close_right" onclick="popup_close();return false;"><a href="#"><img src="/web/images/pop_btn_close.png" alt="창닫기"/></a></div>
|
||||||
<div class="pop_title" style="border-bottom:1px solid #dddddd;">수정요청사유</div>
|
<div class="pop_title" style="border-bottom:1px solid #ddd;">수정요청사유</div>
|
||||||
<div class="pop_contents" style="position:relative;word-wrap:break-word;min-height:200px;">${result.smsMsg}</div>
|
<div class="pop_contents" style="position:relative;word-wrap:break-word;min-height:120px;">${result.modeifyCallReason}</div>
|
||||||
</div>
|
</div>
|
||||||
<c:choose>
|
|
||||||
<c:when test="${empty modiItem }">
|
<c:if test="${not empty modiItem}">
|
||||||
</c:when>
|
<div class="popup_area" style="margin-top:10px;background:#f9f9f9;border:1px solid #cfcfd1;">
|
||||||
<c:otherwise>
|
<div class="pop_title" style="border-bottom:1px solid #ddd;">수정요청 대상</div>
|
||||||
<div class="popup_area" style="background-color:#f9f9f9; border:1px solid #cfcfd1;">
|
<div class="pop_contents">
|
||||||
<div class="pop_title" style="border-bottom:1px solid #dddddd;">수정요청 대상</div>
|
<ul>
|
||||||
<div class="pop_contents">
|
<c:forEach items="${modiItem}" var="parent">
|
||||||
<c:set var="prevGrp" value="" />
|
<li>
|
||||||
<ul>
|
${parent.parentGrpName}
|
||||||
<c:forEach var="item" items="${modiItem}" varStatus="st">
|
<c:if test="${not empty parent.parentDesc}">
|
||||||
<c:if test="${prevGrp ne item.GRP_IDX}"><%-- 새로운 그룹이 시작되는 경우 --%>
|
<i class="help"
|
||||||
<c:if test="${!st.first}"><%-- 첫 그룹이 아니라면 이전 그룹의 ul/li 닫기 --%>
|
data-tooltip="${parent.parentDesc}">?</i>
|
||||||
</ul>
|
</c:if>
|
||||||
</li>
|
<ul>
|
||||||
</c:if>
|
<c:forEach items="${parent.groups}" var="group">
|
||||||
<li data-grp="${item.GRP_IDX }"><%-- 그룹 제목 표시 --%>
|
<li>
|
||||||
${item.GRP_NAME} <c:if test="${not empty item.GRP_DESC }"><i class="help" data-tooltip="${ item.GRP_DESC }">?</i></c:if>
|
▸ ${group.grpName}
|
||||||
<ul>
|
<ul>
|
||||||
</c:if>
|
<c:forEach items="${group.items}" var="item">
|
||||||
<li>${item.ITEM_NAME}<c:if test="${!(st.last or item.GRP_IDX ne modiItem[st.index + 1].GRP_IDX)}">,</c:if><%-- 아이템 출력 --%>
|
<li>${item.ITEM_NAME}</li>
|
||||||
</li>
|
</c:forEach>
|
||||||
<c:set var="prevGrp" value="${item.GRP_IDX}" /><%-- prevGrp 최신화 --%>
|
</ul>
|
||||||
<c:if test="${st.last}"><%-- 마지막 루프일 경우 태그 닫기 --%>
|
</li>
|
||||||
</ul>
|
</c:forEach>
|
||||||
</li>
|
</ul>
|
||||||
</c:if>
|
</li>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</c:otherwise>
|
</c:if>
|
||||||
</c:choose>
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
@ -323,12 +323,19 @@ Last ========
|
||||||
background-color: #a5bd77;
|
background-color: #a5bd77;
|
||||||
}
|
}
|
||||||
/* 수정요청 버튼 */
|
/* 수정요청 버튼 */
|
||||||
.k-button-modifycall,
|
.k-button-delete,
|
||||||
.k-button-modifycall:hover {
|
.k-button-delete:hover {
|
||||||
border-color: #c7864b;
|
border-color: #c7864b;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background-color: #e69850;
|
background-color: #e69850;
|
||||||
}
|
}
|
||||||
|
/* 수정요청 버튼 */
|
||||||
|
.k-button-modifycall,
|
||||||
|
.k-button-modifycall:hover {
|
||||||
|
border-color: #c74b4b;
|
||||||
|
color: #fff;
|
||||||
|
background-color: #e65050;
|
||||||
|
}
|
||||||
|
|
||||||
.k-button-lg {
|
.k-button-lg {
|
||||||
padding: 4px 16px;
|
padding: 4px 16px;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
/* Reset */
|
/* Reset */
|
||||||
html { background:#fff; }
|
html { background:#fff; }
|
||||||
html,body{ width:100%; background:#fff; }
|
html,body{ width:100%; background:#fff; }
|
||||||
body { font-size:13px; line-height:20px; font-family:"Nanum Gothic",'맑은 고딕',Dotum,'Tahoma',Gulim,Helvetica,sans-serif; color:#333; font-family:NanumGothic; background:#fff; }
|
body { font-size:13px; line-height:20px; font-family:"Nanum Gothic",'<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>',Dotum,'Tahoma',Gulim,Helvetica,sans-serif; color:#333; font-family:NanumGothic; background:#fff; }
|
||||||
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h3,h5,h6,pre,code,form,fieldset,legend,input,textarea,button,p,blockquote,th,td { margin:0; padding:0; -webkit-text-size-adjust:none; }
|
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h3,h5,h6,pre,code,form,fieldset,legend,input,textarea,button,p,blockquote,th,td { margin:0; padding:0; -webkit-text-size-adjust:none; }
|
||||||
img,fieldset{border:0; vertical-align:middle;}
|
img,fieldset{border:0; vertical-align:middle;}
|
||||||
frameborder{border:0;}
|
frameborder{border:0;}
|
||||||
|
|
@ -24,7 +24,7 @@ a:hover { color:#31b0e5; text-decoration:none; cursor:pointer; }
|
||||||
a:active { color:#31b0e5; text-decoration:none; cursor:pointer; }
|
a:active { color:#31b0e5; text-decoration:none; cursor:pointer; }
|
||||||
.clear {clear:both;}
|
.clear {clear:both;}
|
||||||
|
|
||||||
/*나눔고딕폰트정의*/
|
/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'NanumGothicB';
|
font-family: 'NanumGothicB';
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
|
|
@ -78,7 +78,7 @@ a:active { color:#31b0e5; text-decoration:none; cursor:pointer; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*최종검수*/
|
/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD>*/
|
||||||
#pop_wrap .popup_area .pop_title_checklist { height:15px; background:url('../images/bullet03.png') 10px 10px no-repeat; padding:7px 0 7px 27px; font-size:15pt; }
|
#pop_wrap .popup_area .pop_title_checklist { height:15px; background:url('../images/bullet03.png') 10px 10px no-repeat; padding:7px 0 7px 27px; font-size:15pt; }
|
||||||
#pop_wrap .popup_area .top_table_div { padding:7px 7px 0px 18px; }
|
#pop_wrap .popup_area .top_table_div { padding:7px 7px 0px 18px; }
|
||||||
#pop_wrap .popup_area .top_table { width:100%; font-size:11pt; margin:0px 0px 10px 0px; }
|
#pop_wrap .popup_area .top_table { width:100%; font-size:11pt; margin:0px 0px 10px 0px; }
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue