이수증 수정 중

This commit is contained in:
leejunho 2025-11-07 11:14:58 +09:00
parent 81a18bd8b9
commit a000478d0f
12 changed files with 589 additions and 399 deletions

View File

@ -134,4 +134,6 @@ public interface VEEduMIXService {
List<VEEduAplctVO> selectExprnRsltFileDownList(VEEduAplctVO paramVO) throws Exception;
void updateCnclStatus(VEEduAplctVO vEEduAplctVO);
List<VEEduAplctVO> selectCrtfcMngList( VEEduAplctVO paramVO );
}

View File

@ -322,4 +322,8 @@ public class VEEduMIXDAO extends EgovAbstractDAO {
List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectExprnRsltFileDownList", paramVO);
return tlist;
}
public List<VEEduAplctVO> selectCrtfcMngList(VEEduAplctVO paramVO) {
return (List<VEEduAplctVO>) list("VEEduMIXDAO.selectCrtfcMngList", paramVO);
}
}

View File

@ -222,7 +222,7 @@ public class VEEduMIXServiceImpl implements VEEduMIXService {
public List<VEEduAplctVO> selectTrgtList4Cmplt(VEEduAplctVO paramVO) {
return vEEduMIXDAO.selectTrgtList4Cmplt(paramVO);
}
public List<VEEduAplctVO> selectCmdTrgtList4Cmplt(VEEduAplctVO paramVO) {
return vEEduMIXDAO.selectCmdTrgtList4Cmplt(paramVO);
}
@ -292,5 +292,10 @@ public class VEEduMIXServiceImpl implements VEEduMIXService {
public void updateCnclStatus(VEEduAplctVO paramVO) {
vEEduMIXDAO.updateCnclStatus(paramVO);
}
}
@Override
public List<VEEduAplctVO> selectCrtfcMngList( VEEduAplctVO paramVO ) {
return vEEduMIXDAO.selectCrtfcMngList(paramVO);
}
}

View File

@ -8,6 +8,9 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import kcc.com.cmm.LoginVO;
import kcc.let.uat.uia.service.SsoLoginVO;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -665,46 +668,92 @@ public class CndtnInstrMngController {
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/instrActvtHstrySignAndCmpltCrtfcMngList.do")
public String instrActvtHstrySignAndCmpltCrtfcMngList(
@ModelAttribute("vEInstrActvtHstryVO") VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
//LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
//SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
// if (loginVO == null || ssoLoginVO == null) {
// return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
// }
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVO);
/*PaginationInfo paginationInfo = this.setPagingStep1_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVO);
//2. pageing step2
vEInstrDetailActvtHstryVO = this.setPagingStep2_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVO, paginationInfo);
vEInstrDetailActvtHstryVO.setSearchKeyword(egovCryptoUtil.encrypt(vEInstrDetailActvtHstryVO.getSearchKeyword()));
// List<VEInstrDetailActvtHstryVO> vEInstrDetailActvtHstryVOList = vEInstrDetailActvtHstryService.selectSignPagingList(vEInstrDetailActvtHstryVO);
List<VEInstrDetailActvtHstryVO> vEInstrDetailActvtHstryVOList = vEInstrDetailActvtHstryService.selectSignAndCmpltCrtfcPagingList(vEInstrDetailActvtHstryVO);
vEInstrDetailActvtHstryVOList.stream().forEach(t-> t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//3.pageing step3
paginationInfo = this.setPagingStep3_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 검색어 복호화
vEInstrDetailActvtHstryVO.setSearchKeyword(egovCryptoUtil.decrypt(vEInstrDetailActvtHstryVO.getSearchKeyword()));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEInstrDetailActvtHstryVOList);
model.addAttribute("list", vEInstrDetailActvtHstryVOList);*/
VEEduAplctVO paramVO = new VEEduAplctVO();
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(paramVO.getPageIndex());
paginationInfo.setRecordCountPerPage(paramVO.getPageUnit());
paginationInfo.setPageSize(paramVO.getPageSize());
paramVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
paramVO.setLastIndex(paginationInfo.getLastRecordIndex());
paramVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(paramVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
paramVO.setSearchSortCnd("a.frst_regist_pnttm");
paramVO.setSearchSortOrd("ASC");
}
//과정 신청자 정보 가져오기
//해당 과정을 제출한 사용자 정보를 가져온다.
paramVO.setSbmtYn("Y");
// 검색 - 날짜
paramVO.setSearchSmbtStartDt(vEPrcsDetailVO.getSearchSmbtStartDt());
paramVO.setSearchSmbtEndDt(vEPrcsDetailVO.getSearchSmbtEndDt());
// 검색 - 검색어
paramVO.setSearchStatus(vEPrcsDetailVO.getSearchStatus());
paramVO.setSearchSelStatus(vEPrcsDetailVO.getSearchSelStatus());
if(StringUtils.isNotEmpty(vEPrcsDetailVO.getSearchStatus())) {
String searchQuery = "AND vsit.edu_state_cd = '"+vEPrcsDetailVO.getSearchStatus()+"' ";
paramVO.setSearchQuery(searchQuery);
}
paramVO.setLctrDivCd(LCTR_DIV_CD); //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소
List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectCrtfcMngList(paramVO);
vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList);
int totCnt = 0;
if(vEPrcsDetailVOList.size() > 0) totCnt = vEPrcsDetailVOList.get(0).getTotCnt();
paginationInfo.setTotalRecordCount(totCnt);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
model.addAttribute("paginationInfo", paginationInfo);
// return "oprtn/cmm/instrActvtHstrySignMngList";
return "oprtn/cndtnSspnIdtmt/instrActvtHstrySignAndCmpltCrtfcMngList";
}
/**
* 교육실적통계 화면-개별
*/

