feat:관리자 - 기반 / 기소 교육확정관리목록,상세

This commit is contained in:
hylee 2023-10-11 12:03:41 +09:00
parent f0c5f6f655
commit 41cd31487a
23 changed files with 2144 additions and 78 deletions

View File

@ -299,6 +299,10 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
private String unfthYn; //불성실여부 private String unfthYn; //불성실여부
private String trgtNm; //기소유예 대상자
private String vs_clphone; //기소유예 대상자 폰번호
public String getPrcsAplctPrdOrd() { public String getPrcsAplctPrdOrd() {
return prcsAplctPrdOrd; return prcsAplctPrdOrd;
@ -1523,6 +1527,18 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
public void setNeedTxtbNum(String needTxtbNum) { public void setNeedTxtbNum(String needTxtbNum) {
this.needTxtbNum = needTxtbNum; this.needTxtbNum = needTxtbNum;
} }
public String getTrgtNm() {
return trgtNm;
}
public void setTrgtNm(String trgtNm) {
this.trgtNm = trgtNm;
}
public String getVs_clphone() {
return vs_clphone;
}
public void setVs_clphone(String vs_clphone) {
this.vs_clphone = vs_clphone;
}
} }

View File

@ -5,6 +5,7 @@ import java.util.List;
import kcc.let.uss.umt.service.UserManageVO; import kcc.let.uss.umt.service.UserManageVO;
import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduExcelVO; import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduExcelVO;
import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduSatisfactionExcelVO; import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduSatisfactionExcelVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
public interface VEEduMIXService { public interface VEEduMIXService {
@ -52,4 +53,6 @@ public interface VEEduMIXService {
void updateRsltRprtFileId(VEEduAplctVO vEEduAplctVO) throws Exception; void updateRsltRprtFileId(VEEduAplctVO vEEduAplctVO) throws Exception;
//저작권 체험교실 목록 //저작권 체험교실 목록
List<VEEduAplctVO> selectExprnPagingList(VEEduAplctVO paramVO) throws Exception; List<VEEduAplctVO> selectExprnPagingList(VEEduAplctVO paramVO) throws Exception;
void updateAplctStateCd(VEEduAplctVO vEEduAplctVO);
} }

View File

@ -142,5 +142,9 @@ public class VEEduMIXDAO extends EgovAbstractDAO {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectExprnPagingList", paramVO); List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectExprnPagingList", paramVO);
return tlist; return tlist;
}
public void updateAplctStateCd(VEEduAplctVO vEEduAplctVO) {
update("VEEduMIXDAO.updateAplctStateCd", vEEduAplctVO);
} }
} }

View File

@ -14,6 +14,7 @@ import kcc.ve.instr.tngrVisitEdu.asgnmInfo.service.VEEduSatisfactionExcelVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
@Service("vEEduMIXService") @Service("vEEduMIXService")
public class VEEduMIXServiceImpl implements VEEduMIXService { public class VEEduMIXServiceImpl implements VEEduMIXService {
@ -129,4 +130,9 @@ public class VEEduMIXServiceImpl implements VEEduMIXService {
public List<VEEduAplctVO> selectExprnPagingList(VEEduAplctVO paramVO) throws Exception{ public List<VEEduAplctVO> selectExprnPagingList(VEEduAplctVO paramVO) throws Exception{
return vEEduMIXDAO.selectExprnPagingList(paramVO); return vEEduMIXDAO.selectExprnPagingList(paramVO);
} }
@Override
public void updateAplctStateCd(VEEduAplctVO vEEduAplctVO) {
vEEduMIXDAO.updateAplctStateCd(vEEduAplctVO);
}
} }

View File

@ -17,4 +17,6 @@ public interface VEAPrcsAplctPrdInstrAsgnmService {
VEPrcsDetailVO selectAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO); VEPrcsDetailVO selectAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO);
void updateAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO); void updateAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO);
void updateAplctStateCdListAjax(VEPrcsDetailVO vEPrcsDetailVO);
} }

View File

@ -114,6 +114,7 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
private String eduPlace; //교육장소 private String eduPlace; //교육장소
private String instrDiv; private String instrDiv;
private String instrCnt;
private String userId; private String userId;
@ -563,6 +564,12 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setInstrDiv(String instrDiv) { public void setInstrDiv(String instrDiv) {
this.instrDiv = instrDiv; this.instrDiv = instrDiv;
} }
public String getInstrCnt() {
return instrCnt;
}
public void setInstrCnt(String instrCnt) {
this.instrCnt = instrCnt;
}
public String getUserId() { public String getUserId() {
return userId; return userId;
} }

View File

@ -36,6 +36,11 @@ public class VEAPrcsAplctPrdInstrAsgnmDAO extends EgovAbstractDAO {
public void updateAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO) { public void updateAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO) {
delete("VEAPrcsAplctPrdInstrAsgnmDAO.updateAprvlCdEduAplctDetail", vEDetailVO); delete("VEAPrcsAplctPrdInstrAsgnmDAO.updateAprvlCdEduAplctDetail", vEDetailVO);
}
public void updateAplctStateCdListAjax(VEPrcsDetailVO vEPrcsDetailVO) {
update("VEAPrcsAplctPrdInstrAsgnmDAO.updateAplctStateCdListAjax", vEPrcsDetailVO);
} }
} }

View File

@ -58,4 +58,10 @@ public class VEAPrcsAplctPrdInstrAsgnmServiceImpl implements VEAPrcsAplctPrdInst
public void updateAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO) { public void updateAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO) {
vEAPrcsAplctPrdInstrAsgnmDAO.updateAprvlCdEduAplctDetail(vEDetailVO); vEAPrcsAplctPrdInstrAsgnmDAO.updateAprvlCdEduAplctDetail(vEDetailVO);
} }
@Override
public void updateAplctStateCdListAjax(VEPrcsDetailVO vEPrcsDetailVO) {
vEAPrcsAplctPrdInstrAsgnmDAO.updateAplctStateCdListAjax(vEPrcsDetailVO);
}
} }

View File

