2025-09-23 09:46 시정교육

This commit is contained in:
myname 2025-09-23 09:46:48 +09:00
parent d00ff90ea9
commit ae9ffdad5e
6 changed files with 3595 additions and 12 deletions

File diff suppressed because it is too large Load Diff

View File

@ -178,6 +178,8 @@ public class SspnIdtmtController {
@Resource(name = "iTNotiUtil") @Resource(name = "iTNotiUtil")
private ITNotiUtil iTNotiUtil; private ITNotiUtil iTNotiUtil;
private String p_lctr_div_cd = "60";
/** /**
* 대시보드 임시 * 대시보드 임시
*/ */
@ -222,7 +224,7 @@ public class SspnIdtmtController {
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo); vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회 //기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_60); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
/* /*
@ -230,7 +232,7 @@ public class SspnIdtmtController {
vEPrcsDetailVO.setPrcsDiv("10");// 과정구분 VE0015 10-산업종사자, 20-대학생, 30-공무원, 40-일반인, 50-청소년, 60-학부모 vEPrcsDetailVO.setPrcsDiv("10");// 과정구분 VE0015 10-산업종사자, 20-대학생, 30-공무원, 40-일반인, 50-청소년, 60-학부모
} }
*/ */
vEPrcsDetailVO.setSiteId("50"); //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소 vEPrcsDetailVO.setSiteId(p_lctr_div_cd); //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlQustnrList(vEPrcsDetailVO); List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlQustnrList(vEPrcsDetailVO);
//List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlList(vEPrcsDetailVO); //List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlList(vEPrcsDetailVO);
@ -292,7 +294,7 @@ public class SspnIdtmtController {
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo); vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회 //기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_60); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){ if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
String selectCondition = "AND b.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')"; String selectCondition = "AND b.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
@ -326,7 +328,7 @@ public class SspnIdtmtController {
vEEduAplctReqVO.setUserId(loginVO.getUniqId()); vEEduAplctReqVO.setUserId(loginVO.getUniqId());
vEEduAplctReqVO.setLctrDivCd(t.getLctrDivCd()); vEEduAplctReqVO.setLctrDivCd(t.getLctrDivCd());
vEEduAplctReqVO.setPrcsAplctPrdOrd(t.getPrcsAplctPrdOrd()); vEEduAplctReqVO.setPrcsAplctPrdOrd(t.getPrcsAplctPrdOrd());
vEEduAplctReqVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_60); vEEduAplctReqVO.setLctrDivCd(p_lctr_div_cd);
VEEduAplctVO vEEduAplctVO = sspnIdtmtService.findByAprvlCd(vEEduAplctReqVO); VEEduAplctVO vEEduAplctVO = sspnIdtmtService.findByAprvlCd(vEEduAplctReqVO);
// VO를 먼저 null 체크 진행해야 에러안남 // VO를 먼저 null 체크 진행해야 에러안남
// vEEduAplctVO != null && // vEEduAplctVO != null &&
@ -526,7 +528,7 @@ public class SspnIdtmtController {
vEEduAplctReqVO.setUserId(loginVO.getUniqId()); vEEduAplctReqVO.setUserId(loginVO.getUniqId());
vEEduAplctReqVO.setLctrDivCd(vEPrcsDetailVODetail.getLctrDivCd()); vEEduAplctReqVO.setLctrDivCd(vEPrcsDetailVODetail.getLctrDivCd());
vEEduAplctReqVO.setPrcsAplctPrdOrd(vEPrcsDetailVODetail.getPrcsAplctPrdOrd()); vEEduAplctReqVO.setPrcsAplctPrdOrd(vEPrcsDetailVODetail.getPrcsAplctPrdOrd());
vEEduAplctReqVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_60); vEEduAplctReqVO.setLctrDivCd(p_lctr_div_cd);
VEEduAplctVO vEEduAplctVO = sspnIdtmtService.findByAprvlCd(vEEduAplctReqVO); VEEduAplctVO vEEduAplctVO = sspnIdtmtService.findByAprvlCd(vEEduAplctReqVO);
// VO를 먼저 null 체크 진행해야 에러안남 // VO를 먼저 null 체크 진행해야 에러안남
// vEEduAplctVO != null && // vEEduAplctVO != null &&
@ -665,7 +667,7 @@ public class SspnIdtmtController {
String s_eduAplctOrd = eduAplctGnrService.getNextStringId(); String s_eduAplctOrd = eduAplctGnrService.getNextStringId();
vEEduAplctVO.setEduAplctOrd(s_eduAplctOrd); vEEduAplctVO.setEduAplctOrd(s_eduAplctOrd);
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_60); // 기소유예 vEEduAplctVO.setLctrDivCd(p_lctr_div_cd); // 기소유예
vEEduAplctVO.setAprvlCd("10"); // 승인코드 VE0003 10 - 요청, 20 - 승인, 30 - 반려 vEEduAplctVO.setAprvlCd("10"); // 승인코드 VE0003 10 - 요청, 20 - 승인, 30 - 반려
// sbmt_pnttm 제출일시 // sbmt_pnttm 제출일시
vEEduAplctVO.setSbmtYn("Y"); // 제출여부 vEEduAplctVO.setSbmtYn("Y"); // 제출여부
@ -704,7 +706,7 @@ public class SspnIdtmtController {
//알림 교육신청 //알림 교육신청
try { try {
iTNotiUtil.insertNotifyNew_60( iTNotiUtil.insertNotifyNew_60(
"60", p_lctr_div_cd, //"60",
loginVO.getUniqId(), loginVO.getUniqId(),
VeConstants.NOTI_STATUS_10, VeConstants.NOTI_STATUS_10,
vEPrcsDetailVO.getPrcsAplctPrdOrd(), vEPrcsDetailVO.getPrcsAplctPrdOrd(),
@ -1063,7 +1065,7 @@ public class SspnIdtmtController {
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo); vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회 //기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_60); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){ if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
String selectCondition = "AND b.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')"; String selectCondition = "AND b.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
@ -1079,7 +1081,7 @@ public class SspnIdtmtController {
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsDiv())) { if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsDiv())) {
//vEPrcsDetailVO.setPrcsDiv("10");// 과정구분 VE0015 10-산업종사자, 20-대학생, 30-공무원, 40-일반인, 50-청소년, 60-학부모 //vEPrcsDetailVO.setPrcsDiv("10");// 과정구분 VE0015 10-산업종사자, 20-대학생, 30-공무원, 40-일반인, 50-청소년, 60-학부모
vEPrcsDetailVO.setSiteId("60"); vEPrcsDetailVO.setSiteId(p_lctr_div_cd); //"60"
} }
//List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlList(vEPrcsDetailVO); //List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlList(vEPrcsDetailVO);
@ -1173,7 +1175,7 @@ public class SspnIdtmtController {
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId()); //esntl_id vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부 vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setPrcsAplctPrdQnaOrd(prcsAplctPrdQnaOrdGnrService.getNextStringId()); vEPrcsDetailVO.setPrcsAplctPrdQnaOrd(prcsAplctPrdQnaOrdGnrService.getNextStringId());
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId()); vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
@ -1184,7 +1186,7 @@ public class SspnIdtmtController {
//알림 교육문의 //알림 교육문의
try { try {
iTNotiUtil.insertNotifyNew_60( iTNotiUtil.insertNotifyNew_60(
"60", p_lctr_div_cd, //"60",
loginVO.getUniqId(), loginVO.getUniqId(),
VeConstants.NOTI_STATUS_91, VeConstants.NOTI_STATUS_91,
"", "",
@ -1246,7 +1248,7 @@ public class SspnIdtmtController {
model.addAttribute("FAQList", resultList); model.addAttribute("FAQList", resultList);
//Q&A 조회 //Q&A 조회
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId()); vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
vEPrcsDetailVO.setLctrDivCd("60"); //기소유예 구분값 vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //기소유예 구분값
List<VEPrcsDetailVO> vEPrcsDetailQnaVOList = fndtnEnhanceTrnService.selectVeEduQna(vEPrcsDetailVO); List<VEPrcsDetailVO> vEPrcsDetailQnaVOList = fndtnEnhanceTrnService.selectVeEduQna(vEPrcsDetailVO);
model.addAttribute("qnaList", vEPrcsDetailQnaVOList); model.addAttribute("qnaList", vEPrcsDetailQnaVOList);
}catch(Exception ex) { }catch(Exception ex) {

View File

@ -0,0 +1,934 @@
<%@ 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"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국지식재산보호원 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<style type="text/css">
.fc-day-sat { color:#0000FF; } /* 토요일 */
.fc-day-sun { color:#FF0000; } /* 일요일 */
</style>
<link type="text/css" rel="stylesheet" href="<c:url value='/js/fullcalendar/5.9.0/main.css' />" />
<script type="text/javascript" src="<c:url value='/js/fullcalendar/5.9.0/main.js'/>"></script>
<script type="text/javascript" src="<c:url value='/js/fullcalendar/5.9.0/locales-all.js'/>"></script>
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
$('#schduleManager').hide();
$('.tab_button').click(function(){
var type = $(this).data('info');
// list 타입이면 return;
if(type === 'list'){
$('#schduleManager').hide();
return false;
}
$('#schduleManager').show();
});
$(".aplctBtn button").click(function(){
var regForm = document.regForm;
regForm.prcsAplctPrdOrd.value = $(this).data('info');
});
// 상태값 확인
$(".ddlnCdStts").each(function() {
var $thisCell = $(this);
var $applyButton = $thisCell.closest('tr').find(".aplctBtn button");
// var $aprvlCd = $thisCell.closest('tr').find(".aplctBtn input");
// 텍스트가 비어있는지 확인
if ($thisCell.text().trim() === "") {
var $currentRow = $thisCell.closest('tr');
var strtPnttm = new Date($currentRow.find("td:eq(2)").text().split("~")[0].trim());
var endPnttm = new Date($currentRow.find("td:eq(2)").text().split("~")[1].trim());
var currentDate = new Date();
// new Date에서 년, 월, 일만 생성
currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());
// 시간, 분, 초 초기화
strtPnttm.setHours(0, 0, 0, 0);
endPnttm.setHours(0, 0, 0, 0);
currentDate.setHours(0, 0, 0, 0);
var ddlnCdText = '';
if (currentDate < strtPnttm) {
ddlnCdText = "접수전";
} else if (currentDate >= strtPnttm && currentDate <= endPnttm) {
ddlnCdText = "접수중";
} else if (currentDate > endPnttm) {
ddlnCdText = "접수종료";
$applyButton.text("마감");
}
$thisCell.text(ddlnCdText);
}
// 텍스트가 "접수중"인지 확인
//if ($thisCell.text().trim() !== "접수중" && $thisCell.text().trim() !== "취소") {
if ($thisCell.text().trim() !== "접수중") {
$applyButton.prop('disabled', true); // 버튼 비활성화
}
/* 24.01.22 웹접근성 검사를 위하여 disabled 사용제외 */
if($applyButton.prop('disabled')){
$applyButton.removeAttr('onclick');
$applyButton.prop('disabled', false);
$applyButton.css('background-color', '#888');
/*24.01.23 웹접근성 검사를 위하여 title 추가*/
$applyButton.attr('title','비활성화됨');
$applyButton.removeAttr('data-tooltip');
}
});
// 상태값 확인 모바일
$(".ddlnCdSttsM").each(function() {
var $thisCell = $(this);
var $applyButton = $thisCell.closest('ul').find(".aplctBtnM button");
// var $aprvlCd = $thisCell.closest('tr').find(".aplctBtn input");
// 텍스트가 비어있는지 확인
if ($thisCell.text().trim() === "") {
var $currentRow = $thisCell.closest('ul');
var strtPnttm = new Date($currentRow.find("li:eq(2)").find("span:eq(1)").text().split("~")[0].trim());
var endPnttm = new Date($currentRow.find("li:eq(2)").find("span:eq(1)").text().split("~")[1].trim());
var currentDate = new Date();
// new Date에서 년, 월, 일만 생성
currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate());
// 시간, 분, 초 초기화
strtPnttm.setHours(0, 0, 0, 0);
endPnttm.setHours(0, 0, 0, 0);
currentDate.setHours(0, 0, 0, 0);
var ddlnCdText = '';
if (currentDate < strtPnttm) {
ddlnCdText = "접수전";
} else if (currentDate >= strtPnttm && currentDate <= endPnttm) {
ddlnCdText = "접수중";
} else if (currentDate > endPnttm) {
ddlnCdText = "접수종료";
$applyButton.text("마감");
}
$thisCell.text(ddlnCdText);
}
console.log('$thisCell.text() : ', $thisCell.text());
console.log('$thisCell.text().trim() !== "접수중" : ', $thisCell.text().trim() !== "접수중");
// 텍스트가 "접수중"인지 확인
//if ($thisCell.text().trim() !== "접수중" && $thisCell.text().trim() !== "취소") {
if ($thisCell.text().trim() !== "접수중") {
$applyButton.prop('disabled', true); // 버튼 비활성화
}
/* 24.01.22 웹접근성 검사를 위하여 disabled 사용제외 */
if($applyButton.prop('disabled')){
$applyButton.removeAttr('onclick');
$applyButton.prop('disabled', false);
$applyButton.css('background-color', '#888');
/*24.01.23 웹접근성 검사를 위하여 title 추가*/
$applyButton.attr('title','비활성화됨');
$applyButton.removeAttr('data-tooltip');
}
});
// 달력 웹접근성
$(".fc-prev-button").attr("title","이전달로 이동");
$(".fc-next-button").attr("title","다음달로 이동");
$(".fc-next-button").on("click",function(){
var changeDay = $(".fc-header-toolbar .fc-toolbar-chunk .fc-toolbar-title").text();
$(".fc-scrollgrid.fc-scrollgrid-liquid>caption").text(changeDay+" 달력입니다.");
});
$(".fc-prev-button").on("click",function(){
var changeDay = $(".fc-header-toolbar .fc-toolbar-chunk .fc-toolbar-title").text();
$(".fc-scrollgrid.fc-scrollgrid-liquid>caption").text(changeDay+" 달력입니다.");
})
});
document.addEventListener('DOMContentLoaded', function() {
var calendarEl = document.getElementById('schduleManager');
var calendar = new FullCalendar.Calendar(calendarEl, {
locale: 'ko',
timezone : "local",
weekends : true,
editable : false,
firstDay : 0, //월요일이 먼저 오게 하려면 1
dayMaxEvents: true,
navLinks: false,
customButtons: {
myCustomButton: {
text: '오늘',
click: function(event, elm) {
alert('clicked the custom button!');
}
},viewWeekends : {
text : '주말',
click : function (event, elm) {
calendar.setOption("weekends" , calendar.getOption("weekends") ? false : true);
}
}
},buttonText: {
listMonth: '일정'
},
headerToolbar: {
//left: 'prevYear nextYear today',
left: 'today',
center: 'prev title next',
//right: 'dayGridMonth,listMonth'
right: ''
},
eventSources: [
{
events: function(info, successCallback, failureCallback) {
var events = [];
console.log('info', info);
var s_todate = info.startStr;
ex_s_todate = info.startStr;
var data = fncEduSelect(s_todate);
data.forEach(item => {
console.log(item);
item.url = '${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduAplctDetail.do?prcsAplctPrdOrd='+item.prcsAplctPrdOrd; // 여기서 원하는 URL로 대체
});
events.push({
title: 'title',
start: '2023-11-10',
end: '2023-11-29',
url: '${pageContext.request.contextPath}/detail.do?seq='
}); 
// successCallback(events);
successCallback(data);
/*
$.ajax({
url: '<c:url value="/web/ve/instr/tngrVisitEdu/instrInfo/tngrSchduleManagerAjaxLoadData.do"/>',
type: 'POST',
dataType: 'json',
data: {
searchStartDt : "",
//searchStartDt : "",
searchStartDt : s_todate,
todate : info.start,
searchYearMonth : function(){
return "";
}
},
success: function(data) {
successCallback(data);
// 날짜 계산
// setCalDate(data, info.startStr);
}
}); */
}
}
],
eventContent: function(arg, createElement) {
event.preventDefault();
console.log(arg.event._def.url);
// arg.event._def.url = "#none";
},
eventClick: function(info) {
info.jsEvent.preventDefault();
console.log('info.event._def.extendedProps : ', info);
location.href = info.event.url;
// schDetailPop(info.event._def.extendedProps.schSeq, info.event._def.extendedProps.schChasiSeq);
return false;
},
});
calendar.render();
var dayText = $(".fc-header-toolbar .fc-toolbar-chunk .fc-toolbar-title").text();
$(".fc-scrollgrid.fc-scrollgrid-liquid").prepend("<caption>"+dayText+" 달력입니다.</caption>");
$(".fc-col-header").prepend("<caption>일, 월, 화, 수, 목, 금, 토 요일 정보 제공</caption>");
$(".fc-scrollgrid-sync-table").prepend("<caption>날짜별 강의목록 정보 제공</caption>");
});
// 대상자 이름, 생년월일, 대상자TB ID
/* function fncEduReg(trgtNm, dBirth, sspnIdtmtTrgtOrd){
var form = document.regForm;
form.trgtNm.value = trgtNm;
form.dBirth.value = dBirth;
form.sspnIdtmtTrgtOrd.value = sspnIdtmtTrgtOrd;
var data = new FormData(document.getElementById("regForm"));
if(confirm("신청하시겠습니까?")){
var url = "${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduRegAjax.do";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장되었습니다.");
fncGoList();
}else{
alert("교육 신청에 실패하였습니다.\n담당자에게 문의해 주세요.");
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
} */
function fn_eduRegPopup(trgtNm, dBirth, sspnIdtmtTrgtOrd){
var data ={
"prcsAplctPrdOrd": $('#regForm input[name="prcsAplctPrdOrd"]').val()
, "trgtNm" : trgtNm
, "dBirth" : dBirth
, "sspnIdtmtTrgtOrd" :sspnIdtmtTrgtOrd
}
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduAplctPop.do"
// "${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/eduAplctPop.do"
, 800
, 800
, data
, "N"
, "eduRegPopup"
);
}
function fn_dayDiff(item){
var startDt = item.eduStrtPnttm;
var endDt = item.eduDdlnPnttm;
// 날짜 문자열을 Date 객체로 변환합니다.
var startDate = new Date(startDt.split('.').join('-'));
var endDate = new Date(endDt.split('.').join('-'));
// 두 날짜 사이의 밀리초 차이를 구합니다.
var differenceInMilliseconds = endDate - startDate;
// 밀리초를 일수로 변환합니다. (1일 = 24시간 = 24 * 60분 = 24 * 60 * 60초 = 24 * 60 * 60 * 1000 밀리초)
var differenceInDays = differenceInMilliseconds / (24 * 60 * 60 * 1000);
// 시작 날짜와 종료 날짜를 모두 포함하여 계산
differenceInDays += 1;
return differenceInDays;
}
function fn_MonthHL(){
var today = new Date();
// 현재 달을 가져옵니다. (0부터 시작하므로 1을 더해줍니다.)
var currentMonth = today.getMonth() + 1;
// 해당하는 달의 <th> 요소에 'edup_this' 클래스를 추가합니다.
$("#monthTemp th:nth-child(" + currentMonth + ")").addClass("edup_this");
}
function fncEduSelect(s_todate){
var returnVal = '';
var form = document.selectForm ;
form.sTodate.value = s_todate;
var data = new FormData(document.getElementById("selectForm"));
var url = "${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/selectSchduleManagerListAjax.do";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
console.log('returnData : ', returnData);
// returnVal = returnData.data;
returnVal = returnData;
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
return returnVal;
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/web/ve/aplct/sspnIdtmt/eduAplctList.do'/>";
listForm.submit();
}
function fncGoDetail(prcsAplctPrdOrd){
var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.action = "<c:url value='/web/ve/aplct/sspnIdtmt/eduAplctDetail.do'/>";
viewForm.submit();
}
function fncGoList(){
linkPage(1);
}
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
$(this).val('');
});
}
function fn_confirm(){
var form = document.confirmForm;
var dBirth = $('#dBirth').val().replace(/\./g, '');
var trgtNm = $('#trgtNm').val();
form.trgtNm.value = trgtNm;
form.dBirth.value = dBirth;
var data = new FormData(document.getElementById("confirmForm"));
var url = "${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/userConfirmAjax.do";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
console.log('returnData : ', returnData);
if(returnData.result == "success"){
// 대상자 테이블 pk 값
var sspnIdtmtTrgtOrd = returnData.id;
alert(returnData.msg);
// 교육 신청 ajax
// 대상자 이름, 생년월일, 대상자TB ID
if(returnData.next == "Y")
{
//sspnIdtmtTrgtOrd = returnData.id;
// fncEduReg(trgtNm, dBirth, returnData.id);
fn_eduRegPopup(trgtNm, dBirth, returnData.id);
}
}else{
alert(returnData.msg);
}
// fn_target_confirm_clean();
// location.reload();
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
$('#target_confirm_popup-close').click();
}
function fn_target_confirm_clean(){
$('#trgtNm').val('');
$('#dBirth').val('');
}
/*
*##############################################################################
* START
*##############################################################################
*/
// 날짜 계산
function setCalDate(data, startStr) {
// 현재월 구하기
startStr = startStr.substr(0, 10);
console.log('startStr : ', startStr);
startStr = startStr.replace(/-/g, "");
console.log('startStr : ', startStr);
startStr = startStr.replace(/./g, "");
var todayYear = startStr.substring(0,4);
var todayMonth = 0;
var todayDay = startStr.substring(6,8);
if (todayDay == "01") {
todayMonth = startStr.substring(4,6);
}
else {
if (startStr.substring(4,6) == "12") {
todayMonth = "01";
}
else {
todayMonth = parseInt(startStr.substring(4,6), 10) + 1;
if (todayMonth < 10) {
todayMonth = "0" + todayMonth;
}
}
}
// End
//alert(todayMonth);
var monthCnt = 0;
var week1Cnt = 0, week2Cnt = 0, week3Cnt = 0, week4Cnt = 0, week5Cnt = 0, week6Cnt = 0;
var sHtml = "";
for (var j = 0; j < data.length; j++) {
var schStartDate = data[j].start.substr(0, 10);
schStartDate = replaceAll(schStartDate, "-", "");
schStartDate = replaceAll(schStartDate, ".", "");
schStartDate = replaceAll(schStartDate, "/", "");
var thisYear = schStartDate.substring(0,4);
var thisMonth = schStartDate.substring(4,6);
var thisDay = schStartDate.substring(6,8);
var thisWeek = getSecofWeek(schStartDate);
// 해당월 데이터만 처리
if (todayMonth == thisMonth) {
monthCnt++;
if (thisWeek == 1) {
week1Cnt++;
}
else if (thisWeek == 2) {
week2Cnt++;
}
else if (thisWeek == 3) {
week3Cnt++;
}
else if (thisWeek == 4) {
week4Cnt++;
}
else if (thisWeek == 5) {
week5Cnt++;
}
else if (thisWeek == 6) {
week6Cnt++;
}
}
}
sHtml += "전체 : " + monthCnt + "건";
sHtml += " &nbsp;(1주차 : " + week1Cnt + "건";
sHtml += ", &nbsp;&nbsp;2주차 : " + week2Cnt + "건";
sHtml += ", &nbsp;&nbsp;3주차 : " + week3Cnt + "건";
sHtml += ", &nbsp;&nbsp;4주차 : " + week4Cnt + "건";
sHtml += ", &nbsp;&nbsp;5주차 : " + week5Cnt + "건";
sHtml += ", &nbsp;&nbsp;6주차 : " + week6Cnt + "건)";
sHtml += '&nbsp;<button type="button" class="btn_down_excel" onclick="excelDownLoad();">일정현황 엑셀 다운로드</button>';
//$("#weekCnt").html(sHtml);
}
// 해당일 주차 계산
function getSecofWeek(date) {
var d = new Date( date.substring(0,4), parseInt(date.substring(4,6))-1, date.substring(6,8) );
var fd = new Date( date.substring(0,4), parseInt(date.substring(4,6))-1, 1 );
return Math.ceil((parseInt(date.substring(6,8))+fd.getDay())/7);
}
//기소유예 신청
function fncAplctPopup(
p_prcsAplctPrdOrd
, id //aplctOrd
, chId //chasiOrd
, p_site_id_cd //10,20,30
, p_action //select, insert
, p_qustnrTmplatId //select, insert
, p_qestnrId //select, insert
, p_qustnrRespondId //select, insert
) {
paramObj = {
"prcsAplctPrdOrd": p_prcsAplctPrdOrd
,"eduAplctOrd" : id
,"eduChasiOrd" : chId
,"siteIdCd" : p_site_id_cd
,"siteId" : "60" //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소
,"action" : p_action
,"qustnrTmplatId" : p_qustnrTmplatId
,"qestnrId" : p_qestnrId
,"qustnrRespondId" : p_qustnrRespondId
};
commonPopLayeropen(
//"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/scholInfo/popup/qustnrPopList.do"
"${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/popup/eduAplctPopList.do"
, 800
, 700
, paramObj
, "Y"
, "AplctPopup"
);
}
</script>
<!-- content -->
<div class="cont_wrap list_con" id="sub">
<form name="selectForm" id="selectForm">
<input type="hidden" name="lctrDivCd" value="60">
<input type="hidden" name="sTodate" value="">
</form>
<form name="confirmForm" id="confirmForm">
<input type="hidden" name="trgtNm">
<input type="hidden" name="dBirth">
<input type="hidden" name="sex">
<input type="hidden" name="clphone">
<input type="hidden" name="chkYn">
</form>
<form name="regForm" id="regForm">
<input type="hidden" name="prcsAplctPrdOrd">
<input type="hidden" name="sspnIdtmtTrgtOrd"> <!-- 대상자 테이블 PK -->
<input type="hidden" name="trgtNm">
<input type="hidden" name="dBirth">
</form>
<form name="viewForm" id="viewForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEEduAplctVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEEduAplctVO.searchSortOrd}" />" />
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="" />
<div class="cont_tit">
<h2>강의목록</h2>
<div class="sns_go">
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
</div>
</div>
<ul class="tab tab_02">
<li class="tab_li on con_li"><button type="button" class="tab_button" data-info="list">리스트형</button></li>
<li class="tab_li cal_li"><button type="button" class="tab_button" data-info="cal">캘린더형</button></li>
</ul>
<div class="tab_content on">
<div class="list_top">
<div class="list_top_left">
<label for="searchStatus2" class="label">신청상태 선택</label>
<select class="selType1" id="searchStatus2" name="searchStatus2">
<option ${vEEduAplctVO.searchStatus2 eq '' ? 'selected' : ''} value="">전체</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_SBMT ? 'selected' : ''} value="${VeConstants.STATUS_CD_SBMT}">교육신청</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDT_REQ ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_REQ}">수정요청</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDT_CMPT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_CMPT}">수정완료</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_CAN ? 'selected' : ''} value="${VeConstants.STATUS_CD_CAN}">교육취소</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDU_SELCT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDU_SELCT}">교육확정</option>
</select>
</div>
<div class="btn_wrap">
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchStartDt" name="searchStartDt" title="시작일 선택" value="${vEEduAplctVO.searchStartDt}"> --%>
<duet-date-picker identifier="date" id="searchStartDt" name="searchStartDt" class="startDate" value="${vEPrcsDetailVO.searchStartDt}"></duet-date-picker>
</div>
~
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchEndDt" name="searchEndDt" title="종료일 선택" value="${vEEduAplctVO.searchEndDt}"> --%>
<duet-date-picker identifier="date" id="searchEndDt" name="searchEndDt" class="endDate" value="${vEPrcsDetailVO.searchEndDt}"></duet-date-picker>
</div>
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script>
<button type="button" class="btnType01" onclick="fncGoList();">검색</button>
<button type="button" class="btnType02" onclick="fncReset(this);">초기화</button>
</div>
</div>
<!-- list -->
<div class="tb_list01">
<table>
<caption>강의목록 : 교육구분, 과정명, 신청기간, 교육일자, 신청자/정원, 상태, 교육신청 등의 정보제공</caption>
<colgroup>
<%-- <col style="width: 5%"> --%>
<col style="width: 10%">
<col style="width: auto">
<col style="width: 180px;">
<col style="width: 180px;">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<!-- <th>NO</th> -->
<th scope=“col”>교육구분</th>
<th scope=“col”>과정명</th>
<th scope=“col”>신청기간</th>
<th scope=“col”>교육일자</th>
<th scope=“col”>신청자/정원</th>
<th scope=“col”>상태</th>
<th scope=“col”>교육신청</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr class="listCount">
<%-- <td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" style="cursor:pointer;"> --%>
<%-- <c:out value="${status.count}"/> --%>
<!-- </td> -->
<td>
<kc:code codeId="VEA001" code="${list.prcsDiv}"/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" style="cursor:pointer;" tabindex="0" onkeypress="if(event.keyCode == 13){fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');}">
<c:choose>
<c:when test="${not empty list.title}">
<c:out value="${list.title}"/>
</c:when>
<c:otherwise>
<c:out value="${list.prcsNm}"/>
</c:otherwise>
</c:choose>
</td>
<td>
<c:out value="${list.strtPnttm}"/>~<c:out value="${list.endPnttm}"/>
</td>
<td>
<%-- <c:out value="${list.eduStrtPnttm}"/>~<c:out value="${list.eduDdlnPnttm}"/> --%>
<c:out value="${list.eduStrtPnttm}"/>
</td>
<td>
<c:out value="${list.nosCnt1}"/>/<c:out value="${list.nos}"/>
</td>
<td class="ddlnCdStts">
<c:choose>
<c:when test="${not empty list.ddlnCd}">
<kc:code codeId="VEA004" code="${list.ddlnCd}"/>
</c:when>
<c:otherwise>
<kc:code codeId="VE0003" code="${list.aprvlCd}"/>
</c:otherwise>
</c:choose>
</td>
<td class="aplctBtn">
<%-- <button type="button" class="btnType04" onclick="fncEduReg('<c:out value="${list.prcsAplctPrdOrd}"/>');">신청</button> --%>
<%-- <button type="button" class="btnType04" data-info="<c:out value="${list.prcsAplctPrdOrd}"/>" data-tooltip="target_confirm_popup" >신청</button> --%>
<!-- -->
<%-- <button type="button" class="btnType04" data-info="<c:out value='${list.prcsAplctPrdOrd}'/>" data-tooltip="sub36_pop02"
onclick="fncAplctPopup('<c:out value="${list.prcsAplctPrdOrd}"/>','','','10','select'
,'','',''
)" title="팝업 열림">신청</button> --%>
<button type="button" class="btnType04" data-info="<c:out value='${list.prcsAplctPrdOrd}'/>" data-tooltip="sub36_pop02"
onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" title="팝업 열림">
<c:choose>
<c:when test="${list.ddlnCd eq '20'}">
마감
</c:when>
<c:otherwise>
신청
</c:otherwise>
</c:choose>
</button>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- 모바일 시작 -->
<!-- 모바일 시작 -->
<!-- 모바일 시작 -->
<!-- moblie table -->
<div class="tb_list01_m class_m">
<c:forEach var="list" items="${list}" varStatus="status">
<ul onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">
<li>
<span>교육구분</span>
<span><kc:code codeId="VEA001" code="${list.prcsDiv}"/></span>
</li>
<li>
<span>과정명</span>
<span>
<c:choose>
<c:when test="${not empty list.title}">
<c:out value="${list.title}"/>
</c:when>
<c:otherwise>
<c:out value="${list.prcsNm}"/>
</c:otherwise>
</c:choose>
</span>
</li>
<li>
<span>신청기간</span>
<span><c:out value="${list.strtPnttm}"/>~<c:out value="${list.endPnttm}"/></span>
</li>
<li>
<span>교육일자</span>
<span><c:out value="${list.eduStrtPnttm}"/></span>
</li>
<li>
<span>신청자/정원</span>
<span><c:out value="${list.nosCnt1}"/>/<c:out value="${list.nos}"/></span>
</li>
<li>
<span>상태</span>
<span class="ddlnCdSttsM">
<c:choose>
<c:when test="${not empty list.ddlnCd}">
<kc:code codeId="VEA004" code="${list.ddlnCd}"/>
</c:when>
<c:otherwise>
<kc:code codeId="VE0003" code="${list.aprvlCd}"/>
</c:otherwise>
</c:choose>
</span>
</li>
<li class="aplctBtnM">
<span>교육신청</span>
<button type="button" class="btnType04" data-info="<c:out value='${list.prcsAplctPrdOrd}'/>" data-tooltip="sub36_pop02"
onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" title="팝업 열림">
<c:choose>
<c:when test="${list.ddlnCd eq '20'}">
마감
</c:when>
<c:otherwise>
신청
</c:otherwise>
</c:choose>
</button>
</li>
</ul>
</c:forEach>
</div>
<!--// moblie table -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<!-- <button type="button" class="btnType01" onclick="fn_eduInquiry()">교육문의(미개발)</button> -->
</div>
</div>
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
</div>
<div class="tab_content" id="schduleManager">
</div>
</form:form>
</div>
<!-- 신청 클릭 > 기소유예 대상자 확인 팝업 -->
<!-- 교육대상자 확인 -->
<div class="tooltip-wrap">
<div class="popup_wrap popType01" tabindex="0" data-tooltip-con="target_confirm_popup" data-focus="target_confirm_popup" data-focus-prev="target_confirm_popup_close">
<div class="popup_tit">
<p>교육대상자 확인</p>
<button class="btn_popup_close tooltip-close" data-focus="target_confirm_popup_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="pop_tb_type01" style="overflow:visible;">
<table>
<colgroup>
<col style="width:38%;">
<col style="width:auto;">
</colgroup>
<tr>
<th>성명</th>
<td>
<input type="text" id="trgtNm">
</td>
</tr>
<tr>
<th>주민번호앞자리</th>
<td>
<div class="calendar_wrap">
<duet-date-picker identifier="date" id="dBirth" class="" id="" min="1940-01-01"></duet-date-picker>
</div>
<%-- <script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker2.js"></script> --%>
</td>
</tr>
</table>
</div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btnType05" onclick="fn_confirm()">제출</button>
<button type="button" class="btnType02 tooltip-close" id="target_confirm_popup-close" data-focus="target_confirm_popup-close" data-focus-next="target_confirm_popup">취소</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
</div>
<!--// 신청 클릭 > 기소유예 대상자 확인 팝업 -->

