2024-03-18 15:06 기소유예 취소

This commit is contained in:
myname 2024-03-18 15:08:09 +09:00
parent f126f44449
commit 0f43b797ee
16 changed files with 634 additions and 72 deletions

View File

@ -536,6 +536,23 @@ public class SspnIdtmtController {
model.addAttribute("infoAplctOrd", vEEduAplctVO);
//신청 상태 정보를 가져온다.
VEPrcsDetailVO vEPrcsAplctVO = new VEPrcsDetailVO();
//신청이 없는 경우를 위한 예외 처리
try {
if (vEEduAplctVO !=null) {
vEPrcsAplctVO.setPrcsAplctPrdOrd(vEPrcsDetailVODetail.getPrcsAplctPrdOrd());
vEPrcsAplctVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
vEPrcsAplctVO = vEPrcsAplctPrdService.selectAplctInfo(vEPrcsAplctVO);
}
}catch(Exception ex) {
ex.printStackTrace();
}
model.addAttribute("prcsAplctVO", vEPrcsAplctVO);
return "/web/ve/aplct/sspnIdtmt/eduAplctDetail";
}
@ -1102,6 +1119,69 @@ public class SspnIdtmtController {
return "/web/ve/aplct/sspnIdtmt/eduFAQList";
}
//사용자 - 기소유예 상태 변경
@RequestMapping(value="/web/ve/aplct/sspnIdtmt/eduAplctStatusChange4UserAjax.do")
public ModelAndView eduAplctStatusChange4UserAjax( HttpServletRequest request , ModelMap model
, VEPrcsDetailVO vEPrcsDetailVO
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 체크====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
String s_userCheckNInfo = checkLoginUtil.userCheckNInfo(model, request);
if (!"".equals(s_userCheckNInfo)) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 체크====================================
//4개 테이블에 대한 상태 변경이 필요하다.
//ve_prcs_aplct_prd - 교육과정정보,
//ve_edu_aplct - 교육신청상태,
//vea_aplct_detail_info - 교육신청 상세
//vea_sspn_idtmt_trgt - 교육의뢰대상자
/*
* 기본 전달값을 하면 요청 번호에 따라서 처리 하도록 한다.
private String eduAplctOrd; //교육신청순번
private String prcsAplctPrdOrd; //교육과정순번
private String reqNo; //요청번호 - excel 참고 - 해당 번호에 따라서 처리
*/
//신청 상태 정보를 가져온다.
VEPrcsDetailVO vEPrcsAplctVO = vEPrcsAplctPrdService.selectAplctInfo(vEPrcsDetailVO);
if (vEPrcsAplctVO==null) {
modelAndView.addObject("result", "fail");
return modelAndView;
}
vEPrcsAplctVO.setReqNo(vEPrcsDetailVO.getReqNo());
//수정자 정보
vEPrcsAplctVO.setLastUpdusrId(loginVO.getUniqId());
System.out.println("vEPrcsAplctVO.getReqNo()");
System.out.println(vEPrcsAplctVO.getReqNo());
System.out.println(vEPrcsAplctVO.getReqNo());
int i_ret = 0;
try {
i_ret = vEPrcsAplctPrdService.updateStatusChange4User(vEPrcsAplctVO);
}catch(Exception ex) {
System.out.println(ex.toString());
}
modelAndView.addObject("result", "success");
modelAndView.addObject("rsCnt", i_ret);
return modelAndView;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//

View File

@ -59,6 +59,10 @@ public class VEEduAplctDAO extends EgovAbstractDAO {
return update("VEEduAplctDAO.update", paramVO);
}
public int updateSspnIdmtTrgtCancelNew(VEPrcsDetailVO paramVO) throws Exception {
return update("VEEduAplctDAO.updateSspnIdmtTrgtCancelNew", paramVO);
}
public int updateUserId(VEEduAplctVO paramVO) throws Exception {
return update("VEEduAplctDAO.updateUserId", paramVO);
}

View File

@ -50,7 +50,6 @@ public class VEInstrDetailServiceImpl implements VEInstrDetailService {
//U
public int update(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrDetailDAO.update(vEInstrDetailVO);
}

View File

@ -9,6 +9,8 @@ import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.impl.VEEduAplctDAO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
@ -29,6 +31,13 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
@Resource(name="vEPrcsDAO")
private VEPrcsDAO vEPrcsDAO;
//과정신청
@Resource(name="vEEduAplctDAO")
private VEEduAplctDAO vEEduAplctDAO;
//과정신청
@Resource(name="vEPrcsMIXDAO")
private VEPrcsMIXDAO vEPrcsMIXDAO;
//C
public void insert(VEPrcsDetailVO vEPrcsDetailVO) throws Exception {
@ -175,6 +184,65 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
@Override
public int updateStatusChange4User(VEPrcsDetailVO vEPrcsDetailVO) throws Exception {
String s_reqNo = vEPrcsDetailVO.getReqNo();
if ("2-1".equals(s_reqNo) //사용자 신청 취소
|| "3-1".equals(s_reqNo) //관리자 승인 취소
|| "5-1".equals(s_reqNo) //관리자 교육 신청 마감 이후 취소
) {
//대상자 교육신청후 교육 취소 처리
//ve_prcs_aplct_prd : 처리 없음
//ve_edu_aplct : 삭제
//vea_aplct_detail_info : 삭제
//vea_sspn_idmt_trgt : update edu_state_cd=10,edu_aplct_ord is null
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
//vEPrcsAplctPrdDAO.delete(vEPrcsDetailVO);
vEEduAplctDAO.delete(vEEduAplctVO);
vEPrcsMIXDAO.deleteAplctDetailInfo(vEPrcsDetailVO);
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}else if ("4".equals(vEPrcsDetailVO.getReqNo())) {
//대상자 교육신청후 관리자가 반려 처리
//ve_prcs_aplct_prd : 처리 없음
//ve_edu_aplct : update aprvl_cd=35
//vea_aplct_detail_info : 처리 없음
//vea_sspn_idmt_trgt : update edu_state_cd=30,req_state_cd=20
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
//vEPrcsAplctPrdDAO.delete(vEPrcsDetailVO);
//vEEduAplctDAO.delete(vEEduAplctVO);
vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
vEPrcsMIXDAO.updateAplctDetailInfo(vEPrcsDetailVO);
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}else if ("6-1".equals(vEPrcsDetailVO.getReqNo())) {
//대상자 교육신청후 교육 취소 처리
//ve_prcs_aplct_prd : 처리 없음
//ve_edu_aplct : update aprvl_cd=35
//vea_aplct_detail_info : 처리 없음
//vea_sspn_idmt_trgt : update edu_state_cd=30,req_state_cd=20
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
//vEPrcsAplctPrdDAO.delete(vEPrcsDetailVO);
//vEEduAplctDAO.delete(vEEduAplctVO);
vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
//vEPrcsMIXDAO.deleteAplctDetailInfo(vEPrcsDetailVO);
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}
return 1;
//return vEPrcsAplctPrdDAO.updateStatusChange4User(vEPrcsDetailVO);
}

View File

@ -58,4 +58,17 @@ public class VEPrcsMIXDAO extends EgovAbstractDAO {
List<VEPrcsDetailVO> tlist = (List<VEPrcsDetailVO>) list("VEPrcsDAO.selectPagingList4FndthInstr", paramVO);
return tlist;
}
//
public int updateAplctDetailInfo(VEPrcsDetailVO paramVO) throws Exception {
return update("VEPrcsDAO.updateAplctDetailInfo", paramVO);
}
public int deleteAplctDetailInfo(VEPrcsDetailVO paramVO) throws Exception {
return update("VEPrcsDAO.deleteAplctDetailInfo", paramVO);
}
public int updateSspnIdmtTrgtCancelNew(VEPrcsDetailVO paramVO) throws Exception {
return update("VEPrcsDAO.updateSspnIdmtTrgtCancelNew", paramVO);
}
}

View File

@ -968,6 +968,148 @@ public class CndtnPrcsInfoMngController {
}
//사용자 - 기소유예 상태 변경
@RequestMapping(value="/kccadr/oprtn/cndtnSspnIdtmt/eduAplctStatusChange4UserAjax.do")
public ModelAndView eduAplctStatusChange4UserAjax( HttpServletRequest request , ModelMap model
, VEPrcsDetailVO vEPrcsDetailVO
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 체크====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO==null) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 체크====================================
//4개 테이블에 대한 상태 변경이 필요하다.
//ve_prcs_aplct_prd - 교육과정정보,
//ve_edu_aplct - 교육신청상태,
//vea_aplct_detail_info - 교육신청 상세
//vea_sspn_idtmt_trgt - 교육의뢰대상자
/*
* 기본 전달값을 하면 요청 번호에 따라서 처리 하도록 한다.
private String eduAplctOrd; //교육신청순번
private String prcsAplctPrdOrd; //교육과정순번
private String reqNo; //요청번호 - excel 참고 - 해당 번호에 따라서 처리
*/
//신청 상태 정보를 가져온다.
VEPrcsDetailVO vEPrcsAplctVO = vEPrcsAplctPrdService.selectAplctInfo(vEPrcsDetailVO);
if (vEPrcsAplctVO==null) {
modelAndView.addObject("result", "fail");
return modelAndView;
}
vEPrcsAplctVO.setReqNo(vEPrcsDetailVO.getReqNo());
//수정자 정보
vEPrcsAplctVO.setLastUpdusrId(loginVO.getUniqId());
System.out.println("vEPrcsAplctVO.getReqNo()");
System.out.println(vEPrcsAplctVO.getReqNo());
System.out.println(vEPrcsAplctVO.getReqNo());
int i_ret = 0;
try {
i_ret = vEPrcsAplctPrdService.updateStatusChange4User(vEPrcsAplctVO);
}catch(Exception ex) {
System.out.println(ex.toString());
}
modelAndView.addObject("result", "success");
modelAndView.addObject("rsCnt", i_ret);
return modelAndView;
}
//사용자 - 기소유예 상태 변경
@RequestMapping(value="/kccadr/oprtn/cndtnSspnIdtmt/eduAplctStatusChange4UserListAjax.do")
public ModelAndView eduAplctStatusChange4UserListAjax( HttpServletRequest request , ModelMap model
, VEPrcsDetailVO vEPrcsDetailVO
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 체크====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO==null) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 체크====================================
//4개 테이블에 대한 상태 변경이 필요하다.
//ve_prcs_aplct_prd - 교육과정정보,
//ve_edu_aplct - 교육신청상태,
//vea_aplct_detail_info - 교육신청 상세
//vea_sspn_idtmt_trgt - 교육의뢰대상자
/*
* 기본 전달값을 하면 요청 번호에 따라서 처리 하도록 한다.
private String eduAplctOrd; //교육신청순번
private String prcsAplctPrdOrd; //교육과정순번
private String reqNo; //요청번호 - excel 참고 - 해당 번호에 따라서 처리
*/
int i_ret = 0;
for(String eduAplctOrd : vEPrcsDetailVO.getEduAplctOrdList()) {
//결과보고서 제출 알림
try {
//신청 상태 정보를 가져온다.
vEPrcsDetailVO.setEduAplctOrd(eduAplctOrd);
VEPrcsDetailVO vEPrcsAplctVO = vEPrcsAplctPrdService.selectAplctInfo(vEPrcsDetailVO);
if (vEPrcsAplctVO==null) {
modelAndView.addObject("result", "fail");
return modelAndView;
}
vEPrcsAplctVO.setReqNo(vEPrcsDetailVO.getReqNo());
//수정자 정보
vEPrcsAplctVO.setLastUpdusrId(loginVO.getUniqId());
System.out.println("vEPrcsAplctVO.getReqNo()");
System.out.println(vEPrcsAplctVO.getReqNo());
System.out.println(vEPrcsAplctVO.getReqNo());
try {
i_ret = vEPrcsAplctPrdService.updateStatusChange4User(vEPrcsAplctVO);
}catch(Exception ex) {
System.out.println(ex.toString());
}
}catch(Exception ex) {
ex.printStackTrace();
}
}
modelAndView.addObject("result", "success");
modelAndView.addObject("rsCnt", i_ret);
return modelAndView;
}
/**
* @methodName : updateAplctStateCdAjax_only
* @author : 이호영

View File

@ -674,8 +674,13 @@
vea_sspn_idmt_trgt a
WHERE
1 = 1
AND a.EDU_APLCT_ORD = #eduAplctOrd#
AND a.USER_ID = #userId#
AND ((a.EDU_APLCT_ORD = #eduAplctOrd#
AND a.USER_ID = #userId#)
OR
(
a.sspn_idtmt_trgt_ord = #sspnIdtmtTrgtOrd#
)
)
</select>
<update id="cndtnTrgtInfoMngDAO.memoUpdate" parameterClass="CndtnPrcsInfoMngVO">

View File

@ -495,6 +495,9 @@
, A.EDU_MD_CD
, A.FEE_INSTT_CD
ORDER BY A.EDU_APLCT_ORD DESC
LIMIT 1
</select>
<!-- 강사 정보 R -->
@ -1038,6 +1041,31 @@
WHERE EDU_APLCT_ORD = #eduAplctOrd#
</update>
<!-- 강사 정보 U -->
<update id="VEEduAplctDAO.updateSspnIdmtTrgtCancelNew" parameterClass="VEPrcsDetailVO">
/* VEEduAplctDAO.updateSspnIdmtTrgtCancelNew
ve_edu_aplct = aprvl_cd (10-요청, 100-찜하기, 120-선정완료, 140-선정취소, 20-승인, 230-대기, 30-반려, 40-취소, 60-교육확정, 70-수정요청, 80-수정완료, 90-교육미확정) VE0003
*/
UPDATE <include refid="VEEduAplctDAO.table_name"/>
SET
LAST_UPDT_PNTTM = SYSDATE
,LAST_UPDUSR_ID = #lastUpdusrId#
<isEqual property="reqNo" compareValue="4">
/* 확정 후 취소 요청 edu_state_cd=30,req_state_cd=20 */
, aprvl_cd = '30'
</isEqual>
<isEqual property="reqNo" compareValue="6-1">
/* 확정 후 취소 요청 edu_state_cd=30,req_state_cd=20 */
, aprvl_cd = '35'
</isEqual>
WHERE EDU_APLCT_ORD = #eduAplctOrd#
</update>
<!-- 강사 정보 U -->
<update id="VEEduAplctDAO.updateIsWait" parameterClass="VEEduAplctVO">
UPDATE <include refid="VEEduAplctDAO.table_name"/>

