인스던트 신청 기능 확장
This commit is contained in:
parent
56bf5b942b
commit
5b45e527c8
@ -12,11 +12,7 @@
|
||||
<attribute name="gradle_used_by_scope" value="main,test"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/openJDK16">
|
||||
<attributes>
|
||||
<attribute name="module" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-16/"/>
|
||||
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/>
|
||||
<classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer">
|
||||
<attributes>
|
||||
|
||||
@ -146,7 +146,8 @@ public class RestApiCallUtil
|
||||
|
||||
String strFullReturnData = returnObj.toString();
|
||||
|
||||
// log.info("전체 리턴값 => [{}]", returnObj.toString());
|
||||
// 개발완료 후 주석처리
|
||||
log.info("전체 리턴값 => [{}]", returnObj.toString());
|
||||
|
||||
// Map 변환처리
|
||||
Map<String, Object> returnMap = null;
|
||||
|
||||
@ -861,6 +861,254 @@ public class PortletManageController {
|
||||
return resBody;
|
||||
}
|
||||
|
||||
/**
|
||||
* SR 처리준수율 통계 포틀릿
|
||||
* @author urp 인프라본부 나혁제
|
||||
* 작성일 : 2025.12.10
|
||||
*/
|
||||
@RequestMapping(value = "/potl/getSrProPromiseRate.do")
|
||||
public String getSrProPromiseRate( HttpServletRequest request
|
||||
, @RequestParam Map<String, Object> commandMap
|
||||
, ModelMap model) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /potl/getSrProPromiseRate.do <<<<<<<<<<<<<<<");
|
||||
|
||||
PrsnlPortletManageVO prsnlPortletManageVO = new PrsnlPortletManageVO();
|
||||
|
||||
prsnlPortletManageVO.setPrsnlId((String) commandMap.get("prsnlId"));
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
Map<String, Object> bodyMap2 = ConvertUtils.convertToMapAll(prsnlPortletManageVO);
|
||||
// Body Setting End ---------------------------------
|
||||
// RestApi Call Start ---------------------------------
|
||||
Map<String, Object> returnMap2 = restApiCallUtil.RestApiCall(bodyMap2, "/potl/selectPotlSize.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
// Return Data Setting Start --------------------------
|
||||
Map<String, Object> resultList2 = (Map<String, Object>)returnMap2.get("resultList");
|
||||
// Return Data Setting End --------------------------
|
||||
|
||||
int potlWidth= (int) resultList2.get("portletWidth");
|
||||
int potlHeight= (int) resultList2.get("portletHeight");
|
||||
|
||||
String potlId=(String) commandMap.get("prsnlId");
|
||||
|
||||
model.addAttribute("potlId", potlId);
|
||||
model.addAttribute("potlWidth" , potlWidth);
|
||||
model.addAttribute("potlHeight", potlHeight);
|
||||
|
||||
model.addAttribute("dtCurMonth" , CommonUtil.getKST("yyyy-MM")); // 조회일시
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /potl/getSrProPromiseRate.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return "/itms/pot/MySrProPromiseRate";
|
||||
}
|
||||
|
||||
/**
|
||||
* 월간 SR 처리준수율 현황 통계 조회
|
||||
* @author urp 인프라본부 나혁제
|
||||
* 작성일 : 2025.12.09
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping(value="/potl/getSrProPromiseRateData.do")
|
||||
public LinkedHashMap<String, Object> getSrProPromiseRateData( @RequestBody LinkedHashMap<String, Object> requestMap
|
||||
, HttpServletRequest request
|
||||
, HttpServletResponse response ) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /potl/getSrProPromiseRateData.do <<<<<<<<<<<<<<<");
|
||||
|
||||
// api in/out map 정의
|
||||
Map<String, Object> bodyMap = new LinkedHashMap();
|
||||
Map<String, Object> returnMap = new LinkedHashMap();
|
||||
|
||||
// return 처리
|
||||
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>(); // Response Map
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
bodyMap.put("strSearchMon" , (String)requestMap.get("strSearchMon"));
|
||||
// Body Setting End ---------------------------------
|
||||
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/srm/getSrProPromiseRate.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
// Return Data Setting Start --------------------------
|
||||
List<Map<String, Object>> resultList = (List<Map<String, Object>>)returnMap.get("resultList");
|
||||
// Return Data Setting End --------------------------
|
||||
|
||||
resBody.put("resultList" , resultList );
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /potl/getSrProPromiseRateData.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return resBody;
|
||||
}
|
||||
|
||||
/**
|
||||
* SR 만족율 통계 포틀릿
|
||||
* @author urp 인프라본부 나혁제
|
||||
* 작성일 : 2025.12.10
|
||||
*/
|
||||
@RequestMapping(value = "/potl/getSrStsfdgRatePage.do")
|
||||
public String getSrStsfdgRatePage( HttpServletRequest request
|
||||
, @RequestParam Map<String, Object> commandMap
|
||||
, ModelMap model) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /potl/getSrStsfdgRatePage.do <<<<<<<<<<<<<<<");
|
||||
|
||||
PrsnlPortletManageVO prsnlPortletManageVO = new PrsnlPortletManageVO();
|
||||
|
||||
prsnlPortletManageVO.setPrsnlId((String) commandMap.get("prsnlId"));
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
Map<String, Object> bodyMap2 = ConvertUtils.convertToMapAll(prsnlPortletManageVO);
|
||||
// Body Setting End ---------------------------------
|
||||
// RestApi Call Start ---------------------------------
|
||||
Map<String, Object> returnMap2 = restApiCallUtil.RestApiCall(bodyMap2, "/potl/selectPotlSize.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
// Return Data Setting Start --------------------------
|
||||
Map<String, Object> resultList2 = (Map<String, Object>)returnMap2.get("resultList");
|
||||
// Return Data Setting End --------------------------
|
||||
|
||||
int potlWidth= (int) resultList2.get("portletWidth");
|
||||
int potlHeight= (int) resultList2.get("portletHeight");
|
||||
|
||||
String potlId=(String) commandMap.get("prsnlId");
|
||||
|
||||
model.addAttribute("potlId", potlId);
|
||||
model.addAttribute("potlWidth" , potlWidth);
|
||||
model.addAttribute("potlHeight", potlHeight);
|
||||
|
||||
model.addAttribute("dtCurMonth" , CommonUtil.getKST("yyyy-MM")); // 조회일시
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /potl/getSrStsfdgRatePage.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return "/itms/pot/MySrStsfdgRate";
|
||||
}
|
||||
|
||||
/**
|
||||
* SR 만족율 통계 통계 조회
|
||||
* @author urp 인프라본부 나혁제
|
||||
* 작성일 : 2025.12.09
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping(value="/potl/getSrStsfdgRate.do")
|
||||
public LinkedHashMap<String, Object> getSrStsfdgRate( @RequestBody LinkedHashMap<String, Object> requestMap
|
||||
, HttpServletRequest request
|
||||
, HttpServletResponse response ) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /potl/getSrStsfdgRate.do <<<<<<<<<<<<<<<");
|
||||
|
||||
// api in/out map 정의
|
||||
Map<String, Object> bodyMap = new LinkedHashMap();
|
||||
Map<String, Object> returnMap = new LinkedHashMap();
|
||||
|
||||
// return 처리
|
||||
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>(); // Response Map
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
bodyMap.put("strSearchMon" , (String)requestMap.get("strSearchMon"));
|
||||
// Body Setting End ---------------------------------
|
||||
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/srm/getSrStsfdgRate.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
// Return Data Setting Start --------------------------
|
||||
List<Map<String, Object>> resultList = (List<Map<String, Object>>)returnMap.get("resultList");
|
||||
// Return Data Setting End --------------------------
|
||||
|
||||
resBody.put("resultList" , resultList );
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /potl/getSrStsfdgRate.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return resBody;
|
||||
}
|
||||
|
||||
/**
|
||||
* 보고서 만족율 통계 포틀릿
|
||||
* @author urp 인프라본부 나혁제
|
||||
* 작성일 : 2025.12.10
|
||||
*/
|
||||
@RequestMapping(value = "/potl/getReportStsfdgRatePage.do")
|
||||
public String getReportStsfdgRatePage( HttpServletRequest request
|
||||
, @RequestParam Map<String, Object> commandMap
|
||||
, ModelMap model) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /potl/getReportStsfdgRatePage.do <<<<<<<<<<<<<<<");
|
||||
|
||||
PrsnlPortletManageVO prsnlPortletManageVO = new PrsnlPortletManageVO();
|
||||
|
||||
prsnlPortletManageVO.setPrsnlId((String) commandMap.get("prsnlId"));
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
Map<String, Object> bodyMap2 = ConvertUtils.convertToMapAll(prsnlPortletManageVO);
|
||||
// Body Setting End ---------------------------------
|
||||
// RestApi Call Start ---------------------------------
|
||||
Map<String, Object> returnMap2 = restApiCallUtil.RestApiCall(bodyMap2, "/potl/selectPotlSize.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
// Return Data Setting Start --------------------------
|
||||
Map<String, Object> resultList2 = (Map<String, Object>)returnMap2.get("resultList");
|
||||
// Return Data Setting End --------------------------
|
||||
|
||||
int potlWidth= (int) resultList2.get("portletWidth");
|
||||
int potlHeight= (int) resultList2.get("portletHeight");
|
||||
|
||||
String potlId=(String) commandMap.get("prsnlId");
|
||||
|
||||
model.addAttribute("potlId", potlId);
|
||||
model.addAttribute("potlWidth" , potlWidth);
|
||||
model.addAttribute("potlHeight", potlHeight);
|
||||
|
||||
model.addAttribute("dtCurMonth" , CommonUtil.getKST("yyyy-MM")); // 조회일시
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /potl/getReportStsfdgRatePage.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return "/itms/pot/MyReportStsfdgRate";
|
||||
}
|
||||
|
||||
/**
|
||||
* SR 만족율 통계 통계 조회
|
||||
* @author urp 인프라본부 나혁제
|
||||
* 작성일 : 2025.12.09
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping(value="/potl/getReportStsfdgRate.do")
|
||||
public LinkedHashMap<String, Object> getReportStsfdgRate( @RequestBody LinkedHashMap<String, Object> requestMap
|
||||
, HttpServletRequest request
|
||||
, HttpServletResponse response ) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /potl/getReportStsfdgRate.do <<<<<<<<<<<<<<<");
|
||||
|
||||
// api in/out map 정의
|
||||
Map<String, Object> bodyMap = new LinkedHashMap();
|
||||
Map<String, Object> returnMap = new LinkedHashMap();
|
||||
|
||||
// return 처리
|
||||
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>(); // Response Map
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
bodyMap.put("strSearchMon" , (String)requestMap.get("strSearchMon"));
|
||||
// Body Setting End ---------------------------------
|
||||
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/srm/getReportStsfdgRate.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
// Return Data Setting Start --------------------------
|
||||
List<Map<String, Object>> resultList = (List<Map<String, Object>>)returnMap.get("resultList");
|
||||
// Return Data Setting End --------------------------
|
||||
|
||||
resBody.put("resultList" , resultList );
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /potl/getReportStsfdgRate.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return resBody;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@ -312,17 +312,63 @@ public class SvcDeskController
|
||||
|
||||
model.addAttribute("serviceList", resultList); // 서비스 정보
|
||||
|
||||
String dtReqDatetime = CommonUtil.getDatewithSpan(CommonUtil.getKST("yyyyMMddHHmm"), 7, "D", "yyyy-MM-dd HH:mm");
|
||||
String strReqIncidentNum = CommonUtil.nvl(request.getParameter("vcReqIncidentNum" ));
|
||||
|
||||
// 출력데이터
|
||||
String dtReqDatetime = "";
|
||||
|
||||
// 2025.12.17 나혁제 신청화면에서 오는 경우
|
||||
if(!strReqIncidentNum.equals(""))
|
||||
{
|
||||
// Body Setting Start ---------------------------------
|
||||
bodyMap.put("vcReqIncidentNum", strReqIncidentNum);
|
||||
// Body Setting End ---------------------------------
|
||||
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/srm/getReqIncidentBySeq.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
// 결과값 추출 Start ---------------------------------
|
||||
Map<String, Object> resultReqIncident = (Map<String, Object>)returnMap.get("resultReqIncident");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
// 조치예정일일
|
||||
dtReqDatetime = CommonUtil.nvl(resultReqIncident.get("dtCompleteReqDateTime"));
|
||||
// 조치예정일일
|
||||
String strRegAtchFileId = CommonUtil.nvl(resultReqIncident.get("atchFileId"));
|
||||
// 서비스코드
|
||||
String strInServiceCode = CommonUtil.nvl(resultReqIncident.get("inServiceCode"));
|
||||
|
||||
// 인스던트 본문 복호화처리
|
||||
String strIncidentBody = (String)resultReqIncident.get("txIncidentBody");
|
||||
String strIncidentBodyDec = CommonUtil.base64decode(strIncidentBody);
|
||||
|
||||
model.addAttribute("reqTxIncidentBody" , strIncidentBodyDec ); // 본문내용
|
||||
model.addAttribute("reqAtchFileId" , strRegAtchFileId ); // 신청첨부파일
|
||||
model.addAttribute("reqInServiceCode" , strInServiceCode ); // 서비스코드
|
||||
model.addAttribute("reqVcIncidentTitle" , CommonUtil.nvl(resultReqIncident.get("vcIncidentTitle")) ); // 제목
|
||||
|
||||
model.addAttribute("reqInChargeUser", CommonUtil.nvl(resultReqIncident.get("inChargeUser")) ); // 조치예정자 ID
|
||||
model.addAttribute("reqVcChargeUser", CommonUtil.nvl(resultReqIncident.get("vcChargeUser")) ); // 조치예정자 명
|
||||
|
||||
model.addAttribute("reqRptRejTxComment", CommonUtil.nvl(request.getParameter("reqRptRejTxComment")) ); // 접수의견
|
||||
}
|
||||
else
|
||||
{
|
||||
dtReqDatetime = CommonUtil.getDatewithSpan(CommonUtil.getKST("yyyyMMddHHmm"), 7, "D", "yyyy-MM-dd HH:mm");
|
||||
}
|
||||
|
||||
log.info(" dtReqDatetime [{}]", dtReqDatetime);
|
||||
|
||||
model.addAttribute("dtReceiptDatetime" , CommonUtil.getKST("yyyy-MM-dd HH:mm")); // 접수일시
|
||||
model.addAttribute("dtReqDatetime" , dtReqDatetime); // 완료요청일시는 7일 이후
|
||||
model.addAttribute("vcReqIncidentNum" , strReqIncidentNum); // 신청번호
|
||||
|
||||
|
||||
TokenInfo tokenInfo = CommonUtil.getTokenInfo();
|
||||
|
||||
model.addAttribute("inRegUser", tokenInfo.getUniqId()); // 접수자ID
|
||||
model.addAttribute("vcRegUser", tokenInfo.getUserName()); // 접수일시
|
||||
model.addAttribute("vcRegUser", tokenInfo.getUserName()); // 접수자명
|
||||
|
||||
// 2025.12.03 나혁제 파일체크 로직 추가
|
||||
// 파일업로드 제한
|
||||
@ -385,7 +431,7 @@ public class SvcDeskController
|
||||
log.info("privType [{}]", privType);
|
||||
log.info("transfer_avail [{}]", transfer_avail);
|
||||
log.info("editDifficulty [{}]", editDifficulty);
|
||||
log.info("approvalReq [{}]", approvalReq);
|
||||
log.info("approvalReq [{}]", approvalReq);
|
||||
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
@ -473,6 +519,8 @@ public class SvcDeskController
|
||||
|
||||
List<Map<String, Object>> approvalsList = new ArrayList();
|
||||
|
||||
log.info("reqRptRejTxComment [{}]", incidentVo.getReqRptRejTxComment());
|
||||
|
||||
if(srApprovalsId != null && srApprovalsId.length > 0)
|
||||
{
|
||||
int iSeq=0;
|
||||
@ -499,7 +547,6 @@ public class SvcDeskController
|
||||
|
||||
incidentVo.setTxIncidentBody(strBodyEnc);
|
||||
|
||||
|
||||
// 첨부파일 Setting Start ********************** /
|
||||
// 첨부파일 관련 첨부파일ID 생성
|
||||
List<FileVO> _result = null;
|
||||
|
||||
@ -0,0 +1,599 @@
|
||||
package com.urpsys.itmsfront.srm.controller;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.egovframe.rte.fdl.property.EgovPropertyService;
|
||||
import org.egovframe.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.ui.ModelMap;
|
||||
import org.springframework.web.bind.annotation.ModelAttribute;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
|
||||
import com.urpsys.basefront.common.util.CommonUtil;
|
||||
import com.urpsys.basefront.common.util.ConvertUtils;
|
||||
import com.urpsys.basefront.common.util.RestApiCallUtil;
|
||||
import com.urpsys.basefront.common.egov.util.EgovFileMngUtil;
|
||||
import com.urpsys.basefront.common.service.CommonService;
|
||||
import com.urpsys.basefront.domain.FileVO;
|
||||
import com.urpsys.basefront.domain.TokenInfo;
|
||||
import com.urpsys.basefront.config.EgovMessageSource;
|
||||
import com.urpsys.itmsfront.srm.domain.IncidentReqVo;
|
||||
import com.urpsys.itmsfront.srm.domain.IncidentVo;
|
||||
import com.urpsys.itmsfront.srm.domain.SvcDeskListVo;
|
||||
import com.urpsys.itmsfront.srm.domain.SvcDeskReqListVo;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* 서비스 데스크 신청 관련 컨트롤러 클래스 (게시판생성관리-enterprise)
|
||||
* @author URP 인프라본부 나혁제
|
||||
* @since 2025.12.15
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* << 개정이력(Modification Information) >>
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2025.12.15 나혁제 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
*/
|
||||
|
||||
@Slf4j
|
||||
@Controller
|
||||
public class SvcDeskReqController
|
||||
{
|
||||
/** EgovMessageSource */
|
||||
@Resource(name="egovMessageSource")
|
||||
EgovMessageSource egovMessageSource;
|
||||
|
||||
/* 파일처리 */
|
||||
@Resource(name="EgovFileMngUtil")
|
||||
private EgovFileMngUtil fileUtil;
|
||||
|
||||
/** EgovPropertyService */
|
||||
@Resource(name = "propertiesService")
|
||||
protected EgovPropertyService propertyService;
|
||||
|
||||
@Resource(name="RestApiCallUtil")
|
||||
private RestApiCallUtil restApiCallUtil;
|
||||
|
||||
@Autowired
|
||||
CommonService commonService;
|
||||
|
||||
/**
|
||||
* 서비스 데스크 인스던트 목록을 조회한다.
|
||||
* @author urp 인프라본부 나혁제
|
||||
* 작성일 : 2025.02.08
|
||||
*/
|
||||
@RequestMapping("/srm/searchReqIncident.do")
|
||||
public String searchReqIncident( @ModelAttribute("searchVO") SvcDeskReqListVo searchVO
|
||||
, HttpServletRequest request
|
||||
, HttpServletResponse response
|
||||
, ModelMap model ) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /srm/searchReqIncident.do <<<<<<<<<<<<<<<");
|
||||
|
||||
// api in/out map 정의
|
||||
Map<String, Object> bodyMap = new LinkedHashMap();
|
||||
Map<String, Object> returnMap = new LinkedHashMap();
|
||||
|
||||
/** paging */
|
||||
PaginationInfo paginationInfo = new PaginationInfo();
|
||||
paginationInfo.setCurrentPageNo (searchVO.getPageIndex());
|
||||
paginationInfo.setRecordCountPerPage(searchVO.getPageUnit());
|
||||
paginationInfo.setPageSize (searchVO.getPageSize());
|
||||
|
||||
searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
|
||||
searchVO.setLastIndex(paginationInfo.getLastRecordIndex());
|
||||
searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
bodyMap = ConvertUtils.convertToMapAll(searchVO);
|
||||
// Body Setting End ---------------------------------
|
||||
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/srm/searchReqIncident.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
// Return Data Setting Start --------------------------
|
||||
List<Map<String, Object>> resultList = (List<Map<String, Object>>)returnMap.get("resultList");
|
||||
int totCnt = (int)returnMap.get("totCnt");
|
||||
// Return Data Setting End --------------------------
|
||||
|
||||
paginationInfo.setTotalRecordCount(totCnt);
|
||||
|
||||
model.addAttribute("resultList" , resultList);
|
||||
model.addAttribute("paginationInfo" , paginationInfo);
|
||||
model.addAttribute("message" , egovMessageSource.getMessage("success.common.select"));
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /srm/searchReqIncident.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return "uritms-tiles2/srm/SvcDeskReqList";
|
||||
}
|
||||
|
||||
/**
|
||||
* 서비스 데스크 인스던트 신청 상세조회 화면으로 이동한다.
|
||||
* @author URP 인프라본부 나혁제
|
||||
* 작성일 : 2025.12.16
|
||||
*/
|
||||
@RequestMapping(value = "/srm/getReqIncidentBySeq.do")
|
||||
public String getReqIncidentBySeq( @ModelAttribute("SvcDeskListVo") SvcDeskReqListVo svcDeskReqListVo
|
||||
, @ModelAttribute("searchVO") SvcDeskReqListVo searchVO
|
||||
, HttpServletRequest request
|
||||
, HttpServletResponse response
|
||||
, ModelMap model) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /srm/getReqIncidentBySeq.do <<<<<<<<<<<<<<<");
|
||||
|
||||
// api in/out map 정의
|
||||
Map<String, Object> bodyMap = new LinkedHashMap();
|
||||
Map<String, Object> returnMap = new LinkedHashMap();
|
||||
|
||||
String vcReqIncidentNum = CommonUtil.nvl(svcDeskReqListVo.getVcReqIncidentNum());
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
bodyMap.put("vcReqIncidentNum", vcReqIncidentNum);
|
||||
// Body Setting End ---------------------------------
|
||||
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/srm/getReqIncidentBySeq.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
// 결과값 추출 Start ---------------------------------
|
||||
Map<String, Object> resultReqIncident = (Map<String, Object>)returnMap.get("resultReqIncident");
|
||||
|
||||
String strChangeYn = (String)returnMap.get("strChangeYn");
|
||||
String strCompletedYn = (String)returnMap.get("strCompletedYn");
|
||||
|
||||
log.info("strChangeYn [{}]", strChangeYn );
|
||||
log.info("strCompletedYn [{}]", strCompletedYn );
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
// 인스던트 본문 복호화처리
|
||||
String strIncidentBody = (String)resultReqIncident.get("txIncidentBody");
|
||||
String strIncidentBodyDec = CommonUtil.base64decode(strIncidentBody);
|
||||
|
||||
resultReqIncident.put("txIncidentBody", strIncidentBodyDec);
|
||||
|
||||
model.addAttribute("strChangeYn" , strChangeYn ); // 수정/삭제 가능여부
|
||||
model.addAttribute("strCompletedYn" , strCompletedYn ); // 처리완료
|
||||
|
||||
model.addAttribute("resultReqIncident" , resultReqIncident ); // Map
|
||||
|
||||
// 접수정보 추출
|
||||
String strIncidentSeq = CommonUtil.nvl(resultReqIncident.get("inIncidentSeq"));
|
||||
|
||||
if(!strIncidentSeq.equals(""))
|
||||
{
|
||||
int inIncidentSeq = CommonUtil.stoi(strIncidentSeq);
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
bodyMap.put("inIncidentSeq", inIncidentSeq);
|
||||
// Body Setting End ---------------------------------
|
||||
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/srm/getIncidentBySeq.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
// 결과값 추출 Start ---------------------------------
|
||||
Map<String, Object> resultIncident = (Map<String, Object>)returnMap.get("resultIncident");
|
||||
|
||||
model.addAttribute("resultIncident" , resultIncident ); // Map
|
||||
|
||||
model.addAttribute("bRptYn", "Y");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
TokenInfo tokenInfo = CommonUtil.getTokenInfo();
|
||||
|
||||
model.addAttribute("inReqUser", tokenInfo.getUniqId()); // 접수자ID
|
||||
model.addAttribute("vcReqUser", tokenInfo.getUserName()); // 접수일시
|
||||
|
||||
// 조치예정자만 접수권한 부여
|
||||
if(tokenInfo.getUniqId().equals(resultReqIncident.get("inChargeUser")))
|
||||
{
|
||||
model.addAttribute("bRptAuth", "Y");
|
||||
}
|
||||
}
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /srm/getReqIncidentBySeq.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return "uritms-tiles2/srm/SvcDeskReqDetail";
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 서비스 데스크 인스던트 신청 등록 화면으로 이동한다.
|
||||
* @author URP 인프라본부 나혁제
|
||||
* 작성일 : 2025.12.15
|
||||
*/
|
||||
@PostMapping(value = "/srm/insertViewReqIncident.do")
|
||||
public String insertViewIncident( @ModelAttribute("searchVO") SvcDeskReqListVo searchVO
|
||||
, HttpServletRequest request
|
||||
, HttpServletResponse response
|
||||
, ModelMap model) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /srm/insertViewReqIncident.do <<<<<<<<<<<<<<<");
|
||||
|
||||
// api in/out map 정의
|
||||
Map<String, Object> bodyMap = new LinkedHashMap();
|
||||
Map<String, Object> returnMap = new LinkedHashMap();
|
||||
|
||||
// 서비스 정보 추출
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/srm/getServiceCombo.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
List<Map<String, Object>> resultList = (List<Map<String, Object>>)returnMap.get("resultList");
|
||||
|
||||
model.addAttribute("serviceList", resultList); // 서비스 정보
|
||||
|
||||
String dtCompleteReqDateTime = CommonUtil.getDatewithSpan(CommonUtil.getKST("yyyyMMddHHmm"), 7, "D", "yyyy-MM-dd HH:mm");
|
||||
|
||||
log.info(" dtCompleteReqDateTime [{}]", dtCompleteReqDateTime);
|
||||
|
||||
model.addAttribute("dtReqDateTime" , CommonUtil.getKST("yyyy-MM-dd HH:mm")); // 신청일시
|
||||
model.addAttribute("dtCompleteReqDateTime" , dtCompleteReqDateTime); // 완료요청일시는 7일 이후
|
||||
|
||||
TokenInfo tokenInfo = CommonUtil.getTokenInfo();
|
||||
|
||||
model.addAttribute("inReqUser", tokenInfo.getUniqId()); // 접수자ID
|
||||
model.addAttribute("vcReqUser", tokenInfo.getUserName()); // 접수일시
|
||||
|
||||
// 2025.12.03 나혁제 파일체크 로직 추가
|
||||
// 파일업로드 제한
|
||||
String whiteListFileUploadExtensions = propertyService.getString("Globals.fileUpload.Extensions");
|
||||
String fileUploadMaxSize = propertyService.getString("Globals.fileUpload.maxSize");
|
||||
|
||||
model.addAttribute("fileUploadExtensions", whiteListFileUploadExtensions);
|
||||
model.addAttribute("fileUploadMaxSize" , fileUploadMaxSize);
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /srm/insertViewReqIncident.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return "uritms-tiles2/srm/SvcDeskReqInsert";
|
||||
}
|
||||
|
||||
/**
|
||||
* 서비스 데스크 인스던트 신청 수정 화면으로 이동한다.
|
||||
* @author URP 인프라본부 나혁제
|
||||
* 작성일 : 2025.12.16
|
||||
*/
|
||||
@PostMapping(value = "/srm/updateViewReqIncident.do")
|
||||
public String updateViewReqIncident( @ModelAttribute("SvcDeskListVo") SvcDeskReqListVo svcDeskReqListVo
|
||||
, @ModelAttribute("searchVO") SvcDeskListVo searchVO
|
||||
, HttpServletRequest request
|
||||
, HttpServletResponse response
|
||||
, ModelMap model) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /srm/updateViewReqIncident.do <<<<<<<<<<<<<<<");
|
||||
// api in/out map 정의
|
||||
Map<String, Object> bodyMap = new LinkedHashMap();
|
||||
Map<String, Object> returnMap = new LinkedHashMap();
|
||||
|
||||
String vcReqIncidentNum = CommonUtil.nvl(svcDeskReqListVo.getVcReqIncidentNum());
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
bodyMap.put("vcReqIncidentNum", vcReqIncidentNum);
|
||||
// Body Setting End ---------------------------------
|
||||
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/srm/getReqIncidentBySeq.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
// 결과값 추출 Start ---------------------------------
|
||||
Map<String, Object> resultReqIncident = (Map<String, Object>)returnMap.get("resultReqIncident");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
// 인스던트 본문 복호화처리
|
||||
String strIncidentBody = (String)resultReqIncident.get("txIncidentBody");
|
||||
String strIncidentBodyDec = CommonUtil.base64decode(strIncidentBody);
|
||||
|
||||
resultReqIncident.put("txIncidentBody", strIncidentBodyDec);
|
||||
|
||||
model.addAttribute("resultReqIncident" , resultReqIncident ); // Map
|
||||
|
||||
// 서비스 정보 추출
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/srm/getServiceCombo.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
List<Map<String, Object>> resultList = (List<Map<String, Object>>)returnMap.get("resultList");
|
||||
|
||||
model.addAttribute("serviceList", resultList); // 서비스 정보
|
||||
|
||||
// 2025.12.03 나혁제 파일체크 로직 추가
|
||||
// 파일업로드 제한
|
||||
String whiteListFileUploadExtensions = propertyService.getString("Globals.fileUpload.Extensions");
|
||||
String fileUploadMaxSize = propertyService.getString("Globals.fileUpload.maxSize");
|
||||
|
||||
model.addAttribute("fileUploadExtensions", whiteListFileUploadExtensions);
|
||||
model.addAttribute("fileUploadMaxSize" , fileUploadMaxSize);
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /srm/updateViewReqIncident.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return "uritms-tiles2/srm/SvcDeskReqUpdate";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 서비스데스크 인스던트 신청 등록 처리를 한다.
|
||||
* @author URP 인프라본부 나혁제
|
||||
* 작성일 : 2025.12.15
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping(value="/srm/addReqIncident.do")
|
||||
public LinkedHashMap<String, Object> addReqIncident( final @ModelAttribute("incidentReqVo") IncidentReqVo incidentReqVo
|
||||
, final MultipartHttpServletRequest multiRequest
|
||||
, HttpServletRequest request
|
||||
, HttpServletResponse response ) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /srm/addReqIncident.do <<<<<<<<<<<<<<<");
|
||||
|
||||
// api in/out map 정의
|
||||
Map<String, Object> bodyMap = new LinkedHashMap();
|
||||
Map<String, Object> returnMap = new LinkedHashMap();
|
||||
|
||||
// return 처리
|
||||
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>(); // Response Map
|
||||
|
||||
// 양식 암호화처리
|
||||
String strBody = incidentReqVo.getTxIncidentBody();
|
||||
String strBodyEnc = CommonUtil.base64encode(strBody);
|
||||
|
||||
log.info("strBody [{}]", strBody);
|
||||
log.info("strBodyEnc [{}]", strBodyEnc);
|
||||
|
||||
incidentReqVo.setTxIncidentBody(strBodyEnc);
|
||||
|
||||
// 첨부파일 Setting Start ********************** /
|
||||
// 첨부파일 관련 첨부파일ID 생성
|
||||
List<FileVO> _result = null;
|
||||
String _atchFileId = "";
|
||||
|
||||
final List<MultipartFile> files = multiRequest.getFiles("file_1");
|
||||
|
||||
if ( (!files.isEmpty())
|
||||
&& (files.get(0).getSize()>0) )
|
||||
{
|
||||
_result = fileUtil.parseFileInf(files, "INCID_", 0, "", "");
|
||||
_atchFileId = _result.get(0).getAtchFileId(); // 파일이 생성되고나면 생성된 첨부파일 ID를 리턴한다.
|
||||
|
||||
incidentReqVo.setAtchFileId(_atchFileId);
|
||||
}
|
||||
|
||||
List<Map<String, Object>> fileList = new ArrayList();
|
||||
|
||||
// 파일저장 정보 세팅
|
||||
if(_result != null)
|
||||
{
|
||||
for(FileVO fileVo : _result)
|
||||
{
|
||||
log.info("file fileVo : {}", fileVo.toString());
|
||||
|
||||
Map<String, Object> fileMap = ConvertUtils.convertToMap(fileVo);
|
||||
|
||||
fileList.add(fileMap);
|
||||
}
|
||||
}
|
||||
// 첨부파일 Setting End **********************/
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
bodyMap.put("incidentReqVo" , ConvertUtils.convertToMapAll(incidentReqVo));
|
||||
bodyMap.put("fileList" , fileList);
|
||||
// Body Setting End ---------------------------------
|
||||
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/srm/addReqIncident.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
resBody.put("resultCd" , returnMap.get("resultCd") );
|
||||
resBody.put("resultMsg" , returnMap.get("resultMsg") );
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /srm/addReqIncident.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return resBody;
|
||||
}
|
||||
|
||||
/**
|
||||
* 서비스데스크 인스던트 신청 수정 처리를 한다.
|
||||
* @author URP 인프라본부 나혁제
|
||||
* 작성일 : 2025.12.17
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping(value="/srm/updateReqIncident.do")
|
||||
public LinkedHashMap<String, Object> updateReqIncident( final @ModelAttribute("incidentReqVo") IncidentReqVo incidentReqVo
|
||||
, final MultipartHttpServletRequest multiRequest
|
||||
, HttpServletRequest request
|
||||
, HttpServletResponse response ) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /srm/updateReqIncident.do <<<<<<<<<<<<<<<");
|
||||
|
||||
// api in/out map 정의
|
||||
Map<String, Object> bodyMap = new LinkedHashMap();
|
||||
Map<String, Object> returnMap = new LinkedHashMap();
|
||||
|
||||
// return 처리
|
||||
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>(); // Response Map
|
||||
|
||||
// 양식 암호화처리
|
||||
String strBody = incidentReqVo.getTxIncidentBody();
|
||||
String strBodyEnc = CommonUtil.base64encode(strBody);
|
||||
|
||||
log.info("strBody [{}]", strBody);
|
||||
log.info("strBodyEnc [{}]", strBodyEnc);
|
||||
|
||||
incidentReqVo.setTxIncidentBody(strBodyEnc);
|
||||
|
||||
// 첨부파일 Setting Start ********************** /
|
||||
// 첨부파일 관련 첨부파일ID 생성
|
||||
String _atchFileId = incidentReqVo.getAtchFileId();
|
||||
final List<MultipartFile> files = multiRequest.getFiles("file_1");
|
||||
|
||||
List<Map<String, Object>> fileList = new ArrayList();
|
||||
|
||||
if ( (!files.isEmpty())
|
||||
&& (files.get(0).getSize()>0) )
|
||||
{
|
||||
List<FileVO> _result = null;
|
||||
|
||||
if (_atchFileId==null || "".equals(_atchFileId) )
|
||||
{
|
||||
_result = fileUtil.parseFileInf(files, "INCID_", 0, _atchFileId, "");
|
||||
_atchFileId = _result.get(0).getAtchFileId();
|
||||
|
||||
incidentReqVo.setAtchFileId(_atchFileId);
|
||||
incidentReqVo.setAtchFileInUpGb("I"); // 새로만들기
|
||||
}
|
||||
else
|
||||
{
|
||||
FileVO fvo = new FileVO();
|
||||
fvo.setAtchFileId(_atchFileId);
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
bodyMap = ConvertUtils.convertToMap(fvo);
|
||||
// Body Setting End ---------------------------------
|
||||
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/cmm/getMaxFileSN.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
int _cnt = (int)returnMap.get("result");
|
||||
|
||||
_result = fileUtil.parseFileInf(files, "INCID_", _cnt, _atchFileId, "");
|
||||
incidentReqVo.setAtchFileInUpGb("U"); // 기존자료변경
|
||||
}
|
||||
|
||||
// 파일저장 정보 세팅
|
||||
for(FileVO inMap : _result)
|
||||
{
|
||||
Map<String, Object> fileMap = ConvertUtils.convertToMap(inMap);
|
||||
fileList.add(fileMap);
|
||||
}
|
||||
}
|
||||
// 첨부파일 Setting End ********************** /
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
bodyMap.put("incidentReqVo" , ConvertUtils.convertToMapAll(incidentReqVo));
|
||||
bodyMap.put("fileList" , fileList);
|
||||
// Body Setting End ---------------------------------
|
||||
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/srm/updateReqIncident.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
resBody.put("resultCd" , returnMap.get("resultCd") );
|
||||
resBody.put("resultMsg" , returnMap.get("resultMsg") );
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /rem/updateIncident.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return resBody;
|
||||
}
|
||||
|
||||
/**
|
||||
* 서비스데스크 인스던트 신청정보 삭제 처리를 한다.
|
||||
* @author urp 인프라본부 나혁제
|
||||
* 작성일 : 2025.12.18
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping(value="/srm/deleteReqIncident.do")
|
||||
public LinkedHashMap<String, Object> deleteReqIncident( final @ModelAttribute("incidentReqVo") IncidentReqVo incidentReqVo
|
||||
, HttpServletRequest request
|
||||
, HttpServletResponse response ) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /srm/deleteReqIncident.do <<<<<<<<<<<<<<<");
|
||||
|
||||
// api in/out map 정의
|
||||
Map<String, Object> bodyMap = new LinkedHashMap();
|
||||
Map<String, Object> returnMap = new LinkedHashMap();
|
||||
|
||||
// return 처리
|
||||
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>(); // Response Map
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
bodyMap.put("incidentReqVo" , ConvertUtils.convertToMapAll(incidentReqVo));
|
||||
// Body Setting End ---------------------------------
|
||||
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/srm/deleteReqIncident.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
resBody.put("resultCd" , returnMap.get("resultCd") );
|
||||
resBody.put("resultMsg" , returnMap.get("resultMsg") );
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /srm/deleteReqIncident.do >>>>>>>>>>>>>>>");
|
||||
|
||||
|
||||
return resBody;
|
||||
}
|
||||
|
||||
/**
|
||||
* 인스던트 신청정보 반려 처리를 한다.
|
||||
* @author URP 인프라본부 나혁제
|
||||
* 작성일 : 2025.12.18
|
||||
*/
|
||||
@ResponseBody
|
||||
@RequestMapping(value="/srm/rejectReqIncident.do")
|
||||
public LinkedHashMap<String, Object> rejectReqIncident( HttpServletRequest request
|
||||
, HttpServletResponse response ) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /srm/rejectReqReqIncident.do <<<<<<<<<<<<<<<");
|
||||
|
||||
// api in/out map 정의
|
||||
Map<String, Object> bodyMap = new LinkedHashMap();
|
||||
Map<String, Object> returnMap = new LinkedHashMap();
|
||||
|
||||
// return 처리
|
||||
LinkedHashMap<String, Object> resBody = new LinkedHashMap<String, Object>(); // Response Map
|
||||
|
||||
TokenInfo tokenInfo = CommonUtil.getTokenInfo();
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
bodyMap.put("reqRptRejTxComment" , CommonUtil.getData(request, "reqRptRejTxComment") );
|
||||
bodyMap.put("vcReqIncidentNum" , CommonUtil.getData(request, "vcReqIncidentNum" ) );
|
||||
// Body Setting End ---------------------------------
|
||||
|
||||
// RestApi Call Start ---------------------------------
|
||||
returnMap = restApiCallUtil.RestApiCall(bodyMap, "/srm/rejectReqIncident.do");
|
||||
// RestApi Call End ---------------------------------
|
||||
|
||||
resBody.put("resultCd" , returnMap.get("resultCd") );
|
||||
resBody.put("resultMsg" , returnMap.get("resultMsg") );
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /srm/rejectReqReqIncident.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return resBody;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
136
src/main/java/com/urpsys/itmsfront/srm/domain/IncidentReqVo.java
Normal file
136
src/main/java/com/urpsys/itmsfront/srm/domain/IncidentReqVo.java
Normal file
@ -0,0 +1,136 @@
|
||||
package com.urpsys.itmsfront.srm.domain;
|
||||
|
||||
/**
|
||||
* 서비스데스크 인스던트 신청 처리 model 클래스를 정의한다.
|
||||
* @author urp 인프라본부 나혁제
|
||||
* @since 2025.12.15
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* << 개정이력(Modification Information) >>
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2025.12.15 나혁제 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
public class IncidentReqVo
|
||||
{
|
||||
private String vcReqIncidentNum ;
|
||||
private String inServiceCode ;
|
||||
private String vcIncidentTitle ;
|
||||
private String txIncidentBody ;
|
||||
private String inReqUser ;
|
||||
private String vcReqUser ;
|
||||
private String inChargeUser ;
|
||||
private String vcChargeUser ;
|
||||
private String dtReqDateTime ;
|
||||
private String dtCompleteReqDateTime ;
|
||||
private String atchFileId ;
|
||||
private String procStsfdg ;
|
||||
private String procOpin ;
|
||||
private String inIncidentSeq ;
|
||||
private String atchFileInUpGb ;
|
||||
|
||||
public String getVcReqIncidentNum() {
|
||||
return vcReqIncidentNum;
|
||||
}
|
||||
public void setVcReqIncidentNum(String vcReqIncidentNum) {
|
||||
this.vcReqIncidentNum = vcReqIncidentNum;
|
||||
}
|
||||
public String getInServiceCode() {
|
||||
return inServiceCode;
|
||||
}
|
||||
public void setInServiceCode(String inServiceCode) {
|
||||
this.inServiceCode = inServiceCode;
|
||||
}
|
||||
public String getVcIncidentTitle() {
|
||||
return vcIncidentTitle;
|
||||
}
|
||||
public void setVcIncidentTitle(String vcIncidentTitle) {
|
||||
this.vcIncidentTitle = vcIncidentTitle;
|
||||
}
|
||||
public String getTxIncidentBody() {
|
||||
return txIncidentBody;
|
||||
}
|
||||
public void setTxIncidentBody(String txIncidentBody) {
|
||||
this.txIncidentBody = txIncidentBody;
|
||||
}
|
||||
public String getInReqUser() {
|
||||
return inReqUser;
|
||||
}
|
||||
public void setInReqUser(String inReqUser) {
|
||||
this.inReqUser = inReqUser;
|
||||
}
|
||||
public String getVcReqUser() {
|
||||
return vcReqUser;
|
||||
}
|
||||
public void setVcReqUser(String vcReqUser) {
|
||||
this.vcReqUser = vcReqUser;
|
||||
}
|
||||
public String getInChargeUser() {
|
||||
return inChargeUser;
|
||||
}
|
||||
public void setInChargeUser(String inChargeUser) {
|
||||
this.inChargeUser = inChargeUser;
|
||||
}
|
||||
public String getVcChargeUser() {
|
||||
return vcChargeUser;
|
||||
}
|
||||
public void setVcChargeUser(String vcChargeUser) {
|
||||
this.vcChargeUser = vcChargeUser;
|
||||
}
|
||||
public String getDtReqDateTime() {
|
||||
return dtReqDateTime;
|
||||
}
|
||||
public void setDtReqDateTime(String dtReqDateTime) {
|
||||
this.dtReqDateTime = dtReqDateTime;
|
||||
}
|
||||
public String getDtCompleteReqDateTime() {
|
||||
return dtCompleteReqDateTime;
|
||||
}
|
||||
public void setDtCompleteReqDateTime(String dtCompleteReqDateTime) {
|
||||
this.dtCompleteReqDateTime = dtCompleteReqDateTime;
|
||||
}
|
||||
public String getAtchFileId() {
|
||||
return atchFileId;
|
||||
}
|
||||
public void setAtchFileId(String atchFileId) {
|
||||
this.atchFileId = atchFileId;
|
||||
}
|
||||
public String getProcStsfdg() {
|
||||
return procStsfdg;
|
||||
}
|
||||
public void setProcStsfdg(String procStsfdg) {
|
||||
this.procStsfdg = procStsfdg;
|
||||
}
|
||||
public String getProcOpin() {
|
||||
return procOpin;
|
||||
}
|
||||
public void setProcOpin(String procOpin) {
|
||||
this.procOpin = procOpin;
|
||||
}
|
||||
public String getInIncidentSeq() {
|
||||
return inIncidentSeq;
|
||||
}
|
||||
public void setInIncidentSeq(String inIncidentSeq) {
|
||||
this.inIncidentSeq = inIncidentSeq;
|
||||
}
|
||||
public String getAtchFileInUpGb() {
|
||||
return atchFileInUpGb;
|
||||
}
|
||||
public void setAtchFileInUpGb(String atchFileInUpGb) {
|
||||
this.atchFileInUpGb = atchFileInUpGb;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -1,7 +1,5 @@
|
||||
package com.urpsys.itmsfront.srm.domain;
|
||||
|
||||
import com.urpsys.basefront.domain.ComDefaultVO;
|
||||
|
||||
/**
|
||||
* 서비스데스크 인스던트 처리 model 클래스를 정의한다.
|
||||
* @author urp 인프라본부 나혁제
|
||||
@ -53,6 +51,9 @@ public class IncidentVo
|
||||
private String dtServiceStartDatetime ;
|
||||
private String atchFileId ;
|
||||
private String atchFileInUpGb ;
|
||||
private String vcReqIncidentNum ; // 2025.12.17 나혁제 신청번호
|
||||
private String reqAtchFileId ; // 2025.12.17 나혁제 신청첨부파일
|
||||
private String reqRptRejTxComment ; // 2025.12.17 나혁제 접수의견
|
||||
|
||||
public String getInIncidentSeq() {
|
||||
return inIncidentSeq;
|
||||
@ -246,6 +247,24 @@ public class IncidentVo
|
||||
public void setAtchFileInUpGb(String atchFileInUpGb) {
|
||||
this.atchFileInUpGb = atchFileInUpGb;
|
||||
}
|
||||
public String getVcReqIncidentNum() {
|
||||
return vcReqIncidentNum;
|
||||
}
|
||||
public void setVcReqIncidentNum(String vcReqIncidentNum) {
|
||||
this.vcReqIncidentNum = vcReqIncidentNum;
|
||||
}
|
||||
public String getReqAtchFileId() {
|
||||
return reqAtchFileId;
|
||||
}
|
||||
public void setReqAtchFileId(String reqAtchFileId) {
|
||||
this.reqAtchFileId = reqAtchFileId;
|
||||
}
|
||||
public String getReqRptRejTxComment() {
|
||||
return reqRptRejTxComment;
|
||||
}
|
||||
public void setReqRptRejTxComment(String reqRptRejTxComment) {
|
||||
this.reqRptRejTxComment = reqRptRejTxComment;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -0,0 +1,64 @@
|
||||
package com.urpsys.itmsfront.srm.domain;
|
||||
|
||||
import com.urpsys.basefront.domain.ComDefaultVO;
|
||||
|
||||
/**
|
||||
* 서비스데스크 신청정보 조회조건 model 클래스를 정의한다.
|
||||
* @author URP 인프라본부 나혁제
|
||||
* @since 2025.12.15
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* <pre>
|
||||
* << 개정이력(Modification Information) >>
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ------- -------- ---------------------------
|
||||
* 2025.12.15 나혁제 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
public class SvcDeskReqListVo extends ComDefaultVO
|
||||
{
|
||||
private String complete;
|
||||
private String incidentReqNum;
|
||||
private String reqUser;
|
||||
private String incidentTitle;
|
||||
private String vcReqIncidentNum;
|
||||
|
||||
public String getComplete() {
|
||||
return complete;
|
||||
}
|
||||
public void setComplete(String complete) {
|
||||
this.complete = complete;
|
||||
}
|
||||
public String getReqUser() {
|
||||
return reqUser;
|
||||
}
|
||||
public void setReqUser(String reqUser) {
|
||||
this.reqUser = reqUser;
|
||||
}
|
||||
public String getIncidentTitle() {
|
||||
return incidentTitle;
|
||||
}
|
||||
public void setIncidentTitle(String incidentTitle) {
|
||||
this.incidentTitle = incidentTitle;
|
||||
}
|
||||
public String getIncidentReqNum() {
|
||||
return incidentReqNum;
|
||||
}
|
||||
public void setIncidentReqNum(String incidentReqNum) {
|
||||
this.incidentReqNum = incidentReqNum;
|
||||
}
|
||||
public String getVcReqIncidentNum() {
|
||||
return vcReqIncidentNum;
|
||||
}
|
||||
public void setVcReqIncidentNum(String vcReqIncidentNum) {
|
||||
this.vcReqIncidentNum = vcReqIncidentNum;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -36,7 +36,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
/**
|
||||
* 개인화메뉴관리 controller 클래스
|
||||
* @author 정보기술연구소 나혁제
|
||||
* @author URP 인프라본부 나혁제
|
||||
* @since 2025.03.06
|
||||
* @version 1.0
|
||||
* @see
|
||||
@ -46,7 +46,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
*
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2025.03.06 권오제 최초 생성
|
||||
* 2025.03.06 나혁제 최초 생성
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
@ -82,8 +82,8 @@ public class PrsnlPortletManageController
|
||||
|
||||
/**
|
||||
* 개인화메뉴 목록을 조회한다.
|
||||
* @author 정보기술연구소 권오제
|
||||
* 작성일 : 2022.12.16
|
||||
* @author URP 인프라본부 나혁제
|
||||
* 작성일 : 2025.03.06
|
||||
*/
|
||||
@RequestMapping("/sys/selectPortletManageList.do")
|
||||
public String selectPortletManageList(@ModelAttribute("searchVO") PrsnlPortletManageVO prsnlPortletManageVO
|
||||
@ -91,6 +91,7 @@ public class PrsnlPortletManageController
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /sys/selectPortletManageList.do <<<<<<<<<<<<<<<");
|
||||
|
||||
MemberVO memberVo = (MemberVO)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
||||
|
||||
// Body Setting Start -------------------------------
|
||||
prsnlPortletManageVO.setPageUnit(propertyService.getInt("pageUnit"));
|
||||
@ -123,6 +124,15 @@ public class PrsnlPortletManageController
|
||||
model.addAttribute("resultCnt" , totCnt);
|
||||
model.addAttribute("paginationInfo" , paginationInfo);
|
||||
|
||||
// 2025.12.08 나혁제 TEST1 만 삭제권한
|
||||
if(memberVo.getTokenInfo().getStrMEM_ID().equals("TEST1"))
|
||||
{
|
||||
model.addAttribute("delAuthYn" , "Y");
|
||||
}
|
||||
else
|
||||
{
|
||||
model.addAttribute("delAuthYn" , "N");
|
||||
}
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /sys/selectPortletManageList.do >>>>>>>>>>>>>>>");
|
||||
|
||||
@ -131,8 +141,8 @@ public class PrsnlPortletManageController
|
||||
|
||||
/**
|
||||
* 개인화메뉴를 등록한다.
|
||||
* @author 정보기술연구소 권오제
|
||||
* 작성일 : 2022.12.19
|
||||
* @author URP 인프라본부 나혁제
|
||||
* 작성일 : 2025.03.06
|
||||
*/
|
||||
@RequestMapping("/sys/insertPrsnlPortlet.do")
|
||||
public String insertPrsnlPortlet(final MultipartHttpServletRequest multiRequest
|
||||
@ -229,8 +239,8 @@ public class PrsnlPortletManageController
|
||||
|
||||
/**
|
||||
* 개인화메뉴 정보를 조회한다.
|
||||
* @author 정보기술연구소 권오제
|
||||
* 작성일 : 2022.12.19
|
||||
* @author URP 인프라본부 나혁제
|
||||
* 작성일 : 2025.03.06
|
||||
*/
|
||||
@RequestMapping("/sys/inqirePrsnlPortlet.do")
|
||||
public String inqirePrsnlPortlet(@ModelAttribute("searchVO") PrsnlPortletManageVO searchVO
|
||||
@ -238,6 +248,7 @@ public class PrsnlPortletManageController
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /sys/inqirePrsnlPortlet.do <<<<<<<<<<<<<<<");
|
||||
|
||||
MemberVO memberVo = (MemberVO)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
||||
|
||||
// Body Setting Start ---------------------------------
|
||||
Map<String, Object> bodyMap = ConvertUtils.convertToMapAll(searchVO);
|
||||
@ -257,6 +268,17 @@ public class PrsnlPortletManageController
|
||||
model.addAttribute("fileUploadExtensions", whiteListFileUploadExtensions);
|
||||
model.addAttribute("fileUploadMaxSize" , fileUploadMaxSize);
|
||||
|
||||
// 2025.12.08 나혁제 TEST1 만 삭제권한
|
||||
if(memberVo.getTokenInfo().getStrMEM_ID().equals("TEST1"))
|
||||
{
|
||||
model.addAttribute("delAuthYn" , "Y");
|
||||
}
|
||||
else
|
||||
{
|
||||
model.addAttribute("delAuthYn" , "N");
|
||||
}
|
||||
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /sys/inqirePrsnlPortlet.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return "uritms-tiles2/sys/PrsnlPortletManageDetail";
|
||||
@ -264,8 +286,8 @@ public class PrsnlPortletManageController
|
||||
|
||||
/**
|
||||
* 개인화메뉴 정보를 수정한다.
|
||||
* @author 정보기술연구소 권오제
|
||||
* 작성일 : 2022.12.19
|
||||
* @author URP 인프라본부 나혁제
|
||||
* 작성일 : 2025.03.06
|
||||
*/
|
||||
@RequestMapping("/sys/updatePrsnlPortlet.do")
|
||||
public String updatePrsnlPortlet(final MultipartHttpServletRequest multiRequest
|
||||
@ -338,8 +360,8 @@ public class PrsnlPortletManageController
|
||||
|
||||
/**
|
||||
* 개인화메뉴 정보를 삭제한다.
|
||||
* @author 정보기술연구소 권오제
|
||||
* 작성일 : 2022.12.19
|
||||
* @author URP 인프라본부 나혁제
|
||||
* 작성일 : 2025.03.06
|
||||
*/
|
||||
@RequestMapping("/sys/deletePrsnlPortlet.do")
|
||||
public String deletePrsnlPortlet(@ModelAttribute("prsnlPortletManageVO") PrsnlPortletManageVO prsnlPortletManageVO
|
||||
@ -364,8 +386,8 @@ public class PrsnlPortletManageController
|
||||
|
||||
/**
|
||||
* 개인화메뉴 정보를 멀티 삭제한다.
|
||||
* @author 정보기술연구소 권오제
|
||||
* 작성일 : 2022.12.19
|
||||
* @author URP 인프라본부 나혁제
|
||||
* 작성일 : 2025.03.06
|
||||
*/
|
||||
@RequestMapping("/sys/deletePrsnlPortletMulti.do")
|
||||
public String deletePrsnlPortletMulti(HttpServletRequest request
|
||||
@ -411,5 +433,61 @@ public class PrsnlPortletManageController
|
||||
|
||||
return sLocationUrl;
|
||||
}
|
||||
|
||||
/**
|
||||
* 개인화메뉴 정보를 멀티 상태변경 처리한다.
|
||||
* @author URP 인프라본부 나혁제
|
||||
* 작성일 : 2025.12.08
|
||||
*/
|
||||
@RequestMapping("/sys/updateStatusPrsnlPortletMulti.do")
|
||||
public String updateStatusPrsnlPortletMulti(HttpServletRequest request
|
||||
, @ModelAttribute("prsnlPortletManageVO") PrsnlPortletManageVO prsnlPortletManageVO
|
||||
, @RequestParam("checkedPrsnlIdForDel") String checkedPrsnlIdForDel
|
||||
, @RequestParam("checkUseAts") String checkUseAts
|
||||
, BindingResult bindingResult
|
||||
, ModelMap model) throws Exception
|
||||
{
|
||||
log.info(">>>>>>>>>>>>>>> /sys/updateStatusPrsnlPortletMulti.do <<<<<<<<<<<<<<<");
|
||||
|
||||
String sLocationUrl = "";
|
||||
String resultMsg = "";
|
||||
|
||||
log.info("checkedPrsnlIdForDel => [{}]", checkedPrsnlIdForDel );
|
||||
log.info("checkUseAts => [{}]", checkUseAts );
|
||||
|
||||
String [] delPrsnlId = checkedPrsnlIdForDel.split(",");
|
||||
|
||||
if ( (delPrsnlId == null )
|
||||
|| (delPrsnlId.length == 0) )
|
||||
{
|
||||
resultMsg = egovMessageSource.getMessage("fail.common.update");
|
||||
sLocationUrl = "forward:/sys/selectPortletManageList.do";
|
||||
}
|
||||
else
|
||||
{
|
||||
// Body Setting Start ---------------------------------
|
||||
Map<String, Object> bodyMap = new HashMap<>();
|
||||
bodyMap.put("checkedPrsnlIdForDel", checkedPrsnlIdForDel);
|
||||
bodyMap.put("checkUseAts" , checkUseAts );
|
||||
// Body Setting End ---------------------------------
|
||||
|
||||
Map<String, Object> returnMap = restApiCallUtil.RestApiCall(request, bodyMap, "/sys/updateStatusPrsnlPortletMulti.do");
|
||||
|
||||
resultMsg = egovMessageSource.getMessage("success.common.update");
|
||||
sLocationUrl = "forward:/sys/selectPortletManageList.do";
|
||||
}
|
||||
|
||||
|
||||
log.info("resultMsg => [{}]", resultMsg);
|
||||
model.addAttribute("resultMsg", resultMsg);
|
||||
|
||||
log.info("<<<<<<<<<<<<<<< /sys/updateStatusPrsnlPortletMulti.do >>>>>>>>>>>>>>>");
|
||||
|
||||
return sLocationUrl;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -19,9 +19,11 @@
|
||||
livereload:
|
||||
enabled: true
|
||||
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
|
||||
# custom 설정
|
||||
custom:
|
||||
path:
|
||||
|
||||
@ -19,9 +19,11 @@
|
||||
livereload:
|
||||
enabled: true
|
||||
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
|
||||
# custom 설정
|
||||
custom:
|
||||
path:
|
||||
|
||||
@ -24,9 +24,10 @@
|
||||
livereload:
|
||||
enabled: true
|
||||
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
|
||||
# custom 설정
|
||||
custom:
|
||||
|
||||
@ -19,9 +19,10 @@
|
||||
livereload:
|
||||
enabled: true
|
||||
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
|
||||
# custom 설정
|
||||
custom:
|
||||
|
||||
@ -19,9 +19,10 @@
|
||||
livereload:
|
||||
enabled: true
|
||||
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
|
||||
# custom 설정
|
||||
custom:
|
||||
|
||||
@ -33,9 +33,10 @@
|
||||
livereload:
|
||||
enabled: true
|
||||
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
|
||||
# custom 설정
|
||||
custom:
|
||||
|
||||
@ -50,6 +50,6 @@
|
||||
senderName: 나혁제
|
||||
socketFactory-class: javax.net.ssl.SSLSocketFactory
|
||||
supplier: gmail.com
|
||||
client : kic
|
||||
client : local
|
||||
|
||||
|
||||
@ -19,9 +19,11 @@
|
||||
livereload:
|
||||
enabled: true
|
||||
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
servlet:
|
||||
multipart:
|
||||
max-file-size: 100MB
|
||||
max-request-size: 100MB
|
||||
|
||||
# custom 설정
|
||||
custom:
|
||||
path:
|
||||
|
||||
@ -70,6 +70,20 @@
|
||||
</field>
|
||||
</form>
|
||||
|
||||
<!-- 서비스데스크 인스던트 처리 -->
|
||||
<form name="svcDeskReqManage">
|
||||
<field property="XXXXXXX" depends="">
|
||||
</field>
|
||||
<field property="vcChargeUser" depends="required">
|
||||
<arg0 key="조치예정자" resource="true"/>
|
||||
</field>
|
||||
<field property="vcIncidentTitle" depends="required">
|
||||
<arg0 key="제목" resource="true"/>
|
||||
</field>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
<!-- 점검보고서 처리 -->
|
||||
<form name="reportCheckManage">
|
||||
<field property="XXXXXXX" depends="">
|
||||
|
||||
@ -21,12 +21,7 @@
|
||||
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
|
||||
<!-- Resources -->
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/index.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/xy.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/themes/Animated.js"></script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="${ctx}/js/js-calendar/calendar-jquery-ui.css">
|
||||
<script type="text/javascript" src="${ctx}/js/jquery-2.2.4.min.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery.js"></script>
|
||||
@ -37,6 +32,7 @@
|
||||
<!-- Resources -->
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/index.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/xy.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/percent.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/themes/Animated.js"></script>
|
||||
|
||||
<!-- Styles -->
|
||||
|
||||
@ -22,12 +22,9 @@
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
|
||||
<!-- Resources -->
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/index.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/xy.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/themes/Animated.js"></script>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="${ctx}/js/js-calendar/calendar-jquery-ui.css">
|
||||
|
||||
<script type="text/javascript" src="${ctx}/js/jquery-2.2.4.min.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery-ui.js"></script>
|
||||
@ -37,6 +34,7 @@
|
||||
<!-- Resources -->
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/index.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/xy.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/percent.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/themes/Animated.js"></script>
|
||||
|
||||
<!-- Styles -->
|
||||
|
||||
190
src/main/webapp/WEB-INF/jsp/itms/pot/MyReportStsfdgRate.jsp
Normal file
190
src/main/webapp/WEB-INF/jsp/itms/pot/MyReportStsfdgRate.jsp
Normal file
@ -0,0 +1,190 @@
|
||||
<!DOCTYPE html>
|
||||
<%
|
||||
/**
|
||||
* @Class Name : MyResouceTotalStat.jsp
|
||||
* @Description : SR 만족율 포틀릿
|
||||
* @Modification Information
|
||||
* @
|
||||
* @ 수정일 수정자 수정내용
|
||||
* @ ------- -------- ---------------------------
|
||||
* @ 2025.12.09 나혁제 최초 생성
|
||||
*
|
||||
* @author urp 인프라본부 나혁제
|
||||
* @since 2025.12.09
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
*/
|
||||
%>
|
||||
<%@ page contentType="text/html; charset=utf-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
|
||||
<link rel="stylesheet" href="${ctx}/js/js-calendar/calendar-jquery-ui.css">
|
||||
|
||||
<script type="text/javascript" src="${ctx}/js/jquery-2.2.4.min.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery-ui.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/calendar.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery.ui.monthpicker.js"></script>
|
||||
|
||||
<!-- Resources -->
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/index.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/percent.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/xy.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/themes/Animated.js"></script>
|
||||
|
||||
<!-- Styles -->
|
||||
<style>
|
||||
#chartdiv_reportStsfdg {
|
||||
width: 100%;
|
||||
height: 300px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javaScript" language="javascript" defer="defer">
|
||||
|
||||
|
||||
/*********************************************************
|
||||
* 초기화
|
||||
******************************************************** */
|
||||
$(document).ready(function ()
|
||||
{
|
||||
// Month Setting
|
||||
$("#dtSearchMon_reportStsfdg").monthpicker({
|
||||
monthNames: ['1월(JAN)', '2월(FEB)', '3월(MAR)', '4월(APR)', '5월(MAY)', '6월(JUN)',
|
||||
'7월(JUL)', '8월(AUG)', '9월(SEP)', '10월(OCT)', '11월(NOV)', '12월(DEC)']
|
||||
, monthNamesShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월']
|
||||
//showOn: "button",
|
||||
// buttonImage: "../../Images/Goods/calendar.jpg",
|
||||
, showButtonPanel: true
|
||||
// buttonImageOnly: true,
|
||||
, changeYear: false
|
||||
, yearRange: 'c-2:c+2'
|
||||
, dateFormat: 'yy-mm'
|
||||
});
|
||||
|
||||
am5.addLicense("AM5C123456789"); // 임시적 방법
|
||||
|
||||
searchMon_change_reportStsfdg();
|
||||
});
|
||||
|
||||
//----------------------------------------
|
||||
// chart 세팅
|
||||
// ----------------------------------------
|
||||
function amChart_setting_reportStsfdg(data)
|
||||
{
|
||||
// 기존 차트 초기화 Start
|
||||
var existing = am5.registry.rootElements.filter(function(root) {
|
||||
return root.dom && root.dom.id === "chartdiv_reportStsfdg";
|
||||
});
|
||||
|
||||
existing.forEach(function(root) {
|
||||
root.dispose();
|
||||
});
|
||||
|
||||
$("#chartdiv_reportStsfdg").empty();
|
||||
// 기존 차트 초기화 End
|
||||
|
||||
// Create root element
|
||||
// https://www.amcharts.com/docs/v5/getting-started/#Root_element
|
||||
var root = am5.Root.new("chartdiv_reportStsfdg");
|
||||
|
||||
// Set themes
|
||||
// https://www.amcharts.com/docs/v5/concepts/themes/
|
||||
root.setThemes([
|
||||
am5themes_Animated.new(root)
|
||||
]);
|
||||
|
||||
|
||||
// Create chart
|
||||
// https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/
|
||||
var chart = root.container.children.push(am5percent.PieChart.new(root, {
|
||||
layout: root.verticalLayout,
|
||||
innerRadius: am5.percent(50)
|
||||
}));
|
||||
|
||||
// Create series
|
||||
// https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/#Series
|
||||
let series = chart.series.push(am5percent.PieSeries.new(root, {
|
||||
valueField: "value",
|
||||
categoryField: "category",
|
||||
alignLabels: false
|
||||
}));
|
||||
|
||||
series.labels.template.setAll({
|
||||
textType: "circular",
|
||||
centerX: 0,
|
||||
centerY: 0
|
||||
});
|
||||
|
||||
series.data.setAll(data);
|
||||
|
||||
// Create legend
|
||||
// https://www.amcharts.com/docs/v5/charts/percent-charts/legend-percent-series/
|
||||
let legend = chart.children.push(am5.Legend.new(root, {
|
||||
centerX: am5.percent(50),
|
||||
x: am5.percent(50),
|
||||
marginTop: 15,
|
||||
marginBottom: 15,
|
||||
}));
|
||||
|
||||
legend.data.setAll(series.dataItems);
|
||||
|
||||
// Play initial series animation
|
||||
// https://www.amcharts.com/docs/v5/concepts/animations/#Animation_of_series
|
||||
series.appear(1000, 100);
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 조회월 변경시 조회처리
|
||||
// ----------------------------------------
|
||||
function searchMon_change_reportStsfdg()
|
||||
{
|
||||
var inData = {"strSearchMon":$("#dtSearchMon_reportStsfdg").val() };
|
||||
|
||||
$.ajax({
|
||||
url: '/potl/getReportStsfdgRate.do'
|
||||
, type: 'post'
|
||||
, data: JSON.stringify(inData)
|
||||
, dataType: 'json'
|
||||
, contentType: 'application/json'
|
||||
, async: false
|
||||
, success: function(data)
|
||||
{
|
||||
amChart_setting_reportStsfdg(data.resultList);
|
||||
|
||||
},
|
||||
error: function(errorThrown)
|
||||
{
|
||||
alert("실패");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<div class="week_news" style="width:${potlWidth}px; height:${potlHeight}px;">
|
||||
<h1>보고서 처리만족율<a href="javascript:goAddPortletPage('3000000', '3020100');" class="btn_more" title="자산목록">더보기</a>
|
||||
<div class="delBtn" style="position:relative; z-index:501;" onclick="DelBtn('${potlId}')">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-trash3" viewBox="0 0 16 16">
|
||||
<path d="M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.506a.58.58 0 0 0-.01 0H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1h-.995a.59.59 0 0 0-.01 0H11Zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5h9.916Zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47ZM8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5Z"/>
|
||||
</svg>
|
||||
|
||||
</div>
|
||||
</h1>
|
||||
|
||||
<ul class="news_list">
|
||||
<div>
|
||||
<input type="text" class="btn_calendar" name="dtSearchMon_reportStsfdg" id="dtSearchMon_reportStsfdg"
|
||||
maxlength="10" value="${dtCurMonth}" title="조회월" readonly onchange="searchMon_change_reportStsfdg()" style="width:200px;" />
|
||||
</div>
|
||||
|
||||
<div id="chartdiv_reportStsfdg"></div>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@ -22,9 +22,18 @@
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
|
||||
<link rel="stylesheet" href="${ctx}/js/js-calendar/calendar-jquery-ui.css">
|
||||
|
||||
<script type="text/javascript" src="${ctx}/js/jquery-2.2.4.min.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery-ui.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/calendar.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery.ui.monthpicker.js"></script>
|
||||
|
||||
<!-- Resources -->
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/index.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/xy.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/percent.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/themes/Animated.js"></script>
|
||||
|
||||
<!-- Styles -->
|
||||
|
||||
190
src/main/webapp/WEB-INF/jsp/itms/pot/MySrProPromiseRate.jsp
Normal file
190
src/main/webapp/WEB-INF/jsp/itms/pot/MySrProPromiseRate.jsp
Normal file
@ -0,0 +1,190 @@
|
||||
<!DOCTYPE html>
|
||||
<%
|
||||
/**
|
||||
* @Class Name : MyResouceTotalStat.jsp
|
||||
* @Description : SR 처리 준수율 포틀릿
|
||||
* @Modification Information
|
||||
* @
|
||||
* @ 수정일 수정자 수정내용
|
||||
* @ ------- -------- ---------------------------
|
||||
* @ 2025.12.09 나혁제 최초 생성
|
||||
*
|
||||
* @author urp 인프라본부 나혁제
|
||||
* @since 2025.12.09
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
*/
|
||||
%>
|
||||
<%@ page contentType="text/html; charset=utf-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
|
||||
<link rel="stylesheet" href="${ctx}/js/js-calendar/calendar-jquery-ui.css">
|
||||
|
||||
<script type="text/javascript" src="${ctx}/js/jquery-2.2.4.min.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery-ui.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/calendar.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery.ui.monthpicker.js"></script>
|
||||
|
||||
<!-- Resources -->
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/index.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/percent.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/xy.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/themes/Animated.js"></script>
|
||||
|
||||
<!-- Styles -->
|
||||
<style>
|
||||
#chartdiv_srPro {
|
||||
width: 100%;
|
||||
height: 300px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javaScript" language="javascript" defer="defer">
|
||||
|
||||
|
||||
/*********************************************************
|
||||
* 초기화
|
||||
******************************************************** */
|
||||
$(document).ready(function ()
|
||||
{
|
||||
// Month Setting
|
||||
$("#dtSearchMon_srPro").monthpicker({
|
||||
monthNames: ['1월(JAN)', '2월(FEB)', '3월(MAR)', '4월(APR)', '5월(MAY)', '6월(JUN)',
|
||||
'7월(JUL)', '8월(AUG)', '9월(SEP)', '10월(OCT)', '11월(NOV)', '12월(DEC)']
|
||||
, monthNamesShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월']
|
||||
//showOn: "button",
|
||||
// buttonImage: "../../Images/Goods/calendar.jpg",
|
||||
, showButtonPanel: true
|
||||
// buttonImageOnly: true,
|
||||
, changeYear: false
|
||||
, yearRange: 'c-2:c+2'
|
||||
, dateFormat: 'yy-mm'
|
||||
});
|
||||
|
||||
am5.addLicense("AM5C123456789"); // 임시적 방법
|
||||
|
||||
searchMon_change_srPro();
|
||||
});
|
||||
|
||||
//----------------------------------------
|
||||
// chart 세팅
|
||||
// ----------------------------------------
|
||||
function amChart_setting_srPro(data)
|
||||
{
|
||||
// 기존 차트 초기화 Start
|
||||
var existing = am5.registry.rootElements.filter(function(root) {
|
||||
return root.dom && root.dom.id === "chartdiv_srPro";
|
||||
});
|
||||
|
||||
existing.forEach(function(root) {
|
||||
root.dispose();
|
||||
});
|
||||
|
||||
$("#chartdiv_srPro").empty();
|
||||
// 기존 차트 초기화 End
|
||||
|
||||
// Create root element
|
||||
// https://www.amcharts.com/docs/v5/getting-started/#Root_element
|
||||
var root = am5.Root.new("chartdiv_srPro");
|
||||
|
||||
// Set themes
|
||||
// https://www.amcharts.com/docs/v5/concepts/themes/
|
||||
root.setThemes([
|
||||
am5themes_Animated.new(root)
|
||||
]);
|
||||
|
||||
|
||||
// Create chart
|
||||
// https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/
|
||||
var chart = root.container.children.push(am5percent.PieChart.new(root, {
|
||||
layout: root.verticalLayout,
|
||||
innerRadius: am5.percent(50)
|
||||
}));
|
||||
|
||||
// Create series
|
||||
// https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/#Series
|
||||
let series = chart.series.push(am5percent.PieSeries.new(root, {
|
||||
valueField: "value",
|
||||
categoryField: "category",
|
||||
alignLabels: false
|
||||
}));
|
||||
|
||||
series.labels.template.setAll({
|
||||
textType: "circular",
|
||||
centerX: 0,
|
||||
centerY: 0
|
||||
});
|
||||
|
||||
series.data.setAll(data);
|
||||
|
||||
// Create legend
|
||||
// https://www.amcharts.com/docs/v5/charts/percent-charts/legend-percent-series/
|
||||
let legend = chart.children.push(am5.Legend.new(root, {
|
||||
centerX: am5.percent(50),
|
||||
x: am5.percent(50),
|
||||
marginTop: 15,
|
||||
marginBottom: 15,
|
||||
}));
|
||||
|
||||
legend.data.setAll(series.dataItems);
|
||||
|
||||
// Play initial series animation
|
||||
// https://www.amcharts.com/docs/v5/concepts/animations/#Animation_of_series
|
||||
series.appear(1000, 100);
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 조회월 변경시 조회처리
|
||||
// ----------------------------------------
|
||||
function searchMon_change_srPro()
|
||||
{
|
||||
var inData = {"strSearchMon":$("#dtSearchMon_srPro").val() };
|
||||
|
||||
$.ajax({
|
||||
url: '/potl/getSrProPromiseRateData.do'
|
||||
, type: 'post'
|
||||
, data: JSON.stringify(inData)
|
||||
, dataType: 'json'
|
||||
, contentType: 'application/json'
|
||||
, async: false
|
||||
, success: function(data)
|
||||
{
|
||||
amChart_setting_srPro(data.resultList);
|
||||
|
||||
},
|
||||
error: function(errorThrown)
|
||||
{
|
||||
alert("실패");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<div class="week_news" style="width:${potlWidth}px; height:${potlHeight}px;">
|
||||
<h1>SR 처리준수율<a href="javascript:goAddPortletPage('3000000', '3020100');" class="btn_more" title="자산목록">더보기</a>
|
||||
<div class="delBtn" style="position:relative; z-index:501;" onclick="DelBtn('${potlId}')">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-trash3" viewBox="0 0 16 16">
|
||||
<path d="M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.506a.58.58 0 0 0-.01 0H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1h-.995a.59.59 0 0 0-.01 0H11Zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5h9.916Zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47ZM8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5Z"/>
|
||||
</svg>
|
||||
|
||||
</div>
|
||||
</h1>
|
||||
|
||||
<ul class="news_list">
|
||||
<div>
|
||||
<input type="text" class="btn_calendar" name="dtSearchMon_srPro" id="dtSearchMon_srPro"
|
||||
maxlength="10" value="${dtCurMonth}" title="조회월" readonly onchange="searchMon_change_srPro()" style="width:200px;" />
|
||||
</div>
|
||||
|
||||
<div id="chartdiv_srPro"></div>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
190
src/main/webapp/WEB-INF/jsp/itms/pot/MySrStsfdgRate.jsp
Normal file
190
src/main/webapp/WEB-INF/jsp/itms/pot/MySrStsfdgRate.jsp
Normal file
@ -0,0 +1,190 @@
|
||||
<!DOCTYPE html>
|
||||
<%
|
||||
/**
|
||||
* @Class Name : MyResouceTotalStat.jsp
|
||||
* @Description : SR 만족율 포틀릿
|
||||
* @Modification Information
|
||||
* @
|
||||
* @ 수정일 수정자 수정내용
|
||||
* @ ------- -------- ---------------------------
|
||||
* @ 2025.12.09 나혁제 최초 생성
|
||||
*
|
||||
* @author urp 인프라본부 나혁제
|
||||
* @since 2025.12.09
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
*/
|
||||
%>
|
||||
<%@ page contentType="text/html; charset=utf-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
|
||||
<link rel="stylesheet" href="${ctx}/js/js-calendar/calendar-jquery-ui.css">
|
||||
|
||||
<script type="text/javascript" src="${ctx}/js/jquery-2.2.4.min.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery-ui.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/calendar.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery.ui.monthpicker.js"></script>
|
||||
|
||||
<!-- Resources -->
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/index.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/percent.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/xy.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/themes/Animated.js"></script>
|
||||
|
||||
<!-- Styles -->
|
||||
<style>
|
||||
#chartdiv_srStsfdg {
|
||||
width: 100%;
|
||||
height: 300px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<script type="text/javaScript" language="javascript" defer="defer">
|
||||
|
||||
|
||||
/*********************************************************
|
||||
* 초기화
|
||||
******************************************************** */
|
||||
$(document).ready(function ()
|
||||
{
|
||||
// Month Setting
|
||||
$("#dtSearchMon_srStsfdg").monthpicker({
|
||||
monthNames: ['1월(JAN)', '2월(FEB)', '3월(MAR)', '4월(APR)', '5월(MAY)', '6월(JUN)',
|
||||
'7월(JUL)', '8월(AUG)', '9월(SEP)', '10월(OCT)', '11월(NOV)', '12월(DEC)']
|
||||
, monthNamesShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월']
|
||||
//showOn: "button",
|
||||
// buttonImage: "../../Images/Goods/calendar.jpg",
|
||||
, showButtonPanel: true
|
||||
// buttonImageOnly: true,
|
||||
, changeYear: false
|
||||
, yearRange: 'c-2:c+2'
|
||||
, dateFormat: 'yy-mm'
|
||||
});
|
||||
|
||||
am5.addLicense("AM5C123456789"); // 임시적 방법
|
||||
|
||||
searchMon_change_srStsfdg();
|
||||
});
|
||||
|
||||
//----------------------------------------
|
||||
// chart 세팅
|
||||
// ----------------------------------------
|
||||
function amChart_setting_srStsfdg(data)
|
||||
{
|
||||
// 기존 차트 초기화 Start
|
||||
var existing = am5.registry.rootElements.filter(function(root) {
|
||||
return root.dom && root.dom.id === "chartdiv_srStsfdg";
|
||||
});
|
||||
|
||||
existing.forEach(function(root) {
|
||||
root.dispose();
|
||||
});
|
||||
|
||||
$("#chartdiv_srStsfdg").empty();
|
||||
// 기존 차트 초기화 End
|
||||
|
||||
// Create root element
|
||||
// https://www.amcharts.com/docs/v5/getting-started/#Root_element
|
||||
var root = am5.Root.new("chartdiv_srStsfdg");
|
||||
|
||||
// Set themes
|
||||
// https://www.amcharts.com/docs/v5/concepts/themes/
|
||||
root.setThemes([
|
||||
am5themes_Animated.new(root)
|
||||
]);
|
||||
|
||||
|
||||
// Create chart
|
||||
// https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/
|
||||
var chart = root.container.children.push(am5percent.PieChart.new(root, {
|
||||
layout: root.verticalLayout,
|
||||
innerRadius: am5.percent(50)
|
||||
}));
|
||||
|
||||
// Create series
|
||||
// https://www.amcharts.com/docs/v5/charts/percent-charts/pie-chart/#Series
|
||||
let series = chart.series.push(am5percent.PieSeries.new(root, {
|
||||
valueField: "value",
|
||||
categoryField: "category",
|
||||
alignLabels: false
|
||||
}));
|
||||
|
||||
series.labels.template.setAll({
|
||||
textType: "circular",
|
||||
centerX: 0,
|
||||
centerY: 0
|
||||
});
|
||||
|
||||
series.data.setAll(data);
|
||||
|
||||
// Create legend
|
||||
// https://www.amcharts.com/docs/v5/charts/percent-charts/legend-percent-series/
|
||||
let legend = chart.children.push(am5.Legend.new(root, {
|
||||
centerX: am5.percent(50),
|
||||
x: am5.percent(50),
|
||||
marginTop: 15,
|
||||
marginBottom: 15,
|
||||
}));
|
||||
|
||||
legend.data.setAll(series.dataItems);
|
||||
|
||||
// Play initial series animation
|
||||
// https://www.amcharts.com/docs/v5/concepts/animations/#Animation_of_series
|
||||
series.appear(1000, 100);
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 조회월 변경시 조회처리
|
||||
// ----------------------------------------
|
||||
function searchMon_change_srStsfdg()
|
||||
{
|
||||
var inData = {"strSearchMon":$("#dtSearchMon_srStsfdg").val() };
|
||||
|
||||
$.ajax({
|
||||
url: '/potl/getSrStsfdgRate.do'
|
||||
, type: 'post'
|
||||
, data: JSON.stringify(inData)
|
||||
, dataType: 'json'
|
||||
, contentType: 'application/json'
|
||||
, async: false
|
||||
, success: function(data)
|
||||
{
|
||||
amChart_setting_srStsfdg(data.resultList);
|
||||
|
||||
},
|
||||
error: function(errorThrown)
|
||||
{
|
||||
alert("실패");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<div class="week_news" style="width:${potlWidth}px; height:${potlHeight}px;">
|
||||
<h1>SR 처리만족율<a href="javascript:goAddPortletPage('3000000', '3020100');" class="btn_more" title="자산목록">더보기</a>
|
||||
<div class="delBtn" style="position:relative; z-index:501;" onclick="DelBtn('${potlId}')">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-trash3" viewBox="0 0 16 16">
|
||||
<path d="M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.506a.58.58 0 0 0-.01 0H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1h-.995a.59.59 0 0 0-.01 0H11Zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5h9.916Zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47ZM8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5Z"/>
|
||||
</svg>
|
||||
|
||||
</div>
|
||||
</h1>
|
||||
|
||||
<ul class="news_list">
|
||||
<div>
|
||||
<input type="text" class="btn_calendar" name="dtSearchMon_srStsfdg" id="dtSearchMon_srStsfdg"
|
||||
maxlength="10" value="${dtCurMonth}" title="조회월" readonly onchange="searchMon_change_srStsfdg()" style="width:200px;" />
|
||||
</div>
|
||||
|
||||
<div id="chartdiv_srStsfdg"></div>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
85
src/main/webapp/WEB-INF/jsp/itms/srm/PopReceiptReject.jsp
Normal file
85
src/main/webapp/WEB-INF/jsp/itms/srm/PopReceiptReject.jsp
Normal file
@ -0,0 +1,85 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<%--
|
||||
/**
|
||||
* @Class Name : PopReceiptReject.jsp
|
||||
* @Description : 접수/반려 팝엄 화면
|
||||
* @Modification Information
|
||||
* @
|
||||
* @ 수정일 수정자 수정내용
|
||||
* @ ---------- -------- ---------------------------
|
||||
* @ 2025.12.17 나혁제 최초 생성
|
||||
*
|
||||
* @author URP 인프라본부 나혁제
|
||||
* @since 2025.12.17
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
*/
|
||||
--%>
|
||||
|
||||
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
|
||||
<script type="text/javaScript" language="javascript" defer="defer">
|
||||
|
||||
function fncConfirem(strGubun)
|
||||
{
|
||||
parent.fncRptRejLast(strGubun, document.ReqApprovalPop.comment.value);
|
||||
parent.$('.ui-dialog-content').dialog('close');
|
||||
}
|
||||
|
||||
function fncClose()
|
||||
{
|
||||
parent.$('.ui-dialog-content').dialog('close');
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<!-- javascript warning tag -->
|
||||
<noscript class="noScriptTitle"><spring:message code="common.noScriptTitle.msg" /></noscript>
|
||||
<form:form name="ReqApprovalPop" action="" method="post">
|
||||
|
||||
<!-- main title -->
|
||||
<div class="main_titWrap">
|
||||
<h3>접수/반려</h3>
|
||||
</div>
|
||||
|
||||
<!-- Form 테이블 :start -->
|
||||
<div class="bbs_view">
|
||||
|
||||
<!--등록폼 -->
|
||||
<table class="tbl_form" summary="<spring:message code="common.summary.list" arguments="등록" />">
|
||||
<caption>승인요청</caption>
|
||||
<colgroup>
|
||||
<col style="width: 16%;">
|
||||
<col style="width: *%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>
|
||||
의견
|
||||
</td>
|
||||
<td>
|
||||
<textarea rows="3" cols="40" id="comment" placeholder="승인 합니다." ></textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="btn_group">
|
||||
<button type="button" class="btn-function" id="btnConfirm" onclick="javascript:fncConfirem('0')" title="접수">접수</button>
|
||||
<button type="button" class="btn-function" id="btnConfirm" onclick="javascript:fncConfirem('2')" title="반려">반려</button>
|
||||
<button type="button" class="btn-cancel" id="btnCancel" onclick="javascript:fncClose()" title="닫기">닫기</button>
|
||||
</div>
|
||||
|
||||
</form:form>
|
||||
@ -114,6 +114,22 @@ ${uploadMax }
|
||||
{
|
||||
// 서비스정보 획득
|
||||
selInServiceCode();
|
||||
|
||||
// 2025.12.17 나혁제 신청정보로 오는경우 신청정보 세팅
|
||||
if( $('#vcReqIncidentNum').val() != '')
|
||||
{
|
||||
var strForm = document.getElementById("serviceBody2").value;
|
||||
drawEditor("serviceBody", strForm, false);
|
||||
|
||||
// 조치예정자 세팅
|
||||
$('#inChargeUser').val('${reqInChargeUser}');
|
||||
$('#vcChargeUser').val('${reqVcChargeUser}');
|
||||
|
||||
// 제목
|
||||
$('#vcIncidentTitle').val('${reqVcIncidentTitle}');
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
//----------------------------------------
|
||||
@ -590,9 +606,9 @@ ${uploadMax }
|
||||
|
||||
<!-- main title -->
|
||||
<div class="main_titWrap">
|
||||
|
||||
|
||||
<h3>서비스접수</h3>
|
||||
|
||||
|
||||
<!-- location :s -->
|
||||
<div class="location">
|
||||
<div class="location-cont">
|
||||
@ -650,7 +666,7 @@ ${uploadMax }
|
||||
<td>
|
||||
<select name="inServiceCode" id="inServiceCode" onchange="selInServiceCode()" style="width: 80%;" >
|
||||
<c:forEach items="${serviceList}" var="result" varStatus="status">
|
||||
<option value="${result.value}" > ${result.label} </option><!-- 분류코드명 -->
|
||||
<option value="${result.value}" <c:if test="${result.value == reqInServiceCode}">selected</c:if> > ${result.label} </option><!-- 분류코드명 -->
|
||||
</c:forEach>
|
||||
</select>
|
||||
</td>
|
||||
@ -681,7 +697,8 @@ ${uploadMax }
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<c:choose>
|
||||
<c:when test="${reqAtchFileId == ''}">
|
||||
<th> 진행사항 </th>
|
||||
<td></td>
|
||||
|
||||
@ -694,7 +711,32 @@ ${uploadMax }
|
||||
<div id="egovComFileList"></div>
|
||||
<!-- attached file End -->
|
||||
</td>
|
||||
</tr>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<tr>
|
||||
<th rowspan=2 > 진행사항 </th>
|
||||
<td rowspan=2 ></td>
|
||||
|
||||
<th><spring:message code="cop.atchFile" /></th>
|
||||
<td colspan=3>
|
||||
<!-- attached file Start -->
|
||||
<div>
|
||||
<input type="file" name="file_1" id="egovComFileUploader" onChange="fnImgChange(this)" multiple>
|
||||
</div>
|
||||
<div id="egovComFileList"></div>
|
||||
<!-- attached file End -->
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>기존첨부파일</th>
|
||||
<td colspan=3>
|
||||
<c:import url="/cmm/selectFileInfs.do" charEncoding="utf-8">
|
||||
<c:param name="param_atchFileId" value="${reqAtchFileId}" />
|
||||
</c:import>
|
||||
</td>
|
||||
</tr>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
|
||||
<tr>
|
||||
<th>서비스 결재 라인 </th>
|
||||
@ -749,8 +791,8 @@ ${uploadMax }
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<textarea id="serviceBody" name="serviceBody" >
|
||||
</textarea>
|
||||
<textarea id="serviceBody" name="serviceBody" ></textarea>
|
||||
<textarea id="serviceBody2" name="serviceBody2" style="display:none;">${reqTxIncidentBody}</textarea>
|
||||
|
||||
</div>
|
||||
|
||||
@ -798,6 +840,12 @@ ${uploadMax }
|
||||
<input type="hidden" id="txComment" name="txComment" value="">
|
||||
<input type="hidden" id="reqApprovalYn" name="reqApprovalYn" value="">
|
||||
|
||||
<!-- 2025.12.17 나혁제 신청정보 추가 -->
|
||||
<input type="hidden" id="vcReqIncidentNum" name="vcReqIncidentNum" value="${vcReqIncidentNum}">
|
||||
<input type="hidden" id="reqAtchFileId" name="reqAtchFileId" value="${reqAtchFileId}">
|
||||
<input type="hidden" id="reqRptRejTxComment" name="reqRptRejTxComment" value="${reqRptRejTxComment}">
|
||||
|
||||
|
||||
|
||||
</form:form>
|
||||
|
||||
|
||||
443
src/main/webapp/WEB-INF/jsp/itms/srm/SvcDeskReqDetail.jsp
Normal file
443
src/main/webapp/WEB-INF/jsp/itms/srm/SvcDeskReqDetail.jsp
Normal file
@ -0,0 +1,443 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<%
|
||||
/**
|
||||
* @Class Name : SvcDeskReqDetail.jsp
|
||||
* @Description : 서비스데스크 인스턴스 신청 상세조회 화면
|
||||
* @Modification Information
|
||||
* @
|
||||
* @ 수정일 수정자 수정내용
|
||||
* @ ------- -------- ---------------------------
|
||||
* @ 2025.12.16 나혁제 최초 생성
|
||||
*
|
||||
* @author URP 인프라본부 나혁제
|
||||
* @since 2025.12.16
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* Copyright (C) 2009 by MOPAS All right reserved.
|
||||
*/
|
||||
%>
|
||||
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
|
||||
|
||||
|
||||
<title> 인스던트 신청 </title>
|
||||
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
|
||||
<script type="text/javascript" src="<c:url value="/validator.do"/>"></script>
|
||||
<script type="text/javascript" src="<c:url value='/egov/js/showModalDialog.js'/>" ></script>
|
||||
|
||||
<!-- tinyMCE Editor -->
|
||||
<script charset="utf-8" type="text/javascript" src="${pageContext.request.contextPath}/lib/oss/tinymce/tinymce.min.js"></script>
|
||||
|
||||
<!-- tinymce setting 2025.05.12 나혁제 tinymce_uritms_setting.js 이관 -->
|
||||
<script charset="utf-8" type="text/javascript" src="<c:url value='/js/tinymce_uritms_setting.js?ver=1'/>" ></script>
|
||||
|
||||
<!-- validation 처리 -->
|
||||
<validator:javascript formName="svcDeskReqManage" staticJavascript="false" xhtml="true" cdata="false"/>
|
||||
|
||||
<!-- 파일처리 -->
|
||||
<script type="text/javascript" src="<c:url value='/egov/js/EgovMultiFiles.js'/>" ></script>
|
||||
|
||||
<!-- 시간처리 -->
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery-ui-timepicker-addon.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="${ctx}/css/jquery-ui-timepicker-addon.css">
|
||||
|
||||
<!-- itsm 공통 스크립트 -->
|
||||
<script type="text/javascript" src="${ctx}/js/common_uritms.js"></script>
|
||||
|
||||
<script type="text/javaScript" language="javascript">
|
||||
|
||||
//----------------------------------------
|
||||
// 화면 초기화
|
||||
// ----------------------------------------
|
||||
$(document).ready(function()
|
||||
{
|
||||
drawEditor("serviceBody", "", true);
|
||||
});
|
||||
|
||||
//----------------------------------------
|
||||
// 화면 초기화(Form 완전 로딩후 )
|
||||
// ----------------------------------------
|
||||
$(window).on("load", function()
|
||||
{
|
||||
var strForm = document.getElementById("serviceBody2").value;
|
||||
drawEditor("serviceBody", strForm, true);
|
||||
});
|
||||
|
||||
//----------------------------------------
|
||||
// 목록 화면으로 이동처리
|
||||
// ----------------------------------------
|
||||
function fncSvcDeskReqList()
|
||||
{
|
||||
var varFrom = document.getElementById("svcDeskReqManage");
|
||||
varFrom.action = "<c:url value='/srm/searchReqIncident.do'/>";
|
||||
varFrom.submit();
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 인스던트 신청 수정 화면 이동처리
|
||||
// ----------------------------------------
|
||||
function fncSvcDeskReqIncidentUpdate()
|
||||
{
|
||||
// 수정화면으로 이동처리
|
||||
var varFrom = document.getElementById("svcDeskReqManage");
|
||||
varFrom.action = "<c:url value='/srm/updateViewReqIncident.do'/>";
|
||||
varFrom.submit();
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 인스던트 삭제 처리
|
||||
// ----------------------------------------
|
||||
function fncSvcDeskReqIncidentDelete()
|
||||
{
|
||||
// 2025.11.18 나혁제 [승인완료/반려] 삭제 불가
|
||||
if($('#inReqStatus').val() != '-1' )
|
||||
{
|
||||
alert("신청상태 이외의 인시던트 신청정보는 삭제가 불가합니다.");
|
||||
return;
|
||||
}
|
||||
|
||||
var bYes = confirm("인스던트 신청정보 삭제 처리를 하시겠습니까?");
|
||||
if(bYes==false) return;
|
||||
|
||||
proc.fn_ReqIncidentDelete_save();
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 접수/반려
|
||||
// ----------------------------------------
|
||||
function fncSvcDeskReqIncidentRptRej()
|
||||
{
|
||||
var bYes = confirm("인스던트 접수/반려 처리를 하시겠습니까?");
|
||||
if(bYes==false) return;
|
||||
|
||||
// 승인&반려 메세지 팝업 open
|
||||
PopupOpen("/srm/PopReceiptReject", 400, 550, '');
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 인스던트 접수/반려 처리(최종 저장 처리 )
|
||||
// ----------------------------------------
|
||||
function fncRptRejLast(strGubun , strMsg)
|
||||
{
|
||||
$('#reqRptRejTxComment').val(strMsg) ;
|
||||
|
||||
// 접수처리
|
||||
if(strGubun=='0')
|
||||
{
|
||||
// 수정화면으로 이동처리
|
||||
var varFrom = document.getElementById("svcDeskReqManage");
|
||||
varFrom.action = "<c:url value='/srm/insertViewIncident.do'/>";
|
||||
varFrom.submit();
|
||||
}
|
||||
// 반려처리
|
||||
else if(strGubun=='2')
|
||||
{
|
||||
proc.fn_Incident_Req_Reject();
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("알수없는 처리 유형입니다.");
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 팝업 오픈
|
||||
// ----------------------------------------
|
||||
function PopupOpen(strUrl, hei, wid, pagetitle)
|
||||
{
|
||||
var page = "/common/PageRedirection.do?Page="+ strUrl
|
||||
+ "&PopupYn=Y";
|
||||
|
||||
var $dialog = $('<div></div>')
|
||||
.html('<iframe style="border: 0px; " src="' + page + '" width="100%" height="100%"></iframe>')
|
||||
.dialog({
|
||||
autoOpen: false
|
||||
, modal: true
|
||||
, height: hei
|
||||
, width: wid
|
||||
, title: pagetitle
|
||||
, open: function (event, ui)
|
||||
{
|
||||
$(".ui-icon-closethick").remove(); // 닫기 버튼 제거
|
||||
$('.ui-dialog-titlebar-close').css({
|
||||
width: '30px' // 닫기 버튼 너비
|
||||
// , height: '50px' // 닫기 버튼 높이
|
||||
});
|
||||
$(this).parent().find(".ui-dialog-titlebar").hide(); // 타이틀바 안보이게 처리
|
||||
}
|
||||
|
||||
, closeText: '닫기'
|
||||
});
|
||||
|
||||
$dialog.dialog('open');
|
||||
|
||||
// 팝업 화면 맨앞으로 배치
|
||||
$(".ui-dialog").css("z-index", "99");
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// Ajax 서버 통신 모음
|
||||
// ----------------------------------------
|
||||
var proc =
|
||||
{
|
||||
// 인스던트 삭제
|
||||
fn_ReqIncidentDelete_save : function ()
|
||||
{
|
||||
var form = $('#svcDeskReqManage')[0];
|
||||
var formData = new FormData(form);
|
||||
|
||||
$.ajax({
|
||||
url: '/srm/deleteReqIncident.do'
|
||||
, type: 'post'
|
||||
, enctype:'multipart/form-data'
|
||||
, data: formData
|
||||
, dataType: 'json'
|
||||
, processData:false
|
||||
, contentType:false
|
||||
, cache:false
|
||||
, success: function(data)
|
||||
{
|
||||
alert("인스던트 신청정보 삭제 되었습니다.");
|
||||
fncSvcDeskReqList();
|
||||
},
|
||||
error: function(errorThrown)
|
||||
{
|
||||
alert("인스던트 신청정보 삭제처리중 오류가 발생하였습니다. \n 시스템 관리자에게 문의해 주시기 바랍니다.");
|
||||
console.log(JSON.stringify(errorThrown));
|
||||
}
|
||||
});
|
||||
}
|
||||
// 인스던트 신청정보 반려
|
||||
, fn_Incident_Req_Reject : function ()
|
||||
{
|
||||
var form = $('#svcDeskReqManage')[0];
|
||||
var formData = new FormData(form);
|
||||
|
||||
$.ajax({
|
||||
url: '/srm/rejectReqIncident.do'
|
||||
, type: 'post'
|
||||
, enctype:'multipart/form-data'
|
||||
, data: formData
|
||||
, dataType: 'json'
|
||||
, processData:false
|
||||
, contentType:false
|
||||
, cache:false
|
||||
, success: function(data)
|
||||
{
|
||||
alert("인스던트 신청정보 반려 되었습니다.");
|
||||
fncSvcDeskReqList();
|
||||
},
|
||||
error: function(errorThrown)
|
||||
{
|
||||
alert("인스던트 신청정보 반려중 오류가 발생하였습니다. \n 시스템 관리자에게 문의해 주시기 바랍니다.");
|
||||
console.log(JSON.stringify(errorThrown));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<!-- javascript warning tag -->
|
||||
<noscript class="noScriptTitle"><spring:message code="common.noScriptTitle.msg" /></noscript>
|
||||
|
||||
<form:form modelAttribute="svcDeskReqManage" name="svcDeskReqManage" method="post" enctype="multipart/form-data">
|
||||
|
||||
<!-- body_wrap :start -->
|
||||
<div class="body_wrap">
|
||||
|
||||
<!-- main title -->
|
||||
<div class="main_titWrap">
|
||||
|
||||
<h3>서비스신청 상세조회</h3>
|
||||
|
||||
<!-- location :s -->
|
||||
<div class="location">
|
||||
<div class="location-cont">
|
||||
<div>
|
||||
<ul class="route_navi">
|
||||
<li><a href="#" title="홈"><span class="home">홈</span></a></li>
|
||||
<li><a href="#" title="SR관리">SR관리</a></li>
|
||||
<li>인스던트 신청 상세조회</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--//location :e -->
|
||||
</div>
|
||||
<!--//main title -->
|
||||
|
||||
|
||||
<!-- Form 테이블 :start -->
|
||||
<div class="bbs_view">
|
||||
|
||||
<!-- 등록폼 -->
|
||||
<table class="tbl_form" summary="<spring:message code="common.summary.list" arguments="등록" />">
|
||||
<caption>인스던트 등록</caption>
|
||||
<colgroup>
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 30%">
|
||||
<col style="width: 10%">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 10%">
|
||||
<col style="width: 20%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th> 신청번호 </th>
|
||||
<td><c:out value="${resultReqIncident.vcReqIncidentNum}"/></td>
|
||||
<th> 신청자 </th>
|
||||
<td><c:out value="${resultReqIncident.vcReqUser}"/></td>
|
||||
<th> 신청일시 </th>
|
||||
<td><c:out value="${resultReqIncident.dtReqDateTime}"/></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th> 서비스 </th>
|
||||
<td><c:out value="${resultReqIncident.vcServiceName}"/></td>
|
||||
<th> 조치예정자 </th>
|
||||
<td><c:out value="${resultReqIncident.vcChargeUser}"/></td>
|
||||
<th> 완료요청일시 </th>
|
||||
<td><c:out value="${resultReqIncident.dtCompleteReqDateTime}"/></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th> 제목 </th>
|
||||
<td colspan=2>
|
||||
<c:out value="${resultReqIncident.vcIncidentTitle}"/>
|
||||
</td>
|
||||
|
||||
<th><spring:message code="cop.atchFile" /></th>
|
||||
<td colspan=2>
|
||||
<c:import url="/cmm/selectFileInfs.do" charEncoding="utf-8">
|
||||
<c:param name="param_atchFileId" value="${resultReqIncident.atchFileId}" />
|
||||
</c:import>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
||||
<c:if test="${bRptYn eq 'Y' || resultReqIncident.inReqStatus eq '2' }" >
|
||||
<h1 style="font-size: 20px;font-weight: bold;">처리정보</h1>
|
||||
<div class="bbs_view">
|
||||
<!-- 등록폼 -->
|
||||
<table class="tbl_form" summary="<spring:message code="common.summary.list" arguments="등록" />">
|
||||
<caption>인스던트 등록</caption>
|
||||
<colgroup>
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 14%">
|
||||
<col style="width: 10%">
|
||||
<col style="width: 13%;">
|
||||
<col style="width: 10%">
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 10%">
|
||||
<col style="width: *">
|
||||
</colgroup>
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<th> 접수번호 </th>
|
||||
<td><c:out value="${resultIncident.vcIncidentNum}"/></td>
|
||||
<th> 접수일시 </th>
|
||||
<td><c:out value="${resultIncident.dtReceiptDatetime}"/></td>
|
||||
<th> 접수자 </th>
|
||||
<td><c:out value="${resultIncident.vcRegUser}"/></td>
|
||||
<th> 접수의견 </th>
|
||||
<td><textarea style="width: 90%;" readonly >${resultReqIncident.rcvdOpin}
|
||||
</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th> 진행상태 </th>
|
||||
<td><c:out value="${resultIncident.vcIncidentStatus}"/></td>
|
||||
<th> 처리완료일시 </th>
|
||||
<td><c:out value="${resultIncident.dtCompleteDatetime}"/></td>
|
||||
<th> 처리자 </th>
|
||||
<td><c:out value="${resultIncident.vcDevUser}"/></td>
|
||||
<th> 처리완료의견 </th>
|
||||
<td><textarea style="width: 90%;" readonly >${resultReqIncident.txCompletedComment}
|
||||
</textarea>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
<textarea id="serviceBody" name="serviceBody" ></textarea>
|
||||
<textarea id="serviceBody2" name="serviceBody2" style="display:none;">${resultReqIncident.txIncidentBody}</textarea>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- main btn : start -->
|
||||
<div class="btn_group">
|
||||
<!-- 왼쪽영역-->
|
||||
<div style="text-align: left;position: absolute;">
|
||||
<!-- 목록 -->
|
||||
<button type="button" class="btn-function" id="btnList" style="background: blue;" onclick="fncSvcDeskReqList(); return false;" title="<spring:message code="button.list"/>">
|
||||
<spring:message code="button.list"/>
|
||||
</button>
|
||||
</div>
|
||||
<!--//왼쪽영역-->
|
||||
<!-- 오른쪽영역-->
|
||||
<div>
|
||||
|
||||
<c:if test="${resultReqIncident.inReqStatus eq '-1'}" >
|
||||
<c:if test="${bRptAuth eq 'Y'}" >
|
||||
<button type="button" class="btn-etc" title="접수/반려" onclick="fncSvcDeskReqIncidentRptRej(); return false;">
|
||||
접수/반려
|
||||
</button>
|
||||
</c:if>
|
||||
|
||||
<c:if test="${strChangeYn eq 'Y'}" >
|
||||
<button type="button" class="btn-etc" title="수정" onclick="fncSvcDeskReqIncidentUpdate(); return false;">
|
||||
수정
|
||||
</button>
|
||||
<button type="button" class="btn-etc" title="삭제" onclick="fncSvcDeskReqIncidentDelete(); return false;">
|
||||
삭제
|
||||
</button>
|
||||
</c:if>
|
||||
</c:if>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- main btn : end -->
|
||||
|
||||
</div>
|
||||
<!-- body_wrap :end -->
|
||||
|
||||
<!-- 검색조건 유지 -->
|
||||
<input type="hidden" name="orgnztId" value="" >
|
||||
<input type="hidden" name="searchCondition" value="<c:out value='${searchVO.searchCondition}'/>" >
|
||||
<input type="hidden" name="searchKeyword" value="<c:out value='${searchVO.searchKeyword}'/>" >
|
||||
<input type="hidden" name="pageIndex" value="<c:out value='${searchVO.pageIndex}'/>" >
|
||||
|
||||
<input type="hidden" name="vcReqIncidentNum" id="vcReqIncidentNum" value="<c:out value='${resultReqIncident.vcReqIncidentNum}'/>" >
|
||||
<input type="hidden" name="inReqStatus" id="inReqStatus" value="<c:out value='${resultReqIncident.inReqStatus}'/>" >
|
||||
|
||||
|
||||
<input type="hidden" id="reqRptRejTxComment" name="reqRptRejTxComment" value=""/>
|
||||
|
||||
|
||||
|
||||
</form:form>
|
||||
|
||||
464
src/main/webapp/WEB-INF/jsp/itms/srm/SvcDeskReqInsert.jsp
Normal file
464
src/main/webapp/WEB-INF/jsp/itms/srm/SvcDeskReqInsert.jsp
Normal file
@ -0,0 +1,464 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<%
|
||||
/**
|
||||
* @Class Name : SvcDeskReqInsert.jsp
|
||||
* @Description : 서비스데스크 인스턴스 신청 등록화면
|
||||
* @Modification Information
|
||||
* @
|
||||
* @ 수정일 수정자 수정내용
|
||||
* @ ------- -------- ---------------------------
|
||||
* @ 2025.12.15 나혁제 최초 생성
|
||||
*
|
||||
* @author URP 인프라본부 나혁제
|
||||
* @since 2025.12.15
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* Copyright (C) 2009 by MOPAS All right reserved.
|
||||
*/
|
||||
%>
|
||||
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
|
||||
|
||||
|
||||
<title> 인스던트 신청 </title>
|
||||
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
|
||||
<script type="text/javascript" src="<c:url value="/validator.do"/>"></script>
|
||||
<script type="text/javascript" src="<c:url value='/egov/js/showModalDialog.js'/>" ></script>
|
||||
|
||||
<!-- tinyMCE Editor -->
|
||||
<script charset="utf-8" type="text/javascript" src="${pageContext.request.contextPath}/lib/oss/tinymce/tinymce.min.js"></script>
|
||||
|
||||
<!-- tinymce setting 2025.05.12 나혁제 tinymce_uritms_setting.js 이관 -->
|
||||
<script charset="utf-8" type="text/javascript" src="<c:url value='/js/tinymce_uritms_setting.js?ver=1'/>" ></script>
|
||||
|
||||
<!-- validation 처리 -->
|
||||
<validator:javascript formName="svcDeskReqManage" staticJavascript="false" xhtml="true" cdata="false"/>
|
||||
|
||||
<!-- 파일처리 -->
|
||||
<script type="text/javascript" src="<c:url value='/egov/js/EgovMultiFiles.js'/>" ></script>
|
||||
|
||||
<!-- 시간처리 -->
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery-ui-timepicker-addon.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="${ctx}/css/jquery-ui-timepicker-addon.css">
|
||||
|
||||
<script type="text/javaScript" language="javascript">
|
||||
|
||||
//----------------------------------------
|
||||
// 화면 초기화
|
||||
// ----------------------------------------
|
||||
$(document).ready(function()
|
||||
{
|
||||
// 접수일시, 완료요청일시 시간까지 세팅
|
||||
$("#dtReceiptDatetime, #dtReqDatetime").datetimepicker({
|
||||
dateFormat:'yy-mm-dd',
|
||||
monthNamesShort:[ '1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월' ],
|
||||
dayNamesMin:[ '일', '월', '화', '수', '목', '금', '토' ],
|
||||
changeMonth:true,
|
||||
changeYear:true,
|
||||
showMonthAfterYear:true,
|
||||
|
||||
// timepicker 설정
|
||||
timeFormat:'HH:mm',
|
||||
controlType:'select',
|
||||
oneLine:true,
|
||||
});
|
||||
|
||||
// 멀티파일 설정
|
||||
var maxFileNum = 3;
|
||||
var multi_selector = new MultiSelector( document.getElementById( 'egovComFileList' ), maxFileNum );
|
||||
multi_selector.addElement( document.getElementById( 'egovComFileUploader' ) );
|
||||
|
||||
// drawEditor("");
|
||||
drawEditor("serviceBody", "", false);
|
||||
});
|
||||
|
||||
//----------------------------------------
|
||||
// 화면 초기화(Form 완전 로딩후 )
|
||||
// ----------------------------------------
|
||||
$(window).on("load", function()
|
||||
{
|
||||
// 서비스정보 획득
|
||||
selInServiceCode();
|
||||
});
|
||||
|
||||
//----------------------------------------
|
||||
// 목록 화면으로 이동처리
|
||||
// ----------------------------------------
|
||||
function fncSvcDeskReqList()
|
||||
{
|
||||
var varFrom = document.getElementById("svcDeskReqManage");
|
||||
varFrom.action = "<c:url value='/srm/searchReqIncident.do'/>";
|
||||
varFrom.submit();
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 사용자 검색 팝업
|
||||
// ----------------------------------------
|
||||
function fn_User_Search( strTitle
|
||||
, frmUniqId
|
||||
, frmEmplNo
|
||||
, frmEmplyrNm
|
||||
, frmOrgnztNm
|
||||
, multiUserSelectYn
|
||||
)
|
||||
{
|
||||
var arrParam = new Array(6);
|
||||
arrParam[0] = window;
|
||||
arrParam[1] = strTitle;
|
||||
arrParam[2] = frmUniqId;
|
||||
arrParam[3] = frmEmplNo;
|
||||
arrParam[4] = frmEmplyrNm;
|
||||
arrParam[5] = frmOrgnztNm;
|
||||
|
||||
var strUrl = "/cmm/selectUserListPopup.do?multiUserSelectYn="+multiUserSelectYn;
|
||||
|
||||
window.showModalDialog("<c:url value='"+strUrl+"' />"
|
||||
, arrParam
|
||||
,"dialogWidth:900px;dialogHeight:750px;resizable:yes;center:yes");
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 서비스 정보 변경시
|
||||
// ----------------------------------------
|
||||
function selInServiceCode()
|
||||
{
|
||||
var inServiceCode = $('#inServiceCode option:selected').val() ;
|
||||
|
||||
var inData = {};
|
||||
inData = {"inServiceCode":inServiceCode};
|
||||
|
||||
proc.fn_get_service_info(inData);
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 서비스 등록처리
|
||||
// ----------------------------------------
|
||||
function fncSvcDeskReqIncidentInsert()
|
||||
{
|
||||
var bYes = confirm("인스던트 신청 처리를 하시겠습니까?");
|
||||
if(bYes==false) return;
|
||||
|
||||
var form = document.svcDeskReqManage;
|
||||
|
||||
form.txIncidentBody.value = tinyMCE.get("serviceBody").getContent(); // 평문
|
||||
|
||||
//input item Client-Side validate
|
||||
if (!validateSvcDeskReqManage(form))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// 2025.12.02 나혁제 파일체크 로직 추가
|
||||
if (!fncAttachFileCheck())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
proc.fn_req_incident_save();
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 2025.12.02 나혁제 파일체크 로직 추가
|
||||
// 첨부파일 체크
|
||||
// ----------------------------------------
|
||||
function fncAttachFileCheck()
|
||||
{
|
||||
// 결과가 false인경우 허용되지 않음
|
||||
var resultExtension = EgovMultiFilesChecker.checkExtensions("egovComFileUploader", "<c:out value='${fileUploadExtensions}'/>");
|
||||
if (!resultExtension)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// 파일당 1M까지 허용 (1K=1024), 결과가 false인경우 허용되지 않음
|
||||
var resultSize = EgovMultiFilesChecker.checkFileSize("egovComFileUploader", <c:out value='${fileUploadMaxSize}'/>);
|
||||
if (!resultSize)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 팝업 오픈
|
||||
// ----------------------------------------
|
||||
function PopupOpen(strUrl, hei, wid, pagetitle)
|
||||
{
|
||||
var page = "/common/PageRedirection.do?Page="+ strUrl
|
||||
+ "&PopupYn=Y";
|
||||
|
||||
var $dialog = $('<div></div>')
|
||||
.html('<iframe style="border: 0px; " src="' + page + '" width="100%" height="100%"></iframe>')
|
||||
.dialog({
|
||||
autoOpen: false
|
||||
, modal: true
|
||||
, height: hei
|
||||
, width: wid
|
||||
, title: pagetitle
|
||||
, open: function (event, ui)
|
||||
{
|
||||
$(".ui-icon-closethick").remove(); // 닫기 버튼 제거
|
||||
$('.ui-dialog-titlebar-close').css({
|
||||
width: '30px' // 닫기 버튼 너비
|
||||
// , height: '50px' // 닫기 버튼 높이
|
||||
});
|
||||
$(this).parent().find(".ui-dialog-titlebar").hide(); // 타이틀바 안보이게 처리
|
||||
}
|
||||
|
||||
, closeText: '닫기'
|
||||
});
|
||||
|
||||
$dialog.dialog('open');
|
||||
|
||||
// 팝업 화면 맨앞으로 배치
|
||||
$(".ui-dialog").css("z-index", "99");
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// Ajax 서버 통신 모음
|
||||
// ----------------------------------------
|
||||
var proc =
|
||||
{
|
||||
// 인스던트 신청 등록
|
||||
fn_req_incident_save : function ()
|
||||
{
|
||||
var form = $('#svcDeskReqManage')[0];
|
||||
var formData = new FormData(form);
|
||||
|
||||
$.ajax({
|
||||
url: '/srm/addReqIncident.do'
|
||||
, type: 'post'
|
||||
, enctype:'multipart/form-data'
|
||||
, data: formData
|
||||
, dataType: 'json'
|
||||
, processData:false
|
||||
, contentType:false
|
||||
, cache:false
|
||||
, success: function(data)
|
||||
{
|
||||
alert("신청 완료 되었습니다.");
|
||||
fncSvcDeskReqList();
|
||||
|
||||
},
|
||||
error: function(errorThrown)
|
||||
{
|
||||
alert("인스던트 신청 등록중 오류가 발생하였습니다. \n 시스템관리자에게 문의해 주시기 바랍니다.");
|
||||
console.log(JSON.stringify(errorThrown));
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
,
|
||||
// 서비스정보 추출
|
||||
fn_get_service_info : function (inData)
|
||||
{
|
||||
$.ajax({
|
||||
url: '/srm/getIncidentForm.do'
|
||||
, type: 'post'
|
||||
, data: JSON.stringify(inData)
|
||||
, dataType: 'json'
|
||||
, contentType: 'application/json'
|
||||
, async: false
|
||||
, success: function(data)
|
||||
{
|
||||
console.log(JSON.stringify(data));
|
||||
|
||||
// 제목세팅
|
||||
$('#vcIncidentTitle').val(data.resultService.vcServiceName);
|
||||
|
||||
// 조치예정자 고유번호
|
||||
$('#inChargeUser').val(data.resultService.inChargeUser);
|
||||
|
||||
// 조치예정자명
|
||||
$('#vcChargeUser').val(data.resultService.vcChargeUser);
|
||||
|
||||
// 본문세팅
|
||||
// drawEditor(data.resultService.txDefaultForm);
|
||||
drawEditor("serviceBody", data.resultService.txDefaultForm, false);
|
||||
},
|
||||
error: function(errorThrown)
|
||||
{
|
||||
alert("자산 중분류 조회중 오류가 발생하였습니다. \n 시스템관리자에게 문의해 주시기 바랍니다.");
|
||||
console.log(JSON.stringify(errorThrown));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<!-- javascript warning tag -->
|
||||
<noscript class="noScriptTitle"><spring:message code="common.noScriptTitle.msg" /></noscript>
|
||||
|
||||
<form:form modelAttribute="svcDeskReqManage" name="svcDeskReqManage" method="post" enctype="multipart/form-data">
|
||||
|
||||
<!-- body_wrap :start -->
|
||||
<div class="body_wrap">
|
||||
|
||||
<!-- main title -->
|
||||
<div class="main_titWrap">
|
||||
|
||||
<h3>서비스신청</h3>
|
||||
|
||||
<!-- location :s -->
|
||||
<div class="location">
|
||||
<div class="location-cont">
|
||||
<div>
|
||||
<ul class="route_navi">
|
||||
<li><a href="#" title="홈"><span class="home">홈</span></a></li>
|
||||
<li><a href="#" title="SR관리">SR관리</a></li>
|
||||
<li>인스던트 신청</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--//location :e -->
|
||||
</div>
|
||||
<!--//main title -->
|
||||
|
||||
|
||||
<!-- Form 테이블 :start -->
|
||||
<div class="bbs_view">
|
||||
|
||||
<!-- 등록폼 -->
|
||||
<table class="tbl_form" summary="<spring:message code="common.summary.list" arguments="등록" />">
|
||||
<caption>인스던트 등록</caption>
|
||||
<colgroup>
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 30%">
|
||||
<col style="width: 10%">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 10%">
|
||||
<col style="width: 20%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th> 신청번호 </th>
|
||||
<td></td>
|
||||
<th> 신청자 </th>
|
||||
<td>
|
||||
<input type="text" name="vcReqUser" id="vcReqUser" value="${vcReqUser}"/>
|
||||
|
||||
<a href="<c:url value='/cmm/selectUserListPopup.do' />" target="_blank" title="새 창으로 이동" onclick="fn_User_Search('조치예정', 'inRegUser', '', 'vcRegUser', '', '');return false;">
|
||||
<img src="<c:url value='/egov/images/egovframework/com/cmm/btn/btn_search.gif' />" alt="조치예정자 검색" title="조치예정자 검색">
|
||||
</a>
|
||||
|
||||
<input type="hidden" name="inReqUser" id="inReqUser" value="${inReqUser}" >
|
||||
|
||||
</td>
|
||||
<th> 신청일시 </th>
|
||||
<td>
|
||||
<input type="text" class="btn_calendar" name="dtReqDateTime" id="dtReqDateTime" value="${dtReqDateTime}" readonly style="width:80%;"/>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th> 서비스 </th>
|
||||
<td>
|
||||
<select name="inServiceCode" id="inServiceCode" onchange="selInServiceCode()" style="width: 80%;" >
|
||||
<c:forEach items="${serviceList}" var="result" varStatus="status">
|
||||
<option value="${result.value}" > ${result.label} </option><!-- 분류코드명 -->
|
||||
</c:forEach>
|
||||
</select>
|
||||
</td>
|
||||
<th> 조치예정자 </th>
|
||||
<td>
|
||||
<input type="text" name="vcChargeUser" id="vcChargeUser" value=""/>
|
||||
|
||||
<a href="<c:url value='/cmm/selectUserListPopup.do' />" target="_blank" title="새 창으로 이동" onclick="fn_User_Search('조치예정', 'inChargeUser', '', 'vcChargeUser', '', '');return false;">
|
||||
<img src="<c:url value='/egov/images/egovframework/com/cmm/btn/btn_search.gif' />" alt="조치예정자 검색" title="조치예정자 검색">
|
||||
</a>
|
||||
|
||||
<input type="hidden" name="inChargeUser" id="inChargeUser" value="" >
|
||||
|
||||
</td>
|
||||
<th> 완료요청일시 </th>
|
||||
<td>
|
||||
<input type="text" class="btn_calendar" name="dtCompleteReqDateTime" id="dtCompleteReqDateTime" value="${dtCompleteReqDateTime}" readonly style="width:80%;"/>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th> 제목 </th>
|
||||
<td colspan=2>
|
||||
<input type="text" name="vcIncidentTitle" id="vcIncidentTitle" value="" style="width:90%;"/>
|
||||
</td>
|
||||
|
||||
<th><spring:message code="cop.atchFile" /></th>
|
||||
<td colspan=2>
|
||||
<!-- attached file Start -->
|
||||
<div>
|
||||
<input type="file" name="file_1" id="egovComFileUploader" onChange="fnImgChange(this)" multiple>
|
||||
</div>
|
||||
<div id="egovComFileList"></div>
|
||||
<!-- attached file End -->
|
||||
</td>
|
||||
|
||||
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
||||
<textarea id="serviceBody" name="serviceBody" >
|
||||
</textarea>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- main btn : start -->
|
||||
<div class="btn_group">
|
||||
<!-- 왼쪽영역-->
|
||||
<div style="text-align: left;position: absolute;">
|
||||
<!-- 목록 -->
|
||||
<button type="button" class="btn-function" id="btnList" style="background: blue;" onclick="fncSvcDeskReqList(); return false;" title="<spring:message code="button.list"/>">
|
||||
<spring:message code="button.list"/>
|
||||
</button>
|
||||
</div>
|
||||
<!--//왼쪽영역-->
|
||||
<!-- 오른쪽영역-->
|
||||
<div>
|
||||
<button type="button" class="btn-etc" title="신청" onclick="fncSvcDeskReqIncidentInsert(); return false;">
|
||||
<spring:message code="button.create" />
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<!-- main btn : end -->
|
||||
|
||||
</div>
|
||||
<!-- body_wrap :end -->
|
||||
|
||||
<!-- 검색조건 유지 -->
|
||||
<input type="hidden" name="orgnztId" value="" >
|
||||
<input type="hidden" name="searchCondition" value="<c:out value='${searchVO.searchCondition}'/>" >
|
||||
<input type="hidden" name="searchKeyword" value="<c:out value='${searchVO.searchKeyword}'/>" >
|
||||
<input type="hidden" name="pageIndex" value="<c:out value='${searchVO.pageIndex}'/>" >
|
||||
<input type="hidden" name="multiUserSelectYn" value="" >
|
||||
|
||||
<!-- 입력정보 -->
|
||||
<input type="hidden" id="txIncidentBody" name="txIncidentBody" value="" >
|
||||
<input type="hidden" id="approvalsId" name="approvalsId" value="" >
|
||||
<input type="hidden" id="approvalsName" name="approvalsName" value="" >
|
||||
|
||||
<!-- 승인요청 인자 -->
|
||||
<input type="hidden" id="txComment" name="txComment" value="">
|
||||
<input type="hidden" id="reqApprovalYn" name="reqApprovalYn" value="">
|
||||
|
||||
|
||||
</form:form>
|
||||
|
||||
243
src/main/webapp/WEB-INF/jsp/itms/srm/SvcDeskReqList.jsp
Normal file
243
src/main/webapp/WEB-INF/jsp/itms/srm/SvcDeskReqList.jsp
Normal file
@ -0,0 +1,243 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<%
|
||||
/**
|
||||
* @Class Name : SvcDeskReqList.java
|
||||
* @Description : 서비스데스크 신청 목록 화면
|
||||
* @Modification Information
|
||||
* @
|
||||
* @ 수정일 수정자 수정내용
|
||||
* @ ------- -------- ---------------------------
|
||||
* @ 2025.12.15 나혁제 최초 생성
|
||||
*
|
||||
* @author URP 인프라본부 나혁제
|
||||
* @since 2025.12.15
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
*/
|
||||
%>
|
||||
|
||||
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||
|
||||
<title>서비스데스크 신청정보</title>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
|
||||
|
||||
<script type="text/javaScript" language="javascript" defer="defer">
|
||||
|
||||
//----------------------------------------
|
||||
// 화면 초기화
|
||||
// ----------------------------------------
|
||||
$(document).ready(function()
|
||||
{
|
||||
|
||||
});
|
||||
|
||||
//----------------------------------------
|
||||
// 검색
|
||||
// ----------------------------------------
|
||||
function fncSearchSvcDeskList()
|
||||
{
|
||||
linkPage(1);
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 신청 등록 화면 이동
|
||||
// ----------------------------------------
|
||||
function fncAddSvcDeskReqInsert()
|
||||
{
|
||||
// 2025.11.19 나혁제 호출방식 변경
|
||||
// location.replace("<c:url value='/srm/insertViewIncident.do'/>");
|
||||
document.listForm.action = "<c:url value='/srm/insertViewReqIncident.do'/>";
|
||||
document.listForm.submit();
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 상세조회
|
||||
// ----------------------------------------
|
||||
function fncSelectReqIncident(vcReqIncidentNum)
|
||||
{
|
||||
document.listForm.vcReqIncidentNum.value = vcReqIncidentNum;
|
||||
document.listForm.action = "<c:url value='/srm/getReqIncidentBySeq.do'/>";
|
||||
document.listForm.submit();
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 검색(페이지)
|
||||
// ----------------------------------------
|
||||
function linkPage(pageIndex)
|
||||
{
|
||||
var arComplete = []; // 처리상태
|
||||
var arStatus = []; // 승인상태
|
||||
|
||||
if($("#chk2_1").is(":checked")) arComplete.push("0");
|
||||
if($("#chk2_2").is(":checked")) arComplete.push("1");
|
||||
|
||||
if($("#chk1_1").is(":checked")) arStatus.push("0");
|
||||
if($("#chk1_2").is(":checked")) arStatus.push("1");
|
||||
if($("#chk1_3").is(":checked")) arStatus.push("2");
|
||||
if($("#chk1_4").is(":checked")) arStatus.push("3");
|
||||
|
||||
console.log("arComplete =>" + arComplete);
|
||||
console.log("arStatus =>" + arStatus);
|
||||
|
||||
$("#complete").val(arComplete.join(","));
|
||||
$("#status" ).val(arStatus.join(","));
|
||||
|
||||
console.log("complete =>" + complete);
|
||||
console.log("status =>" + status);
|
||||
|
||||
document.listForm.pageIndex.value = pageIndex;
|
||||
// 2025.12.04 나혁제 한페이지당 목록건수 추가
|
||||
document.listForm.pageUnit.value = document.listForm.selPageSize.value;
|
||||
|
||||
document.listForm.action = "<c:url value='/srm/searchReqIncident.do'/>";
|
||||
document.listForm.submit();
|
||||
}
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<!-- javascript warning tag -->
|
||||
<noscript class="noScriptTitle"><spring:message code="common.noScriptTitle.msg" /></noscript>
|
||||
|
||||
<form:form name="listForm" action="${pageContext.request.contextPath}/srm/searchReqIncident.do" method="post">
|
||||
|
||||
<!-- body_wrap :start -->
|
||||
<div class="body_wrap">
|
||||
|
||||
<div id="navTitle">
|
||||
</div>
|
||||
|
||||
<!-- 검색 :s -->
|
||||
<div class="searchArea single-row">
|
||||
<table>
|
||||
<colgroup>
|
||||
<col width="10%">
|
||||
<col width="30%">
|
||||
<col width="10%">
|
||||
<col width="50%">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colspan=5>
|
||||
<label>신청번호:</label>
|
||||
<input class="s_input" name="incidentReqNum" type="text" size="35" maxlength="155" style="width: 200px;"
|
||||
value='<c:out value="${searchVO.incidentReqNum}"/>' title="<spring:message code="title.search" /> <spring:message code="input.input" />" >
|
||||
|
||||
<label>신청자:</label>
|
||||
<input class="s_input" name="reqUser" type="text" size="35" maxlength="155" style="width: 200px;"
|
||||
value='<c:out value="${searchVO.reqUser}"/>' title="<spring:message code="title.search" /> <spring:message code="input.input" />" >
|
||||
|
||||
<label>제목:</label>
|
||||
<input class="s_input" name="incidentTitle" type="text" size="35" maxlength="155" style="width: 200px;"
|
||||
value='<c:out value="${searchVO.incidentTitle}"/>' title="<spring:message code="title.search" /> <spring:message code="input.input" />" >
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="btnArea">
|
||||
<button type="button" class="btn-search" onclick="fncSearchSvcDeskList(); return false;" title="조회">조회</button>
|
||||
</div>
|
||||
</div>
|
||||
<!--//검색 :e -->
|
||||
|
||||
<!-- tbl list : start -->
|
||||
<div class="tbl_list" >
|
||||
|
||||
<!-- 목록영역 -->
|
||||
<table class="table" summary="<spring:message code="common.summary.list" arguments="자산관리" />">
|
||||
<caption> 서비스데스크 인스던트 관리 <spring:message code="title.list" /></caption>
|
||||
<colgroup>
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 16%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: 6%;">
|
||||
<col style="width: 8%;">
|
||||
<col style="width: *;">
|
||||
</colgroup>
|
||||
|
||||
<thead>
|
||||
<tr>
|
||||
<th>신청번호</th>
|
||||
<th>접수번호</th>
|
||||
<th>서비스</th>
|
||||
<th>조치(예정)담당자</th>
|
||||
<th>신청일시</th>
|
||||
<th>신청자</th>
|
||||
<th>진행상태</th>
|
||||
<th>완료(예정)일시</th>
|
||||
<th>제목</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
<tbody class="ov">
|
||||
<c:if test="${fn:length(resultList) == 0}">
|
||||
<tr>
|
||||
<td colspan="8"><spring:message code="common.nodata.msg" /></td>
|
||||
</tr>
|
||||
</c:if>
|
||||
<c:forEach var="incidentReqList" items="${resultList}" varStatus="status">
|
||||
<tr>
|
||||
<td> <a href="javascript:fncSelectReqIncident('${incidentReqList.vcReqIncidentNum}')" style="text-align: center;">${incidentReqList.vcReqIncidentNum}</a>
|
||||
<td><c:out value="${incidentReqList.vcIncidentNum}"/></td>
|
||||
<td><c:out value="${incidentReqList.vcServiceName}"/></td>
|
||||
<td><c:out value="${incidentReqList.vcChargeUser}"/></td>
|
||||
<td><c:out value="${incidentReqList.dtReqDateTime}"/></td>
|
||||
<td><c:out value="${incidentReqList.vcReqUser}"/></td>
|
||||
<td><c:out value="${incidentReqList.vcReqStatus}"/></td>
|
||||
<td><c:out value="${incidentReqList.dtCompleteReqDateTime}"/></td>
|
||||
<td><c:out value="${incidentReqList.vcIncidentTitle}"/></td>
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<!-- tbl list : end -->
|
||||
|
||||
<c:if test="${!empty searchVO.pageIndex }">
|
||||
<!-- paging navigation -->
|
||||
<div class="pagination">
|
||||
<ul><ui:pagination paginationInfo="${paginationInfo}" type="image" jsFunction="linkPage"/></ul>
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
|
||||
<!-- main btn : start -->
|
||||
<div class="btn_group">
|
||||
<div>
|
||||
<button type="button" class="btn-function" title="등록" onclick="fncAddSvcDeskReqInsert(); return false;" ><spring:message code="button.create" /> <!-- 등록 -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- main btn : end -->
|
||||
|
||||
</div>
|
||||
<!-- body_wrap :start -->
|
||||
|
||||
<input type="hidden" name="pageIndex" value="<c:out value='${searchVO.pageIndex}'/>"/>
|
||||
<input type="hidden" name="pageUnit" value="<c:out value='${searchVO.pageSize}'/>"/> <!-- 2025.12.04 나혁제 페이지당건수 -->
|
||||
|
||||
<!-- 입력조건 -->
|
||||
<input type="hidden" name="complete" id="complete" value=""/>
|
||||
<input type="hidden" name="status" id="status" value=""/>
|
||||
|
||||
<!-- 상세조회 입력조건 -->
|
||||
<input type="hidden" name="vcReqIncidentNum" id="vcReqIncidentNum" value=""/>
|
||||
|
||||
|
||||
|
||||
</form:form>
|
||||
481
src/main/webapp/WEB-INF/jsp/itms/srm/SvcDeskReqUpdate.jsp
Normal file
481
src/main/webapp/WEB-INF/jsp/itms/srm/SvcDeskReqUpdate.jsp
Normal file
@ -0,0 +1,481 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<%
|
||||
/**
|
||||
* @Class Name : SvcDeskReqUpdate.jsp
|
||||
* @Description : 서비스데스크 인스턴스 신청 변경 화면
|
||||
* @Modification Information
|
||||
* @
|
||||
* @ 수정일 수정자 수정내용
|
||||
* @ ------- -------- ---------------------------
|
||||
* @ 2025.12.16 나혁제 최초 생성
|
||||
*
|
||||
* @author URP 인프라본부 나혁제
|
||||
* @since 2025.12.16
|
||||
* @version 1.0
|
||||
* @see
|
||||
*
|
||||
* Copyright (C) 2009 by MOPAS All right reserved.
|
||||
*/
|
||||
%>
|
||||
|
||||
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
|
||||
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui" %>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
|
||||
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
|
||||
|
||||
|
||||
<title> 인스던트 신청 수정 </title>
|
||||
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
|
||||
<script type="text/javascript" src="<c:url value="/validator.do"/>"></script>
|
||||
<script type="text/javascript" src="<c:url value='/egov/js/showModalDialog.js'/>" ></script>
|
||||
|
||||
<!-- tinyMCE Editor -->
|
||||
<script charset="utf-8" type="text/javascript" src="${pageContext.request.contextPath}/lib/oss/tinymce/tinymce.min.js"></script>
|
||||
|
||||
<!-- tinymce setting 2025.05.12 나혁제 tinymce_uritms_setting.js 이관 -->
|
||||
<script charset="utf-8" type="text/javascript" src="<c:url value='/js/tinymce_uritms_setting.js?ver=1'/>" ></script>
|
||||
|
||||
<!-- validation 처리 -->
|
||||
<validator:javascript formName="svcDeskReqManage" staticJavascript="false" xhtml="true" cdata="false"/>
|
||||
|
||||
<!-- 파일처리 -->
|
||||
<script type="text/javascript" src="<c:url value='/egov/js/EgovMultiFiles.js'/>" ></script>
|
||||
|
||||
<!-- 시간처리 -->
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery-ui-timepicker-addon.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="${ctx}/css/jquery-ui-timepicker-addon.css">
|
||||
|
||||
<script type="text/javaScript" language="javascript">
|
||||
|
||||
//----------------------------------------
|
||||
// 화면 초기화
|
||||
// ----------------------------------------
|
||||
$(document).ready(function()
|
||||
{
|
||||
// 접수일시, 완료요청일시 시간까지 세팅
|
||||
$("#dtReqDateTime, #dtCompleteReqDateTime").datetimepicker({
|
||||
dateFormat:'yy-mm-dd',
|
||||
monthNamesShort:[ '1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월' ],
|
||||
dayNamesMin:[ '일', '월', '화', '수', '목', '금', '토' ],
|
||||
changeMonth:true,
|
||||
changeYear:true,
|
||||
showMonthAfterYear:true,
|
||||
|
||||
// timepicker 설정
|
||||
timeFormat:'HH:mm',
|
||||
controlType:'select',
|
||||
oneLine:true,
|
||||
});
|
||||
|
||||
// 멀티파일 설정
|
||||
var maxFileNum = 3;
|
||||
var multi_selector = new MultiSelector( document.getElementById( 'egovComFileList' ), maxFileNum );
|
||||
multi_selector.addElement( document.getElementById( 'egovComFileUploader' ) );
|
||||
|
||||
// drawEditor("");
|
||||
drawEditor("serviceBody", "", false);
|
||||
});
|
||||
|
||||
//----------------------------------------
|
||||
// 화면 초기화(Form 완전 로딩후 )
|
||||
// ----------------------------------------
|
||||
$(window).on("load", function()
|
||||
{
|
||||
var strForm = document.getElementById("serviceBody2").value;
|
||||
drawEditor("serviceBody", strForm, true);
|
||||
});
|
||||
|
||||
//----------------------------------------
|
||||
// 목록 화면으로 이동처리
|
||||
// ----------------------------------------
|
||||
function fncSvcDeskReqList()
|
||||
{
|
||||
var varFrom = document.getElementById("svcDeskReqManage");
|
||||
varFrom.action = "<c:url value='/srm/searchReqIncident.do'/>";
|
||||
varFrom.submit();
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 사용자 검색 팝업
|
||||
// ----------------------------------------
|
||||
function fn_User_Search( strTitle
|
||||
, frmUniqId
|
||||
, frmEmplNo
|
||||
, frmEmplyrNm
|
||||
, frmOrgnztNm
|
||||
, multiUserSelectYn
|
||||
)
|
||||
{
|
||||
var arrParam = new Array(6);
|
||||
arrParam[0] = window;
|
||||
arrParam[1] = strTitle;
|
||||
arrParam[2] = frmUniqId;
|
||||
arrParam[3] = frmEmplNo;
|
||||
arrParam[4] = frmEmplyrNm;
|
||||
arrParam[5] = frmOrgnztNm;
|
||||
|
||||
var strUrl = "/cmm/selectUserListPopup.do?multiUserSelectYn="+multiUserSelectYn;
|
||||
|
||||
window.showModalDialog("<c:url value='"+strUrl+"' />"
|
||||
, arrParam
|
||||
,"dialogWidth:900px;dialogHeight:750px;resizable:yes;center:yes");
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 서비스 정보 변경시
|
||||
// ----------------------------------------
|
||||
function selInServiceCode()
|
||||
{
|
||||
var inServiceCode = $('#inServiceCode option:selected').val() ;
|
||||
|
||||
var inData = {};
|
||||
inData = {"inServiceCode":inServiceCode};
|
||||
|
||||
proc.fn_get_service_info(inData);
|
||||
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 인스던트 변경처리
|
||||
// ----------------------------------------
|
||||
function fncSvcDeskReqIncidentUpdate()
|
||||
{
|
||||
var bYes = confirm("인스던트 신청 변경 처리를 하시겠습니까?");
|
||||
if(bYes==false) return;
|
||||
|
||||
var form = document.svcDeskReqManage;
|
||||
|
||||
form.txIncidentBody.value = tinyMCE.get("serviceBody").getContent(); // 평문
|
||||
|
||||
//input item Client-Side validate
|
||||
if (!validateSvcDeskReqManage(form))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// 파일체크 로직 추가
|
||||
if (!fncAttachFileCheck())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
proc.fn_incident_save();
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------
|
||||
// 2025.12.02 나혁제 파일체크 로직 추가
|
||||
// 첨부파일 체크
|
||||
// ----------------------------------------
|
||||
function fncAttachFileCheck()
|
||||
{
|
||||
// 결과가 false인경우 허용되지 않음
|
||||
var resultExtension = EgovMultiFilesChecker.checkExtensions("egovComFileUploader", "<c:out value='${fileUploadExtensions}'/>");
|
||||
if (!resultExtension)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// 파일당 1M까지 허용 (1K=1024), 결과가 false인경우 허용되지 않음
|
||||
var resultSize = EgovMultiFilesChecker.checkFileSize("egovComFileUploader", <c:out value='${fileUploadMaxSize}'/>);
|
||||
if (!resultSize)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// 팝업 오픈
|
||||
// ----------------------------------------
|
||||
function PopupOpen(strUrl, hei, wid, pagetitle)
|
||||
{
|
||||
var page = "/common/PageRedirection.do?Page="+ strUrl
|
||||
+ "&PopupYn=Y";
|
||||
|
||||
var $dialog = $('<div></div>')
|
||||
.html('<iframe style="border: 0px; " src="' + page + '" width="100%" height="100%"></iframe>')
|
||||
.dialog({
|
||||
autoOpen: false
|
||||
, modal: true
|
||||
, height: hei
|
||||
, width: wid
|
||||
, title: pagetitle
|
||||
, open: function (event, ui)
|
||||
{
|
||||
$(".ui-icon-closethick").remove(); // 닫기 버튼 제거
|
||||
$('.ui-dialog-titlebar-close').css({
|
||||
width: '30px' // 닫기 버튼 너비
|
||||
// , height: '50px' // 닫기 버튼 높이
|
||||
});
|
||||
$(this).parent().find(".ui-dialog-titlebar").hide(); // 타이틀바 안보이게 처리
|
||||
}
|
||||
|
||||
, closeText: '닫기'
|
||||
});
|
||||
|
||||
$dialog.dialog('open');
|
||||
|
||||
// 팝업 화면 맨앞으로 배치
|
||||
$(".ui-dialog").css("z-index", "99");
|
||||
}
|
||||
|
||||
//----------------------------------------
|
||||
// Ajax 서버 통신 모음
|
||||
// ----------------------------------------
|
||||
var proc =
|
||||
{
|
||||
// 서비스 정보 수정 및 삭제
|
||||
fn_incident_save : function ()
|
||||
{
|
||||
var strUrl = "";
|
||||
strUrl = "/srm/updateReqIncident.do";
|
||||
|
||||
var form = $('#svcDeskReqManage')[0];
|
||||
var formData = new FormData(form);
|
||||
|
||||
$.ajax({
|
||||
url: strUrl
|
||||
, type: 'post'
|
||||
, enctype:'multipart/form-data'
|
||||
, data: formData
|
||||
, dataType: 'json'
|
||||
, processData:false
|
||||
, contentType:false
|
||||
, cache:false
|
||||
, success: function(data)
|
||||
{
|
||||
if(data.resultCd=="0")
|
||||
{
|
||||
alert("수정 완료 되었습니다.");
|
||||
|
||||
fncSvcDeskReqList();
|
||||
}
|
||||
else
|
||||
{
|
||||
alert("오류코드["+data.resultCd+"], 오류메세지["+data.resultMsg+"]");
|
||||
}
|
||||
},
|
||||
error: function(errorThrown)
|
||||
{
|
||||
alert("인스던트 신청 정보 수정 처리중 오류가 발생 하였습니다. \n 시스템 관리자에게 연락바랍니다.");
|
||||
|
||||
console.log(JSON.stringify(errorThrown));
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
,
|
||||
// 서비스정보 추출
|
||||
fn_get_service_info : function (inData)
|
||||
{
|
||||
$.ajax({
|
||||
url: '/srm/getIncidentForm.do'
|
||||
, type: 'post'
|
||||
, data: JSON.stringify(inData)
|
||||
, dataType: 'json'
|
||||
, contentType: 'application/json'
|
||||
, async: false
|
||||
, success: function(data)
|
||||
{
|
||||
console.log(JSON.stringify(data));
|
||||
|
||||
// 제목세팅
|
||||
$('#vcIncidentTitle').val(data.resultService.vcServiceName);
|
||||
|
||||
// 조치예정자 고유번호
|
||||
$('#inChargeUser').val(data.resultService.inChargeUser);
|
||||
|
||||
// 조치예정자명
|
||||
$('#vcChargeUser').val(data.resultService.vcChargeUser);
|
||||
|
||||
// 본문세팅
|
||||
// drawEditor(data.resultService.txDefaultForm);
|
||||
drawEditor("serviceBody", data.resultService.txDefaultForm, false);
|
||||
},
|
||||
error: function(errorThrown)
|
||||
{
|
||||
alert("자산 중분류 조회중 오류가 발생하였습니다. \n 시스템관리자에게 문의해 주시기 바랍니다.");
|
||||
console.log(JSON.stringify(errorThrown));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<!-- javascript warning tag -->
|
||||
<noscript class="noScriptTitle"><spring:message code="common.noScriptTitle.msg" /></noscript>
|
||||
|
||||
<form:form modelAttribute="svcDeskReqManage" name="svcDeskReqManage" method="post" enctype="multipart/form-data">
|
||||
|
||||
<!-- body_wrap :start -->
|
||||
<div class="body_wrap">
|
||||
|
||||
<!-- main title -->
|
||||
<div class="main_titWrap">
|
||||
|
||||
<h3>서비스신청정보 변경</h3>
|
||||
|
||||
<!-- location :s -->
|
||||
<div class="location">
|
||||
<div class="location-cont">
|
||||
<div>
|
||||
<ul class="route_navi">
|
||||
<li><a href="#" title="홈"><span class="home">홈</span></a></li>
|
||||
<li><a href="#" title="SR관리">SR관리</a></li>
|
||||
<li>인스던트 신청</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--//location :e -->
|
||||
</div>
|
||||
<!--//main title -->
|
||||
|
||||
|
||||
<!-- Form 테이블 :start -->
|
||||
<div class="bbs_view">
|
||||
|
||||
<!-- 등록폼 -->
|
||||
<table class="tbl_form" summary="<spring:message code="common.summary.list" arguments="등록" />">
|
||||
<caption>인스던트 등록</caption>
|
||||
<colgroup>
|
||||
<col style="width: 10%;">
|
||||
<col style="width: 30%">
|
||||
<col style="width: 10%">
|
||||
<col style="width: 20%;">
|
||||
<col style="width: 10%">
|
||||
<col style="width: 20%;">
|
||||
</colgroup>
|
||||
<tbody>
|
||||
<tr>
|
||||
<th> 신청번호 </th>
|
||||
<td> <c:out value="${resultReqIncident.vcReqIncidentNum}"/> </td>
|
||||
<th> 신청자 </th>
|
||||
<td>
|
||||
<input type="text" name="vcReqUser" id="vcReqUser" value="${resultReqIncident.vcReqUser}" readonly />
|
||||
|
||||
<a href="<c:url value='/cmm/selectUserListPopup.do' />" target="_blank" title="새 창으로 이동" onclick="fn_User_Search('조치예정', 'inReqUser', '', 'vcReqUser', '', '');return false;">
|
||||
<img src="<c:url value='/egov/images/egovframework/com/cmm/btn/btn_search.gif' />" alt="조치예정자 검색" title="조치예정자 검색">
|
||||
</a>
|
||||
|
||||
<input type="hidden" name="inReqUser" id="inReqUser" value="${resultReqIncident.inReqUser}" >
|
||||
|
||||
</td>
|
||||
<th> 신청일시 </th>
|
||||
<td>
|
||||
<input type="text" class="btn_calendar" name="dtReqDateTime" id="dtReqDateTime" value="${resultReqIncident.dtReqDateTime}" readonly style="width:80%;"/>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th> 서비스 </th>
|
||||
<td>
|
||||
<select name="inServiceCode" id="inServiceCode" onchange="selInServiceCode()" style="width: 80%;" >
|
||||
<c:forEach items="${serviceList}" var="result" varStatus="status">
|
||||
<option value="${result.value}" <c:if test="${result.value == resultReqIncident.inServiceCode}">selected</c:if> > ${result.label} </option><!-- 분류코드명 -->
|
||||
</c:forEach>
|
||||
</select>
|
||||
</td>
|
||||
<th> 조치예정자 </th>
|
||||
<td>
|
||||
<input type="text" name="vcChargeUser" id="vcChargeUser" value="${resultReqIncident.vcChargeUser}"/>
|
||||
|
||||
<a href="<c:url value='/cmm/selectUserListPopup.do' />" target="_blank" title="새 창으로 이동" onclick="fn_User_Search('조치예정', 'inChargeUser', '', 'vcChargeUser', '', '');return false;">
|
||||
<img src="<c:url value='/egov/images/egovframework/com/cmm/btn/btn_search.gif' />" alt="조치예정자 검색" title="조치예정자 검색">
|
||||
</a>
|
||||
|
||||
<input type="hidden" name="inChargeUser" id="inChargeUser" value="${resultReqIncident.inChargeUser}" >
|
||||
|
||||
</td>
|
||||
<th> 완료요청일시 </th>
|
||||
<td>
|
||||
<input type="text" class="btn_calendar" name="dtCompleteReqDateTime" id="dtCompleteReqDateTime" value="${resultReqIncident.dtCompleteReqDateTime}" readonly style="width:80%;"/>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th rowspan=2 > 제목 </th>
|
||||
<td rowspan=2 colspan=2 >
|
||||
<input type="text" name="vcIncidentTitle" id="vcIncidentTitle" value="${resultReqIncident.vcIncidentTitle}" style="width:90%;"/>
|
||||
</td>
|
||||
|
||||
<th><spring:message code="cop.atchFile" /></th>
|
||||
<td colspan=2>
|
||||
<!-- attached file Start -->
|
||||
<div>
|
||||
<input type="file" name="file_1" id="egovComFileUploader" onChange="fnImgChange(this)" multiple>
|
||||
</div>
|
||||
<div id="egovComFileList"></div>
|
||||
</div>
|
||||
<!-- attached file End -->
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th>기본첨부파일</th>
|
||||
<td colspan=2>
|
||||
<c:import url="/cmm/selectFileInfs.do" charEncoding="utf-8">
|
||||
<c:param name="param_atchFileId" value="${resultReqIncident.atchFileId}" />
|
||||
<c:param name="strItmsYn" value="Y" />
|
||||
</c:import>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
|
||||
<textarea id="serviceBody" name="serviceBody" ></textarea>
|
||||
<textarea id="serviceBody2" name="serviceBody2" style="display:none;">${resultReqIncident.txIncidentBody}</textarea>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- main btn : start -->
|
||||
<div class="btn_group">
|
||||
<!-- 왼쪽영역-->
|
||||
<div style="text-align: left;position: absolute;">
|
||||
<!-- 목록 -->
|
||||
<button type="button" class="btn-function" id="btnList" style="background: blue;" onclick="fncSvcDeskReqList(); return false;" title="<spring:message code="button.list"/>">
|
||||
<spring:message code="button.list"/>
|
||||
</button>
|
||||
</div>
|
||||
<!--//왼쪽영역-->
|
||||
<!-- 오른쪽영역-->
|
||||
<button type="button" class="btn-etc" title="<spring:message code="수정" />" onclick="fncSvcDeskReqIncidentUpdate(); return false;">
|
||||
수정
|
||||
</button>
|
||||
<!-- 오른쪽영역-->
|
||||
</div>
|
||||
<!-- main btn : end -->
|
||||
|
||||
</div>
|
||||
<!-- body_wrap :end -->
|
||||
|
||||
<!-- 검색조건 유지 -->
|
||||
<input type="hidden" name="orgnztId" value="" >
|
||||
<input type="hidden" name="searchCondition" value="<c:out value='${searchVO.searchCondition}'/>" >
|
||||
<input type="hidden" name="searchKeyword" value="<c:out value='${searchVO.searchKeyword}'/>" >
|
||||
<input type="hidden" name="pageIndex" value="<c:out value='${searchVO.pageIndex}'/>" >
|
||||
<input type="hidden" name="multiUserSelectYn" value="" >
|
||||
|
||||
<!-- 입력정보 -->
|
||||
<input type="hidden" id="txIncidentBody" name="txIncidentBody" value="" >
|
||||
<input type="hidden" id="vcReqIncidentNum" name="vcReqIncidentNum" value="${resultReqIncident.vcReqIncidentNum}" >
|
||||
|
||||
|
||||
</form:form>
|
||||
|
||||
@ -105,9 +105,6 @@
|
||||
$(window).on("load", function()
|
||||
{
|
||||
var strForm = document.getElementById("serviceBody2").value;
|
||||
|
||||
// drawEditor(strForm);
|
||||
|
||||
drawEditor("serviceBody", strForm, false);
|
||||
});
|
||||
|
||||
@ -741,9 +738,9 @@
|
||||
<th>기존첨부파일</th>
|
||||
<td colspan=3>
|
||||
<c:import url="/cmm/selectFileInfs.do" charEncoding="utf-8">
|
||||
<c:param name="param_atchFileId" value="${resultIncident.atchFileId}" />
|
||||
<c:param name="strItmsYn" value="Y" />
|
||||
</c:import>
|
||||
<c:param name="param_atchFileId" value="${resultIncident.atchFileId}" />
|
||||
<c:param name="strItmsYn" value="Y" />
|
||||
</c:import>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
@ -38,7 +38,21 @@
|
||||
<!-- bootstrap end -->
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="${ctx}/css/import.css?ver=1">
|
||||
<link rel="stylesheet" href="${ctx}/js/js-calendar/calendar-jquery-ui.css">
|
||||
|
||||
<script type="text/javascript" src="${ctx}/js/common_script.js?ver=1"></script>
|
||||
|
||||
<script type="text/javascript" src="${ctx}/js/jquery-2.2.4.min.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery-ui.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/calendar.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/js-calendar/jquery.ui.monthpicker.js"></script>
|
||||
|
||||
<!-- Resources -->
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/index.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/xy.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/percent.js"></script>
|
||||
<script type="text/javascript" src="${ctx}/js/amcharts5/themes/Animated.js"></script>
|
||||
|
||||
|
||||
<title>사용자포틀릿관리2</title>
|
||||
@ -273,17 +287,21 @@
|
||||
vEmptyportl = $('.col-lg-4');
|
||||
}
|
||||
|
||||
|
||||
alert(vEmptyportl);
|
||||
|
||||
var iChoPort = -1;
|
||||
var objChoPort ;
|
||||
for(var i=0; i<vEmptyportl.length; i++)
|
||||
{
|
||||
var objPrsnlId = vEmptyportl.eq(i).find('input[name="prsnlId"]').val();
|
||||
|
||||
// 빈술롯
|
||||
if(typeof objPrsnlId == "undefined" || objPrsnlId == "" || objPrsnlId == null)
|
||||
{
|
||||
if(potlWidth > 450)
|
||||
{
|
||||
iChoPort = i+4;
|
||||
iChoPort = i+10;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -296,6 +314,8 @@
|
||||
}
|
||||
}
|
||||
|
||||
alert(iChoPort);
|
||||
|
||||
$.ajax({
|
||||
url :"<c:url value='/potl/insertUserPortlet.do'/>"
|
||||
, type: "POST"
|
||||
@ -491,139 +511,138 @@
|
||||
<input name="prsnlIdForInsert" type="hidden" >
|
||||
<input id="portletCnt" type="hidden" value="${portletCnt}">
|
||||
|
||||
<%-- 2025.03.10 나혁제 신디자인 적용
|
||||
<div class="inner clearfix">
|
||||
--%>
|
||||
<div id="container">
|
||||
|
||||
<div class="content">
|
||||
|
||||
<div class="main_titWrap" style="width: 1400px;">
|
||||
|
||||
<div class="main_titWrap" style="width: 1400px;">
|
||||
|
||||
<h3>사용자 포틀릿관리</h3>
|
||||
|
||||
<!-- location :s -->
|
||||
<div class="location">
|
||||
<div class="location-cont">
|
||||
<div>
|
||||
<ul class="route_navi">
|
||||
<li><a href="#" title="홈"><span class="home">홈</span></a></li>
|
||||
<li><a href="#" title="시스템관리">시스템관리</a></li>
|
||||
<li>사용자 포틀릿관리</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--//location :e -->
|
||||
</div>
|
||||
|
||||
<span>※포틀릿을 하나도 지정하지 않는 경우 업무게시판, 공지사항 포틀릿은 기본으로 보여집니다.</span>
|
||||
<br><br>
|
||||
<div class="pgmList">
|
||||
<c:forEach var="result2" items="${resultList2}" varStatus="status">
|
||||
<div class="selectPgm" onclick="insertPortlet('${result2.prsnlId}','${result2.prsnlKoreanNm}','${result2.url}','${result2.portletWidth}' ,'${result2.portletHeight}')">
|
||||
<img class="pgmThumb" src="${result2.portletImgPath}">
|
||||
<p class="potlNm">${result2.prsnlKoreanNm}</p>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
|
||||
<h3>사용자 포틀릿관리</h3>
|
||||
|
||||
<!-- location :s -->
|
||||
<div class="location">
|
||||
<div class="location-cont">
|
||||
<div>
|
||||
<ul class="route_navi">
|
||||
<li><a href="#" title="홈"><span class="home">홈</span></a></li>
|
||||
<li><a href="#" title="시스템관리">시스템관리</a></li>
|
||||
<li>사용자 포틀릿관리</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!--//location :e -->
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<span>※포틀릿을 하나도 지정하지 않는 경우 업무게시판, 공지사항 포틀릿은 기본으로 보여집니다.</span>
|
||||
<br><br>
|
||||
<div class="pgmList">
|
||||
<c:forEach var="result2" items="${resultList2}" varStatus="status">
|
||||
<div class="selectPgm" onclick="insertPortlet('${result2.prsnlId}','${result2.prsnlKoreanNm}','${result2.url}','${result2.portletWidth}' ,'${result2.portletHeight}')">
|
||||
<img class="pgmThumb" src="${result2.portletImgPath}">
|
||||
<p class="potlNm">${result2.prsnlKoreanNm}</p>
|
||||
</div>
|
||||
</c:forEach>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<!-- 3개슬롯 3라인 , 2개슬롯 10라인 -->
|
||||
<%-- 라인당 3개 슬롯 --%>
|
||||
<c:forEach begin="1" end="9" step="1" varStatus="status1">
|
||||
<c:set var="bPortYn">0</c:set>
|
||||
|
||||
<c:forEach begin="1" end="3" step="1" varStatus="status1">
|
||||
<c:set var="bPortYn">0</c:set>
|
||||
<c:forEach var="result" items="${resultList}" varStatus="status2">
|
||||
<c:if test="${result.portletSeq == status1.index}">
|
||||
|
||||
<c:forEach var="result" items="${resultList}" varStatus="status2">
|
||||
<c:if test="${result.portletSeq == status1.index}">
|
||||
<c:set var="bPortYn">1</c:set>
|
||||
<div class="col-lg-4" id="insertColumn450">
|
||||
|
||||
<c:set var="bPortYn">1</c:set>
|
||||
<div class="col-lg-4" id="insertColumn450">
|
||||
|
||||
<!-- 450 고유번호 -->
|
||||
<input type="hidden" id="portlet450Seq" name="portlet450Seq" value='${status1.index }' />
|
||||
|
||||
<div class="portlet" style="width:${result.portletWidth}px; height:${result.portletHeight}px;">
|
||||
<div class="portlet-handle" id="${result.prsnlId}">
|
||||
|
||||
<input id="portletSeq" type="hidden" name="portletSeq" value='<c:out value="${result.portletSeq}" />' />
|
||||
<input id="prsnlId" type="hidden" name="prsnlId" value='<c:out value="${result.prsnlId}" />' />
|
||||
|
||||
<!-- 정보불러오기 -->
|
||||
<c:import url="${result.url}" charEncoding="utf-8">
|
||||
<c:param name="prsnlId" value="${result.prsnlId}"/>
|
||||
</c:import>
|
||||
|
||||
</div>
|
||||
<!-- 450 고유번호 -->
|
||||
<input type="hidden" id="portlet450Seq" name="portlet450Seq" value='${status1.index }' />
|
||||
|
||||
<div class="portlet" style="width:${result.portletWidth}px; height:${result.portletHeight}px;">
|
||||
<div class="portlet-handle" id="${result.prsnlId}">
|
||||
|
||||
<input id="portletSeq" type="hidden" name="portletSeq" value='<c:out value="${result.portletSeq}" />' />
|
||||
<input id="prsnlId" type="hidden" name="prsnlId" value='<c:out value="${result.prsnlId}" />' />
|
||||
|
||||
<!-- 정보불러오기 -->
|
||||
<c:import url="${result.url}" charEncoding="utf-8">
|
||||
<c:param name="prsnlId" value="${result.prsnlId}"/>
|
||||
</c:import>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
</c:forEach>
|
||||
|
||||
<c:if test="${bPortYn == 0}">
|
||||
<div class="col-lg-4" id="insertColumn450">
|
||||
<!-- 450 고유번호 -->
|
||||
<input type="hidden" id="portlet450Seq" name="portlet450Seq" value='${status1.index }' />
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
</c:forEach>
|
||||
|
||||
<c:set var="iEndIdx">${iMaxSeq}</c:set>
|
||||
<c:if test="${iMaxSeq < 9}">
|
||||
<c:set var="iEndIdx">9</c:set>
|
||||
<c:if test="${bPortYn == 0}">
|
||||
<div class="col-lg-4" id="insertColumn450">
|
||||
<!-- 450 고유번호 -->
|
||||
<input type="hidden" id="portlet450Seq" name="portlet450Seq" value='${status1.index }' />
|
||||
|
||||
|
||||
</div>
|
||||
</c:if>
|
||||
|
||||
<c:forEach begin="4" end="${iEndIdx}" step="1" varStatus="status1">
|
||||
</c:forEach>
|
||||
|
||||
<%-- 라인당 2개 슬롯 --%>
|
||||
<c:set var="iEndIdx">${iMaxSeq}</c:set>
|
||||
<c:if test="${iMaxSeq < 25}">
|
||||
<c:set var="iEndIdx">25</c:set>
|
||||
</c:if>
|
||||
|
||||
<c:forEach begin="10" end="${iEndIdx}" step="1" varStatus="status1">
|
||||
|
||||
<c:set var="bPortYn">0</c:set>
|
||||
|
||||
<c:forEach var="result" items="${resultList}" varStatus="status2">
|
||||
<c:if test="${result.portletSeq == status1.index}">
|
||||
|
||||
<c:set var="bPortYn">0</c:set>
|
||||
<c:set var="bPortYn">1</c:set>
|
||||
<div class="col-lg-6" id="insertColumn600">
|
||||
|
||||
<c:forEach var="result" items="${resultList}" varStatus="status2">
|
||||
<c:if test="${result.portletSeq == status1.index}">
|
||||
<!-- 600 고유번호 -->
|
||||
<input type="hidden" id="portlet600Seq" name="portlet600Seq" value='${status1.index }' />
|
||||
|
||||
<c:set var="bPortYn">1</c:set>
|
||||
<div class="col-lg-6" id="insertColumn600">
|
||||
|
||||
<!-- 600 고유번호 -->
|
||||
<input type="hidden" id="portlet600Seq" name="portlet600Seq" value='${status1.index }' />
|
||||
|
||||
<div class="portlet" style="width:${result.portletWidth}px; height:${result.portletHeight}px;">
|
||||
<div class="portlet-handle" id="${result.prsnlId}">
|
||||
<input id="portletSeq" type="hidden" name="portletSeq" value='<c:out value="${result.portletSeq}" />' />
|
||||
<input id="prsnlId" type="hidden" name="prsnlId" value='<c:out value="${result.prsnlId}" />' />
|
||||
|
||||
<c:import url="${result.url}" charEncoding="utf-8">
|
||||
<c:param name="prsnlId" value="${result.prsnlId}"/>
|
||||
</c:import>
|
||||
</div>
|
||||
<div class="portlet" style="width:${result.portletWidth}px; height:${result.portletHeight}px;">
|
||||
<div class="portlet-handle" id="${result.prsnlId}">
|
||||
<input id="portletSeq" type="hidden" name="portletSeq" value='<c:out value="${result.portletSeq}" />' />
|
||||
<input id="prsnlId" type="hidden" name="prsnlId" value='<c:out value="${result.prsnlId}" />' />
|
||||
|
||||
<c:import url="${result.url}" charEncoding="utf-8">
|
||||
<c:param name="prsnlId" value="${result.prsnlId}"/>
|
||||
</c:import>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
|
||||
<c:if test="${bPortYn == 0}">
|
||||
<div class="col-lg-6" id="insertColumn600">
|
||||
<!-- 600 고유번호 -->
|
||||
<input type="hidden" id="portlet600Seq" name="portlet600Seq" value='${status1.index }' />
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
|
||||
</div>
|
||||
<c:if test="${bPortYn == 0}">
|
||||
<div class="col-lg-6" id="insertColumn600">
|
||||
<!-- 600 고유번호 -->
|
||||
<input type="hidden" id="portlet600Seq" name="portlet600Seq" value='${status1.index }' />
|
||||
|
||||
</div>
|
||||
</c:if>
|
||||
</c:forEach>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- main btn : start -->
|
||||
<div class="btn_group">
|
||||
<div>
|
||||
<button type="button" class="btn-function" title="완료" onclick="fn_complete_updt(); return false;" >완료 <!-- 완료 -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- main btn : end -->
|
||||
<!-- main btn : start -->
|
||||
<div class="btn_group">
|
||||
<div>
|
||||
<button type="button" class="btn-function" title="완료" onclick="fn_complete_updt(); return false;" >완료 <!-- 완료 -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<!-- main btn : end -->
|
||||
|
||||
<%-- 2025.03.10 나혁제 신디자인 적용
|
||||
<!-- 하단 버튼 -->
|
||||
@ -640,7 +659,7 @@
|
||||
</div>
|
||||
<!-- //하단 버튼 -->
|
||||
--%>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form:form>
|
||||
@ -348,6 +348,7 @@
|
||||
</div>
|
||||
<!--//왼쪽영역-->
|
||||
<!-- 오른쪽영역-->
|
||||
<c:if test="${delAuthYn == 'Y'}">
|
||||
<div>
|
||||
<!-- 수정 -->
|
||||
<button type="button" id="btnUpdate" class="btn-etc" onclick="fn_update_prsnlportlet(); return false;" title="<spring:message code="button.update" />">
|
||||
@ -358,6 +359,7 @@
|
||||
<spring:message code="button.delete" />
|
||||
</button>
|
||||
</div>
|
||||
</c:if>
|
||||
</div>
|
||||
<!-- main btn : end -->
|
||||
|
||||
|
||||
@ -124,6 +124,59 @@
|
||||
}
|
||||
}
|
||||
|
||||
/* ********************************************************
|
||||
* 2025.12.08 나혁제
|
||||
* 체크박스에 체크된 개인화메뉴 사용상태변경 처리
|
||||
******************************************************** */
|
||||
function fn_update_prsnlportlet()
|
||||
{
|
||||
var checkField = document.frm.checkField;
|
||||
var prsnlId = document.frm.prsnlId;
|
||||
var useAt = document.frm.useAt;
|
||||
var checkPrsnlIds = "";
|
||||
var checkUseAts = "";
|
||||
var checkedCount = 0;
|
||||
|
||||
if(checkField)
|
||||
{
|
||||
if(checkField.length > 1)
|
||||
{
|
||||
for(var i=0; i < checkField.length; i++)
|
||||
{
|
||||
if(checkField[i].checked)
|
||||
{
|
||||
checkPrsnlIds += ((checkedCount==0? "" : ",") + prsnlId[i].value);
|
||||
checkUseAts += ((checkedCount==0? "" : ",") + useAt[i].value);
|
||||
checkedCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(checkField.checked)
|
||||
{
|
||||
checkPrsnlIds = prsnlId.value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(checkedCount == 0)
|
||||
{
|
||||
alert("선택된 메뉴가 없습니다.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(confirm("사용상태 변경을 하시겠습니까?"))
|
||||
{
|
||||
document.frm.checkedPrsnlIdForDel.value = checkPrsnlIds;
|
||||
document.frm.checkUseAts.value = checkUseAts;
|
||||
|
||||
document.frm.action = "<c:url value='/sys/updateStatusPrsnlPortletMulti.do'/>";
|
||||
document.frm.submit();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* ********************************************************
|
||||
* 모두선택 처리 함수
|
||||
******************************************************** */
|
||||
@ -175,6 +228,7 @@
|
||||
|
||||
<input type="hidden" name="pageIndex" value="<c:out value='${searchVO.pageIndex}'/>">
|
||||
<input name="checkedPrsnlIdForDel" type="hidden" />
|
||||
<input name="checkUseAts" type="hidden" />
|
||||
|
||||
<div class="body_wrap">
|
||||
<!-- 2025.03.10 나혁제 신디자인 적용
|
||||
@ -236,12 +290,12 @@
|
||||
<caption></caption>
|
||||
|
||||
<colgroup>
|
||||
<col style="width:5%" />
|
||||
<col style="width:3%" />
|
||||
<col style="width:10%" />
|
||||
<col style="width:*%" />
|
||||
<col style="width:20%" />
|
||||
<col style="width:15%" />
|
||||
<col style="width:15%" />
|
||||
<col style="width:auto" />
|
||||
<col style="width:20%" />
|
||||
<col style="width:20%" />
|
||||
</colgroup>
|
||||
|
||||
<thead>
|
||||
@ -257,6 +311,8 @@
|
||||
<th scope="col">포틀릿 URL</th>
|
||||
<th scope="col">실제 포틀릿 크기(px)</th>
|
||||
<th scope="col">포틀릿 미리보기</th>
|
||||
<th scope="col">사용여부</th>
|
||||
|
||||
</tr>
|
||||
</thead>
|
||||
|
||||
@ -281,6 +337,15 @@
|
||||
<img src="${result.portletImgPath}" name="IMG_VIEW" id="IMG_VIEW" align="middle" alt="<spring:message code='comUssOlpQtm.title.image'/><spring:message code='button.preview'/>" title="<spring:message code='comUssOlpQtm.title.image'/><spring:message code='button.preview'/>"><!-- alt="이미지미리보기" title="이미지미리보기" -->
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<!-- 2025.12.08 나혁제 사용여부 추가 -->
|
||||
<td>
|
||||
<select name="useAt" style="width: 80%;" title="사용여부"> <!-- 권한선택 -->
|
||||
<option value="Y" <c:if test="${result.useAt == 'Y'}">selected</c:if> >사용</option>
|
||||
<option value="N" <c:if test="${result.useAt == 'N'}">selected</c:if> >미사용</option>
|
||||
</select>
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
</c:forEach>
|
||||
</tbody>
|
||||
@ -300,8 +365,12 @@
|
||||
<!-- main btn : start -->
|
||||
<div class="btn_group">
|
||||
<div>
|
||||
<button type="button" class="btn-function" title="등록" onclick="fn_insert_prsnlportlet(); return false;" ><spring:message code="button.create" /> <!-- 등록 -->
|
||||
<button type="button" class="btn-function" title="삭제" onclick="fn_delete_prsnlportlet(); return false;" ><spring:message code="title.delete" /> <!-- 삭제 -->
|
||||
|
||||
<c:if test="${delAuthYn == 'Y'}">
|
||||
<button type="button" class="btn-function" title="등록" onclick="fn_insert_prsnlportlet(); return false;" ><spring:message code="button.create" /> <!-- 등록 -->
|
||||
<button type="button" class="btn-function" title="삭제" onclick="fn_delete_prsnlportlet(); return false;" ><spring:message code="title.delete" /> <!-- 삭제 -->
|
||||
</c:if>
|
||||
<button type="button" class="btn-function" title="상태변경" onclick="fn_update_prsnlportlet(); return false;" > 사용상태변경<!-- 사용상태변경 -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -208,7 +208,7 @@
|
||||
<!-- 포틀릿 영역 -->
|
||||
<div class="week_news_wrap">
|
||||
<div class="row">
|
||||
<c:forEach begin="1" end="3" step="1" varStatus="status1">
|
||||
<c:forEach begin="1" end="9" step="1" varStatus="status1">
|
||||
<c:set var="bPortYn">0</c:set>
|
||||
|
||||
<c:forEach var="result" items="${resultList}" varStatus="status2">
|
||||
@ -248,7 +248,7 @@
|
||||
|
||||
</c:forEach>
|
||||
|
||||
<c:forEach begin="4" end="9" step="1" varStatus="status1">
|
||||
<c:forEach begin="10" end="25" step="1" varStatus="status1">
|
||||
|
||||
<c:set var="bPortYn">0</c:set>
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user