View File

@ -2008,7 +2008,7 @@
/*
ORDER BY 1=1
*/
ORDER BY
ORDER BY
<isNotEmpty property="orderByQuery">
$orderByQuery$
</isNotEmpty>
@ -10487,7 +10487,7 @@ VALUES
<iterate open="(" close=")" conjunction="," property="rsltList" prepend="AND b.edu_chasi_ord IN" > #rsltList[]#</iterate>
ORDER BY b.EDU_HOPE_DT ASC, B.STRT_TM ASC;
</select>
<select id="VEEduMIXDAO.selectExprnRsltFileDownList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* 임시.*NOT_SQL_LOG.* VEEduMIXDAO.selectExprnRsltFileDownList */
SELECT
@ -10509,4 +10509,154 @@ VALUES
</iterate>
</select>
<select id="VEEduMIXDAO.selectCrtfcMngList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
SELECT
ROW_NUMBER() OVER ( ORDER BY a.frst_regist_pnttm ASC) AS rowNo
, count(*) over () AS totCnt
, vpap.TITLE AS title
, vsit.CMPTNT_ATHRT AS cmptntAthrt
, vsit.VNT_YEAR AS vntYear
, vsit.VNT_NMBR AS vntNmbr
, vsit.PRSCTR_NM AS prsctrNm
, vsit.req_nmbr AS reqNmbr
, CASE WHEN vsit.sex = 'M' THEN '남성' WHEN vsit.sex = 'F' THEN '여성' ELSE '' END trgtSex
, qe.QESTNR_ID AS qestnrId
, /* 설문했으면 ID가 있음 */ vadi.APLCT_STATE_CD AS aplctStateCd
, /* 이수 상태 */ vadi.CNCL_CN AS cnclCn
, /* 취소사유 */ vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId
, /* 취소요청파일 */ vsit.edu_state_cd AS eduStateCd
, le.MBER_NM AS userNm
, le.MBER_ID AS mberId
, a.edu_aplct_ord AS eduAplctOrd
, a.lctr_div_cd AS lctrDivCd
, a.user_id AS userId
, a.prcs_ord AS prcsOrd
, a.edu_slct_cd AS eduSlctCd
, a.edu_slct_area_cd AS eduSlctAreaCd
, a.schol_instt_nm AS scholInsttNm
, a.schol_div_cd AS scholDivCd
, a.isltn_schol_yn AS isltnScholYn
, a.addr AS addr
, a.addr_detail AS addrDetail
, a.chrg_nm AS chrgNm
, a.d_birth AS dBirth
, a.clphone AS clphone
, a.phone AS phone
, a.email AS email
, a.edu_place AS eduPlace
, a.sbmt_yn AS sbmtYn
, TO_CHAR(a.sbmt_pnttm, 'YYYY-MM-DD') AS sbmtPnttm
, a.aprvl_cd AS aprvlCd
, TO_CHAR(a.aprvl_pnttm, 'YYYY-MM-DD') AS aprvlPnttm
, a.aprvl_cn AS aprvlCn
, a.instt_nm AS insttNm
, a.instt_div_cd AS insttDivCd
, a.hope_sbjct AS hopeSbjct
, a.rqst_cn AS rqstCn
, TO_CHAR(a.frst_regist_pnttm, 'YYYY-MM-DD') AS frstRegistPnttm
, a.frst_register_id AS frstRegisterId
, TO_CHAR(a.last_updt_pnttm, 'YYYY-MM-DD') AS lastUpdtPnttm
, a.last_updusr_id AS lastUpdusrId
, a.schol_seal_atch_file_id AS scholSealAtchFileId
, a.edu_trgt AS eduTrgt
, a.edu_prsnl AS eduPrsnl
, a.edu_cn AS eduCn
, a.strt_oprtn_dt AS strtOprtnDt
, a.end_oprtn_dt AS endOprtnDt
, a.rprt_sbmt_dt AS rprtSbmtDt
, a.trans_atch_file_id AS transAtchFileId
, a.use_yn AS useYn
, a.aplct_cn AS aplctCn
, a.rslt_atch_file_id AS rsltAtchFileId
, vsit.trgt_nm AS trgtNm
, vsit.sspn_idtmt_trgt_ord AS sspnIdtmtTrgtOrd
, vsit.clphone AS vs_clphone
, vsit.d_birth AS dBirth
, CASE
WHEN TO_CHAR(NOW(), 'YYYY.MM.DD') > COALESCE(vpap.edu_ddln_pnttm, vpap.edu_strt_pnttm) THEN 1
ELSE 0 END AS qestRsltExists
, /* 설문지 정보 */ I.qustnr_tmplat_id AS qustnrTmplatId
, COALESCE(qustnr01.QESTNR_ID_10, i.qestnr_id_10) AS qestnrId10
, COALESCE(qustnr01.QESTNR_ID_20, i.qestnr_id_20) AS qestnrId20
, COALESCE(qustnr01.QESTNR_ID_30, i.qestnr_id_30) AS qestnrId30
, /* 답변 정보 */ qustnr01.QESTNR_ID_10_CNT AS qestnrId10Cnt
, qustnr01.QESTNR_ID_20_CNT AS qestnrId20Cnt
, qustnr01.QESTNR_ID_30_CNT AS qestnrId30Cnt
FROM
ve_edu_aplct a
JOIN ve_prcs_aplct_prd vpap ON a.PRCS_ORD = vpap.PRCS_APLCT_PRD_ORD
LEFT JOIN VEA_APLCT_DETAIL_INFO vadi ON a.EDU_APLCT_ORD = vadi.EDU_APLCT_ORD /*
AND vpap.PRCS_APLCT_PRD_ORD = vadi.PRCS_APLCT_PRD_ORD */
JOIN LETTNGNRLMBER le ON /* a.USER_ID = le.MBER_ID */ a.USER_ID = le.esntl_id
LEFT JOIN LETTNQESTNRINFO qe ON a.USER_ID = qe.FRST_REGISTER_ID
LEFT JOIN VEA_SSPN_IDMT_TRGT vsit ON (a.rnds_ord = vsit.SSPN_IDTMT_TRGT_ORD)
LEFT OUTER JOIN (SELECT
aa.EDU_APLCT_ORD
, aa.prcs_ord
, aa.QUSTNR_TMPLAT_ID
, aa.user_id
, MAX(CASE WHEN bb.site_id_cd = '10' THEN aa.QESTNR_ID ELSE NULL END) AS QESTNR_ID_10
, MAX(CASE WHEN bb.site_id_cd = '20' THEN aa.QESTNR_ID ELSE NULL END) AS QESTNR_ID_20
, MAX(CASE WHEN bb.site_id_cd = '30' THEN aa.QESTNR_ID ELSE NULL END) AS QESTNR_ID_30
, SUM(CASE WHEN bb.site_id_cd = '10' THEN 1 ELSE 0 END) AS QESTNR_ID_10_CNT
, SUM(CASE WHEN bb.site_id_cd = '20' THEN 1 ELSE 0 END) AS QESTNR_ID_20_CNT
, SUM(CASE WHEN bb.site_id_cd = '30' THEN 1 ELSE 0 END) AS QESTNR_ID_30_CNT
FROM
(SELECT
a.EDU_APLCT_ORD
, a.prcs_ord
, b.QUSTNR_TMPLAT_ID
, b.QESTNR_ID
, a.user_id
FROM
ve_edu_aplct a
, LETTNQESTNRRSLTDETAIL b
WHERE
1 = 1 /*
AND b.respond_id = a.user_id */
AND a.edu_aplct_ord = b.edu_aplct_ord
AND (b.EDU_CHASI_ORD IS NULL OR b.EDU_CHASI_ORD = '')) aa
, lettnqestnrinfo bb
WHERE /* aa.qustnr_tmplat_id = bb.qustnr_tmplat_id */
1 = 1
AND aa.qestnr_id = bb.qestnr_id
GROUP BY aa.EDU_APLCT_ORD, aa.prcs_ord, aa.QUSTNR_TMPLAT_ID, aa.user_id) qustnr01
ON (a.edu_aplct_ord = qustnr01.edu_Aplct_Ord
AND a.PRCS_ORD = qustnr01.prcs_Ord)
LEFT OUTER JOIN (SELECT
a.QUSTNR_TMPLAT_ID
, a.SITE_ID
, a.QESTNR_ID AS QESTNR_ID_10
, NULL AS QESTNR_ID_20
, NULL AS QESTNR_ID_30
, a.qustnr_bgnde
, a.qustnr_endde /* MAX(CASE WHEN a.site_id_cd = '10' THEN a.QESTNR_ID ELSE NULL END) AS QESTNR_ID_10, MAX(CASE WHEN a.site_id_cd = '20' THEN a.QESTNR_ID ELSE NULL END) AS QESTNR_ID_20, MAX(CASE WHEN a.site_id_cd = '30' THEN a.QESTNR_ID ELSE NULL END) AS QESTNR_ID_30 */
FROM
LETTNQESTNRINFO a
WHERE
a.SITE_ID = '60'
AND a.SITE_ID_CD IN ('10', '20', '30') /*
AND TO_CHAR(NOW(), 'YYYY.MM.DD') BETWEEN COALESCE(a.qustnr_bgnde, '2000.01.01')
AND COALESCE(a.qustnr_endde, '9999.12.31')
GROUP BY a.QUSTNR_TMPLAT_ID , a.SITE_ID */ ) I
ON (vpap.edu_strt_pnttm BETWEEN COALESCE(I.qustnr_bgnde, '20000101')
AND COALESCE(I.qustnr_endde, '99991231'))
WHERE
1 = 1
AND a.sbmt_yn = 'Y'
AND a.use_yn = 'Y' /* 승인(20), 취소요청(35), 취소승인(40), 확정(60)된 사람만 보여줌 old */
AND a.aprvl_cd IN ('20', '35', '40', '60') /* 요청(10), 승인(20), 반려(30), 확정(60) 이건 교육확정된 것 이므로 확정된 사람기준으로 보여줌 */
AND a.aprvl_cd IN ('60')
AND a.lctr_div_cd = #lctrDivCd#
ORDER BY 1=1
<isNotEmpty property="searchSortCnd">
,$searchSortCnd$
</isNotEmpty>
<isNotEmpty property="searchSortOrd">
$searchSortOrd$
</isNotEmpty>
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY
</select>
</sqlMap>