View File

@ -435,6 +435,7 @@
WHEN vsit.sex = 'M' THEN '남성'
WHEN vsit.sex = 'F' THEN '여성'
ELSE '' END trgtSex
, vsit.SSPN_IDTMT_TRGT_ORD AS sspnIdtmtTrgtOrd
FROM
<include refid="VEEduMIXDAO.table_name"/> a
JOIN ve_prcs_aplct_prd vpap ON
@ -446,10 +447,8 @@
a.USER_ID = le.ESNTL_ID
LEFT JOIN VEA_SSPN_IDMT_TRGT vsit ON
(
a.USER_ID = vsit.USER_ID
AND a.rnds_ord=vsit.SSPN_IDTMT_TRGT_ORD
AND a.edu_aplct_ord=vsit.edu_aplct_ord
/* 신청 정보에 대상자 키 값이 들어 있어서 해당 값을만 확인하면 된다.*/
a.rnds_ord=vsit.SSPN_IDTMT_TRGT_ORD
)
WHERE
1=1
@ -479,10 +478,6 @@
AND a.use_yn = 'Y'
<!-- AND le.MBER_NM IS NOT NULL -->
/* 취소된 내역 안 보여줌 */
/*
AND a.aprvl_cd != '40'
*/
</select>
@ -774,7 +769,7 @@
</isNotEmpty>
AND a.use_yn = 'Y'
AND a.aprvl_cd = '20' /* 확정된 사람만 보여줌 */
AND a.aprvl_cd IN ('20', '35', '60') /* 승인(20), 취소요청(35), 확정(60)된 사람만 보여줌 */
</select>