View File

@ -0,0 +1,312 @@
<%@ 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"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국지식재산보호원 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javaScript" language="javascript">
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/web/ve/aplct/adultVisitEdu/eduAplct/eduAplctList.do'/>";
listForm.submit();
}
function goWrite(){
$("#listForm").attr("action","${pageContext.request.contextPath}/web/ve/aplct/adultVisitEdu/eduAplct/eduAplctReg.do").submit();
}
function fncGoDetail(prcsAplctPrdOrd){
var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.action = "<c:url value='/web/ve/aplct/cmdTrgt/eduAplctDetail.do'/>";
viewForm.submit();
}
function fncGoList(){
linkPage(1);
}
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
$(this).val('');
});
}
//FAQ 답변 open&close
function faqOpen(item) {
if($(item).is(".slide_open") == true) {
$(item).removeClass("slide_open");
$(item).next(".answer").slideUp(300);
$(item).attr("title","답변 열기");
} else {
$(item).addClass("slide_open");
$(item).next(".answer").slideDown(300);
$(item).attr("title","답변 닫기");
$(item).closest("li").siblings("li").children(".question").removeClass("slide_open");
$(item).closest("li").siblings("li").children(".answer").slideUp(300);
$(item).closest("li").siblings("li").children(".question").attr("title","답변 열기");
}
}
function fn_qnaReg(){
if(!confirm("문의 등록을 하시겠습니까?")){
$('#qnaCn').val('');
$('.btn_popup_close').click();
return false;
}
var data = new FormData(document.getElementById("qnaForm"));
var url = "${pageContext.request.contextPath}/web/ve/aplct/cmdTrgt/qnaRegAjax.do";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
console.log('returnData : ', returnData);
if(returnData.result == "success"){
// 대상자 테이블 pk 값
var sspnIdtmtTrgtOrd = returnData.id;
alert(returnData.msg);
}else{
alert(returnData.msg);
}
// fn_target_confirm_clean();
location.reload();
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
$('#target_confirm_popup-close').click();
}
function fn_goListForm(data){
var form = document.goListForm ;
form.searchStatus.value = data ;
form.submit();
}
//설문 팝업
function fncQustnrList(
id //aplctOrd
, chId //chasiOrd
, p_site_id_cd //10,20,30
, p_action //select, insert
, p_qustnrTmplatId //select, insert
, p_qestnrId //select, insert
, p_qustnrRespondId //select, insert
) {
paramObj = {
"eduAplctOrd" : id
,"eduChasiOrd" : chId
,"siteIdCd" : p_site_id_cd
,"siteId" : "60" //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소
,"action" : p_action
,"qustnrTmplatId" : p_qustnrTmplatId
,"qestnrId" : p_qestnrId
,"qustnrRespondId" : p_qustnrRespondId
};
commonPopLayeropen(
//"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/scholInfo/popup/qustnrPopList.do"
"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/scholInfo/popup/qustnrFndtnPopList.do"
, 800
, 700
, paramObj
, "Y"
, "QustnrList"
);
}
</script>
<!-- content -->
<div class="cont_wrap" id="sub">
<form id="goListForm" name="goListForm" action="<c:url value="/web/ve/aplct/cmdTrgt/sspnIdtmtEduAplctList.do" />" method="post">
<input type="hidden" id="searchStatus" name="searchStatus" />
</form>
<form name="viewForm" id="viewForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEEduAplctVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEEduAplctVO.searchSortOrd}" />" />
<!--FAQ 내용 있을때-->
<div class="q_wrap">
<div class="btn_wrap btn_layout01">
<div class="tb_tit02">
<div class="tb_tit02_left">
<div class="t_best q_title">FAQ</div>
</div>
</div>
</div>
<c:if test="${not empty FAQList}">
<div class="tb_list02">
<div class="faq_wrap">
<ul class="faq">
<c:forEach var="FAQList" items="${FAQList}" varStatus="status">
<li <c:if test="${status.index == 0}"> class='first' </c:if>>
<button type="button" title="답변 열기" class="question" onclick="faqOpen(this);">
<p class="qst_text"><span>질문</span>Q</p>
<div>
<p class="qst_cont">${FAQList.nttSj}</p>
<p class="date">${FAQList.frstRegisterPnttm}</p>
</div>
</button>
<div class="answer">
<div class="answer_in">
<p class="qst_text"><span>답변</span>A</p>
<div>
<p class="awr_cont">${FAQList.nttCn }</p>
</div>
</div>
</div>
</li>
</c:forEach>
</ul>
</div>
</div>
</c:if>
<c:if test="${empty FAQList}">
<div class="q_text">
- 내용이 없습니다.
</div>
</c:if>
</div>
<!--Q&A 내용 있을때-->
<div class="q_wrap">
<div class="btn_wrap btn_layout01">
<div class="tb_tit02">
<div class="tb_tit02_left">
<div class="t_best q_title">Q&amp;A</div>
</div>
</div>
<div class="btn_right">
<button type="button" class="btnType04" data-tooltip="target_confirm_popup">교육문의</button>
</div>
</div>
<c:if test="${not empty qnaList}">
<div class="tb_list02">
<div class="faq_wrap">
<ul class="faq">
<c:forEach var="list" items="${qnaList}" varStatus="status">
<li <c:if test="${status.index == 0}"> class='first' </c:if>>
<button type="button" title="답변 열기" class="question" onclick="faqOpen(this);">
<p class="qst_text"><span>질문</span>Q</p>
<div>
<p class="qst_cont">${list.qnaCn }</p>
<p class="date">${list.frstRegistPnttm }</p>
</div>
</button>
<div class="answer">
<div class="answer_in">
<p class="qst_text"><span>답변</span>A</p>
<c:choose>
<c:when test="${not empty list.qnaAnswerCn }">
<div>
<p class="awr_cont">${list.qnaAnswerCn }</p>
<p class="date">${list.lastUpdtPnttm }</p>
</div>
</c:when>
<c:otherwise>
<p class="awr_cont">내용이 없습니다.</p>
</c:otherwise>
</c:choose>
</div>
</div>
</li>
</c:forEach>
</ul>
</div>
</div>
</c:if>
<c:if test="${empty qnaList}">
<div class="q_text">
- 내용이 없습니다.
</div>
</c:if>
</div>
</form:form>
</div>
<form id="qnaForm" name="qnaForm" method="post">
<!-- 교육대상자 확인 -->
<div class="tooltip-wrap q_pop">
<div class="popup_wrap popType01" tabindex="0" data-tooltip-con="target_confirm_popup" data-focus="target_confirm_popup" data-focus-prev="target_confirm_popup_close">
<div class="popup_tit">
<p>교육문의하기</p>
<button class="btn_popup_close tooltip-close" data-focus="target_confirm_popup_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="pop_tb_type01 tb_input" style="overflow:visible;">
<table>
<caption>교육문의 - 문의내용 입력</caption>
<thead>
<tr>
<th scope="col">문의내용</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<label for="qnaCn" class="label">교육문의 작성하기</label>
<textarea type="text" id="qnaCn" name="qnaCn" style="height: 220px;width: 100%;" title="교육문의 작성"></textarea>
</td>
</tr>
</tbody>
</table>
</div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btnType05" onclick="fn_qnaReg()">문의</button>
<button type="button" class="btnType02 tooltip-close" id="target_confirm_popup-close" data-focus="target_confirm_popup-close" data-focus-next="target_confirm_popup">취소</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 팝업을 위한 mask -->
<div class="mask"></div>
<!--// 신청 클릭 > 기소유예 대상자 확인 팝업 -->
</form>

