Merge branch 'hylee' into advc

Conflicts:
	src/main/java/kcc/ve/instr/tngrVisitEdu/eduInfo/service/VEEduAplctVO.java
	src/main/webapp/WEB-INF/jsp/web/ve/aplct/sspnIdtmt/sspnIdtmtEduAplctList.jsp
This commit is contained in:
hylee 2023-11-10 14:30:05 +09:00
commit 892e8aea74
27 changed files with 2975 additions and 2278 deletions

View File

@ -64,6 +64,9 @@ public class AdrInnorixFileVO extends ComDefaultVO implements Serializable {
public String sbmtId = ""; //제출 강사 ID public String sbmtId = ""; //제출 강사 ID
public String eduDocReqOrd = "";//서류요청 순번 public String eduDocReqOrd = "";//서류요청 순번
public String cnclCn = "";//기소유예 취소사유
public String getFileType() { public String getFileType() {
return fileType; return fileType;
@ -169,6 +172,14 @@ public class AdrInnorixFileVO extends ComDefaultVO implements Serializable {
this.eduDocReqOrd = eduDocReqOrd; this.eduDocReqOrd = eduDocReqOrd;
} }
public String getCnclCn() {
return cnclCn;
}
public void setCnclCn(String cnclCn) {
this.cnclCn = cnclCn;
}

View File

@ -38,4 +38,6 @@ public interface InnorixFileService {
RestResponse insertInnorixDocFile(AdrInnorixFileVO adrInnorixFileVO); RestResponse insertInnorixDocFile(AdrInnorixFileVO adrInnorixFileVO);
RestResponse insertInnorixSspnCnClAjax(AdrInnorixFileVO adrInnorixFileVO);
} }

View File

@ -27,11 +27,14 @@ import kcc.kccadr.cmm.innorix.service.AdrInnorixFileVO;
import kcc.kccadr.cmm.innorix.service.InnorixFileService; import kcc.kccadr.cmm.innorix.service.InnorixFileService;
import kcc.kccadr.cmm.innorix.service.InnorixFileVO; import kcc.kccadr.cmm.innorix.service.InnorixFileVO;
import kcc.let.utl.fcc.service.EgovStringUtil; import kcc.let.utl.fcc.service.EgovStringUtil;
import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.impl.VEEduMIXDAO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmService; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmVO; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmVO;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService;
/** /**
* @Class Name : EgovCmmUseServiceImpl.java * @Class Name : EgovCmmUseServiceImpl.java
@ -82,6 +85,20 @@ public class InnorixFileServiceImpl extends EgovAbstractServiceImpl implements I
//서류요청 순번 //서류요청 순번
@Resource(name="docReqOrdGnrService") @Resource(name="docReqOrdGnrService")
private EgovIdGnrService docReqOrdGnrService; private EgovIdGnrService docReqOrdGnrService;
// 교육 신청 정보
@Resource(name="sspnIdtmtService")
private SspnIdtmtService sspnIdtmtService;
//과정 관리
@Resource(name = "cndtnTrgtInfoMngService")
private CndtnTrgtMngService cndtnTrgtInfoMngService;
//
@Resource(name = "vEEduMIXDAO")
private VEEduMIXDAO vEEduMIXDAO;
/** /**
* @methodName : fileDataUpload * @methodName : fileDataUpload
* @author : 이호영 * @author : 이호영
@ -465,4 +482,32 @@ public class InnorixFileServiceImpl extends EgovAbstractServiceImpl implements I
return new RestResponse(HttpStatus.OK, adrInnorixFileVO.getSuccessMsg(), LocalDateTime.now()); return new RestResponse(HttpStatus.OK, adrInnorixFileVO.getSuccessMsg(), LocalDateTime.now());
} }
@Override
public RestResponse insertInnorixSspnCnClAjax(AdrInnorixFileVO adrInnorixFileVO) {
List<FileVO> result = null;
try {
// 파일 저장 저장할 file 정보를 받아옴
result = this.insertFileData(adrInnorixFileVO);
// 파일 정보 insert
String atchFileId = fileManageDAO.insertFileInfs(result);
//VE_EDU_DOC_REQ 서류요청테이블 insert
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setAplctStateCd("35"); // VEA_APLCT_DETAIL_INFO TB 상태코드 VEA003 10 - 미이수, 20 - 이수, 30 - 취소, 35 - 취소 요청
vEEduAplctVO.setCnclAtchFileId(atchFileId);
vEEduAplctVO.setCnclCn(adrInnorixFileVO.getCnclCn());
vEEduAplctVO.setPrcsAplctPrdOrd(adrInnorixFileVO.getPrcsAplctPrdOrd());
vEEduAplctVO.setEduAplctOrd(adrInnorixFileVO.getEduAplctOrd());
vEEduMIXDAO.updateCnclStatus(vEEduAplctVO);
} catch (Exception e) {
e.printStackTrace();
return new RestResponse(HttpStatus.BAD_REQUEST, "등록에 실패하였습니다.", LocalDateTime.now());
}
return new RestResponse(HttpStatus.OK, adrInnorixFileVO.getSuccessMsg(), LocalDateTime.now());
}
} }

View File

@ -185,6 +185,30 @@ public class InnorixFileController {
return ResponseEntity.ok(innorixService.insertInnorixReqFile(adrInnorixFileVO)); return ResponseEntity.ok(innorixService.insertInnorixReqFile(adrInnorixFileVO));
} }
/**
* @methodName : insertInnorixSspnCnClAjax
* @author : 이호영
* @date : 2023.11.08
* @description : 기소유예 취소 파일 업로드
* @param adrInnorixFileVO
* @return
* @throws Exception
*/
@RequestMapping(value = {"/web/common/insertInnorixSspnCnClAjax.do"}, method = RequestMethod.POST)
public ResponseEntity<RestResponse> insertInnorixSspnCnClAjax(@RequestBody AdrInnorixFileVO adrInnorixFileVO) throws Exception {
//로그인 권한정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getUniqId());
if(userId.equals("")) {
return ResponseEntity.ok(new RestResponse(HttpStatus.UNAUTHORIZED, "로그인이 필요합니다.", LocalDateTime.now()));
}
adrInnorixFileVO.setUniqId(userId);
return ResponseEntity.ok(innorixService.insertInnorixSspnCnClAjax(adrInnorixFileVO));
}
/** /**
* @methodName : insertReqDocInnorixFile * @methodName : insertReqDocInnorixFile
* @author : 이지우 * @author : 이지우

View File

@ -10,6 +10,8 @@ public interface SspnIdtmtService {
void insertVeEduAplct(VEEduAplctVO paramVO); void insertVeEduAplct(VEEduAplctVO paramVO);
void updateAprvlCd(VEEduAplctVO paramVO) throws Exception;
VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO); VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO);
// String findByTrgtNmAndDBirthAndEduStateCd(CndtnTrgtMngVO cndtnTrgtInfoMngVO); // String findByTrgtNmAndDBirthAndEduStateCd(CndtnTrgtMngVO cndtnTrgtInfoMngVO);

View File

@ -30,6 +30,11 @@ public class SspnIdtmtServiceImpl implements SspnIdtmtService {
vEEduAplctDAO.insertVeEduAplct(paramVO); vEEduAplctDAO.insertVeEduAplct(paramVO);
} }
@Override
public void updateAprvlCd(VEEduAplctVO paramVO) throws Exception {
vEEduAplctDAO.updateReg(paramVO);
}
@Override @Override
public VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO) { public VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO) {
return vEEduAplctDAO.findByAprvlCd(vEEduAplctReqVO); return vEEduAplctDAO.findByAprvlCd(vEEduAplctReqVO);

View File

@ -481,6 +481,54 @@ public class SspnIdtmtController {
modelAndView.addObject("result", result);
return modelAndView;
}
/**
* 기반강화연수과정 신청기간 등록
*/
@RequestMapping("/web/ve/aplct/sspnIdtmt/cnclUpdateAjax.do")
public ModelAndView cnclUpdateAjax(
@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
String result = "false";
try {
sspnIdtmtService.updateAprvlCd(vEEduAplctVO);
result = "success";
} catch (Exception e) {
// TODO: handle exception
}
modelAndView.addObject("result", result); modelAndView.addObject("result", result);
return modelAndView; return modelAndView;
@ -547,6 +595,9 @@ public class SspnIdtmtController {
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model , ModelMap model
, HttpServletRequest request ) throws Exception { , HttpServletRequest request ) throws Exception {
try {
//로그인 처리==================================== //로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
@ -597,7 +648,6 @@ public class SspnIdtmtController {
// 날짜비교 // 날짜비교
vEPrcsDetailVOList.stream().forEach(t->{ vEPrcsDetailVOList.stream().forEach(t->{
t.setDateChk(this.dateChk(t, currentDate)); t.setDateChk(this.dateChk(t, currentDate));
}); });
@ -611,6 +661,10 @@ public class SspnIdtmtController {
model.addAttribute("paginationInfo", paginationInfo); model.addAttribute("paginationInfo", paginationInfo);
} catch (Exception e) {
e.printStackTrace();
// TODO: handle exception
}
return "/web/ve/aplct/sspnIdtmt/sspnIdtmtEduAplctList"; return "/web/ve/aplct/sspnIdtmt/sspnIdtmtEduAplctList";
@ -621,7 +675,7 @@ public class SspnIdtmtController {
String returnDate = ""; String returnDate = "";
String targetDateString = vEPrcsDetailVO.getEduDdlnPnttm(); String targetDateString = vEPrcsDetailVO.getEduStrtPnttm();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd");
// 문자열로부터 LocalDate 객체를 생성합니다. // 문자열로부터 LocalDate 객체를 생성합니다.

View File

@ -139,6 +139,8 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
private String isltn3Yn; //접적학교여부 private String isltn3Yn; //접적학교여부
private String ppltnReducAreaYn; //인구감소지역여부 private String ppltnReducAreaYn; //인구감소지역여부
private String cnclAtchFileId; //
private String cnclCn; //
public int getChasi() { public int getChasi() {
return chasi; return chasi;
@ -1680,6 +1682,18 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
this.ppltnReducAreaYn = ppltnReducAreaYn; this.ppltnReducAreaYn = ppltnReducAreaYn;
} }
public String getCnclAtchFileId() {
return cnclAtchFileId;
}
public void setCnclAtchFileId(String cnclAtchFileId) {
this.cnclAtchFileId = cnclAtchFileId;
}
public String getCnclCn() {
return cnclCn;
}
public void setCnclCn(String cnclCn) {
this.cnclCn = cnclCn;
}
} }

View File

@ -131,6 +131,10 @@ public class VEEduAplctDAO extends EgovAbstractDAO {
insert("VEEduAplctDAO.insertVeEduAplct", paramVO); insert("VEEduAplctDAO.insertVeEduAplct", paramVO);
} }
public void updateAprvlCd(VEEduAplctVO paramVO) {
insert("VEEduAplctDAO.updateAprvlCd", paramVO);
}
public VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO) { public VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO) {
return (VEEduAplctVO) select("VEEduAplctDAO.findByAprvlCd", vEEduAplctReqVO); return (VEEduAplctVO) select("VEEduAplctDAO.findByAprvlCd", vEEduAplctReqVO);
} }

View File

@ -181,4 +181,8 @@ public class VEEduMIXDAO extends EgovAbstractDAO {
update("VEEduMIXDAO.updateEduStateCd", paramVO); update("VEEduMIXDAO.updateEduStateCd", paramVO);
} }
public void updateCnclStatus(VEEduAplctVO vEEduAplctVO) {
update("VEEduMIXDAO.updateCnclStatus", vEEduAplctVO);
}
} }