View File

@ -402,9 +402,7 @@
x.USER_ID = le.ESNTL_ID
WHERE x.prcs_ord = a.prcs_aplct_prd_ord
AND x.sbmt_yn='Y'
AND x.aprvl_cd != 30 /*반려 신청자 제거*/
AND x.aprvl_cd != 40 /*취소된 신청자 제거*/
AND x.aprvl_cd != 100 /*찜 신청자 제거*/
AND x.aprvl_cd != 100 /*찜 신청자만 제거*/
<!-- AND le.MBER_NM IS NOT NULL -->
) AS nosCnt1
@ -617,8 +615,9 @@
x.USER_ID = le.ESNTL_ID
WHERE x.prcs_ord = a.prcs_aplct_prd_ord
AND x.sbmt_yn='Y'
AND x.aprvl_cd != 40 /*취소된 신청자 제거*/
AND x.aprvl_cd != 30 /*취소된 신청자 제거*/
AND x.aprvl_cd IN (20,35,60)
/* 20-승인, 35-취소 신청, 60-확정*/
<!-- AND le.MBER_NM IS NOT NULL -->
) AS nosCnt1
/*
@ -1566,24 +1565,31 @@
/* VEPrcsAplctPrdDAO.selectAplctInfo */
SELECT
a.DDLN_CD AS ddlnCd
, b.aplct_state_cd AS aplctStateCd
a.PRCS_APLCT_PRD_ORD AS prcsAplctPrdOrd
, a.DDLN_CD AS ddlnCd
, c.EDU_APLCT_ORD AS eduAplctOrd
, c.APRVL_CD AS aprvlCd
, d.REQ_STATE_CD AS reqStateCd
, d.EDU_STATE_CD AS eduStateCd
, d.EDU_APLCT_ORD AS eduAplctOrd
, a.PRCS_APLCT_PRD_ORD AS prcsAplctPrdOrd
, d.sspn_idtmt_trgt_ord AS sspnIdtmtTrgtOrd
, NVL(c.rnds_ord, d.sspn_idtmt_trgt_ord) AS sspnIdtmtTrgtOrd
, b.aplct_state_cd AS aplctStateCd
FROM ve_prcs_aplct_prd a
, vea_aplct_detail_info b
, ve_edu_aplct c
/* 승인 이후에 생성되는 데이터*/
LEFT OUTER JOIN vea_aplct_detail_info b
on(b.EDU_APLCT_ORD = c.EDU_APLCT_ORD)
LEFT OUTER JOIN vea_sspn_idmt_trgt d
on(c.EDU_APLCT_ORD=d.EDU_APLCT_ORD)
WHERE 1=1
AND a.PRCS_APLCT_PRD_ORD =b.PRCS_APLCT_PRD_ORD
AND b.EDU_APLCT_ORD =c.EDU_APLCT_ORD
AND c.edu_aplct_ord=#eduAplctOrd#
AND a.prcs_aplct_prd_ord=#prcsAplctPrdOrd#