View File

@ -0,0 +1,96 @@
<%--
Class Name : eduAplctReg.jsp
Description : 교육신청등록
Modification Information
수정일 수정자 수정내용
------- -------- ---------------------------
2021.12.02 조용준 내용
author : 조용준
since : 2021.12.02
--%>
<%@ 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"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<div class="cont_wrap edu_wrap" id="sub">
<div class="cont_tit">
<h2>교육신청</h2>
<div class="sns_go">
<button type="button" title="새창열림" onclick="window.open('http://www.facebook.com/koreacopyright')"><img
src="/ipedu/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
</div>
</div>
<div class="edu_img">
<img src="/ipedu/visitEdu/usr/publish/images/content/sub_edu05_main.png" alt="">
</div>
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>기소유예교육</p>
</div>
</div>
<div class="tb_type01 tb_write">
<table class="edu_table">
<caption>기소유예 교육소개 : 교육대상, 교육절차 등의 정보제공</caption>
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">
<p>교육대상</p>
</th>
<td>저작권 침해사범 중 검찰청으로부터 교육조건부 기소유예 처분을 받아 교육 의뢰된 자</td>
</tr>
<tr>
<th scope="row">
<p style="line-height: 14;">교육절차</p>
</th>
<td>
<ul class="edu_sus_num">
<li>
<p class="num">1</p>
<p><b>교육의뢰</b>검찰청 <img src="/ipedu/visitEdu/usr/publish/images/content/edu_arrow.png" alt="다음"> <span>위원회</span></p>
</li>
<li class="sus_te">
<p class="num">2</p>
<p><b>교육 실시·운영<span>(8시간)</span></b>한국지식재산보호원</p>
</li>
<li>
<p class="num">3</p>
<p><b>교육 이수자 확정</b>한국지식재산보호원</p>
</li>
<li class="sus_te">
<p class="num">4</p>
<p><b>교육 결과 통보<span>(분기별 또는 요청 시)</span></b>위원회 <img src="/ipedu/visitEdu/usr/publish/images/content/edu_arrow.png" alt="다음"> <span>검찰청</span></p>
</li>
</ul>
</td>
</tr>
</tbody>
</table>
</div>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btnType08" onclick="location.href='<c:url value="/web/ve/aplct/cmdTrgt/eduAplctList.do" />'">교육신청</button>
</div>
<div class="btn_right">
</div>
</div>
</div>