View File

@ -1982,7 +1982,8 @@
ON a.prcs_aplct_prd_ord = c.prcs_ord
AND c.aprvl_cd = '60'
WHERE
a.prcs_aplct_prd_ord = #prcsAplctPrdOrd#
a.prcs_aplct_prd_ord = #prcsAplctPrdOrd#
AND a.aplct_state_cd = '20';
</select>
<select id="selectMainContent" resultClass="VEPrcsDetailVO">

View File

@ -190,6 +190,8 @@
<!-- <pattern>*/tngrVisitEdu/popup/*Popup.do</pattern>
<pattern>*/adultVisitEdu/popup/*Popup.do</pattern> -->
<pattern>/kccadr/oprtn/cndtnSspnIdtmt/popup/printCertPopup.do</pattern>
</excludes>

View File

@ -491,10 +491,9 @@
form.prcsAplctPrdOrd.value = prcsAplctPrdOrd;
// form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/fndthInstrAsgnmPopup.do'/>";
form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/printCertPopup.do'/>";
window.open("#", "_printCertPop", "scrollbars = no, top=100px, left=100px, height=750px, width=950px");
window.open("#", "_printCertPop", "scrollbars = no, top=10px, left=10px, height=1500px, width=1200px");
form.target = "_printCertPop";
form.submit();
}
@ -1007,7 +1006,7 @@
<c:when test="${list.qestRsltExists and list.aprvlCd eq '60' and list.aplctStateCd eq '20' and list.qestnrId10Cnt gt 0}">
<!-- 교육 기간 종료 & 교육신청은 확정(60) & 교육상태는 이슈(20) & 수료증 출력 가능 -->
<button type="button" class="btn_type04"
onclick="fncPrintCert('${list.eduAplctOrd}','${list.eduChasiOrd}','10','insert','${list.qustnrTmplatId}','${list.qestnrId10}','')"/>출력</button>
onclick="fncPrintCert('<c:out value="${info.prcsAplctPrdOrd }" />')"/>출력</button>
</c:when>
<c:otherwise>
-

View File

@ -87,9 +87,9 @@
<input type="hidden" name="instrDetailActvtHstryOrd" id="instrDetailActvtHstryOrd" value=""/>
</form>
<form id="listForm" name="listForm" method="post">
<input type="hidden" name="pageIndex" value="<c:out value='${vEInstrActvtHstryVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEInstrActvtHstryVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEInstrActvtHstryVO.searchSortOrd}" />" />
<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}" />" />
<div class="cont_wrap">
<div class="box">
@ -110,40 +110,27 @@
<div class="cont">
<!-- list_top -->
<div class="list_top">
<!--
<div class="list_top_1">
<div class="util_left">
<p>구분</p>
</div>
<div class="util_right">
<ve:select codeId="VEA011" name="searchSelStatus" id="searchSelStatus" css="class='sel_type1'"
selectedValue="${vEInstrActvtHstryVO.searchSelStatus}" defaultValue=''
defaultText='전체'
/>
</div>
</div>
-->
<div class="list_top_2">
<%--<div class="list_top_2">
<div class="util_left">
<p>발급일자</p>
</div>
<div class="util_right">
<div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="searchStartDt" name="searchStartDt" value="<c:out value='${vEInstrActvtHstryVO.searchStartDt}'/>">
<input type="text" class="calendar" title="시작일 선택" id="searchStartDt" name="searchStartDt" value="<c:out value='${vEPrcsDetailVO.searchStartDt}'/>">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="searchEndDt" name="searchEndDt" value="<c:out value='${vEInstrActvtHstryVO.searchEndDt}'/>">
<input type="text" class="calendar" title="종료일 선택" id="searchEndDt" name="searchEndDt" value="<c:out value='${vEPrcsDetailVO.searchEndDt}'/>">
</div>
</div>
</div>
</div>--%>
<div class="list_top_2">
<div class="util_left">
<p>성명</p>
</div>
<div class="util_right">
<input type="text" id=searchKeyword name="searchKeyword" class="search_input" placeholder="검색어를 입력하세요" value="<c:out value='${vEInstrActvtHstryVO.searchKeyword}'/>" onkeyDown="press(event);">
<input type="text" id=searchKeyword name="searchKeyword" class="search_input" placeholder="검색어를 입력하세요" value="<c:out value='${vEPrcsDetailVO.searchKeyword}'/>" onkeyDown="press(event);">
<button class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
</div>
@ -156,10 +143,10 @@
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
<div>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px">
<option value='10' <c:if test="${vEInstrActvtHstryVO.pageUnit == '10' or vEInstrActvtHstryVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEInstrActvtHstryVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEInstrActvtHstryVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEInstrActvtHstryVO.pageUnit == '100'}">selected</c:if>>100줄</option>
<option value='10' <c:if test="${vEPrcsDetailVO.pageUnit == '10' or vEPrcsDetailVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEPrcsDetailVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEPrcsDetailVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEPrcsDetailVO.pageUnit == '100'}">selected</c:if>>100줄</option>
</select>
</div>
</div>
@ -173,53 +160,39 @@
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
</colgroup>
<thead>
<tr>
<th>번호</th>
<th>항목</th>
<th>문서번호</th>
<th>과정명</th>
<th>교육일시</th>
<th>성명</th>
<th>발급일자</th>
<th>이름</th>
<th>생년월일</th>
<th>이수증 출력</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<%-- <tr onclick="fn_goDetail('${list.instrDetailActvtHstryOrd}')" style="cursor:pointer;"> --%>
<!-- VE0011 -->
<tr>
<td>
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</td>
<td>
<ve:code codeId="VE0011" code="${list.lctrDivCd }"/>
<td>
<c:out value="${list.title }" />
</td>
<td>
<c:if test="${list.lctrDivCd eq '50'}">실무역량-</c:if>
<c:if test="${list.lctrDivCd eq '60'}">기소유예-</c:if>
<c:out value="${list.eduCmpltCrtfcNmbr }" />
<c:out value="${list.chrgNm}"/>
</td>
<td>
<c:out value="${list.prcsNm }" />
<c:out value="${list.dBirth}"/>
</td>
<td>
<c:out value="${list.eduStrtPnttm }" />
</td>
<td>
<c:out value="${list.mberNm }" />
</td>
<td>
<c:out value="${list.lastUpdtPnttm }" />
<button type="button" class="btn_type06" onclick="fncGoDetail('prcsAplctPrd_0000210');">출력</button>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
<tr><td colspan="5"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>

View File

@ -25,24 +25,61 @@
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- 찾교 공통 시작-->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/reset.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/font.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/common.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/content.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/popup.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.date.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/swiper.min.css">
<!-- 찾교 공통 종료-->
<!-- 파비콘 -->
<link rel="shortcut icon" href="/ipedu/visitEdu/usr/publish/images/favicon/favicon.ico">
<link rel="apple-touch-icon" sizes="57x57" href="/ipedu/visitEdu/usr/publish/images/favicon/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="/ipedu/visitEdu/usr/publish/images/favicon/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="/ipedu/visitEdu/usr/publish/images/favicon/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="/ipedu/visitEdu/usr/publish/images/favicon/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="/ipedu/visitEdu/usr/publish/images/favicon/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="/ipedu/visitEdu/usr/publish/images/favicon/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="/ipedu/visitEdu/usr/publish/images/favicon/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="/ipedu/visitEdu/usr/publish/images/favicon/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="/ipedu/visitEdu/usr/publish/images/favicon/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="/ipedu/visitEdu/usr/publish/images/favicon/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="/ipedu/visitEdu/usr/publish/images/favicon/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="/ipedu/visitEdu/usr/publish/images/favicon/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="/ipedu/visitEdu/usr/publish/images/favicon/favicon-16x16.png">
<!-- // 파비콘 -->
<!-- script -->
<script src="/ipedu/visitEdu/usr/publish/script/jquery-3.5.0.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/common.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/popup.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/postcode.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/visitEduCom.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/visitEduConstants.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/content.js"></script>
<script src="/ipedu/js/antdatepicker/moment.min.js"></script>
<script src="/ipedu/js/year-select.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/jquery.bxslider.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/swiper.min.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/main.js"></script>
<script type="module" src="/ipedu/visitEdu/usr/datapicker/duet.esm.js"></script>
<script nomodule="" src="/ipedu/visitEdu/usr/datapicker/duet.js"></script>
<%-- <script type="text/javascript" src="<c:url value='/js/ve/tmapJS.js'/>"></script> --%>
<script type="text/javascript">
</script>
<title>강사배치 팝업</title>
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
// ID를 alpreah_input로 가지는 곳에서 키를 누를 경우
$("#instrNm").keydown(function(key) {
if (key.keyCode == 13) {
linkPage(1);
return false;
}
});
fncPrintCert_aft('${vEPrcsDetailVO.prcsAplctPrdOrd}');
});
@ -50,84 +87,26 @@
function fncPopClose(){
self.close();
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
if($('#searchEduSlctAreaCd option:selected').text() != '전체'){
listForm.rsdne.value = $('#searchEduSlctAreaCd option:selected').text();
}
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/cndtnInstrAsgnmPopup.do'/>";
listForm.submit();
}
function fncInstrAsgnm(p_id) {
$("#userId").val(p_id);
var data1 = new FormData(document.getElementById("createForm"));
if(confirm("강사를 선택 하시겠습니까?")){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/cndtnSspnIdtmt/cndtnInstrAsgnmAjax.do",
data: data1,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == 'success'){
alert("저장 되었습니다.");
opener.location.reload();
fncPopClose();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
//이수증 출력
function fncPrintCert_aft(
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
){
prcsAplctPrdOrd //aplctOrd
){
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
"prcsAplctPrdOrd" : prcsAplctPrdOrd
};
commonPopLayeropen(
//"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/scholInfo/popup/qustnrPopList.do"
"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/scholInfo/popup/certPopList.do"
, 800
, 700
, 870
, paramObj
, "Y"
, "QustnrList"
);
}
);
}
</script>
</head>
<body>

View File

@ -483,7 +483,20 @@
// listForm.searchCondition.value = $("#searchCondition").val() ;
vForm.action = "<c:url value='/kccadr/oprtn/prevent/trgtEduAplctCnfrmExcel.do'/>";
vForm.submit();
}
}
// 이수증
function fncPrintCert(prcsAplctPrdOrd) {
var form = document.popForm;
form.prcsAplctPrdOrd.value = prcsAplctPrdOrd;
form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/printCertPopup.do'/>";
window.open("#", "_printCertPop", "scrollbars = no, top=10px, left=10px, height=1500px, width=1200px");
form.target = "_printCertPop";
form.submit();
}
</script>
</head>
@ -926,8 +939,8 @@
<c:choose>
<c:when test="${list.qestRsltExists and list.aprvlCd eq '60' and list.aplctStateCd eq '20' and list.qestnrId10Cnt gt 0}">
<!-- 교육 기간 종료 & 교육신청은 확정(60) & 교육상태는 이슈(20) & 수료증 출력 가능 -->
<button type="button" class="btn_type04"
onclick="fncPrintCert('${list.eduAplctOrd}','${list.eduChasiOrd}','10','insert','${list.qustnrTmplatId}','${list.qestnrId10}','')"/>출력</button>
<button type="button" class="btn_type04"
onclick="fncPrintCert('<c:out value="${info.prcsAplctPrdOrd }" />')"/>출력</button>
</c:when>
<c:otherwise>
-