View File

@ -584,4 +584,64 @@
</select>
<!-- 대상자 취소시 대상자 테이블 정보 수정 -->
<update id="VEPrcsDAO.updateSspnIdmtTrgtCancelNew" parameterClass="VEPrcsDetailVO">
/* VEPrcsDAO.updateCancelNew */
UPDATE
vea_sspn_idmt_trgt
SET
LAST_UPDT_PNTTM = SYSDATE
,LAST_UPDUSR_ID = #lastUpdusrId#
<isEqual property="reqNo" compareValue="2-1">
/* 신청 후 취소 */
, user_id = NULL
, edu_aplct_ord = NULL
, edu_state_cd = '10'
, prcs_aplct_prd_ord_cmplt = NULL
</isEqual>
<isEqual property="reqNo" compareValue="4">
/* 신청 후 반려 */
, user_id = NULL
, edu_aplct_ord = NULL
, edu_state_cd = '10'
, prcs_aplct_prd_ord_cmplt = NULL
</isEqual>
<isEqual property="reqNo" compareValue="6-1">
/* 확정 후 취소 요청 edu_state_cd=30,req_state_cd=20 */
, edu_state_cd = '30'
, req_state_cd = '20'
</isEqual>
WHERE
sspn_idtmt_trgt_ord = #sspnIdtmtTrgtOrd#
</update>
<!-- 대상자 취소시 대상자 테이블 정보 수정 -->
<update id="VEPrcsDAO.updateAplctDetailInfo" parameterClass="VEPrcsDetailVO">
/* VEPrcsDAO.updateAplctDetailInfo */
UPDATE VEA_APLCT_DETAIL_INFO
SET
LAST_UPDT_PNTTM = SYSDATE
,LAST_UPDUSR_ID = #lastUpdusrId#
<isEqual property="reqNo" compareValue="4">
/* 신청 후 관리자 반려 aplct_state_cd=50 */
, aplct_state_cd = '50'
</isEqual>
WHERE
edu_aplct_ord = #eduAplctOrd#
</update>
<!-- 대상자 취소시 대상자 테이블 정보 수정 -->
<update id="VEPrcsDAO.deleteAplctDetailInfo" parameterClass="VEPrcsDetailVO">
/* VEPrcsDAO.deleteAplctDetailInfo */
DELETE FROM VEA_APLCT_DETAIL_INFO
WHERE
edu_aplct_ord = #eduAplctOrd#
</update>
</sqlMap>