View File

@ -47,4 +47,6 @@ public interface VEPrcsAplctPrdService {
void updateOneColumn(VEPrcsDetailVO vEPrcsDetailVO) throws Exception; void updateOneColumn(VEPrcsDetailVO vEPrcsDetailVO) throws Exception;
VEPrcsDetailVO findByCnclInfo(VEPrcsDetailVO vEPrcsDetailVO);
} }

View File

@ -133,6 +133,9 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
private String eduStateCd; private String eduStateCd;
private String sspnIdtmtTrgtOrd; private String sspnIdtmtTrgtOrd;
private String cnclAtchFileId;
private String cnclCn;
@ -641,6 +644,18 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setSspnIdtmtTrgtOrd(String sspnIdtmtTrgtOrd) { public void setSspnIdtmtTrgtOrd(String sspnIdtmtTrgtOrd) {
this.sspnIdtmtTrgtOrd = sspnIdtmtTrgtOrd; this.sspnIdtmtTrgtOrd = sspnIdtmtTrgtOrd;
} }
public String getCnclAtchFileId() {
return cnclAtchFileId;
}
public void setCnclAtchFileId(String cnclAtchFileId) {
this.cnclAtchFileId = cnclAtchFileId;
}
public String getCnclCn() {
return cnclCn;
}
public void setCnclCn(String cnclCn) {
this.cnclCn = cnclCn;
}
} }