@ -6,6 +6,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
@ -612,7 +613,7 @@ public class CndtnPrcsInfoMngController {
} }
/** /**
* 기반강화연수과정 기간 상세화면 * 조건부기소유예 기간 상세화면
*/ */
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngDetail.do") @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngDetail.do")
public String cndtnEduPrcsAplctPrdMngDetail( public String cndtnEduPrcsAplctPrdMngDetail(
@ -652,7 +653,6 @@ public class CndtnPrcsInfoMngController {
List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectList(paramVO); List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectList(paramVO);
vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList); vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList);
System.out.println("====");
//대상 리스트, 페이징 정보 전달 //대상 리스트, 페이징 정보 전달
@ -662,6 +662,7 @@ public class CndtnPrcsInfoMngController {
// 강사 배치 정보 // 강사 배치 정보
{ {
System.out.println("====");
List<VEAPrcsAplctPrdInstrAsgnmVO> vEAPrcsAplctPrdInstrAsgnmList = vEAPrcsAplctPrdInstrAsgnmService.findByPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd()); List<VEAPrcsAplctPrdInstrAsgnmVO> vEAPrcsAplctPrdInstrAsgnmList = vEAPrcsAplctPrdInstrAsgnmService.findByPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
List<VEAPrcsAplctPrdInstrAsgnmVO> instrAsgnmList = egovCryptoUtil.decryptVEAPrcsAplctPrdInstrAsgnmVOList(vEAPrcsAplctPrdInstrAsgnmList); List<VEAPrcsAplctPrdInstrAsgnmVO> instrAsgnmList = egovCryptoUtil.decryptVEAPrcsAplctPrdInstrAsgnmVOList(vEAPrcsAplctPrdInstrAsgnmList);
@ -670,10 +671,114 @@ public class CndtnPrcsInfoMngController {
return "/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngDetail"; return "/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngDetail";
} }
/** /**
* 기반강화 신청자 상태값 변경 * 조건부기소유예 기간 상세화면
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngDetail.do")
public String cndtnEduPrcsAplctCfnMngDetail(
@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 vEPrcsDetailVODetail = vEPrcsAplctPrdService.selectDetailNewOne4Fndth(vEPrcsDetailVO);
model.addAttribute("info", vEPrcsDetailVODetail);
//과정 신청자 정보 가져오기
{
//해당 과정을 제출한 사용자 정보를 가져온다.
VEEduAplctVO paramVO = new VEEduAplctVO();
paramVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
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 vadi.APLCT_STATE_CD = "+vEPrcsDetailVO.getSearchStatus();
paramVO.setSearchQuery(searchQuery);
}
List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectList(paramVO);
vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList);
//대상 리스트, 페이징 정보 전달
model.addAttribute("listPrcsAplct", vEPrcsDetailVOList);
}
// 강사 배치 정보
{
System.out.println("====");
List<VEAPrcsAplctPrdInstrAsgnmVO> vEAPrcsAplctPrdInstrAsgnmList = vEAPrcsAplctPrdInstrAsgnmService.findByPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
List<VEAPrcsAplctPrdInstrAsgnmVO> instrAsgnmList = egovCryptoUtil.decryptVEAPrcsAplctPrdInstrAsgnmVOList(vEAPrcsAplctPrdInstrAsgnmList);
model.addAttribute("instrAsgnmList", instrAsgnmList);
}
return "/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngDetail";
}
/**
* 기소유예 이수 / 미이수 상태 변경 처리
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/updateAplctStateCdAjax.do")
public ModelAndView updateAplctStateCdAjax(
@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView("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 로그인 정보 가져오기
try {
vEEduMIXService.updateAplctStateCd(vEEduAplctVO);
modelAndView.addObject("result", "success");
} catch (Exception e) {
modelAndView.addObject("result", "");
}
return modelAndView;
}
/**
* 기소유예 신청자 상태값 변경
*/ */
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/updateEduAplctAprvlCdAjax.do") @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/updateEduAplctAprvlCdAjax.do")
public ModelAndView updateEduAplctAprvlCd( public ModelAndView updateEduAplctAprvlCd(
@ -718,6 +823,54 @@ public class CndtnPrcsInfoMngController {
} }
return modelAndView;
}
/**
* 기소유예 교육확정상세 > 이수/미이수 체크버튼 처리
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/updateAplctStateCdListAjax.do")
public ModelAndView updateAplctStateCdListAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, 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(); //권한에 따른 로그인 정보 가져오기
try {
// 교육 신청 테이블에 신청자 상태값 update
vEAPrcsAplctPrdInstrAsgnmService.updateAplctStateCdListAjax(vEPrcsDetailVO);
// 승인 - 승인일 경우 vea_aplct_detail_info TB에 넣어줘야함
if("20".equals(vEPrcsDetailVO.getAprvlCd())) {
this.aprvlCd20(vEPrcsDetailVO,loginVO.getUniqId());
}
// 접수취소(반려) - vea_aplct_detail_info TB에 data update
else if("30".equals(vEPrcsDetailVO.getAprvlCd()))
{
this.aprvlCd30(vEPrcsDetailVO);
}
modelAndView.addObject("result", "success");
} catch (Exception ex) {
ex.printStackTrace();
modelAndView.addObject("result", "");
}
return modelAndView; return modelAndView;
} }
@ -1037,7 +1190,7 @@ public class CndtnPrcsInfoMngController {
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList.do") @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList.do")
public String fndthEduPrcsAplctPrdMngList( public String cndtnEduPrcsAplctPrdMngList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model , ModelMap model
) throws Exception { ) throws Exception {
@ -1094,6 +1247,76 @@ public class CndtnPrcsInfoMngController {
return "oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList"; return "oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList";
} }
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngList.do")
public String cndtnEduPrcsAplctCfnMngList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
//교육확정 목록 조회
vEPrcsDetailVO.setDdlnCd("20");
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
String selectCondition = "AND b.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
}
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getPrcsKind())){
String[] splited = vEPrcsDetailVO.getPrcsKind().split(",");
vEPrcsDetailVO.setSearchStatusArr(splited);
}
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsDiv())) {
//vEPrcsDetailVO.setPrcsDiv("10");// 과정구분 VE0015 10-산업종사자, 20-대학생, 30-공무원, 40-일반인, 50-청소년, 60-학부모
}
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth(vEPrcsDetailVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 지정된 강사가 있는지 확인
vEPrcsDetailVOList.stream().forEach(t->{
List<VEAPrcsAplctPrdInstrAsgnmVO> vEAPrcsAplctPrdInstrAsgnmList = vEAPrcsAplctPrdInstrAsgnmService.findByPrcsAplctPrdOrd(t.getPrcsAplctPrdOrd());
if(vEAPrcsAplctPrdInstrAsgnmList.size() > 0) {
t.setInstrCnt(Integer.toString(vEAPrcsAplctPrdInstrAsgnmList.size()));
}
});
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngList";
}
/** /**
* 기소유예 신청기간 등록 화면 * 기소유예 신청기간 등록 화면
@ -1156,7 +1379,7 @@ public class CndtnPrcsInfoMngController {
/** /**
* 기반강화연수과정 기간 상세수정화면 * 조건부기소유예 기간 상세수정화면
*/ */
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngMdfy.do") @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngMdfy.do")
public String cndtnEduPrcsAplctPrdMngMdfy( public String cndtnEduPrcsAplctPrdMngMdfy(
@ -1219,7 +1442,7 @@ public class CndtnPrcsInfoMngController {
/** /**
* 기반강화연수과정 신청기간 수정 * 조건부기소유예 신청기간 수정
*/ */
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngMdfyAjax.do") @RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngMdfyAjax.do")
public ModelAndView cndtnEduPrcsAplctPrdMngMdfyAjax( public ModelAndView cndtnEduPrcsAplctPrdMngMdfyAjax(

View File

@ -36,6 +36,7 @@ import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService; import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService;
@ -128,66 +129,6 @@ public class FndthPrcsAplctMngController {
@Resource(name = "mberManageService") @Resource(name = "mberManageService")
private EgovMberManageService mberManageService; private EgovMberManageService mberManageService;
/**
* 기반강화연수 과정 신청 관리 목록 화면
*/
@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctMngList.do")
public String fndthEduPrcsAplctMngList( @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO , HttpSession session, ModelMap model ) throws Exception {
LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
//년도
if(StringUtils.isBlank(vEEduAplctVO.getSearchYear())){
//vEEduAplctVO.setSearchYear(String.valueOf(LocalDate.now().getYear()));
}
//
if(StringUtils.isBlank(vEEduAplctVO.getSearchMonth())){
vEEduAplctVO.setSearchMonth(String.valueOf(LocalDate.now().getMonthValue()));
}
if(!"".equals(vEEduAplctVO.getSearchChrgNm())) {
vEEduAplctVO.setSearchChrgNm(egovCryptoUtil.encrypt(vEEduAplctVO.getSearchChrgNm()));
}
// 요청, 반려건
//vEEduAplctVO.setSearchNotStatusArr(new String[]{"60"});
// 청소년
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_50);
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEEduAplctVO);
//정렬
if("".equals(vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
vEEduAplctVO.setOrderByQuery("A.SBMT_PNTTM DESC");
}else{
vEEduAplctVO.setOrderByQuery(vEEduAplctVO.getSearchSortCnd() + " " +vEEduAplctVO.getSearchSortOrd());
}
System.out.println("vEEduAplctVO.getOrderByQuery() :: "+ vEEduAplctVO.getOrderByQuery());
//2. pageing step2
vEEduAplctVO = this.setPagingStep2Sub(vEEduAplctVO, paginationInfo);
vEEduAplctVO.setNotiUserId(user.getUniqId());
vEEduAplctVO.setMenuNo(session.getAttribute("menuNo").toString());
/*
* 리스트 검색에서 교육일자 시작/종료일 입력 없이 검색시
* 기존 searchEndDt where 조건에 1=2로 되어있어서 리스트 검색이 안되던 것을
* 저작위 요청사항으로 1=1로 변경하여 날짜 입력이 안되어도 검색이 되도록 수정함
* 2023-04-28 우영두
*
* */
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList);
vEEduAplctVO.setSearchChrgNm(egovCryptoUtil.decrypt(vEEduAplctVO.getSearchChrgNm()));
//3.pageing step3
paginationInfo = this.setPagingStep3(vEEduAplctVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEEduAplctVOList);
return "oprtn/fndthEnhanceTrn/fndthEduPrcsAplctMngList";
}
/** /**
* 기반강화연수 신청 등록 화면 * 기반강화연수 신청 등록 화면

View File

@ -7,6 +7,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
@ -240,6 +241,147 @@ public class FndthPrcsAplctPrdMngController {
return "oprtn/fndthEnhanceTrn/fndthEduPrcsAplctPrdMngList"; return "oprtn/fndthEnhanceTrn/fndthEduPrcsAplctPrdMngList";
///kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngList.do ///kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngList.do
} }
/**
* 기반강화연수 교육확정관리목록
*/
@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctCfnMngList.do")
public String fndthEduPrcsAplctMngList( @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, HttpSession session, ModelMap model ) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd("50"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
//교육확정 목록 조회
vEPrcsDetailVO.setDdlnCd("20");
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
String selectCondition = "AND b.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
}
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getPrcsKind())){
String[] splited = vEPrcsDetailVO.getPrcsKind().split(",");
vEPrcsDetailVO.setSearchStatusArr(splited);
}
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsDiv())) {
//vEPrcsDetailVO.setPrcsDiv("10");// 과정구분 VE0015 10-산업종사자, 20-대학생, 30-공무원, 40-일반인, 50-청소년, 60-학부모
}
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth(vEPrcsDetailVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 지정된 강사가 있는지 확인
vEPrcsDetailVOList.stream().forEach(t->{
List<VEAPrcsAplctPrdInstrAsgnmVO> vEAPrcsAplctPrdInstrAsgnmList = vEAPrcsAplctPrdInstrAsgnmService.findByPrcsAplctPrdOrd(t.getPrcsAplctPrdOrd());
if(vEAPrcsAplctPrdInstrAsgnmList.size() > 0) {
t.setInstrCnt(Integer.toString(vEAPrcsAplctPrdInstrAsgnmList.size()));
}
});
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "oprtn/fndthEnhanceTrn/fndthEduPrcsAplctCfnMngList";
}
/**
* 조건부기소유예 기간 상세화면
*/
@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctCfnMngDetail.do")
public String cndtnEduPrcsAplctCfnMngDetail(
@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 vEPrcsDetailVODetail = vEPrcsAplctPrdService.selectDetailNewOne4Fndth(vEPrcsDetailVO);
model.addAttribute("info", vEPrcsDetailVODetail);
//과정 신청자 정보 가져오기
{
//해당 과정을 제출한 사용자 정보를 가져온다.
VEEduAplctVO paramVO = new VEEduAplctVO();
paramVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
paramVO.setSbmtYn("Y");
if(StringUtils.isNotEmpty(vEPrcsDetailVO.getSearchStatus())) {
String searchQuery = "AND vadi.APLCT_STATE_CD = "+vEPrcsDetailVO.getSearchStatus();
paramVO.setSearchQuery(searchQuery);
}
// 검색 - 날짜
paramVO.setSearchSmbtStartDt(vEPrcsDetailVO.getSearchSmbtStartDt());
paramVO.setSearchSmbtEndDt(vEPrcsDetailVO.getSearchSmbtEndDt());
// 검색 - 검색어
paramVO.setSearchStatus(vEPrcsDetailVO.getSearchStatus());
List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectList(paramVO);
vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList);
System.out.println("====");
//대상 리스트, 페이징 정보 전달
model.addAttribute("listPrcsAplct", vEPrcsDetailVOList);
}
// 강사 배치 정보
{
System.out.println("====");
List<VEAPrcsAplctPrdInstrAsgnmVO> vEAPrcsAplctPrdInstrAsgnmList = vEAPrcsAplctPrdInstrAsgnmService.findByPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
List<VEAPrcsAplctPrdInstrAsgnmVO> instrAsgnmList = egovCryptoUtil.decryptVEAPrcsAplctPrdInstrAsgnmVOList(vEAPrcsAplctPrdInstrAsgnmList);
model.addAttribute("instrAsgnmList", instrAsgnmList);
}
return "oprtn/fndthEnhanceTrn/fndthEduPrcsAplctCfnMngDetail";
}
/** /**

View File

@ -109,11 +109,10 @@
/* cndtnTrgtInfoMngDAO.update */ /* cndtnTrgtInfoMngDAO.update */
UPDATE UPDATE
<include refid="CndtnTrgtInfoMngDAO.table_name"/> <include refid="CndtnTrgtInfoMngDAO.table_name"/>
SET SET
user_id = #userId# edu_state_cd = #eduStateCd#
, edu_state_cd = #eduStateCd# , last_updt_pnttm = SYSDATE
, last_updt_pnttm = SYSDATE , last_updusr_id = #lastUpdusrId#
, last_updusr_id = #lastUpdusrId#
, trgt_nm = #trgtNm# , trgt_nm = #trgtNm#
, clphone = #clphone# , clphone = #clphone#
, d_birth = #dBirth# , d_birth = #dBirth#