View File

@ -175,6 +175,12 @@
// 사용자 승인 반려 처리 : 체크박스O
function updateEduAplctOrdList(p_aprvlCd, p_prcsAplctPrdOrd) {
if (p_aprvlCd=='30'){
if(!confirm("접수취소(반려)처리 합니까?\n\n교육희망시 사용자가 재신청을 진행해야 합니다.")){
return;
}
}
var selectedEduAplctOrd = [];
// "chk" 이름을 가진 체크박스가 체크된 항목들을 순회
@ -274,12 +280,14 @@
function fn_goDetailPop(p_eduAplctOrd, p_mberId) {
function fn_goDetailPop(p_eduAplctOrd, p_mberId, p_sspnIdtmtTrgtOrd) {
var form = document.detailPopForm;
form.eduAplctOrd.value = p_eduAplctOrd;
form.userId.value = p_mberId;
form.sspnIdtmtTrgtOrd.value = p_sspnIdtmtTrgtOrd;
form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/detailPopup.do'/>";
openPopupAndSubmitForm('detailPopForm', 'detailPopForm', 1000, 720);
@ -303,7 +311,85 @@
listForm.submit();
}
// 사용자 승인 반려 처리 : 체크박스X
function fncCancelUserList(
p_prcsAplctPrdOrd
, p_reqNo
){
// 기존에 있던 updateEduAplctOrdList function 사용하기 위한 function
var selectedEduAplctOrd = [];
// "chk" 이름을 가진 체크박스가 체크된 항목들을 순회
$("input[name='chk']:checked").each(function() {
var eduAplctOrdValue = $(this).val();
selectedEduAplctOrd.push(eduAplctOrdValue);
});
// 선택된 항목이 없으면 경고 메시지를 표시하고 함수를 종료
if (selectedEduAplctOrd.length === 0) {
alert("선택된 항목이 없습니다. 선택 후 다시 시도하세요.");
return false;
}
var dataToSend = {
"eduAplctOrdList": selectedEduAplctOrd,
"prcsAplctPrdOrd": p_prcsAplctPrdOrd,
"reqNo" : p_reqNo
};
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/eduAplctStatusChange4UserListAjax.do'/>";
commAjax_url(dataToSend, url);
}
function fncCancelUser(
p_eduAplctOrd
, p_prcsAplctPrdOrd
, p_reqNo
){
var dataToSend = {
"eduAplctOrd" : p_eduAplctOrd
, "prcsAplctPrdOrd" : p_prcsAplctPrdOrd
, "reqNo" : p_reqNo
};
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/eduAplctStatusChange4UserAjax.do'/>";
commAjax_url(dataToSend, url);
}
function commAjax_url(dataToSend, p_url){
//var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateEduAplctAprvlCdAjax.do'/>";
var url = p_url;
// AJAX 호출을 통해 서버에 데이터 전송
$.ajax({
type:"POST",
url: url,
data: $.param(dataToSend, true), // 직렬화 , 컨트롤러에서 @ModelAttribute로 받을 수 있음
// contentType : 'application/json',
dataType:'json',
success:function(returnData){
if(returnData.result == "success"){
alert("변경 처리 되었습니다.");
window.location.reload();
}else{
alert("변경 중 오류가 발생하였습니다.");
}
},
error: function(jqXHR, textStatus, errorThrown) {
console.error("AJAX Error:", textStatus, errorThrown);
console.error("Response:", jqXHR.responseText);
}
});
}
</script>
</head>
@ -312,6 +398,7 @@
<form id="detailPopForm" name="detailPopForm" method="post">
<input type="hidden" id="eduAplctOrd" name="eduAplctOrd" />
<input type="hidden" id="userId" name="userId" />
<input type="hidden" id="sspnIdtmtTrgtOrd" name="sspnIdtmtTrgtOrd" />
</form>
<form id="cnclPopupForm" name="cnclPopupForm" method="post">
<input type="hidden" id="eduAplctOrd" name="eduAplctOrd" />
@ -609,20 +696,21 @@
<c:forEach var="list" items="${listPrcsAplct}" varStatus="status">
<tr>
<td>
<%-- <c:choose> --%>
<%-- <c:when test="${list.aplctStateCd ne 30 and list.aplctStateCd ne 35}"> --%>
<!-- 반려인 경우는 처리안되도록 check box을 노출하지 않는다. -->
<c:choose>
<c:when test="${list.aprvlCd ne 30}">
<input name="chk" class="${list.asgnmAprvlCd}"
value="${list.eduAplctOrd}" title="Check" type="checkbox"/>
<%-- </c:when> --%>
<%-- <c:otherwise> --%>
<%-- </c:otherwise> --%>
<%-- </c:choose> --%>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
</td>
<td>
<c:out value="${list.trgtNm}"/>
</td>
<td>
<a href="#none" onclick="fn_goDetailPop('${list.eduAplctOrd}','${list.mberId}')"><c:out value="${list.mberId}"/></a>
<a href="#none" onclick="fn_goDetailPop('${list.eduAplctOrd}','${list.mberId}','${list.sspnIdtmtTrgtOrd}')"><c:out value="${list.mberId}"/></a>
</td>
<td>
<c:out value="${list.email}"/>
@ -644,19 +732,16 @@
</c:if>
</td>
<td>
<%-- <c:choose> --%>
<%-- <c:when test="${list.aplctStateCd ne 30 and list.aplctStateCd ne 35}"> --%>
<!-- 반려인 경우는 처리안되도록 check box을 노출하지 않는다. -->
<c:choose>
<c:when test="${list.aprvlCd ne 30}">
<button type="button" class="btn_type04" onclick="updateEduAplctOrd('20', '<c:out value="${list.eduAplctOrd }" />', '<c:out value="${info.prcsAplctPrdOrd }"/>')">승인</button>
<button type="button" class="btn_type05" onclick="updateEduAplctOrd('30', '<c:out value="${list.eduAplctOrd }" />', '<c:out value="${info.prcsAplctPrdOrd }"/>')">반려</button>
<%-- </c:when> --%>
<%-- <c:when test="${list.aplctStateCd ne 30 and list.aplctStateCd ne 35}"> --%>
<%-- <button type="button" class="btn_type04" onclick="updateEduAplctOrd('20', '<c:out value="${list.eduAplctOrd }" />', '<c:out value="${info.prcsAplctPrdOrd }"/>')">승인</button> --%>
<%-- <button type="button" class="btn_type05" onclick="updateEduAplctOrd('30', '<c:out value="${list.eduAplctOrd }" />', '<c:out value="${info.prcsAplctPrdOrd }"/>')">반려</button> --%>
<%-- </c:when> --%>
<%-- <c:otherwise> --%>
<%-- <button type="button" class="btn_type05" onclick="fnCnclPopup('<c:out value="${list.eduAplctOrd }" />', '<c:out value="${info.prcsAplctPrdOrd }"/>')">취소요청</button> --%>
<%-- </c:otherwise> --%>
<%-- </c:choose> --%>
<button type="button" class="btn_type05" onclick="fncCancelUser('${list.eduAplctOrd}', '${info.prcsAplctPrdOrd}', '4')">반려</button>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
</td>
</c:forEach>
</c:when>
@ -683,7 +768,9 @@
</div>
<div class="btn_right">
<button type="button" class="btn_type04" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList.do" />'; return false;">강의목록</button>
<button type="button" class="btn_type04" onclick="updateEduAplctOrdList(30, '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">접수취소(반려)</button>
<%-- <button type="button" class="btn_type04" onclick="updateEduAplctOrdList(30, '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">접수취소(반려)</button> --%>
<button type="button" class="btn_type04" onclick="fncCancelUserList('<c:out value="${info.prcsAplctPrdOrd }" />','4'); return false;">접수취소(반려)</button>
<button type="button" class="btn_type04" onclick="updateEduAplctOrdList(20, '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">교육승인</button>
</div>
</div>

View File

@ -45,7 +45,8 @@
var regStatus = true;
// 텍스트가 비어있는지 확인
if ($ddlnCdStts.text().trim() === "") {
if ($ddlnCdStts.text().trim() === ""
|| $ddlnCdStts.text().trim() === "반려") {
var dateText = $ddlnCdStts.closest('table').find("td:eq(2)").text().trim();
var strtPnttm = new Date(dateText.split("~")[0].trim().replace(/\./g, '-'));
@ -69,6 +70,7 @@
}
console.log('regStatus : ', regStatus);
$('#regBtn').prop('disabled', regStatus); // 버튼 비활성화
/* 240122 웹접근성으로 인하여 disabled 사용 불가능 - disabled대신 onclick과 데이터툴팁 제거하기 */
if ($('#regBtn').prop('disabled')) {
$('#regBtn').removeAttr('onclick').removeAttr('data-tooltip');
@ -112,8 +114,9 @@
}
}
/*
function fncCancelUser(p_eduAplctOrd){
if(confirm("교육 수강을 취소 하시겠습니까?")){
if(confirm("교육 수강을 취소 하시겠습니까? ")){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduAplctDelete4UserAjax.do",
@ -133,6 +136,7 @@
});
}
}
*/
function fncCancelUserToAdmin(p_eduAplctOrd){
if(confirm("교육 수강 취소 요청을 하시겠습니까?")){
@ -155,6 +159,63 @@
});
}
}
function fncCancelUser(
p_eduAplctOrd
, p_prcsAplctPrdOrd
, p_reqNo
){
if(confirm("교육 수강을 취소 하시겠습니까?")){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduAplctStatusChange4UserAjax.do",
data: {
"eduAplctOrd" : p_eduAplctOrd
, "prcsAplctPrdOrd" : p_prcsAplctPrdOrd
, "reqNo" : p_reqNo
},
dataType:'json',
success:function(returnData){
if(returnData.rsCnt > 0){
alert("취소 되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function fncCancelStatusChange(
p_eduAplctOrd
, p_prcsAplctPrdOrd
, p_reqNo
){
if(confirm("교육 수강 취소 요청을 하시겠습니까?\n관리자 승인 후 취소가 가능합니다.")){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduAplctStatusChange4UserAjax.do",
data: {
"eduAplctOrd" : p_eduAplctOrd
, "prcsAplctPrdOrd" : p_prcsAplctPrdOrd
, "reqNo" : p_reqNo
},
dataType:'json',
success:function(returnData){
if(returnData.rsCnt > 0){
alert("취소요청 되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
// function fncCancleSubmit(){
// if(confirm("교육신청 취소하시겠습니까?")){
// $.ajax({
@ -323,12 +384,13 @@
);
}
function fn_eduRegPopup(trgtNm, dBirth, sspnIdtmtTrgtOrd){
function fn_eduRegPopup(p_trgtNm, p_dBirth, p_clphone, p_sspnIdtmtTrgtOrd){
var data ={
"prcsAplctPrdOrd": $('#regForm input[name="prcsAplctPrdOrd"]').val()
, "trgtNm" : trgtNm
, "dBirth" : dBirth
, "sspnIdtmtTrgtOrd" :sspnIdtmtTrgtOrd
, "trgtNm" : p_trgtNm
, "dBirth" : p_dBirth
, "clphone" : p_clphone
, "sspnIdtmtTrgtOrd" :p_sspnIdtmtTrgtOrd
}
commonPopLayeropen(
@ -486,18 +548,29 @@
</button>
</div>
<div class="btn_center">
<c:if test="${(info.aprvlCd eq '10' or info.aprvlCd eq '20') and info.ddlnCd ne '20'}">
<!-- 신청이고 교육확정이 아니면 신청, 승인 상태에서 사용자 취소 가능 하도록 버튼 노출 할것. -->
<%-- <c:if test="${(info.aprvlCd eq '10' or info.aprvlCd eq '20') and info.ddlnCd ne '20'}"> --%>
<%-- <button type="button" class="btnType05" onclick="fncCancelUser('${infoAplctOrd.eduAplctOrd}')">교육취소</button> --%>
<%-- </c:if> --%>
<button type="button" class="btnType05" onclick="fncCancelUser('${infoAplctOrd.eduAplctOrd}')">교육취소</button>
</c:if>
<c:if test="${(info.aprvlCd eq '10' or info.aprvlCd eq '20') and info.ddlnCd eq '20'}">
<!-- 신청이고 교육확정이 아니면 취소 가능 하도록 버튼 노출 할것. -->
<%-- <c:if test="${(info.aprvlCd eq '10' or info.aprvlCd eq '20') and info.ddlnCd eq '20'}"> --%>
<%-- <button type="button" class="btnType05" onclick="fncCancelUserToAdmin('${infoAplctOrd.eduAplctOrd}')">취소신청</button> --%>
<%-- </c:if> --%>
<c:if test="${(prcsAplctVO.aprvlCd eq '10' or prcsAplctVO.aprvlCd eq '20') and prcsAplctVO.ddlnCd ne '20'}">
<button type="button" class="btnType05" onclick="fncCancelUser('${infoAplctOrd.eduAplctOrd}', '${infoAplctOrd.prcsOrd}', '2-1')">교육취소</button>
</c:if>
<c:if test="${prcsAplctVO.aprvlCd eq '20' and prcsAplctVO.ddlnCd eq '20'}">
<button type="button" class="btnType05" onclick="fncCancelStatusChange('${infoAplctOrd.eduAplctOrd}', '${infoAplctOrd.prcsOrd}', '6-1')">취소요청</button>
</c:if>
</div>
<div class="btn_right" class="aplctBtn">
<%-- <button type="button" class="btnType04" id="regBtn" data-info="<c:out value="${info.prcsAplctPrdOrd}"/>" data-tooltip="target_confirm_popup" >신청</button> --%>

View File

@ -166,6 +166,7 @@ $(document).ready(function(){
<input type="hidden" name="sspnIdtmtTrgtOrd" value="${vEPrcsDetailVO.sspnIdtmtTrgtOrd}">
<input type="hidden" name="trgtNm" value="${vEPrcsDetailVO.trgtNm}">
<input type="hidden" name="dBirth" value="${vEPrcsDetailVO.dBirth}">
<input type="hidden" name="phone" id="phone" value="${vEPrcsDetailVO.clphone}"/>
<!-- 신청인정보 -->
<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">
@ -206,7 +207,7 @@ $(document).ready(function(){
<p>핸드폰</p>
</th>
<td>
<input type="text" class="twoRow" name="phone" id="phone"/>
<input type="text" class="twoRow" value="${vEPrcsDetailVO.clphone}" readonly/>
</td>
<th scope="row">
<p>이메일</p>

View File

@ -207,9 +207,10 @@
function fn_new_select(p_sspnIdtmtTrgtOrd){
var dBirth = $('#dBirth').val().replace(/\./g, '');
var trgtNm = $('#trgtNm').val();
var clphone = $('#clphone').val();
$('#target_confirm_popup-close').click();
fn_eduRegPopup(trgtNm, dBirth, p_sspnIdtmtTrgtOrd);
fn_eduRegPopup(trgtNm, dBirth, clphone, p_sspnIdtmtTrgtOrd);
}
function fncChkNo(){
@ -317,7 +318,7 @@ $(document).ready(function(){
</td>
</tr>
<tr>
<th scope=“row”>주민번호앞자리</th>
<th scope=“row”>생년월일 8자리 (ex.1988.01.01)</th>
<td>
<div class="calendar_wrap">
<duet-date-picker identifier="date" id="dBirth" class="dBirth" min="1940-01-01"></duet-date-picker>

View File

@ -545,11 +545,6 @@ $(document).ready(function(){
VEA004 10 신청마감
VEA004 20 교육확정
-->
@
<kc:code codeId="VEA003" code="${list.aplctStateCd }"/>
@
<kc:code codeId="VE0003" code="${list.aprvlCd}"/>
@
<c:choose>
<c:when test="${not empty list.aplctStateCd }">
<!--
@ -639,6 +634,11 @@ $(document).ready(function(){
</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}">