View File

@ -0,0 +1,861 @@
<%@ 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"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국지식재산보호원 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<spring:eval expression="@property['Globals.Innorix.License']" var="license"/>
<script src="<c:url value='/innorix/innorix_${license}.js' />"></script>
<script src="<c:url value='/js/kccadr/innorixCommon.js' />"></script>
<link rel="stylesheet" href="<c:url value='/innorix/innorix.css'/>" type="text/css">
<style>
input:disabled {
background-color: #f9f9f9 !important;
}
input:read-only {
background-color: #f9f9f9 !important;
}
#fileControl{margin: 8px 0 0 0; border: 1px solid #d5d5d5; border-radius: 5px; height: 150px !important; background-color: #fafafa;}
.innorix_basic div.irx_filetree.empty-uploader{background: url(/ipedu/visitEdu/usr/publish/images/content/dropzone_file_before.png) no-repeat center; height: 150px !important;}
.irx_filetree,.innorix_basic div.irx_infoBox{height: 150px !important;}
</style>
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
//대용량 업로드 세팅
/*
* ==================================================================
* INNORIX
* 파일전송 컨트롤 생성
* ==================================================================
*/
control = innorix.create({
el: '#fileControl' // 컨트롤 출력 HTML 객체 ID
, transferMode: 'both' // 업로드, 다운로드 혼합사용
, installUrl: '<c:url value="/innorix/install/install.html" />' // Agent 설치 페이지
, uploadUrl: '<c:url value="/innorix/exam/upload.jsp" />' // 업로드 URL
, height:40
, width: 650
, maxFileCount : 1 // 첨부파일 최대 갯수
, allowExtension : ["txt","xls","xlsx","png","jpg","jpeg","doc","ppt","hwp","pdf","zip"]
// 가능한 확장자 txt|xls|xlsx|png|jpg|jpeg|doc|ppt|hwp|pdf|zip
});
// 업로드 완료 후 이벤트
control.on('uploadComplete', function (p) {
console.log('uploadComplete : ', p);
fn_callBackInnorix(p.files); // 파일 정보 DB isnert function
});
});
/*
* 교육 확정일떄 취소를하면 팝업이 열림
* 열리기전 데이터를 form에 넣고 팝업 오픈
*/
function fn_cnclUpdate(eduAplctOrd, prcsAplctPrdOrd){
var cnclForm = document.cnclForm;
cnclForm.eduAplctOrd.value = eduAplctOrd;
cnclForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd;
}
function fn_veEduAplctCnclUpdate(eduAplctOrd){
var form = document.veEduAplctForm;
form.eduAplctOrd.value = eduAplctOrd;
var data = new FormData(document.getElementById("veEduAplctForm"));
if(confirm("취소 신청하시겠습니까?")){
var url = "${pageContext.request.contextPath}/web/ve/aplct/cmdTrgt/cnclUpdateAjax.do";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("취소되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/web/ve/aplct/cmdTrgt/sspnIdtmtEduAplctList.do'/>";
listForm.submit();
}
function fncGoList(){
linkPage(1);
}
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
$(this).val('');
});
}
function fncGoDetail(prcsAplctPrdOrd){
var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.action = "<c:url value='/web/ve/aplct/cmdTrgt/eduAplctDetail.do'/>";
viewForm.submit();
}
//서류 요청
function insetDocReq(){
//서류명 체크
if($("input[name=cnclCn]").val() == ''){
alert("취소사유를 입력해 주세요");
return false;
}
//첨부파일 체크 및 요청
if(confirm("제출 하시겠습니까?")){
if(control.getUploadFiles().length > 0){
var postObj = new Object();
postObj.innoDirPath = $('#innoDirPath').val();
control.setPostData(postObj); // 업로드시 함께 전달될 POST Param 추가
control.upload(); // 업로드 시작
}else{
alert("등록된 첨부파일이 없습니다.");
return false;
}
}
}
//서류 요청 양식 업로드 후 콜백
function fn_callBackInnorix(data){
var url = "<c:url value='/web/common/insertInnorixSspnCnClAjax.do' />";
//선택된 강사 ID
var sendData = {
"fileType": "sspnForm"
, "eduAplctOrd": $('#cnclForm #eduAplctOrd').val()
, "prcsAplctPrdOrd": $('#cnclForm #prcsAplctPrdOrd').val()
, "innorixFileListVO": data
, "cnclCn" : $('#cnclCn').val()
, "successMsg" : "등록이 완료되었습니다."
}
console.log('sendData : ', sendData);
/*
* 공통 : innorixCommon.js
* fn_innorixCmmAjax() 호출 후 status가 성공(OK)이면 실행
*/
if(fn_innorixCmmAjax(sendData, url) == "OK")
{
location.reload(true);
}
}
// 설문조사 버튼 클릭 이벤트
function selectQestnInfo(id, action){
$('#srvyPopupForm #eduAplctOrd').val(id);
$('#eduAplctOrd').val(id);
if(action == 'insert'){
$('#popupUpdate').hide();
$('#popupInsert').show();
}
else if(action == 'update'){
$('#popupUpdate').show();
$('#popupInsert').hide();
}
$.ajax({
type:"POST"
,url:"${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/selectQustnrCommonAjax.do"
,data: {
"lctrDivCd" : "60" // 기반강화 -> 기소유예(60)도 같이써야함
// ,"eduChasiOrd" : chId
}
,dataType:'json'
,success:function(returnData){
console.log('returnData : ', returnData);
fn_makeQestnTbody(returnData);
// update면 선택한 목록 가져오기
if(action == 'update'){
fn_selectQestnTbody();
}
}
,error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
// 설문조사 문항 가져오기
function fn_makeQestnTbody(returnData){
$('#qustnrTmplatId').val(returnData.qustnrTmplatId);
$('#qestnrId').val(returnData.qestnrId);
var data = returnData.Comtnqustnrqesitm; // 이 변수에 AJAX를 통해 가져온 데이터가 저장되어 있다고 가정
$('#qestmInfoSize').val(data.length);
// tbody에 새로운 행들을 추가
var $tbody = $("#qestnTbody");
$tbody.empty(); // 기존의 tbody 내용을 비웁니다.
$.each(data, function(index, item) {
var $row = $("<tr></tr>");
// hiddem값 셋팅
$row.append('<input type="hidden" name="resultList[' + index + '].qestnrId" value="' + item.qestnrId + '">');
$row.append('<input type="hidden" name="resultList[' + index + '].qestnrQesitmId" value="' + item.qestnrQesitmId + '">');
$row.append('<input type="hidden" id="qustnrRsltId_'+index+'" name="resultList[' + index + '].qustnrRsltId" value="">');
// 첫 번째 열: 설문 문항
$row.append('<th scope="row" class="t_left">' + (index + 1) + ') ' + item.qestnCn + '</th>');
// 평가 옵션 열 추가
var inputTypes = ['verySatisfied', 'satisfied', 'neither', 'dissatisfied', 'veryDissatisfied'];
$.each(inputTypes, function(i, type) {
var inputId = type + '_' + index;
var $cell = $('<td></td>');
var $label = $('<label for="' + inputId + '" class="label">' + type + '</label>');
var $input = $('<input type="radio" class="popupInput" id="' + inputId + '" name="resultList[' + index + '].responseRadio" value="' + type + '">');
$cell.append($label).append($input);
$row.append($cell);
});
$tbody.append($row);
});
}
function srvySendSubmit(type){
var isValid = true;
$("#qestnTbody tr").each(function(index) {
// 해당 행의 라디오 버튼이 선택되었는지 확인
if ($("input[type='radio']:checked", this).length === 0) {
isValid = false;
alert("문항 " + (index + 1) + "을(를) 확인해주세요.");
isValid = false;
return false; // 반복 중지
}
});
if (!isValid) {
return false;
}
var masage = "";
if(type == 'i'){
masage = "설문결과를 등록 하시겠습니까?";
$("#qustnrIemType").val("insert")
}else if(type == 'u'){
masage = "설문결과를 수정 하시겠습니까?";
$("#qustnrIemType").val("update")
}
if(confirm(masage)){
var data = new FormData(document.getElementById("srvyPopupForm"));
$.ajax({
type:"POST"
,url:"${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/mergeSrvyInfoAjax.do"
,data: data
,dataType:'json'
,async: false
,processData: false
,contentType: false
,cache: false
,success:function(returnData){
if(returnData.result == 'success'){
if(type == 'i'){
alert("설문결과가 등록 되었습니다.");
}else if(type == 'u'){
alert("설문결과가 수정 되었습니다.");
}
window.location.reload();
}else if(returnData.result == 'fail'){
alert(returnData.msg);
location.href="${pageContext.request.contextPath}/web/user/login/ssoLogin.do?test=test";
}
}
,error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function fn_selectQestnTbody(){
var data = new FormData(document.getElementById("srvyPopupForm"));
$.ajax({
type:"POST"
,url:"${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/selectSrvyInfoAjax.do"
,data: data
,dataType:'json'
,async: false
,processData: false
,contentType: false
,cache: false
,success:function(returnData){
if(returnData.result == 'success'){
$('#qestnrRespondId').val(returnData.respondId);
$.each(returnData.data, function(index, item) {
console.log('#'+item.verySatisfied+'_'+index);
$('#qustnrRsltId'+'_'+index).val(item.qustnrRsltId);
if(item.verySatisfied == '1') {
$('#verySatisfied'+'_'+index).prop('checked', true);
}
if(item.satisfied == '1') {
$('#satisfied'+'_'+index).prop('checked', true);
}
if(item.neither == '1') {
$('#neither'+'_'+index).prop('checked', true);
}
if(item.dissatisfied == '1') {
$('#dissatisfied'+'_'+index).prop('checked', true);
}
if(item.veryDissatisfied == '1') {
$('#veryDissatisfied'+'_'+index).prop('checked', true);
}
});
console.log('returnData : ', returnData);
}else if(returnData.result == 'fail'){
alert(returnData.msg);
// location.href="${pageContext.request.contextPath}/web/user/login/ssoLogin.do?test=test";
}
}
,error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
//설문 팝업
function fncQustnrList(
id //aplctOrd
, chId //chasiOrd
, p_site_id_cd //10,20,30
, p_action //select, insert
, p_qustnrTmplatId //select, insert
, p_qestnrId //select, insert
, p_qustnrRespondId //select, insert
) {
paramObj = {
"eduAplctOrd" : id
,"eduChasiOrd" : chId
,"siteIdCd" : p_site_id_cd
,"siteId" : "60" //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소
,"action" : p_action
,"qustnrTmplatId" : p_qustnrTmplatId
,"qestnrId" : p_qestnrId
,"qustnrRespondId" : p_qustnrRespondId
};
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/scholInfo/popup/qustnrFndtnPopList.do"
, 800
, 700
, paramObj
, "Y"
, "QustnrList"
);
}
</script>
<!-- content -->
<div class="cont_wrap" id="sub">
<form id="veEduAplctForm" name="veEduAplctForm">
<input type="hidden" id="eduAplctOrd" name="eduAplctOrd">
<input type="hidden" id="aprvlCd" name="aprvlCd" value="40">
</form>
<form id="cnclForm" name="cnclForm">
<input type="hidden" id="eduAplctOrd" name="eduAplctOrd">
<input type="hidden" id="prcsAplctPrdOrd" name="prcsAplctPrdOrd">
</form>
<form name="regForm" id="regForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form name="viewForm" id="viewForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form name="goEduAplctListForm" id="goEduAplctListForm">
</form>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEPrcsDetailVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEPrcsDetailVO.searchSortOrd}" />" />
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="" />
<div class="cont_tit">
<h2>신청목록</h2>
<div class="sns_go">
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
</div>
</div>
<div class="list_top">
<div class="list_top_left">
<label for="searchStatus" class="label">신청상태 선택</label>
<select class="selType1" id="searchStatus" name="searchStatus">
<option ${vEPrcsDetailVO.searchStatus eq '' ? 'selected' : ''} value="">전체</option>
<option ${vEPrcsDetailVO.searchStatus eq 10 ? 'selected' : ''} value="10">교육신청</option>
<%-- <option ${vEPrcsDetailVO.searchStatus eq 30 ? 'selected' : ''} value="30">교육취소</option> --%>
<option ${vEPrcsDetailVO.searchStatus eq 15 ? 'selected' : ''} value="15">진행중</option>
<option ${vEPrcsDetailVO.searchStatus eq 20 ? 'selected' : ''} value="20">완료</option>
</select>
</div>
<div class="btn_wrap">
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchStartDt" name="searchStartDt" title="시작일 선택" value="${vEPrcsDetailVO.searchStartDt}"> --%>
<duet-date-picker identifier="date" name="searchStartDt" class="startDate" value="${vEPrcsDetailVO.searchStartDt}"></duet-date-picker>
</div>
~
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchEndDt" name="searchEndDt" title="종료일 선택" value="${vEPrcsDetailVO.searchEndDt}"> --%>
<duet-date-picker identifier="date" name="searchEndDt" class="endDate" value="${vEPrcsDetailVO.searchEndDt}"></duet-date-picker>
</div>
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script>
<button type="button" class="btnType01" onclick="fncGoList();">검색</button>
<button type="button" class="btnType02" onclick="fncReset(this);">초기화</button>
</div>
</div>
<!-- list -->
<div class="tb_list01">
<table>
<caption>신청 목록 - 교육과정, 교육일자, 신청결과, 설문조사 확인 등의 정보제공</caption>
<colgroup>
<col style="width:35%;">
<col style="width:10%;">
<col style="width:13%;">
<col style="width:13%;">
<col style="width:10%;">
<%-- <col style="width:13%;"> --%>
</colgroup>
<thead>
<tr>
<th scope="col">교육과정</th>
<th scope="col">교육일자</th>
<th scope="col">신청결과</th>
<th scope="col">설문조사</th>
<th scope="col">비고</th>
<!-- <th scope="col">이수증</th> -->
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" onkeypress="if(event.keyCode == 13){fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');}" style="cursor:pointer;" tabindex="0">
<c:choose>
<c:when test="${not empty list.title}">
<c:out value="${list.title}"/>
</c:when>
<c:otherwise>
<c:out value="${list.prcsNm}"/>
</c:otherwise>
</c:choose>
<%-- <c:out value="${list.prcsNm}"/>(<c:out value="${list.prcsAplctPrdOrd}"/>) --%>
</td>
<td>
<%-- <c:out value="${list.eduStrtPnttm}"/>~<c:out value="${list.eduDdlnPnttm}"/> --%>
<c:out value="${list.eduStrtPnttm}"/>
</td>
<td>
<!--
ve_edu_aplct
aprvl_cd - 교육신청에 대한 상태
10 요청
100 찜하기
120 선정완료
140 선정취소
20 승인
230 대기
30 반려
35 취소요청
40 취소
60 교육확정
70 수정요청
80 수정완료
90 교육미확정
vea_aplct_detail_info
aprvl_state_cd - 신청된 교육에 대한 상태
VEA003 10 미이수
VEA003 20 이수완료
VEA003 30 취소
VEA003 35 취소요청
VEA003 40 취소반려
VEA003 50 반려
ve_prcs_aplct_prd
ddln_cd - 교육과정의 진행 상태
VEA004 10 신청마감
VEA004 20 교육확정
-->
<c:choose>
<c:when test="${not empty list.aplctStateCd }">
<!--
VEA003 10 미이수
VEA003 20 이수완료
VEA003 30 취소
VEA003 35 취소요청
-->
<kc:code codeId="VEA003" code="${list.aplctStateCd }"/>
<!-- 취소요청 내용이 있고 미이수, 이수인 상태 -->
<c:if test="${not empty list.cnclCn and (list.aplctStateCd eq 10 or list.aplctStateCd eq 20)}">
(취소-반려)
</c:if>
<c:if test="${list.aplctStateCd eq 10 }"> <!--교육 승인된 상태 (미이수)일 때만 취소버튼 노출 -->
<button type="button" title="신청취소" class="btnType02" data-tooltip="sub37_pop02" onclick="fn_cnclUpdate('${list.eduAplctOrd }','${list.prcsAplctPrdOrd }')">취소</button>
</c:if>
</c:when>
<c:otherwise>
<kc:code codeId="VE0003" code="${list.aprvlCd}"/>
<c:if test="${list.aprvlCd eq 10 }">
<button type="button" title="신청취소" class="btnType02" onclick="fn_veEduAplctCnclUpdate('${list.eduAplctOrd }')">취소</button>
</c:if>
</c:otherwise>
</c:choose>
<!-- <button type="button" title="신청취소" class="btnType02" data-tooltip="sub01_pop01">취소</button> -->
</td>
<td>
<!-- 신청 승인상태 20 and 현재가 교육종료보다 이후 체크 1 -->
<!--
취소상태
list.aplctStateCd ne 30
list.aprvlCd ne 40
-->
<%-- <c:choose> --%>
<%-- <c:when test="${list.aprvlCd eq 20 --%>
<%-- and list.dateChk eq 1 --%>
<%-- and not list.qestRsltExists --%>
<%-- and list.aplctStateCd ne 30 --%>
<%-- and list.aprvlCd ne 40 --%>
<%-- }"> --%>
<%-- <button type="button" class="btnType01" data-tooltip="sub37_pop01" onclick="selectQestnInfo('${list.eduAplctOrd}','insert')" title="팝업 열림">설문등록</button> --%>
<%-- </c:when> --%>
<%-- <c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and list.qestRsltExists }"> --%>
<%-- <button type="button" class="btnType01" data-tooltip="sub37_pop01" onclick="selectQestnInfo('${list.eduAplctOrd}','update')" title="팝업 열림">설문수정</button> --%>
<%-- </c:when> --%>
<%-- <c:otherwise> --%>
<!-- - -->
<%-- </c:otherwise> --%>
<%-- </c:choose> --%>
<c:choose>
<c:when test="${list.aprvlCd eq 20 and list.qestRsltExists and list.aplctStateCd ne 10}">
<!-- 설문노출대상(승인처리를 받았음(20) && 교육기간이 지났음 list.qestRsltExists=true && 미이수가 아닌것(10) ) -->
<c:choose>
<c:when test="${list.aplctStateCd eq 20 and list.qestnrId10Cnt gt 0}">
<!-- 작성된 설문이 있다 -->
<button type="button" class="btnType02" data-tooltip="sub37_pop20"
onclick="fncQustnrList('${list.eduAplctOrd}','${list.eduChasiOrd}','10','select'
,'${list.qustnrTmplatId}','${list.qestnrId10}',''
)" title="팝업 열림">설문완료</button>
</c:when>
<c:when test="${empty list.qestnrId10 and list.aprvlCd eq 20}">
<!-- 대상 설문이 없다 -->
대상설문없음
</c:when>
<c:when test="${empty list.qestnrId10Cnt or list.qestnrId10Cnt eq 0}">
<!-- 작성된 설문이 없다 -->
<button type="button" class="btnType01" data-tooltip="sub37_pop20"
onclick="fncQustnrList('${list.eduAplctOrd}','${list.eduChasiOrd}','10','insert'
,'${list.qustnrTmplatId}','${list.qestnrId10}',''
)" title="팝업 열림">설문등록</button>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</c:when>
<c:otherwise>
<!-- 설문노출대상 아님 -->
-
</c:otherwise>
</c:choose>
</td>
<td>
<c:if test="${(list.aprvlCd eq '10' or list.aprvlCd eq '20') and list.ddlnCd ne '20'}">
<button type="button" class="btnType05" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">교육취소</button>
</c:if>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="4"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btnType01" onclick="location.href='<c:url value="/web/ve/aplct/cmdTrgt/eduAplctList.do" />'">강의목록</button>
</div>
</div>
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
</form:form>
</div>
<!-- 서류요청 팝업 -->
<div class="tooltip-wrap">
<div class="popup_wrap popType05" tabindex="0" data-tooltip-con="sub37_pop02" data-focus="sub37_pop02" data-focus-prev="sub37_pop02_close">
<div class="popup_tit">
<p>취소 사용 제출</p>
<button class="btn_popup_close tooltip-close" data-focus="sub37_pop02_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="popup_table_top">
<button type="button" class="btnType06">취소양식 다운로드</button>
</div>
<div class="pop_tb_type01">
<table>
<caption>취소사유 작성표</caption>
<colgroup>
<col style="width: 22%;">
<col style="">
</colgroup>
<tr>
<th scope="col">취소사유</th>
<td><label for="cnclCn" class="label">취소사유 작성</label>
<textarea id="cnclCn" name="cnclCn" title="취소사유 작성하기"></textarea></td>
</tr>
</table>
</div>
<div class="popup_cont upload_area">
<div>
<div class="pop_search_wrap">
<label for="fileNm" class="label">첨부파일 선택</label>
<button type="button" onclick="control.openFileDialogSingle();" class="btnType01 btn_add_file">파일찾기</button>
</div>
<div id="fileControl"></div><br/>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<!-- <button type="button" class="btnType05">제출</button> -->
<button type="button" class="btnType05" id="popupSubmin" onclick="insetDocReq();">요청</button>
<button type="button" class="btnType02 tooltip-close" data-focus="sub37_pop02_close" data-focus-next="sub37_pop02">닫기</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
</div>
<!--// 서류요청 팝업-->
<!-- 강의만족도 결과 등록 팝업 -->
<form id="srvyPopupForm" name="srvyPopupForm" method="post" >
<input type="hidden" name="lctrDivCd" id="lctrDivCd" value="60">
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="">
<input type="hidden" name="qustnrTmplatId" id="qustnrTmplatId" value="${qustnrTmplatId}">
<input type="hidden" name="qestnrId" id="qestnrId" value="${qestnrId}">
<input type="hidden" id="qestmInfoSize" value="${fn:length(Comtnqustnrqesitm)}">
<input type="hidden" name="qestnrRespondId" id="qestnrRespondId" value="">
<input type="hidden" name="qustnrIemType" id="qustnrIemType" value="">
<div class="tooltip-wrap">
<div class="popup_wrap popType05" tabindex="0" data-tooltip-con="sub37_pop01" data-focus="sub37_pop01" data-focus-prev="sub37_pop01_close">
<div class="popup_tit">
<p>강의만족도 결과 등록</p>
<button class="btn_popup_close tooltip-close" data-focus="sub37_pop01_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="pop_tb_type02">
<table>
<caption>강의만족도 결과표 - 평가문항, 매우만족, 만족, 보통, 불만족, 매우 불만족 입력</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 12%;">
</colgroup>
<thead>
<tr>
<th scope="col">평가문항</th>
<th scope="col">매우만족</th>
<th scope="col">만족</th>
<th scope="col">보통</th>
<th scope="col">불만족</th>
<th scope="col">매우불만족</th>
</tr>
</thead>
<tbody id="qestnTbody">
</tbody>
</table>
</div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btnType05" id="popupInsert" onclick="srvySendSubmit('i');">제출</button>
<button type="button" class="btnType05" id="popupUpdate" onclick="srvySendSubmit('u');">수정</button>
<button type="button" class="btnType02 tooltip-close" data-focus-next="sub37_pop01" data-focus="sub37_pop01_close">취소</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
</div>
</form>
<!--// 강의만족도 결과 등록 팝업-->
<spring:eval expression="@property['Globals.prod.islocal']" var="isLocal"/>
<c:choose>
<c:when test="${isLocal eq 'real'}">
<!-- <script src="http://101.79.81.151/ReportingServer/html5/js/crownix-viewer.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://101.79.81.151/ReportingServer/html5/css/crownix-viewer.min.css"> -->
<script src="https://www.edu-copyright.or.kr/ipedu/ReportingServer/html5/js/crownix-viewer.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://www.edu-copyright.or.kr/ipedu/ReportingServer/html5/css/crownix-viewer.min.css">
</c:when>
<c:otherwise>
<script src="http://119.193.215.98:8093/ReportingServer/html5/js/crownix-viewer.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://119.193.215.98:8093/ReportingServer/html5/css/crownix-viewer.min.css">
</c:otherwise>
</c:choose>
<script>
/*
* 오버레이 방식
*/
function fncCmpltCrtfc(p_prcsAplctPrdOrd, p_eduAplctOrd) {
var isLocal = '${isLocal}';
if(isLocal == 'real'){ //운영
var viewer = new m2soft.crownix.Viewer(
'https://www.edu-copyright.or.kr/ipedu/ReportingServer/service');
viewer.hideToolbarItem([ "save" ]);
//viewer.showToolbarItem(["print"]);
viewer.showToolbarItem([ "print_pdf" ]);
viewer.openFile(
'cmplt_crtfc_20231030.mrd',
'/rf [https://www.edu-copyright.or.kr/ipedu/ve/aplct/cmdTrgt/sspnIdtmtEduAplctCmpltCrtfcAjax.do?prcsAplctPrdOrd='
+ p_prcsAplctPrdOrd
+ '&eduAplctOrd='
+ p_eduAplctOrd + ']');
}else{ //개발
var viewer = new m2soft.crownix.Viewer(
'http://119.193.215.98:8093/ReportingServer/service');
viewer.hideToolbarItem([ "save" ]);
//viewer.showToolbarItem(["print"]);
viewer.showToolbarItem([ "print_pdf" ]);
viewer.openFile(
'cmplt_crtfc_20231030.mrd',
'/rf [http://119.193.215.98:9989/ipedu/ve/aplct/cmdTrgt/sspnIdtmtEduAplctCmpltCrtfcAjax.do?prcsAplctPrdOrd='
+ p_prcsAplctPrdOrd
+ '&eduAplctOrd='
+ p_eduAplctOrd + ']');
}
}
</script>