View File

@ -117,7 +117,7 @@
</select> </select>
<!-- 강사 정보 L --> <!-- -->
<select id="VEEduMIXDAO.selectList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO"> <select id="VEEduMIXDAO.selectList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* VEEduMIXDAO.selectList */ /* VEEduMIXDAO.selectList */
SELECT SELECT
@ -149,6 +149,63 @@
AND a.aprvl_cd = #searchSelStatus# AND a.aprvl_cd = #searchSelStatus#
</isNotEmpty> </isNotEmpty>
<isNotEmpty property="searchQuery">
$searchQuery$
</isNotEmpty>
<isNotEmpty property="searchSmbtStartDt">
AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchSmbtStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchSmbtEndDt">
AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') <![CDATA[ <= ]]> REPLACE(#searchSmbtEndDt#, '.' , '')
</isNotEmpty>
AND a.use_yn = 'Y'
</select>
<!-- -->
<select id="VEEduMIXDAO.selectTrgtList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* VEEduMIXDAO.selectList */
SELECT
qe.QESTNR_ID AS qestnrId , /* 설문했으면 ID가 있음 */
vadi.APLCT_STATE_CD AS aplctStateCd, /* 이수 상태 */
le.MBER_NM AS userNm,
<include refid="VEEduMIXDAO.select_column_name"/>,
vsit.trgt_nm AS trgtNm,
vsit.clphone AS vs_clphone,
vsit.d_birth AS dBirth
FROM
<include refid="VEEduMIXDAO.table_name"/> 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
LEFT JOIN LETTNQESTNRINFO qe ON
a.USER_ID = qe.FRST_REGISTER_ID
LEFT JOIN VEA_SSPN_IDMT_TRGT vsit
ON a.user_id = vsit.user_id
WHERE
1=1
<isNotEmpty property="prcsOrd">
AND a.prcs_ord=#prcsOrd#
</isNotEmpty>
<isNotEmpty property="sbmtYn">
AND a.sbmt_yn=#sbmtYn#
</isNotEmpty>
<isNotEmpty property="searchSelStatus">
AND a.aprvl_cd = #searchSelStatus#
</isNotEmpty>
<isNotEmpty property="searchQuery">
$searchQuery$
</isNotEmpty>
<isNotEmpty property="searchSmbtStartDt"> <isNotEmpty property="searchSmbtStartDt">
AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchSmbtStartDt#, '.' , '') AND TO_CHAR(a.sbmt_pnttm, 'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchSmbtStartDt#, '.' , '')
</isNotEmpty> </isNotEmpty>
@ -3446,6 +3503,19 @@ VALUES
edu_aplct_ord = #eduAplctOrd# edu_aplct_ord = #eduAplctOrd#
</insert> </insert>
<update id="VEEduMIXDAO.updateAplctStateCd" parameterClass="VEEduAplctVO">
/* VEEduMIXDAO.updateAplctStateCd */
UPDATE
vea_aplct_detail_info
SET
aplct_state_cd = #aplctStateCd#
WHERE
prcs_aplct_prd_ord = #prcsAplctPrdOrd#
AND edu_aplct_ord = #eduAplctOrd#
</update>
<select id="VEEduMIXDAO.selectExprnPagingList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO"> <select id="VEEduMIXDAO.selectExprnPagingList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* 임시.*NOT_SQL_LOG.* VEEduMIXDAO.selectExprnPagingList */ /* 임시.*NOT_SQL_LOG.* VEEduMIXDAO.selectExprnPagingList */
SELECT SELECT