View File

@ -104,4 +104,8 @@ public class VEPrcsAplctPrdDAO extends EgovAbstractDAO {
return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.selectDetailByOrd", vEPrcsDetailVO); return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.selectDetailByOrd", vEPrcsDetailVO);
} }
public VEPrcsDetailVO findByCnclInfo(VEPrcsDetailVO paramVO) {
return (VEPrcsDetailVO) select("VEPrcsAplctPrdDAO.findByCnclInfo", paramVO);
}
} }

View File

@ -85,6 +85,10 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
return vEPrcsAplctPrdDAO.selectDetailNewOne4Fndth(paramVO); return vEPrcsAplctPrdDAO.selectDetailNewOne4Fndth(paramVO);
} }
public VEPrcsDetailVO findByCnclInfo(VEPrcsDetailVO paramVO) {
return vEPrcsAplctPrdDAO.findByCnclInfo(paramVO);
}
@Override @Override
public List<VEInstrDetailVO> selectinstrAsgnmPopupPagingList(VEPrcsDetailVO vEPrcsDetailVO) { public List<VEInstrDetailVO> selectinstrAsgnmPopupPagingList(VEPrcsDetailVO vEPrcsDetailVO) {
return vEPrcsAplctPrdDAO.selectinstrAsgnmPopupPagingList(vEPrcsDetailVO); return vEPrcsAplctPrdDAO.selectinstrAsgnmPopupPagingList(vEPrcsDetailVO);

View File

@ -22,11 +22,14 @@ import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.ComDefaultCodeVO; import kcc.com.cmm.ComDefaultCodeVO;
import kcc.com.cmm.ComDefaultVO; import kcc.com.cmm.ComDefaultVO;
import kcc.com.cmm.LoginVO; import kcc.com.cmm.LoginVO;
import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.FileVO;
import kcc.com.cmm.service.impl.CmmUseDAO; import kcc.com.cmm.service.impl.CmmUseDAO;
import kcc.com.cmm.util.StringUtil; import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckLoginUtil; import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.uat.uia.service.SsoLoginVO; import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil; import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO; import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
@ -115,7 +118,13 @@ public class CndtnPrcsInfoMngController {
@Resource(name = "egovCryptoUtil") @Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil; EgovCryptoUtil egovCryptoUtil;
//파일정보의 관리
@Resource(name = "EgovFileMngService")
private EgovFileMngService fileService;
//온라인콘텐츠과정 관리
@Resource(name = "sspnIdtmtService")
private SspnIdtmtService sspnIdtmtService;
/** /**
* 기반강화연수 과정 관리 목록 화면 * 기반강화연수 과정 관리 목록 화면
*/ */
@ -721,6 +730,64 @@ public class CndtnPrcsInfoMngController {
} }
/**
* @methodName : updateAplctStateCdAjax_only
* @author : 이호영
* @date : 2023.11.10
* @description : 관리자 과정신청기간관리목록 > 상세 > 취소요청 > 팝업 > 승인 반려
* 반려일 경우 VE_EDU_APLCT 테이블에 update 안함
* @param vEEduAplctVO
* @param model
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/updateAplctStateCdAjax_only.do")
public ModelAndView updateAplctStateCdAjax_only(
@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
, ModelMap model
//, RedirectAttributes redirectAttributes
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
vEEduAplctVO.setLastUpdusrId(loginVO.getUniqId());
//vEPrcsDetailVO.setUseYn("Y");
// VEA_APLCT_DETAIL_INFO 신청상세정보 상태값 update
vEEduMIXService.updateAplctStateCd(vEEduAplctVO);
// 취소 반려처리시 타면 안됨
//VE_EDU_APLCT UPDATE
if(StringUtils.isNotEmpty(vEEduAplctVO.getAprvlCd()))
{
sspnIdtmtService.updateAprvlCd(vEEduAplctVO);
}
modelAndView.addObject("result", "success");
return modelAndView;
}
/** /**
* 조건부기소유예 기간 상세화면 * 조건부기소유예 기간 상세화면
*/ */
@ -799,6 +866,7 @@ public class CndtnPrcsInfoMngController {
ModelAndView modelAndView = new ModelAndView("jsonView"); ModelAndView modelAndView = new ModelAndView("jsonView");
try {
//로그인 처리==================================== //로그인 처리====================================
//로그인 정보 가져오기 //로그인 정보 가져오기
@ -812,9 +880,9 @@ public class CndtnPrcsInfoMngController {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기 SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
try {
// 신청상세정보 상태값 update // 신청상세정보 상태값 update
vEEduAplctVO.setLastUpdusrId(loginVO.getUniqId());
vEEduMIXService.updateAplctStateCd(vEEduAplctVO); vEEduMIXService.updateAplctStateCd(vEEduAplctVO);
// 기소유예 대상자 상태값 udpate // 기소유예 대상자 상태값 udpate
@ -904,6 +972,7 @@ public class CndtnPrcsInfoMngController {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기 LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
try { try {
vEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId());
// 교육 신청 테이블에 신청자 상태값 update // 교육 신청 테이블에 신청자 상태값 update
vEAPrcsAplctPrdInstrAsgnmService.updateAplctStateCdListAjax(vEPrcsDetailVO); vEAPrcsAplctPrdInstrAsgnmService.updateAplctStateCdListAjax(vEPrcsDetailVO);
@ -1191,6 +1260,51 @@ public class CndtnPrcsInfoMngController {
return "/oprtn/cndtnSspnIdtmt/popup/cndtnInstrAsgnmPopup"; return "/oprtn/cndtnSspnIdtmt/popup/cndtnInstrAsgnmPopup";
} }
/**
* @methodName : cnclPopup
* @author : 이호영
* @date : 2023.11.09
* @description : 취소 정보 확인하는 팝업
* @param vEPrcsDetailVO
* @param model
* @param redirectAttributes
* @param session
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/popup/cnclPopup.do")
public String cnclPopup(
// @ModelAttribute("vEInstrDetailVO") VEInstrDetailVO vEInstrDetailVO
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//로그인 처리====================================
VEPrcsDetailVO info = vEPrcsAplctPrdService.findByCnclInfo(vEPrcsDetailVO);
//파일 정보 가져오기
// FileVO fileVO = new FileVO();
// fileVO.setAtchFileId(info.getCnclAtchFileId());
// List<FileVO> result = fileService.selectFileInfs(fileVO);
// model.addAttribute("fileList", result);
// model.addAttribute("fileListCnt", result.size());
//대상 리스트, 페이징 정보 전달
model.addAttribute("info", info);
return "/oprtn/cndtnSspnIdtmt/popup/cnclPopup";
}
/** /**
* 강사배정 등록 처리 * 강사배정 등록 처리
*/ */

View File

@ -125,6 +125,8 @@
SELECT SELECT
qe.QESTNR_ID AS qestnrId , /* 설문했으면 ID가 있음 */ qe.QESTNR_ID AS qestnrId , /* 설문했으면 ID가 있음 */
vadi.APLCT_STATE_CD AS aplctStateCd, /* 이수 상태 */ vadi.APLCT_STATE_CD AS aplctStateCd, /* 이수 상태 */
vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId,
vadi.CNCL_CN AS cnclCn,
le.MBER_NM AS userNm, le.MBER_NM AS userNm,
<include refid="VEEduMIXDAO.select_column_name"/> <include refid="VEEduMIXDAO.select_column_name"/>
FROM FROM
@ -164,6 +166,7 @@
</isNotEmpty> </isNotEmpty>
AND a.use_yn = 'Y' AND a.use_yn = 'Y'
AND a.aprvl_cd != '40' /* 취소된 내역 안 보여줌 */
</select> </select>
@ -4657,6 +4660,24 @@ VALUES
vea_aplct_detail_info vea_aplct_detail_info
SET SET
aplct_state_cd = #aplctStateCd# aplct_state_cd = #aplctStateCd#
, last_updusr_id = #lastUpdusrId#
, last_updt_pnttm = SYSDATE
WHERE
prcs_aplct_prd_ord = #prcsAplctPrdOrd#
AND edu_aplct_ord = #eduAplctOrd#
</update>
<update id="VEEduMIXDAO.updateCnclStatus" parameterClass="VEEduAplctVO">
/* VEEduMIXDAO.updateCnclStatus */
UPDATE
vea_aplct_detail_info
SET
aplct_state_cd = #aplctStateCd#
, cncl_atch_file_id = #cnclAtchFileId#
, cncl_cn = #cnclCn#
, last_updt_pnttm = SYSDATE
WHERE WHERE
prcs_aplct_prd_ord = #prcsAplctPrdOrd# prcs_aplct_prd_ord = #prcsAplctPrdOrd#
AND edu_aplct_ord = #eduAplctOrd# AND edu_aplct_ord = #eduAplctOrd#

View File

@ -133,6 +133,8 @@
UPDATE VEA_APLCT_DETAIL_INFO UPDATE VEA_APLCT_DETAIL_INFO
SET aplct_state_cd = #aplctStateCd# SET aplct_state_cd = #aplctStateCd#
,last_updusr_id = #lastUpdusrId#
,last_updt_pnttm = sysdate
WHERE edu_aplct_ord IN WHERE edu_aplct_ord IN
<iterate property="eduAplctOrdList" open="(" close=")" conjunction=","> <iterate property="eduAplctOrdList" open="(" close=")" conjunction=",">
#eduAplctOrdList[]# #eduAplctOrdList[]#

View File

@ -311,6 +311,7 @@
FROM ve_edu_aplct x FROM ve_edu_aplct x
WHERE x.prcs_ord = a.prcs_aplct_prd_ord WHERE x.prcs_ord = a.prcs_aplct_prd_ord
AND x.sbmt_yn='Y' AND x.sbmt_yn='Y'
AND x.aprvl_cd != 40 /*취소된 신청자 제거*/
) AS nosCnt1 ) AS nosCnt1
/* /*
신청자 정보 신청자 정보
@ -576,6 +577,9 @@
vpap.edu_strt_pnttm AS eduStrtPnttm , vpap.edu_strt_pnttm AS eduStrtPnttm ,
vpap.edu_ddln_pnttm AS eduDdlnPnttm , vpap.edu_ddln_pnttm AS eduDdlnPnttm ,
a.APRVL_CD AS aprvlCd , a.APRVL_CD AS aprvlCd ,
vadi.APLCT_STATE_CD AS aplctStateCd,
vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId,
vadi.CNCL_CN AS cnclCn,
CASE WHEN EXISTS ( /* 설문조사 */ CASE WHEN EXISTS ( /* 설문조사 */
SELECT 1 SELECT 1
FROM lettnqestnrrslt lerslt FROM lettnqestnrrslt lerslt
@ -654,4 +658,16 @@
ORDER BY a.strt_pnttm DESC ORDER BY a.strt_pnttm DESC
LIMIT 1 LIMIT 1
</select> </select>
<select id="VEPrcsAplctPrdDAO.findByCnclInfo" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
/* VEPrcsAplctPrdDAO.findByCnclInfo */
SELECT
CNCL_ATCH_FILE_ID as cnclAtchFileId
, CNCL_CN as cnclCn
FROM
vea_aplct_detail_info a
WHERE
PRCS_APLCT_PRD_ORD = #prcsAplctPrdOrd#
AND EDU_APLCT_ORD = #eduAplctOrd#
</select>
</sqlMap> </sqlMap>

View File

@ -28,6 +28,9 @@
<head> <head>
<title>교육과정관리</title> <title>교육과정관리</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="<c:url value='/js/web/popup.js'/>" ></script>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function(){ $(document).ready(function(){

View File

@ -271,7 +271,8 @@
<c:out value="${list.prcsNm}"/>(<c:out value="${list.prcsAplctPrdOrd}"/>) <c:out value="${list.prcsNm}"/>(<c:out value="${list.prcsAplctPrdOrd}"/>)
</td> </td>
<td> <td>
<c:out value="${list.eduStrtPnttm}"/>~<c:out value="${list.eduDdlnPnttm}"/> <%-- <c:out value="${list.eduStrtPnttm}"/>~<c:out value="${list.eduDdlnPnttm}"/> --%>
<c:out value="${list.eduStrtPnttm}"/>
</td> </td>
<td> <td>
<c:out value="${list.nosCnt1}"/>/<c:out value="${list.nos}"/> <c:out value="${list.nosCnt1}"/>/<c:out value="${list.nos}"/>

View File

@ -28,6 +28,7 @@
<head> <head>
<title>교육과정관리</title> <title>교육과정관리</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="<c:url value='/js/web/popup.js'/>" ></script>
<script type="text/javascript"> <script type="text/javascript">
@ -88,9 +89,6 @@
function fn_delInstr(data){ function fn_delInstr(data){
document.instrForm.userId.value = data ; document.instrForm.userId.value = data ;
var data = new FormData(document.getElementById("instrForm")); var data = new FormData(document.getElementById("instrForm"));
if(confirm("삭제하시겠습니까?")){ if(confirm("삭제하시겠습니까?")){
// var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/instrDelAjax.do'/>"; // var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/instrDelAjax.do'/>";
@ -122,26 +120,30 @@
// 강사 배치
function fncInstrAsgnmInfo(prcsAplctPrdOrd) {
var form = document.popForm;
form.prcsAplctPrdOrd.value = prcsAplctPrdOrd;
// form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/fndthInstrAsgnmPopup.do'/>";
form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/cndtnInstrAsgnmPopup.do'/>";
window.open("#", "_securityPop", "scrollbars = no, top=100px, left=100px, height=750px, width=950px");
form.target = "_securityPop";
form.submit();
}
function chkAll(obj) { function chkAll(obj) {
// 모든 체크박스의 상태를 헤더 체크박스의 상태와 동일하게 설정 // 모든 체크박스의 상태를 헤더 체크박스의 상태와 동일하게 설정
$("input[name='chk']").prop('checked', $(obj).prop('checked')); $("input[name='chk']").prop('checked', $(obj).prop('checked'));
} }
function updateEduAplctOrd(p_aprvlCd, p_prcsAplctPrdOrd) { // 사용자 승인 반려 처리 : 체크박스X
function updateEduAplctOrd(p_aprvlCd, p_eduAplctOrd, p_prcsAplctPrdOrd){
// 기존에 있던 updateEduAplctOrdList function 사용하기 위한 function
var selectedEduAplctOrd = [];
selectedEduAplctOrd.push(p_eduAplctOrd);
var dataToSend = {
"eduAplctOrdList": selectedEduAplctOrd,
"aprvlCd": p_aprvlCd,
"prcsAplctPrdOrd": p_prcsAplctPrdOrd
};
commAjax(dataToSend);
}
// 사용자 승인 반려 처리 : 체크박스O
function updateEduAplctOrdList(p_aprvlCd, p_prcsAplctPrdOrd) {
var selectedEduAplctOrd = []; var selectedEduAplctOrd = [];
// "chk" 이름을 가진 체크박스가 체크된 항목들을 순회 // "chk" 이름을 가진 체크박스가 체크된 항목들을 순회
@ -150,7 +152,6 @@
selectedEduAplctOrd.push(eduAplctOrdValue); selectedEduAplctOrd.push(eduAplctOrdValue);
}); });
console.log('selectedEduAplctOrd : ', selectedEduAplctOrd);
// 선택된 항목이 없으면 경고 메시지를 표시하고 함수를 종료 // 선택된 항목이 없으면 경고 메시지를 표시하고 함수를 종료
if (selectedEduAplctOrd.length === 0) { if (selectedEduAplctOrd.length === 0) {
alert("선택된 항목이 없습니다. 선택 후 다시 시도하세요."); alert("선택된 항목이 없습니다. 선택 후 다시 시도하세요.");
@ -163,6 +164,11 @@
"prcsAplctPrdOrd": p_prcsAplctPrdOrd "prcsAplctPrdOrd": p_prcsAplctPrdOrd
}; };
commAjax(dataToSend);
}
function commAjax(dataToSend){
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateEduAplctAprvlCdAjax.do'/>"; var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateEduAplctAprvlCdAjax.do'/>";
@ -186,7 +192,6 @@
console.error("Response:", jqXHR.responseText); console.error("Response:", jqXHR.responseText);
} }
}); });
} }
@ -220,10 +225,44 @@
} }
} }
// 강사 배치
function fncInstrAsgnmInfo(prcsAplctPrdOrd) {
var form = document.popForm;
form.prcsAplctPrdOrd.value = prcsAplctPrdOrd;
// form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/fndthInstrAsgnmPopup.do'/>";
form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/cndtnInstrAsgnmPopup.do'/>";
window.open("#", "_securityPop", "scrollbars = no, top=100px, left=100px, height=750px, width=950px");
form.target = "_securityPop";
form.submit();
}
function fnCnclPopup(eduAplctOrd, prcsAplctPrdOrd) {
var form = document.cnclPopupForm;
form.eduAplctOrd.value = eduAplctOrd;
form.prcsAplctPrdOrd.value = prcsAplctPrdOrd;
form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/popup/cnclPopup.do'/>";
openPopupAndSubmitForm('cnclPopupForm', 'cnclPopupForm', 700, 380);
}
</script> </script>
</head> </head>
<body> <body>
<form id="cnclPopupForm" name="cnclPopupForm" method="post">
<input type="hidden" id="eduAplctOrd" name="eduAplctOrd" />
<input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" />
</form>
<form id="modyfiForm" name="modyfiForm"> <form id="modyfiForm" name="modyfiForm">
<input type="hidden" id="modyDdlnCd" name="ddlnCd" /> <input type="hidden" id="modyDdlnCd" name="ddlnCd" />
<input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdOrd}' />"/> <input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdOrd}' />"/>
@ -458,9 +497,8 @@
<th>신청자</th> <th>신청자</th>
<th>신청일</th> <th>신청일</th>
<th>확정여부</th> <th>확정여부</th>
<th>이수여부</th> <th>교육상태</th>
<th>설문조사</th> <th>승인처리</th>
<th>이수증</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -469,8 +507,14 @@
<c:forEach var="list" items="${listPrcsAplct}" varStatus="status"> <c:forEach var="list" items="${listPrcsAplct}" varStatus="status">
<tr> <tr>
<td> <td>
<c:choose>
<c:when test="${list.aplctStateCd ne 30 and list.aplctStateCd ne 35}">
<input name="chk" class="${list.asgnmAprvlCd}" <input name="chk" class="${list.asgnmAprvlCd}"
value="${list.eduAplctOrd}" title="Check" type="checkbox"/> value="${list.eduAplctOrd}" title="Check" type="checkbox"/>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
</td> </td>
<td> <td>
<c:out value="${list.userNm}"/> <c:out value="${list.userNm}"/>
@ -483,34 +527,27 @@
</td> </td>
<td> <td>
<ve:code codeId="VEA003" code="${list.aplctStateCd}"/> <ve: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>
</td> </td>
<td> <td>
<c:choose> <c:choose>
<c:when test="${list.qestnrId }"> <c:when test="${list.aplctStateCd ne 30 and list.aplctStateCd ne 35}">
<button type="button" class="btn_type04" onclick="fn_qestnr('<c:out value="${list.qestnrId }"/>');">설문결과</button> <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>
<c:otherwise> <c:otherwise>
미입력 <button type="button" class="btn_type05" onclick="fnCnclPopup('<c:out value="${list.eduAplctOrd }" />', '<c:out value="${info.prcsAplctPrdOrd }"/>')">취소요청</button>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
</td> </td>
<td>
<c:choose>
<c:when test="${list.qestnrId }">
<%-- <button type="button" class="btnType04" onclick="fn_qestnr('<c:out value="${list.qestnrId }"/>');">출력</button> --%>
<button type="button" class="btn_type04">출력</button>
</c:when>
<c:otherwise>
<button type="button" class="btn_type04">이수증(테스트)</button>
</c:otherwise>
</c:choose>
</td>
</tr>
</c:forEach> </c:forEach>
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<tr> <tr>
<td colspan="7">신청자가 없습니다.</td> <td colspan="6">신청자가 없습니다.</td>
</tr> </tr>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
@ -530,8 +567,8 @@
</div> </div>
<div class="btn_right"> <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="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList.do" />'; return false;">강의목록</button>
<button type="button" class="btn_type04" onclick="updateEduAplctOrd(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="updateEduAplctOrd(20, '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">교육승인</button> <button type="button" class="btn_type04" onclick="updateEduAplctOrdList(20, '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">교육승인</button>
</div> </div>
</div> </div>

View File

@ -263,7 +263,7 @@
<th>대면구분</th> <th>대면구분</th>
<th>과정명</th> <th>과정명</th>
<th>신청기간</th> <th>신청기간</th>
<th>교육기간</th> <th>교육일자</th>
<th>신청자/정원</th> <th>신청자/정원</th>
<th>상태</th> <th>상태</th>
<!-- <th>공개여부</th> --> <!-- <th>공개여부</th> -->
@ -285,7 +285,8 @@
<c:out value="${list.strtPnttm}"/>~<c:out value="${list.endPnttm}"/> <c:out value="${list.strtPnttm}"/>~<c:out value="${list.endPnttm}"/>
</td> </td>
<td> <td>
<c:out value="${list.eduStrtPnttm}"/>~<c:out value="${list.eduDdlnPnttm}"/> <%-- <c:out value="${list.eduStrtPnttm}"/>~<c:out value="${list.eduDdlnPnttm}"/> --%>
<c:out value="${list.eduStrtPnttm}"/>
</td> </td>
<td> <td>
<c:out value="${list.nosCnt1}"/>/<c:out value="${list.nos}"/> <c:out value="${list.nosCnt1}"/>/<c:out value="${list.nos}"/>

View File

@ -230,7 +230,7 @@
<tr> <tr>
<th scope="row">교육부분</th> <th scope="row">교육부분</th>
<td> <td>
<input type="text" name="prcsDiv" id="prcsDiv" readonly="readonly" value="${prcsDivNm }"/> <input type="text" id="prcsDiv" readonly="readonly" value="${prcsDivNm }"/>
<%-- <ve:select codeId="VEA001" name="prcsDiv" id="prcsDiv" css="class='sel_type1'" selectedValue="${info.prcsDiv}"/> --%> <%-- <ve:select codeId="VEA001" name="prcsDiv" id="prcsDiv" css="class='sel_type1'" selectedValue="${info.prcsDiv}"/> --%>
</td> </td>
</tr> </tr>

View File

@ -0,0 +1,139 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%
/**
* @Class Name : instrAsgnmPopup.jsp
* @Description : 강사배치 팝업
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.08.09 김봉호 최초 생성
* @author 안주영
* @since 2022.1.8
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<%-- <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(){
});
function fncPopClose(){
self.close();
}
function fn_updateCnclUpdate(aplctStateCd, aprvlCd, p_msg) {
var msg = p_msg;
var form = document.updateForm ;
form.aplctStateCd.value = aplctStateCd ;
form.aprvlCd.value = aprvlCd ;
var data1 = new FormData(document.getElementById("updateForm"));
if(confirm(msg+" 하시겠습니까?")){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/cndtnSspnIdtmt/updateAplctStateCdAjax_only.do",
data: data1,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == 'success'){
alert("처리 되었습니다.");
window.opener.location.reload();
fncPopClose();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
</script>
</head>
<body>
<div class="area_popup supm_popup">
<div class="cont_popup">
<form id="updateForm" name="updateForm" method="post">
<input type="hidden" id="prcsAplctPrdOrd" name="prcsAplctPrdOrd" value="<c:out value="${vEPrcsDetailVO.prcsAplctPrdOrd }" />">
<input type="hidden" id="eduAplctOrd" name="eduAplctOrd" value="<c:out value="${vEPrcsDetailVO.eduAplctOrd }" />">
<input type="hidden" id="aplctStateCd" name="aplctStateCd" value="">
<input type="hidden" id="aprvlCd" name="aprvlCd" value="">
</form>
<form:form id="listForm" name="listForm" method="post" onsubmit="return false;">
<div class="area_popup">
<div class="cont_popup">
<div class="pop_tb_tit01">
<p>교육취소 내용</p>
</div>
<div>
<table class="pop_tb_type02">
<colgroup>
<col style="width: 9%;">
<col style="width: 15%;">
</colgroup>
<tbody>
<tr>
<th scope="row"><p>구분</p></th>
<td><c:out value="${info.cnclCn }" /></td>
</tr>
<tr>
<th scope="row"><p>선택</p></th>
<td>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.cnclAtchFileId}" />
<c:param name="pdf_view" value="Y" />
</c:import>
</td>
</tr>
</tbody>
</table>
</div>
<!-- //page -->
<div class="btn_wrap_pop btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btn_type05" onclick="fn_updateCnclUpdate(30, 40, '취소');">승인</button>
<button type="button" class="btn_type02" onclick="fn_updateCnclUpdate(10, '', '반려');">반려</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</form:form>
</div>
</div>
</body>
</html>

View File

@ -332,10 +332,8 @@
<tr> <tr>
<th scope="row">관할청</th> <th scope="row">관할청</th>
<td> <td>
<ve:select codeId="VEA008" name="cmptntAthrt" id="cmptntAthrt" css="class='sel_type1'" <ve:code codeId="VEA008" code="${info.cmptntAthrt }"/>
selectedText="${info.cmptntAthrt }" defaultValue="" <input type="hidden" name="cmptntAthrt" value="${info.cmptntAthrt }">
defaultText='선택'
/>
</td> </td>
</tr> </tr>
<tr> <tr>

View File

@ -11,21 +11,72 @@
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" /> <un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국저작권위원회 저작권 교육 시스템</title> <title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국저작권위원회 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8"> <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(/offedu/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"> <script type="text/javaScript" language="javascript">
$(document).ready(function(){ $(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
}); });
function fncEduReg(prcsAplctPrdOrd){ // 업로드 완료 후 이벤트
var regForm = document.regForm; control.on('uploadComplete', function (p) {
regForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd; console.log('uploadComplete : ', p);
fn_callBackInnorix(p.files); // 파일 정보 DB isnert function
});
});
var data = new FormData(document.getElementById("regForm"));
if(confirm("신청하시겠습니까?")){ /*
var url = "${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/eduRegAjax.do"; * 교육 확정일떄 취소를하면 팝업이 열림
* 열리기전 데이터를 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/sspnIdtmt/cnclUpdateAjax.do";
console.log(data); console.log(data);
$.ajax({ $.ajax({
type:"POST", type:"POST",
@ -38,7 +89,7 @@ $(document).ready(function(){
cache: false, cache: false,
success:function(returnData){ success:function(returnData){
if(returnData.result == "success"){ if(returnData.result == "success"){
alert("저장되었습니다."); alert("취소되었습니다.");
fncGoList(); fncGoList();
} }
}, },
@ -49,20 +100,17 @@ $(document).ready(function(){
} }
} }
function linkPage(pageNo){ function linkPage(pageNo){
var listForm = document.listForm ; var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ; listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/web/ve/aplct/fndtnEnhanceTrn/eduAplctList.do'/>"; listForm.action = "<c:url value='/web/ve/aplct/sspnIdtmt/sspnIdtmtEduAplctList.do'/>";
listForm.submit(); listForm.submit();
} }
function goEduAplctList(prcsAplctPrdOrd){
var goEduAplctListForm = document.goEduAplctListForm ;
goEduAplctListForm.action = "<c:url value='/web/ve/aplct/fndtnEnhanceTrn/eduAplctList.do'/>";
goEduAplctListForm.submit();
}
function fncGoList(){ function fncGoList(){
linkPage(1); linkPage(1);
@ -79,16 +127,72 @@ $(document).ready(function(){
function fncGoDetail(prcsAplctPrdOrd){ function fncGoDetail(prcsAplctPrdOrd){
var viewForm = document.viewForm ; var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ; viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.action = "<c:url value='/web/ve/aplct/fndtnEnhanceTrn/eduAplctDetail.do'/>"; viewForm.action = "<c:url value='/web/ve/aplct/sspnIdtmt/eduAplctDetail.do'/>";
viewForm.submit(); 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);
}
}
</script> </script>
<!-- content --> <!-- content -->
<div class="cont_wrap" id="sub"> <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"> <form name="regForm" id="regForm">
<input type="hidden" name="prcsAplctPrdOrd"> <input type="hidden" name="prcsAplctPrdOrd">
</form> </form>
@ -146,7 +250,7 @@ $(document).ready(function(){
<caption>교육 목록표</caption> <caption>교육 목록표</caption>
<colgroup> <colgroup>
<col style="width:35%;"> <col style="width:35%;">
<col style="width:;"> <col style="width:10%;">
<col style="width:13%;"> <col style="width:13%;">
<col style="width:13%;"> <col style="width:13%;">
<col style="width:13%;"> <col style="width:13%;">
@ -184,19 +288,46 @@ $(document).ready(function(){
80 수정완료 80 수정완료
90 교육미확정 90 교육미확정
--> -->
<kc:code codeId="VE0003" code="${list.aprvlCd}"/> <c:choose>
<c:if test="${list.aprvlCd eq 10 <c:when test="${not empty list.aplctStateCd }">
or list.aprvlCd eq 120 <!--
or list.aprvlCd eq 20 VEA003 10 미이수
or list.aprvlCd eq 230 VEA003 20 이수완료
}"> VEA003 30 취소
<button type="button" title="신청취소" class="btnType02" data-tooltip="sub01_pop01">취소</button> 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>
<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>
<td> <td>
<!-- 신청 승인상태 20 and 현재가 교육종료보다 이후 체크 1 --> <!-- 신청 승인상태 20 and 현재가 교육종료보다 이후 체크 1 -->
<!--
취소상태
list.aplctStateCd ne 30
list.aprvlCd ne 40
-->
<c:choose> <c:choose>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and not list.qestRsltExists }"> <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" title="설문등록" class="btnType04" data-tooltip="edu_in">설문등록</button> <button type="button" title="설문등록" class="btnType04" data-tooltip="edu_in">설문등록</button>
</c:when> </c:when>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and list.qestRsltExists }"> <c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and list.qestRsltExists }">
@ -208,11 +339,20 @@ $(document).ready(function(){
</c:choose> </c:choose>
</td> </td>
<td> <td>
<!--
취소상태
list.aplctStateCd ne 30
list.aprvlCd ne 40
-->
<c:choose> <c:choose>
<c:when test="${list.qestRsltExists }"> <c:when test="${list.qestRsltExists }">
<button type="button" title="출력" class="btnType03">출력</button> <button type="button" title="출력" class="btnType03">출력</button>
</c:when> </c:when>
<c:when test="${list.dateChk eq 1 and not list.qestRsltExists}"> <c:when test="${list.dateChk eq 1
and not list.qestRsltExists
and list.aplctStateCd ne 30
and list.aprvlCd ne 40
}">
교육완료 교육완료
</c:when> </c:when>
<c:otherwise> <c:otherwise>
@ -250,78 +390,77 @@ $(document).ready(function(){
</form:form> </form:form>
</div> </div>
<!-- 교육신청 취소 -->
<!-- 서류요청 팝업 -->
<div class="tooltip-wrap"> <div class="tooltip-wrap">
<div class="popup_wrap popType01" tabindex="0" <div class="popup_wrap popType05" tabindex="0" data-tooltip-con="sub37_pop02" data-focus="sub37_pop02" data-focus-prev="sub37_pop02_close">
data-tooltip-con="sub01_pop01" data-focus="sub01_pop01"
data-focus-prev="sub01_pop01_close">
<div class="popup_tit"> <div class="popup_tit">
<p>교육신청 취소</p> <p>취소 사용 제출</p>
<button class="btn_popup_close tooltip-close" <button class="btn_popup_close tooltip-close" data-focus="sub37_pop02_close" title="팝업 닫기"><i></i></button>
data-focus="sub01_pop01_close" title="팝업 닫기">
<i></i>
</button>
</div> </div>
<div class="popup_cont"> <div class="popup_cont">
<div class="cont_body"> <div class="cont_body">
<div class="popup_table_top">
<button type="button" class="btnType06">취소양식 다운로드</button>
</div>
<div class="pop_tb_type01"> <div class="pop_tb_type01">
<table> <table>
<colgroup> <colgroup>
<col style="width: 22%;"> <col style="width: 22%;">
<col style=""> <col style="">
</colgroup> </colgroup>
<tr>
<th>첨부파일</th>
<td>
<div class="btn_wrap">
<button type="button" class="btnType01 right">파일찾기</button>
</div>
<div class="file_wrap">
<table>
<colgroup>
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 15%;">
</colgroup>
<thead>
<th>파일 명</th>
<th>종류</th>
<th>크기</th>
</thead>
<tbody class="tb_file_before">
<tr>
<td colspan="3">
<p>
첨부하실 파일을 <span>마우스끌어서</span> 넣어주세요.
</p>
</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
<tr> <tr>
<th>취소사유</th> <th>취소사유</th>
<td><textarea></textarea></td> <td><textarea id="cnclCn" name="cnclCn"></textarea></td>
</tr> </tr>
</table> </table>
</div> </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="pop_btn_wrap btn_layout01">
<div class="btn_left"></div> <div class="btn_left">
</div>
<div class="btn_center"> <div class="btn_center">
<button type="button" class="btnType05">제출</button>
<button type="button" class="btnType02 tooltip-close"
data-focus="imsi-close" data-focus-next="imsi">취소</button>
</div> </div>
<div class="btn_right"></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>
</div> </div>
</div> </div>
<!--// 교육신청 취소 --> </div>
<!--// 서류요청 팝업-->
<script src="http://119.193.215.98:8093/ReportingServer/html5/js/crownix-viewer.min.js"></script> <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"> <link rel="stylesheet" type="text/css" href="http://119.193.215.98:8093/ReportingServer/html5/css/crownix-viewer.min.css">
@ -331,7 +470,8 @@ $(document).ready(function(){
*/ */
function fncCmpltCrtfc(p_prcsAplctPrdOrd, p_eduAplctOrd) { function fncCmpltCrtfc(p_prcsAplctPrdOrd, p_eduAplctOrd) {
var viewer = new m2soft.crownix.Viewer('http://119.193.215.98:8093/ReportingServer/service'); var viewer = new m2soft.crownix.Viewer(
'http://119.193.215.98:8093/ReportingServer/service');
//viewer.openFile('cmplt_crtfc_20231030.mrd', '/rfn [jsonsample_red_2.json]'); //viewer.openFile('cmplt_crtfc_20231030.mrd', '/rfn [jsonsample_red_2.json]');
//viewer.openFile('cmplt_crtfc_20231030.mrd','/rexport [5]'); //viewer.openFile('cmplt_crtfc_20231030.mrd','/rexport [5]');
//viewer.openFile('sample.mrd','/rfn [sample.txt]'); //viewer.openFile('sample.mrd','/rfn [sample.txt]');
@ -364,4 +504,5 @@ $(document).ready(function(){
viewer.openFile('json_subject.mrd', '/rfn [jsonsample_red_2.json]'); viewer.openFile('json_subject.mrd', '/rfn [jsonsample_red_2.json]');
}; };
*/ */
>>>>>>> refs/heads/hylee
</script> </script>

View File

@ -19,3 +19,37 @@
var oPopup = window.open(sUrl,sName,"width="+width+",height="+height+",top="+TopPosition+",left="+LeftPosition+", scrollbars=no"); var oPopup = window.open(sUrl,sName,"width="+width+",height="+height+",top="+TopPosition+",left="+LeftPosition+", scrollbars=no");
if(oPopup){oPopup.focus();} if(oPopup){oPopup.focus();}
} }
/* ********************************************************
* 팝업창 form action + 모니터 가운데 노출
******************************************************** */
function openPopupAndSubmitForm(p_targetNm, p_formId, p_width, p_height) {
var width = p_width; // 팝업 창의 너비
var height = p_height; // 팝업 창의 높이
// 화면의 너비와 높이를 가져옵니다.
var curX = window.screenLeft;
var curWidth = document.body.clientWidth;
// 팝업 창의 x, y 위치를 계산합니다.
var left = curX + (curWidth / 2) - (width / 2);
var top = (window.screen.height / 2) - (height / 2);
// 팝업 창 설정 및 중앙 위치
var popup = window.open('', p_targetNm, 'width=' + width + ',height=' + height + ',scrollbars=yes,resizable=yes,left=' + left + ',top=' + top);
// form의 target을 새 창으로 설정하고 제출
var form = document.getElementById(p_formId);
console.log('p_formId : ', p_formId);
console.log('form : ', form);
form.target = p_targetNm;
form.submit();
// 포커스를 새 팝업 창으로 이동
popup.focus();
return false;
}