View File

@ -116,9 +116,26 @@
<!-- 교육 신청자 상태 update --> <!-- 교육 신청자 상태 update -->
<update id="VEAPrcsAplctPrdInstrAsgnmDAO.udpateAprvlCdEduAplct" parameterClass="VEPrcsDetailVO"> <update id="VEAPrcsAplctPrdInstrAsgnmDAO.udpateAprvlCdEduAplct" parameterClass="VEPrcsDetailVO">
/* VEAPrcsAplctPrdInstrAsgnmDAO.updateAplctStateCdListAjax */
UPDATE VE_EDU_APLCT UPDATE VE_EDU_APLCT
SET aprvl_cd = #aprvlCd# SET aprvl_cd = #aprvlCd#
WHERE edu_aplct_ord IN WHERE prcs_aplct_prd_ord = #prcsAplctPrdOrd#
AND edu_aplct_ord IN
<iterate property="eduAplctOrdList" open="(" close=")" conjunction=",">
#eduAplctOrdList[]#
</iterate>
</update>
<!-- 교육 신청자 상태 update -->
<update id="VEAPrcsAplctPrdInstrAsgnmDAO.updateAplctStateCdListAjax" parameterClass="VEPrcsDetailVO">
/* VEAPrcsAplctPrdInstrAsgnmDAO.updateAplctStateCdListAjax */
UPDATE VEA_APLCT_DETAIL_INFO
SET aplct_state_cd = #aplctStateCd#
WHERE prcs_aplct_prd_ord = #prcsAplctPrdOrd#
AND edu_aplct_ord IN
<iterate property="eduAplctOrdList" open="(" close=")" conjunction=","> <iterate property="eduAplctOrdList" open="(" close=")" conjunction=",">
#eduAplctOrdList[]# #eduAplctOrdList[]#
</iterate> </iterate>
@ -126,7 +143,8 @@
<!-- 강사 배정 등록 --> <!-- 강사 배정 등록 -->
<select id="VEAPrcsAplctPrdInstrAsgnmDAO.findByPrcsAplctPrdOrd" parameterClass="String" resultClass="VEAPrcsAplctPrdInstrAsgnmVO"> <select id="VEAPrcsAplctPrdInstrAsgnmDAO.findByPrcsAplctPrdOrd" parameterClass="String" resultClass="VEAPrcsAplctPrdInstrAsgnmVO">
/* VEAPrcsAplctPrdInstrAsgnmDAO.findByPrcsAplctPrdOrd */
SELECT SELECT
<include refid="VEAPrcsAplctPrdInstrAsgnmDAO.select_column_name"/> <include refid="VEAPrcsAplctPrdInstrAsgnmDAO.select_column_name"/>
, vid.instr_nm as instrNm , vid.instr_nm as instrNm

View File

@ -331,11 +331,17 @@
<isNotEmpty property="prcsAplctPrdOrd"> <isNotEmpty property="prcsAplctPrdOrd">
AND a.prcs_aplct_prd_ord=#prcsAplctPrdOrd# AND a.prcs_aplct_prd_ord=#prcsAplctPrdOrd#
</isNotEmpty> </isNotEmpty>
/*교육확정목록을 조회하기 위한 조건문*/
<isNotEmpty property="ddlnCd">
AND a.ddln_cd = #ddlnCd#
</isNotEmpty>
<isNotEmpty property="searchKeyword"> <isNotEmpty property="searchKeyword">
AND b.prcs_nm LIKE '%'|| #searchKeyword# ||'%' AND b.prcs_nm LIKE '%'|| #searchKeyword# ||'%'
</isNotEmpty> </isNotEmpty>
ORDER BY 1 ORDER BY 1

View File

@ -0,0 +1,491 @@
<!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="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%
/**
* @Class Name : cndtnEduPrcsAplctPrdMngDetail.jsp
* @Description : 기반강화연수 기간 상세화면
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.16 조용준 최초 생성
* @author 조용주
* @since 2021.12.16
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<title>교육과정관리</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
$(document).ready(function(){
$('#searchStatus').change(function(){
searchpage();
});
});
function searchpage(){
var form = document.detailForm ;
form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngDetail.do'/>";
form.submit();
}
function fncGoList(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList.do'/>";
listForm.submit();
}
function fncGoDetail(){
var form = document.detailForm ;
form.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngDetail.do'/>";
form.submit();
}
function fncMdfy(){
var detailForm = document.detailForm ;
detailForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngMdfy.do'/>";
detailForm.submit();
}
function fn_delInstr(data){
document.instrForm.userId.value = data ;
var data = new FormData(document.getElementById("instrForm"));
if(confirm("삭제하시겠습니까?")){
// var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/instrDelAjax.do'/>";
var url = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/instrDelAjax.do'/>";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("삭제되었습니다.");
// 새로고침
window.location.reload();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
event.stopImmediatePropagation();
}
function fn_statusChg(eduAplctOrd, aplctStateCd){
document.statusChgForm.eduAplctOrd.value = eduAplctOrd ;
document.statusChgForm.aplctStateCd.value = aplctStateCd ;
var data = new FormData(document.getElementById("statusChgForm"));
if(confirm("상태병경을 하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateAplctStateCdAjax.do'/>";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("변경되었습니다.");
// 새로고침
window.location.reload();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
event.stopImmediatePropagation();
}
// 강사 배치
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) {
// 모든 체크박스의 상태를 헤더 체크박스의 상태와 동일하게 설정
$("input[name='chk']").prop('checked', $(obj).prop('checked'));
}
// form 데이터를 묶지 않기 때문에 prcsAplctPrdOrd 데이터 필요함
function fn_statusChgList(p_aplctStateCd, p_prcsAplctPrdOrd) {
var selectedEduAplctOrd = [];
// "chk" 이름을 가진 체크박스가 체크된 항목들을 순회
$("input[name='chk']:checked").each(function() {
var eduAplctOrdValue = $(this).val();
selectedEduAplctOrd.push(eduAplctOrdValue);
});
console.log('selectedEduAplctOrd : ', selectedEduAplctOrd);
// 선택된 항목이 없으면 경고 메시지를 표시하고 함수를 종료
if (selectedEduAplctOrd.length === 0) {
alert("선택된 항목이 없습니다. 선택 후 다시 시도하세요.");
return false;
}
var dataToSend = {
"eduAplctOrdList": selectedEduAplctOrd,
"aplctStateCd": p_aplctStateCd,
"prcsAplctPrdOrd": p_prcsAplctPrdOrd
};
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateAplctStateCdListAjax.do'/>";
// 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>
<body>
<form id="instrForm" name="instrForm" method="post">
<input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdOrd}' />"/>
<input type="hidden" name="userId" id="userId"/>
</form>
<form id="statusChgForm" name="statusChgForm" method="post">
<input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdOrd}' />"/>
<input type="hidden" name="aplctStateCd" id="aplctStateCd"/>
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd"/>
</form>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO" method="post">
</form:form>
<form id="popForm" name="popForm" method="post">
<input type="hidden" name="pageIndex" value="1"/>
<input type="hidden" name="prcsAplctPrdOrd" value="" />
<input type="hidden" name="pageUnit" value="5" />
</form>
<form:form id="detailForm" name="detailForm" commandName="vEPrcsDetailVO" method="post">
<input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdOrd}' />"/>
<!-- cont -->
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>교육확정상세</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>조건부기소유예관리</p>
</li>
<li><span class="cur_nav">교육확정상세</span></li>
</ul>
</div>
<!-- //cont_tit -->
<div class="cont">
<!-- list_상세 -->
<div class="tb_tit01">
<p>교육과정관리</p>
</div>
<div class="tb_type02">
<table>
<colgroup>
<col style="width: 210px;">
<col style="width: auto;">
<col style="width: 210px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">교육부분</th>
<td>
<ve:code codeId="VEA001" code="${info.prcsDiv}"/>
</td>
</tr>
<tr>
<th scope="row">과정</th>
<td>
<c:out value="${info.prcsNm}"/>
</td>
</tr>
<tr>
<th scope="row">신청기간</th>
<td>
<c:out value="${info.strtPnttm}"/>~<c:out value="${info.endPnttm}"/>
</td>
</tr>
<tr>
<th scope="row">교육장소</th>
<td class="addPro_wrap">
<c:out value="${info.eduPlace}"/>
</td>
</tr>
<tr>
<th scope="row">교육기간</th>
<td>
<c:out value="${info.eduStrtPnttm}"/>~<c:out value="${info.eduDdlnPnttm}"/>
</td>
</tr>
<tr>
<th scope="row">상세교육과정</th>
<td>
<c:out value="${info.prcsCn }" />
</td>
</tr>
<tr>
<th scope="row">정원</th>
<td class="addPro_wrap">
<c:out value="${info.nos}"/>
</td>
</tr>
<tr>
<th scope="row">상태</th>
<td id="ddlnCdStts">
<ve:code codeId="VEA004" code="${info.ddlnCd}"/>
</td>
</tr>
<%-- <tr>
<th scope="row">
<p>공개여부(사용여부)</p>
</th>
<td>
<c:if test="${empty info.useYn or info.useYn eq 'Y'}">예</c:if>
<c:if test="${info.useYn eq 'N'}">아니오</c:if>
</td>
</tr> --%>
</tbody>
</table>
</div>
<!-- //list_상세 -->
<!-- btn_wrap -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btn_type02" onclick="fncMdfy(); return false;">수정</button>
<button type="button" class="btn_type03" onclick="fncGoList(); return false;">목록</button>
</div>
</div>
<!--
강사 배치 정보
강사 배치 정보
-->
<div class="tb_tit01">
<p>강사 배치 정보</p>
</div>
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 210px;"><!-- name -->
<col style="width: auto;"><!-- 제출일 -->
<col style="width: 210px;"><!-- 신청상태 -->
<col style="width: 210px;"><!-- 신청상태 -->
</colgroup>
<thead>
<tr>
<th>강사명</th>
<th>연락처</th>
<th>확정여부</th>
<th>삭제</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${!empty instrAsgnmList }">
<c:forEach var="list" items="${instrAsgnmList}" varStatus="status">
<tr>
<td>
<c:out value="${list.instrNm }"/>
</td>
<td>
<c:out value="${list.phone }"/>
</td>
<td>
<ve:code codeId="VE0019" code="${list.asgnmAprvlCd}"/>
</td>
<td>
<button type="button" class="btn_type01" onclick="fn_delInstr('<c:out value="${list.userId }" />')">삭제</button>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="4">강사 배치 정보가 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
<!-- btn_wrap -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btn_type02" onclick="fncInstrAsgnmInfo('<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">강사배치</button>
</div>
</div>
<!--
교육 신청자 list_상세
교육 신청자 list_상세
-->
<div class="tb_tit01">
<p>교육신청자</p> <!-- ${listPrcsAplct } -->
</div>
<!-- list_top -->
<div class="list_top search-only">
<div class="list_top_1">
<div class="util_right">
<ve:select codeId="VEA003" name="searchStatus" id="searchStatus" css="class='sel_type1'"
selectedValue="${vEPrcsDetailVO.searchStatus}" defaultValue='' includes="10,20"
defaultText='전체'
/>
</div>
</div>
</div>
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 5%">
<col style="width: 180px;">
<col style="width: 12%">
<col style="width: 210px;">
<col style="width: 210px;">
<col style="width: 210px;">
</colgroup>
<thead>
<tr>
<th><input type="checkbox" name="checkAll" id="checkAll" onclick="chkAll(this);" /><label for="checkAll"></label></th>
<th>신청자(대상자)</th>
<th>주민번호 앞자리</th>
<th>연락처</th>
<th>교육이수여부</th>
<th>교육이수상태변경</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${!empty listPrcsAplct}">
<c:forEach var="list" items="${listPrcsAplct}" varStatus="status">
<tr>
<td>
<input name="chk" class="${list.asgnmAprvlCd}"
value="${list.eduAplctOrd}" title="Check" type="checkbox"/>
</td>
<td>
<c:out value="${list.userNm}"/>(<c:out value="${list.trgtNm}"/>)
</td>
<td>
<c:out value="${list.dBirth}"/>
</td>
<td>
<c:out value="${list.vs_clphone}"/>
</td>
<td>
<ve:code codeId="VEA003" code="${list.aplctStateCd}"/>
</td>
<td>
<button type="button" class="btn_type04" onclick="fn_statusChg('<c:out value="${list.eduAplctOrd }" />', '20')">이수</button>
<button type="button" class="btn_type05" onclick="fn_statusChg('<c:out value="${list.eduAplctOrd }" />', '10')">미이수</button>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="6">데이터가 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
<!-- //list_상세 -->
<!-- btn_wrap -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btn_type04" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngList.do" />'; return false;">교육확정목록</button>
<button type="button" class="btn_type04" onclick="fn_statusChgList('20', '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">이수</button>
<button type="button" class="btn_type04" onclick="fn_statusChgList('10', '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">미이수</button>
</div>
</div>
</div>
</div>
</div>
</form:form>
<!-- //cont -->
</body>
</html>

View File

@ -0,0 +1,320 @@
<!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="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="KccadrStatus" className="kcc.kccadr.cmm.KccadrConstants" />
<%
/**
* @Class Name : cndtnEduPrcsAplctPrdMngList.jsp
* @Description : 조건부기소유예관리 과정 신청기간관리 목록
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.14 조용준 최초 생성
* @author 조용준
* @since 2021.12.14
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
input:read-only{
background-color: #ededed;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
// 상태값 확인
$(".ddlnCdStts").each(function() {
var $currentCell = $(this);
// 텍스트가 비어있는지 확인
if ($currentCell.text().trim() === "") {
var $currentRow = $currentCell.closest('tr');
var strtPnttm = new Date($currentRow.find("td:eq(3)").text().split("~")[0].trim());
var endPnttm = new Date($currentRow.find("td:eq(3)").text().split("~")[1].trim());
var currentDate = new Date();
var ddlnCdText = '';
if (currentDate < strtPnttm) {
ddlnCdText = "접수전";
} else if (currentDate >= strtPnttm && currentDate <= endPnttm) {
ddlnCdText = "접수중";
} else if (currentDate > endPnttm) {
ddlnCdText = "접수종료";
}
$currentCell.text(ddlnCdText);
}
});
});
function fncGoList(){
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.searchKeyword.value = $('#searchKeyword').val();
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngList.do'/>";
listForm.submit();
}
function fncGoDetail(prcsAplctPrdOrd){
var listForm = document.listForm ;
listForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngDetail.do'/>";
listForm.submit();
}
function fncDelete(prcsOrd){
document.listForm.prcsOrd.value = prcsOrd ;
var pageIndex = document.listForm.pageIndex.value;
if($(".listCount").length == '1'){
pageIndex = pageIndex -1;
}
var data = new FormData(document.getElementById("listForm"));
if(confirm("삭제하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngDeleteAjax.do'/>";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("삭제되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
linkPage(pageIndex);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
event.stopImmediatePropagation();
}
function fncSaveSort(prcsOrd, count){
var sortNo = $('#prcsSortNo'+count).val();
if(sortNo == ''){
alert("표시순서를 입력해 주세요.");
return false;
}
$('#prcsOrd').val(prcsOrd);
$('#prcsSortNo').val(sortNo);
var data = new FormData(document.getElementById("listForm"));
var url = "<c:url value='/kccadr/oprtn/otsdCprtnPrcs/eduPrcsSortUpdateAjax.do'/>";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
<title>과정신청기간관리목록</title>
</head>
<body>
<form:form id="listForm" name="listForm" method="post" commandName="vEPrcsDetailVO" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEPrcsDetailVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEPrcsDetailVO.searchSortOrd}" />" />
<input type="hidden" id="prcsOrd" name="prcsOrd" value="" />
<input type="hidden" id="prcsAplctPrdOrd" name="prcsAplctPrdOrd" value="" />
<input type="hidden" id="prcsSortNo" name="prcsSortNo" value="" />
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>교육확정관리목록</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>조건부기소유예관리</p>
</li>
<li><span class="cur_nav">교육확정관리목록</span></li>
</ul>
</div>
<!-- //cont_tit -->
<div class="cont">
<div class="tb_tit01">
<p>교육 확정 관리</p>
</div>
<!-- list_top -->
<div class="list_top search-only">
<div class="list_top_1">
<div class="util_right">
<ve:select codeId="VEA001" name="searchStatus" id="searchStatus" css="class='sel_type1'"
selectedValue="${vEPrcsDetailVO.searchStatus }" defaultValue=""
defaultText="전체"
/>
<div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="searchSmbtStartDt" name="searchSmbtStartDt" value="${vEPrcsDetailVO.searchSmbtStartDt}">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="searchSmbtEndDt" name="searchSmbtEndDt" value="${vEPrcsDetailVO.searchSmbtEndDt}">
</div>
<input type="text" id="searchKeyword" name="searchKeyword" placeholder="과정명를 입력하세요." title="검색어 입력" class="search_input" value="<c:out value='${vEPrcsDetailVO.searchKeyword}'/>">
<button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
</div>
</div>
</div>
<div class="list_util">
<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" class="sel_type1">
<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>
<%--<button type="button" class="btn_down_excel">엑셀 다운로드</button>--%>
</div>
</div>
<!-- //list_top -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 5%">
<col style="width: 10%">
<col style="width: auto">
<col style="width: 180px;">
<col style="width: 180px;">
<col style="width: 10%">
<col style="width: 10%">
<%-- <col style="width: 10%"> --%>
</colgroup>
<thead>
<tr>
<th>NO</th>
<th>교육구분코드</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 class="listCount">
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" style="cursor:pointer;">
<c:out value="${status.count}"/>
</td>
<td>
<kc:code codeId="VEA001" code="${list.prcsDiv}"/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" style="cursor:pointer;">
<c:out value="${list.prcsNm}"/>(<c:out value="${list.prcsAplctPrdOrd}"/>)
</td>
<td>
<c:out value="${list.eduStrtPnttm}"/>~<c:out value="${list.eduDdlnPnttm}"/>
</td>
<td>
<c:out value="${list.nosCnt1}"/>/<c:out value="${list.nos}"/>
</td>
<td class="ddlnCdStts">
<kc:code codeId="VEA004" code="${list.ddlnCd}"/>
</td>
<td>
<%-- <c:out value="${list.strtPnttm}"/>~<c:out value="${list.endPnttm}"/> --%>
<c:choose>
<c:when test="${list.instrCnt ne 0 }">
배정완료
</c:when>
<c:otherwise>
<button type="button" class="btn_type04" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">강사배정</button>
</c:otherwise>
</c:choose>
</td>
<!-- <td> -->
<%-- <c:out value="${list.useYn}"/> --%>
<!-- </td> -->
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
<!-- //page -->
</div>
</div>
</div>
<!-- //cont -->
<!-- //cont -->
</form:form>
</body>
</html>

View File

@ -115,6 +115,10 @@
<td> <td>
<ve:code codeId="COM014" code="${info.sex }"/> <ve:code codeId="COM014" code="${info.sex }"/>
</td> </td>
<th scope="row">연락처</th>
<td>
<c:out value="${info.clphone }" />
</td>
</tr> </tr>
<tr> <tr>
<th scope="row">성명</th> <th scope="row">성명</th>

View File

@ -293,6 +293,10 @@
defaultText='선택' defaultText='선택'
/> />
</td> </td>
<th scope="row">연락처</th>
<td>
<input type="text" name="clphone" id="clphone" placeholder="00000000000" maxlength="11" value="<c:out value="${info.clphone }" />" />
</td>
</tr> </tr>
<tr> <tr>
<th scope="row">성명</th> <th scope="row">성명</th>

View File

@ -242,6 +242,10 @@
defaultText='선택' defaultText='선택'
/> />
</td> </td>
<th scope="row">연락처</th>
<td>
<input type="text" name="clphone" id="clphone" placeholder="00000000000" maxlength="11"/>
</td>
</tr> </tr>
<tr> <tr>
<th scope="row">성명</th> <th scope="row">성명</th>

View File

@ -0,0 +1,475 @@
<!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="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%
/**
* @Class Name : cndtnEduPrcsAplctPrdMngDetail.jsp
* @Description : 기반강화연수 기간 상세화면
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.16 조용준 최초 생성
* @author 조용주
* @since 2021.12.16
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<title>교육과정관리</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
$(document).ready(function(){
$('#searchStatus').change(function(){
searchpage();
});
});
function searchpage(){
var form = document.detailForm ;
form.action = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctCfnMngDetail.do'/>";
form.submit();
}
function fncGoList(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctCfnMngList.do'/>";
listForm.submit();
}
function fncMdfy(){
var detailForm = document.detailForm ;
detailForm.action = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctPrdMngMdfy.do'/>";
detailForm.submit();
}
function fn_delInstr(data){
document.instrForm.userId.value = data ;
var data = new FormData(document.getElementById("instrForm"));
if(confirm("삭제하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/instrDelAjax.do'/>";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("삭제되었습니다.");
// 새로고침
window.location.reload();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
event.stopImmediatePropagation();
}
// 기반 / 기소 공통
function fn_statusChg(eduAplctOrd, aplctStateCd){
document.statusChgForm.eduAplctOrd.value = eduAplctOrd ;
document.statusChgForm.aplctStateCd.value = aplctStateCd ;
var data = new FormData(document.getElementById("statusChgForm"));
if(confirm("상태병경을 하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateAplctStateCdAjax.do'/>";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("변경되었습니다.");
// 새로고침
window.location.reload();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
event.stopImmediatePropagation();
}
// 강사 배치
function fncInstrAsgnmInfo(prcsAplctPrdOrd) {
var form = document.popForm;
form.prcsAplctPrdOrd.value = prcsAplctPrdOrd;
form.action = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/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) {
// 모든 체크박스의 상태를 헤더 체크박스의 상태와 동일하게 설정
$("input[name='chk']").prop('checked', $(obj).prop('checked'));
}
// form 데이터를 묶지 않기 때문에 prcsAplctPrdOrd 데이터 필요함
function fn_statusChgList(p_aplctStateCd, p_prcsAplctPrdOrd) {
var selectedEduAplctOrd = [];
// "chk" 이름을 가진 체크박스가 체크된 항목들을 순회
$("input[name='chk']:checked").each(function() {
var eduAplctOrdValue = $(this).val();
selectedEduAplctOrd.push(eduAplctOrdValue);
});
console.log('selectedEduAplctOrd : ', selectedEduAplctOrd);
// 선택된 항목이 없으면 경고 메시지를 표시하고 함수를 종료
if (selectedEduAplctOrd.length === 0) {
alert("선택된 항목이 없습니다. 선택 후 다시 시도하세요.");
return false;
}
var dataToSend = {
"eduAplctOrdList": selectedEduAplctOrd,
"aplctStateCd": p_aplctStateCd,
"prcsAplctPrdOrd": p_prcsAplctPrdOrd
};
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateAplctStateCdListAjax.do'/>";
// 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>
<body>
<form id="instrForm" name="instrForm" method="post">
<input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdOrd}' />"/>
<input type="hidden" name="userId" id="userId"/>
</form>
<form id="statusChgForm" name="statusChgForm" method="post">
<input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdOrd}' />"/>
<input type="hidden" name="aplctStateCd" id="aplctStateCd"/>
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd"/>
</form>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO" method="post">
</form:form>
<form id="popForm" name="popForm" method="post">
<input type="hidden" name="pageIndex" value="1"/>
<input type="hidden" name="prcsAplctPrdOrd" value="" />
<input type="hidden" name="pageUnit" value="5" />
</form>
<form:form id="detailForm" name="detailForm" commandName="vEPrcsDetailVO" method="post">
<input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdOrd}' />"/>
<!-- cont -->
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>교육확정관리상세</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>기반강화연수관리</p>
</li>
<li><span class="cur_nav">교육확정관리상세</span></li>
</ul>
</div>
<!-- //cont_tit -->
<div class="cont">
<!-- list_상세 -->
<div class="tb_tit01">
<p>교육과정관리</p>
</div>
<div class="tb_type02">
<table>
<colgroup>
<col style="width: 210px;">
<col style="width: auto;">
<col style="width: 210px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">교육부분</th>
<td>
<ve:code codeId="VEA001" code="${info.prcsDiv}"/>
</td>
</tr>
<tr>
<th scope="row">과정</th>
<td>
<c:out value="${info.prcsNm}"/>
</td>
</tr>
<tr>
<th scope="row">신청기간</th>
<td>
<c:out value="${info.strtPnttm}"/>~<c:out value="${info.endPnttm}"/>
</td>
</tr>
<tr>
<th scope="row">교육장소</th>
<td class="addPro_wrap">
<c:out value="${info.eduPlace}"/>
</td>
</tr>
<tr>
<th scope="row">교육기간</th>
<td>
<c:out value="${info.eduStrtPnttm}"/>~<c:out value="${info.eduDdlnPnttm}"/>
</td>
</tr>
<tr>
<th scope="row">상세교육과정</th>
<td>
<c:out value="${info.prcsCn }" />
</td>
</tr>
<tr>
<th scope="row">정원</th>
<td class="addPro_wrap">
<c:out value="${info.nos}"/>
</td>
</tr>
<tr>
<th scope="row">상태</th>
<td id="ddlnCdStts">
<ve:code codeId="VEA004" code="${info.ddlnCd}"/>
</td>
</tr>
<%-- <tr>
<th scope="row">
<p>공개여부(사용여부)</p>
</th>
<td>
<c:if test="${empty info.useYn or info.useYn eq 'Y'}">예</c:if>
<c:if test="${info.useYn eq 'N'}">아니오</c:if>
</td>
</tr> --%>
</tbody>
</table>
</div>
<!-- //list_상세 -->
<!-- btn_wrap -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btn_type02" onclick="fncMdfy(); return false;">수정</button>
<button type="button" class="btn_type03" onclick="fncGoList(); return false;">목록</button>
</div>
</div>
<!--
강사 배치 정보
강사 배치 정보
-->
<div class="tb_tit01">
<p>강사 배치 정보</p>
</div>
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 210px;"><!-- name -->
<col style="width: auto;"><!-- 제출일 -->
<col style="width: 210px;"><!-- 신청상태 -->
<col style="width: 210px;"><!-- 신청상태 -->
</colgroup>
<thead>
<tr>
<th>강사명</th>
<th>연락처</th>
<th>확정여부</th>
<th>삭제</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${!empty instrAsgnmList }">
<c:forEach var="list" items="${instrAsgnmList}" varStatus="status">
<tr>
<td>
<c:out value="${list.instrNm }"/>
</td>
<td>
<c:out value="${list.phone }"/>
</td>
<td>
<ve:code codeId="VE0019" code="${list.asgnmAprvlCd}"/>
</td>
<td>
<button type="button" class="btn_type01" onclick="fn_delInstr('<c:out value="${list.userId }" />')">삭제</button>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="4">강사 배치 정보가 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
<!-- btn_wrap -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btn_type02" onclick="fncInstrAsgnmInfo('<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">강사배치</button>
</div>
</div>
<!--
교육 신청자 list_상세
교육 신청자 list_상세
-->
<div class="tb_tit01">
<p>교육신청자</p> <!-- ${listPrcsAplct } -->
</div>
<!-- list_top -->
<div class="list_top search-only">
<div class="list_top_1">
<div class="util_right">
<ve:select codeId="VEA003" name="searchStatus" id="searchStatus" css="class='sel_type1'"
selectedValue="${vEPrcsDetailVO.searchStatus}" defaultValue='' includes="10,20"
defaultText='전체'
/>
</div>
</div>
</div>
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 5%">
<col style="width: 180px;">
<col style="width: 180px;">
<col style="width: 210px;">
</colgroup>
<thead>
<tr>
<th><input type="checkbox" name="checkAll" id="checkAll" onclick="chkAll(this);" /><label for="checkAll"></label></th>
<th>신청자</th>
<th>교육이수여부</th>
<th>교육이수상태변경</th>
</tr>
</thead>
<tbody>
<c:choose>
<c:when test="${!empty listPrcsAplct}">
<c:forEach var="list" items="${listPrcsAplct}" varStatus="status">
<tr>
<td>
<input name="chk" class="${list.asgnmAprvlCd}"
value="${list.eduAplctOrd}" title="Check" type="checkbox"/>
</td>
<td>
<c:out value="${list.userNm}"/>
<td>
<ve:code codeId="VEA003" code="${list.aplctStateCd}"/>
</td>
<td>
<button type="button" class="btn_type04" onclick="fn_statusChg('<c:out value="${list.eduAplctOrd }" />', '20')">이수</button>
<button type="button" class="btn_type05" onclick="fn_statusChg('<c:out value="${list.eduAplctOrd }" />', '10')">미이수</button>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="4">데이터가 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
</tbody>
</table>
</div>
<!-- //list_상세 -->
<!-- btn_wrap -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btn_type04" onclick="location.href='<c:url value="/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctCfnMngList.do" />'; return false;">교육확정목록</button>
<button type="button" class="btn_type04" onclick="fn_statusChgList('20', '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">이수</button>
<button type="button" class="btn_type04" onclick="fn_statusChgList('10', '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">미이수</button>
</div>
</div>
</div>
</div>
</div>
</form:form>
<!-- //cont -->
</body>
</html>

View File

@ -0,0 +1,320 @@
<!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="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="KccadrStatus" className="kcc.kccadr.cmm.KccadrConstants" />
<%
/**
* @Class Name : cndtnEduPrcsAplctPrdMngList.jsp
* @Description : 조건부기소유예관리 과정 신청기간관리 목록
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.14 조용준 최초 생성
* @author 조용준
* @since 2021.12.14
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
input:read-only{
background-color: #ededed;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
// 상태값 확인
$(".ddlnCdStts").each(function() {
var $currentCell = $(this);
// 텍스트가 비어있는지 확인
if ($currentCell.text().trim() === "") {
var $currentRow = $currentCell.closest('tr');
var strtPnttm = new Date($currentRow.find("td:eq(3)").text().split("~")[0].trim());
var endPnttm = new Date($currentRow.find("td:eq(3)").text().split("~")[1].trim());
var currentDate = new Date();
var ddlnCdText = '';
if (currentDate < strtPnttm) {
ddlnCdText = "접수전";
} else if (currentDate >= strtPnttm && currentDate <= endPnttm) {
ddlnCdText = "접수중";
} else if (currentDate > endPnttm) {
ddlnCdText = "접수종료";
}
$currentCell.text(ddlnCdText);
}
});
});
function fncGoList(){
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.searchKeyword.value = $('#searchKeyword').val();
listForm.action = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctCfnMngList.do'/>";
listForm.submit();
}
function fncGoDetail(prcsAplctPrdOrd){
var listForm = document.listForm ;
listForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
listForm.action = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctCfnMngDetail.do'/>";
listForm.submit();
}
function fncDelete(prcsOrd){
document.listForm.prcsOrd.value = prcsOrd ;
var pageIndex = document.listForm.pageIndex.value;
if($(".listCount").length == '1'){
pageIndex = pageIndex -1;
}
var data = new FormData(document.getElementById("listForm"));
if(confirm("삭제하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngDeleteAjax.do'/>";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("삭제되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
linkPage(pageIndex);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
event.stopImmediatePropagation();
}
function fncSaveSort(prcsOrd, count){
var sortNo = $('#prcsSortNo'+count).val();
if(sortNo == ''){
alert("표시순서를 입력해 주세요.");
return false;
}
$('#prcsOrd').val(prcsOrd);
$('#prcsSortNo').val(sortNo);
var data = new FormData(document.getElementById("listForm"));
var url = "<c:url value='/kccadr/oprtn/otsdCprtnPrcs/eduPrcsSortUpdateAjax.do'/>";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
<title>과정신청기간관리목록</title>
</head>
<body>
<form:form id="listForm" name="listForm" method="post" commandName="vEPrcsDetailVO" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEPrcsDetailVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEPrcsDetailVO.searchSortOrd}" />" />
<input type="hidden" id="prcsOrd" name="prcsOrd" value="" />
<input type="hidden" id="prcsAplctPrdOrd" name="prcsAplctPrdOrd" value="" />
<input type="hidden" id="prcsSortNo" name="prcsSortNo" value="" />
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>교육확정관리목록</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>기반강화연수관리</p>
</li>
<li><span class="cur_nav">교육확정관리목록</span></li>
</ul>
</div>
<!-- //cont_tit -->
<div class="cont">
<div class="tb_tit01">
<p>교육 확정 관리</p>
</div>
<!-- list_top -->
<div class="list_top search-only">
<div class="list_top_1">
<div class="util_right">
<ve:select codeId="VEA001" name="searchStatus" id="searchStatus" css="class='sel_type1'"
selectedValue="${vEPrcsDetailVO.searchStatus }" defaultValue=""
defaultText="전체"
/>
<div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="searchSmbtStartDt" name="searchSmbtStartDt" value="${vEPrcsDetailVO.searchSmbtStartDt}">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="searchSmbtEndDt" name="searchSmbtEndDt" value="${vEPrcsDetailVO.searchSmbtEndDt}">
</div>
<input type="text" id="searchKeyword" name="searchKeyword" placeholder="과정명를 입력하세요." title="검색어 입력" class="search_input" value="<c:out value='${vEPrcsDetailVO.searchKeyword}'/>">
<button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
</div>
</div>
</div>
<div class="list_util">
<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" class="sel_type1">
<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>
<%--<button type="button" class="btn_down_excel">엑셀 다운로드</button>--%>
</div>
</div>
<!-- //list_top -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 5%">
<col style="width: 10%">
<col style="width: auto">
<col style="width: 180px;">
<col style="width: 180px;">
<col style="width: 10%">
<col style="width: 10%">
<%-- <col style="width: 10%"> --%>
</colgroup>
<thead>
<tr>
<th>NO</th>
<th>교육구분코드</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 class="listCount">
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" style="cursor:pointer;">
<c:out value="${status.count}"/>
</td>
<td>
<kc:code codeId="VEA001" code="${list.prcsDiv}"/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" style="cursor:pointer;">
<c:out value="${list.prcsNm}"/>(<c:out value="${list.prcsAplctPrdOrd}"/>)
</td>
<td>
<c:out value="${list.eduStrtPnttm}"/>~<c:out value="${list.eduDdlnPnttm}"/>
</td>
<td>
<c:out value="${list.nosCnt1}"/>/<c:out value="${list.nos}"/>
</td>
<td class="ddlnCdStts">
<kc:code codeId="VEA004" code="${list.ddlnCd}"/>
</td>
<td>
<%-- <c:out value="${list.strtPnttm}"/>~<c:out value="${list.endPnttm}"/> --%>
<c:choose>
<c:when test="${list.instrCnt ne 0 }">
배정완료
</c:when>
<c:otherwise>
<button type="button" class="btn_type04" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">강사배정</button>
</c:otherwise>
</c:choose>
</td>
<!-- <td> -->
<%-- <c:out value="${list.useYn}"/> --%>
<!-- </td> -->
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
<!-- //page -->
</div>
</div>
</div>
<!-- //cont -->
<!-- //cont -->
</form:form>
</body>
</html>

View File

@ -217,7 +217,7 @@
<ul class="cont_nav"> <ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li> <li class="home"><a href="/"><i></i></a></li>
<li> <li>
<p>조건부기소유예관리</p> <p>기반강화연수관리</p>
</li> </li>
<li><span class="cur_nav">과정신청기간관리 신청기간 상세</span></li> <li><span class="cur_nav">과정신청기간관리 신청기간 상세</span></li>
</ul> </ul>