This commit is contained in:
myname 2023-10-06 17:24:52 +09:00
commit 7f17f14254
129 changed files with 11634 additions and 2572 deletions

View File

@ -69,6 +69,12 @@
</repositories>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.thetransactioncompany/cors-filter -->
<dependency>
<groupId>com.thetransactioncompany</groupId>
<artifactId>cors-filter</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>egovframework.rte</groupId>
<artifactId>egovframework.rte.fdl.security</artifactId>

View File

@ -367,6 +367,32 @@ public class FmsFileController {
return modelAndView;
}
/* 첨부파일 삭제 사용자 url*/
@RequestMapping(value = "/web/fms/fmsfileDeleteAjax.do")
public ModelAndView webFmsfileDeleteAjax(@RequestParam Map<?, ?> commandMap,
FmsFileVO fmsFileVO,
@ModelAttribute("fileVO") FileVO fileVO
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
/*Boolean isAuthenticated = EgovUserDetailsHelper.isAuthenticated();
if (!isAuthenticated) {
modelAndView.addObject("result", "auth_fail"); //권한없음 팝업창 닫고, 오프너 리로드
return modelAndView;
}*/
try {
fileMngService.deleteFmsFileInf(fileVO);
modelAndView.addObject("result", "success");
}catch (Exception e) {
modelAndView.addObject("result", "fail");
System.out.println("Exception Occured!!!");
return modelAndView;
}
return modelAndView;
}
@RequestMapping(value = "/uss/ion/fms/fmsfileMultipleDeleteAjax.do", method = RequestMethod.POST)
public ModelAndView fmsfileMultipleDeleteAjax(@RequestBody FileVO fileVo) throws Exception {
ModelAndView modelAndView = new ModelAndView();

View File

@ -16,7 +16,6 @@ import javax.servlet.http.HttpSession;
import org.json.JSONObject;
import org.springframework.context.ApplicationContext;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
@ -45,8 +44,9 @@ import kcc.let.utl.sim.service.EgovClntInfo;
* @version 1.0
* @see
*/
@CrossOrigin(origins = "*")
@Controller
@CrossOrigin(origins = "*", methods = RequestMethod.POST)
public class APILoginContoller {
/** userManageService */
@ -67,13 +67,15 @@ public class APILoginContoller {
* @throws Exception
*/
@RequestMapping(value = "/web/chkloginKeyForOffedu.do")
public String loginKeyChkForOffedu(Map<String, String> paramRequest, RedirectAttributes redirectAttributes, HttpServletRequest request, HttpServletResponse response,HttpSession session) throws Exception {
public String loginKeyChkForOffedu(@RequestBody Map<String, String> paramRequest, RedirectAttributes redirectAttributes, HttpServletRequest request, HttpServletResponse response,HttpSession session) throws Exception {
String userId = paramRequest.get("user_id");
String key = paramRequest.get("key");
//String returnUrl = paramRequest.get("returnUrl"); //e-배움터 문의결과 returnUrl 컨트롤은 불가능하다고
String returnUrl = "";
System.out.println("@@@@@@@e배움터 로그인 페이지에서 오는 메소드 or e배움터 로그인 상태에서 오는 메소드@@@@@@@@");
System.out.println("@@@key:"+key);
System.out.println("@@@userId:"+userId);
//테스트를 위한 선언
/*userId = "std02@forwiz.com";
key = "std02@forwiz.comxpnBtqsev3nh9mryXRdL9QRSR72XuNc08ese5iXHb0Waq1dMnSdkHHqKCgoSFeyH.amV1c19kb21haW4vTE1T";

View File

@ -127,5 +127,7 @@ public interface EgovUserManageService {
public UserManageVO selectOffeduUser(UserManageVO userManageVO) throws Exception;
public List<UserManageVO> selectOffeduUserList(UserManageVO userManageVO) throws Exception;
public void insertOffeduUser(UserManageVO userManageVO) throws Exception;
}

View File

@ -176,6 +176,8 @@ public class UserManageVO extends UserDefaultVO{
private String mberId; //회원 Id
private int totCnt = 0; //회원 Id
public String getAuthorCode() {
return authorCode;
}
@ -707,6 +709,12 @@ public class UserManageVO extends UserDefaultVO{
public void setMberId(String mberId) {
this.mberId = mberId;
}
public int getTotCnt() {
return totCnt;
}
public void setTotCnt(int totCnt) {
this.totCnt = totCnt;
}
}

View File

@ -312,6 +312,11 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
return userManageVO;
}
@Override
public List<UserManageVO> selectOffeduUserList(UserManageVO userManageVO) throws Exception{
return userManageDAO.selectOffeduUserList(userManageVO);
}
@Override
// @Transactional(rollbackFor = Exception.class)
public void insertOffeduUser(UserManageVO userManageVO) throws Exception {

View File

@ -189,6 +189,9 @@ public class UserManageDAO extends EgovAbstractDAO{
return (UserManageVO)select("userManageDAO.selectOffeduUser", userManageVO);
}
public List<UserManageVO> selectOffeduUserList(UserManageVO userManageVO) throws Exception{
return (List<UserManageVO>)list("userManageDAO.selectOffeduUserList", userManageVO);
}
public void insertOffeudUser(UserManageVO userManageVO){
insert("userManageDAO.insertOffeduUser", userManageVO);
}

View File

@ -547,4 +547,14 @@ public class EgovCryptoUtil {
}
return decrypt;
}
public List<VEEduAplctVO> decryptVeEduAplctList(List<VEEduAplctVO> vEPrcsDetailVOList) {
for(VEEduAplctVO vo : vEPrcsDetailVOList) {
vo.setUserNm(this.decrypt(vo.getUserNm()));
}
// TODO Auto-generated method stub
return vEPrcsDetailVOList;
}
}

View File

@ -95,6 +95,26 @@ public class CommonWebController {
return "/web/ve/comm/searchBeforeContentPopup";
}
@RequestMapping("/popup/eduInquiryPopup.do")
public String eduInquiryPopup(@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO, ModelMap model, HttpServletRequest request) throws Exception{
//로그인 정보 가져오기
/*LoginVO loginVO = checkLoginUtil.getAuthLoginVO();
vEEduAplctVO.setUserId(loginVO.getUniqId());
PaginationInfo paginationInfo = this.setPagingStep1(vEEduAplctVO);
vEEduAplctVO = this.setPagingStep2(vEEduAplctVO, paginationInfo);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList);
paginationInfo = this.setPagingStep3(vEEduAplctVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
model.addAttribute("list", vEEduAplctVOList);*/
return "/web/ve/comm/eduInquiryPopup";
}
@RequestMapping("/popup/selectPrcsDetailList.do")
public String selectPrcsDetailList(@ModelAttribute("vEEduAplctVO") VEPrcsCntntVO vePrcsCntntVO, ModelMap model, HttpServletRequest request) throws Exception{
//로그인 정보 가져오기

View File

@ -175,6 +175,7 @@ public class ExprnClsrmAplctController {
//신청서 양식다운로드 정보 가져오기(신청일자 기준 가장 최신 데이터, 1개 로우)
VEPrcsDetailVO detailVO = new VEPrcsDetailVO();
detailVO.setLctrDivCd("30"); //저작권 체험교실 구분
detailVO = vEPrcsAplctPrdService.selectDetailNewOne(detailVO);
model.addAttribute("detailVO", detailVO);
@ -184,35 +185,48 @@ public class ExprnClsrmAplctController {
@RequestMapping("popup/cautionGuide.do")
public String cautionGuide( @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO , ModelMap model , HttpServletRequest request ) throws Exception {
// 청소년
// 저작권 체험교실
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_30);
//신청서 양식다운로드 정보 가져오기(신청일자 기준 가장 최신 데이터, 1개 로우)
VEPrcsDetailVO detailVO = new VEPrcsDetailVO();
detailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_30); //저작권 체험교실 구분
detailVO = vEPrcsAplctPrdService.selectDetailNewOne(detailVO);
//신청 기간 체크
ModelAndView modelAndView = new ModelAndView(); //eduAplctChkProcess 공통으로 사용하기 위한 선언
boolean flag = exprnClsrmAplctService.eduAplctChkProcess(detailVO, request, modelAndView);
detailVO.setCheckYn(flag ? "Y" : "N");
//날짜 표시형식 변환
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmm");
SimpleDateFormat simpleStrFormat = new SimpleDateFormat("yyyy년 MM월 dd일");
SimpleDateFormat simpleStrFormatEnd = new SimpleDateFormat("MM월 dd일");
//시작일자 날짜 형식 변환
Date stDate = simpleDateFormat.parse(detailVO.getFrstRegistPnttm());
Date stDate = simpleDateFormat.parse(detailVO.getStrtPnttm());
String stDay = simpleStrFormat.format(stDate);
//종료일자 날짜 형식 변환
Date edDate = simpleDateFormat.parse(detailVO.getLastUpdtPnttm());
Date edDate = simpleDateFormat.parse(detailVO.getEndPnttm());
String edDay = simpleStrFormatEnd.format(edDate);
//요일 텍스트 받아오기
String strWeekStart = DateUtil.getWeekText(stDate);
String strWeekEnd = DateUtil.getWeekText(edDate);
detailVO.setFrstRegistPnttm(stDay + "(" + strWeekStart + ")");
detailVO.setLastUpdtPnttm(edDay + "(" + strWeekEnd + ")");
detailVO.setStrtPnttm(stDay + "(" + strWeekStart + ")");
detailVO.setEndPnttm(edDay + "(" + strWeekEnd + ")");
model.addAttribute("detailVO", detailVO);
//현재년도
Date year = new Date();
SimpleDateFormat nowYearFormat = new SimpleDateFormat("yyyy");
String nowYear = nowYearFormat.format(year);
model.addAttribute("nowYear", nowYear);
return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/popup/cautionGuide";
}

View File

@ -433,7 +433,7 @@ public class ExprnClsrmEndController {
model.addAttribute("info", vEEduAplctVO);
// return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndRslt";
//대량 업로드 솔루션 테스트
return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndRsltTest";
return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndRslt";
}
/**

View File

@ -1,6 +1,9 @@
package kcc.ve.aplct.fndtnEnhanceTrn.web;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@ -147,32 +150,67 @@ public class FndtnEnhanceTrnController {
* 교육신청 목록 화면
*/
@RequestMapping("/web/ve/aplct/fndtnEnhanceTrn/main.do")
public String main( @ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO , ModelMap model , HttpServletRequest request ) throws Exception {
public String main( @ModelAttribute("vEEduAplctVO") VEPrcsDetailVO vEPrcsDetailVO , ModelMap model , HttpServletRequest request ) throws Exception {
//로그인 처리====================================
/* LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
vEEduAplctVO.setUserId(loginVO.getUniqId());
// 성인
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
vEEduAplctVO.setInstrDiv("20");
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEEduAplctVO);
//2. pageing step2
vEEduAplctVO = this.setPagingStep2(vEEduAplctVO, paginationInfo);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEEduAplctVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEEduAplctVOList);*/
vEPrcsDetailVO.setUserId(loginVO.getUniqId());
//1.pageing step1
//5개만 select을 위한 설정
vEPrcsDetailVO.setPageUnit(5);
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//로그인 처리====================================
//1.pageing step1
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_50); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
/*
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsDiv())) {
vEPrcsDetailVO.setPrcsDiv("10");// 과정구분 VE0015 10-산업종사자, 20-대학생, 30-공무원, 40-일반인, 50-청소년, 60-학부모
}
*/
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlList(vEPrcsDetailVO);
// 현재 날짜를 가져옵니다.
LocalDate currentDate = LocalDate.now();
// 날짜비교
vEPrcsDetailVOList.stream().forEach(t->{
t.setDateChk(this.dateChk(t, currentDate));
});
Map<String,Object> countMap = vEPrcsAplctPrdService.findAllDashboardCnt(vEPrcsDetailVO);
// 리스트 row마다 신청 확인하기
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
model.addAttribute("countMap", countMap);
//3.pageing step3
return "/web/ve/aplct/fndtnEnhanceTrn/main";
}
/**
* 교육신청 목록 화면
*/
@ -231,6 +269,7 @@ public class FndtnEnhanceTrnController {
vEEduAplctReqVO.setUserId(loginVO.getUniqId());
vEEduAplctReqVO.setLctrDivCd(t.getLctrDivCd());
vEEduAplctReqVO.setPrcsAplctPrdOrd(t.getPrcsAplctPrdOrd());
vEEduAplctReqVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_50);
VEEduAplctVO vEEduAplctVO = fndtnEnhanceTrnService.findByAprvlCd(vEEduAplctReqVO);
// VO를 먼저 null 체크 진행해야 에러안남
// vEEduAplctVO != null &&
@ -252,6 +291,83 @@ public class FndtnEnhanceTrnController {
return "/web/ve/aplct/fndtnEnhanceTrn/eduAplctList";
}
/**
* 교육신청 목록 화면
*/
@RequestMapping("/web/ve/aplct/fndtnEnhanceTrn/fndtnEduAplctList.do")
public String fndtnEduAplctList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request ) throws Exception {
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
vEPrcsDetailVO.setUserId(loginVO.getUniqId());
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//로그인 처리====================================
//1.pageing step1
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_50); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
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.findByAprvlList(vEPrcsDetailVO);
// 현재 날짜를 가져옵니다.
LocalDate currentDate = LocalDate.now();
// 날짜비교
vEPrcsDetailVOList.stream().forEach(t->{
t.setDateChk(this.dateChk(t, currentDate));
});
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
return "/web/ve/aplct/fndtnEnhanceTrn/fndtnEduAplctList";
}
/**
* 교육상세
@ -287,7 +403,6 @@ public class FndtnEnhanceTrnController {
public ModelAndView fndthEduPrcsAplctPrdMngRegAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
//, RedirectAttributes redirectAttributes
, HttpServletRequest request
) throws Exception {
@ -336,6 +451,29 @@ public class FndtnEnhanceTrnController {
private String dateChk(VEPrcsDetailVO vEPrcsDetailVO , LocalDate currentDate) {
String returnDate = "";
String targetDateString = vEPrcsDetailVO.getEduDdlnPnttm();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd");
// 문자열로부터 LocalDate 객체를 생성합니다.
LocalDate targetDate = LocalDate.parse(targetDateString, formatter);
// 교육종료 날짜와 현재날짜 비교
if (currentDate.isBefore(targetDate)) { //현재날짜가 종료날짜보다 이전이면 0
returnDate = "0";
} else if (currentDate.isAfter(targetDate)) { //현재날짜가 종료날짜 이후면 1
returnDate = "1";
} else { // 종료날짜와 같으면 2
returnDate = "2";
}
return returnDate;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//

View File

@ -0,0 +1,13 @@
package kcc.ve.aplct.sspnIdtmt.service;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
public interface SspnIdtmtService {
void insertVeEduAplct(VEEduAplctVO paramVO);
VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO);
}

View File

@ -0,0 +1,60 @@
package kcc.ve.aplct.sspnIdtmt.service.impl;
import java.util.List;
import org.springframework.stereotype.Repository;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
import kcc.ve.aplct.cpyrgExprnClsrm.exprnClsrmAplct.service.ScholInfoVO;
@Repository("sspnIdtmtDAO")
public class SspnIdtmtDAO extends EgovAbstractDAO {
public void insertIsltn(ScholInfoVO paramVO) throws Exception {
insert("ScholInfoDAO.insertIsltn", paramVO);
}
/**
* L - Page
* @param scholInfoVO
* @return
* @throws Exception
*/
public List<ScholInfoVO> selectPagingList(ScholInfoVO paramVO) throws Exception {
@SuppressWarnings("unchecked")
List<ScholInfoVO> list = (List<ScholInfoVO>) list("ScholInfoDAO.selectPagingList", paramVO);
return list;
}
public ScholInfoVO selectDetail(ScholInfoVO paramVO) throws Exception {
return (ScholInfoVO) select("ScholInfoDAO.selectDetail", paramVO);
}
public ScholInfoVO selectDetailWithQuery(ScholInfoVO paramVO) throws Exception {
return (ScholInfoVO) select("ScholInfoDAO.selectDetailWithQuery", paramVO);
}
public ScholInfoVO select(ScholInfoVO paramVO) throws Exception {
return (ScholInfoVO) select("ScholInfoDAO.select", paramVO);
}
public ScholInfoVO selectScholId(ScholInfoVO paramVO) throws Exception {
return (ScholInfoVO) select("ScholInfoDAO.selectScholId", paramVO);
}
public void insert(ScholInfoVO paramVO) throws Exception{
insert("ScholInfoDAO.insert" , paramVO);
}
public int update(ScholInfoVO paramVO)throws Exception{
return update("ScholInfoDAO.update", paramVO);
}
public void deleteIsltn(ScholInfoVO paramVO) throws Exception {
insert("ScholInfoDAO.deleteIsltn", paramVO);
}
public int insertSelectIsltn(ScholInfoVO scholInfoVO) throws Exception {
return update("ScholInfoDAO.insertSelectIsltn", scholInfoVO);
}
}

View File

@ -0,0 +1,29 @@
package kcc.ve.aplct.sspnIdtmt.service.impl;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.impl.VEEduAplctDAO;
@Service("sspnIdtmtService")
public class SspnIdtmtServiceImpl implements SspnIdtmtService {
//과정
@Resource(name="vEEduAplctDAO")
private VEEduAplctDAO vEEduAplctDAO;
@Override
public void insertVeEduAplct(VEEduAplctVO paramVO) {
//C
vEEduAplctDAO.insertVeEduAplct(paramVO);
}
@Override
public VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO) {
return vEEduAplctDAO.findByAprvlCd(vEEduAplctReqVO);
}
}

View File

@ -0,0 +1,593 @@
package kcc.ve.aplct.sspnIdtmt.web;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.LoginVO;
import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.impl.CmmUseDAO;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.aplct.adultVisitEdu.eduAplct.service.EduAplctAdultService;
import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
import kcc.ve.cmm.VeConstants;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctOnlnService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
/**
* 교육신청(성인찾아가는교육)
* 교육신청에 관한 controller 클래스를 정의한다.
* @author 조용준
* @since 2021.12.16
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2021.12.16 조용준 최초 생성
*
* </pre>
*/
@Controller
//@RequestMapping("/web/ve/aplct/sspnIdtmt")
public class SspnIdtmtController {
private static final Logger LOGGER = LoggerFactory.getLogger(SspnIdtmtController.class);
//암복호화 유틸
@Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil;
//파일 체크 util
@Resource(name = "checkFileUtil")
private CheckFileUtil checkFileUtil;
//로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
//파일정보의 관리
@Resource(name = "EgovFileMngService")
private EgovFileMngService fileService;
//과정 관리
@Resource(name = "vEPrcsService")
private VEPrcsService vEPrcsService;
//온라인콘텐츠과정 관리
@Resource(name = "vEPrcsOnlnCntntService")
private VEPrcsOnlnCntntService vEPrcsOnlnCntntService;
//교육신청
@Resource(name = "vEEduAplctService")
private VEEduAplctService vEEduAplctService;
//차시
@Resource(name = "vEEduChasiService")
private VEEduChasiService vVEEduChasiService;
//교육과정신청
@Resource(name = "vEEduMIXService")
private VEEduMIXService vEEduMIXService;
//교육과정신청
@Resource(name = "vEPrcsMIXService")
private VEPrcsMIXService vEPrcsMIXService;
//과정차시 관리
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
//교육과정순번
@Resource(name="prcsGnrService")
private EgovIdGnrService prcsGnrService;
//과정온라인콘텐츠순번
@Resource(name="prcsOnlnGnrService")
private EgovIdGnrService prcsOnlnGnrService;
//교육신청순번
@Resource(name="eduAplctGnrService")
private EgovIdGnrService eduAplctGnrService;
//교육차시순번
@Resource(name="eduChasiGnrService")
private EgovIdGnrService eduChasiGnrService;
//교육신청온라인
@Resource(name = "vEEduAplctOnlnService")
private VEEduAplctOnlnService vEEduAplctOnlnService;
@Resource(name = "eduAplctAdultService")
private EduAplctAdultService eduAplctAdultService;
//코드
@Resource(name="cmmUseDAO")
private CmmUseDAO cmmUseDAO;
//온라인콘텐츠과정 관리
@Resource(name = "sspnIdtmtService")
private SspnIdtmtService sspnIdtmtService;
/**
* 교육신청 목록 화면
*/
@RequestMapping("/web/ve/aplct/sspnIdtmt/main.do")
public String main( @ModelAttribute("vEEduAplctVO") VEPrcsDetailVO vEPrcsDetailVO , ModelMap model , HttpServletRequest request ) throws Exception {
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
vEPrcsDetailVO.setUserId(loginVO.getUniqId());
//1.pageing step1
//5개만 select을 위한 설정
vEPrcsDetailVO.setPageUnit(5);
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//로그인 처리====================================
//1.pageing step1
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_60); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
/*
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsDiv())) {
vEPrcsDetailVO.setPrcsDiv("10");// 과정구분 VE0015 10-산업종사자, 20-대학생, 30-공무원, 40-일반인, 50-청소년, 60-학부모
}
*/
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlList(vEPrcsDetailVO);
// 현재 날짜를 가져옵니다.
LocalDate currentDate = LocalDate.now();
// 날짜비교
vEPrcsDetailVOList.stream().forEach(t->{
t.setDateChk(this.dateChk(t, currentDate));
});
Map<String,Object> countMap = vEPrcsAplctPrdService.findAllDashboardCnt(vEPrcsDetailVO);
// 리스트 row마다 신청 확인하기
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
model.addAttribute("countMap", countMap);
return "/web/ve/aplct/sspnIdtmt/main";
}
/**
* 교육신청 목록 화면
*/
@RequestMapping("/web/ve/aplct/sspnIdtmt/eduAplctList.do")
public String eduAplctList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request ) throws Exception {
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//로그인 처리====================================
//1.pageing step1
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_60); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
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);
// 리스트 row마다 신청 확인하기
vEPrcsDetailVOList.stream().forEach(t->{
VEEduAplctVO vEEduAplctReqVO = new VEEduAplctVO();
vEEduAplctReqVO.setUserId(loginVO.getUniqId());
vEEduAplctReqVO.setLctrDivCd(t.getLctrDivCd());
vEEduAplctReqVO.setPrcsAplctPrdOrd(t.getPrcsAplctPrdOrd());
vEEduAplctReqVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_60);
VEEduAplctVO vEEduAplctVO = sspnIdtmtService.findByAprvlCd(vEEduAplctReqVO);
// VO를 먼저 null 체크 진행해야 에러안남
// vEEduAplctVO != null &&
if(vEEduAplctVO != null && StringUtils.isNotEmpty(vEEduAplctVO.getAprvlCd())) {
t.setAprvlCd(vEEduAplctVO.getAprvlCd());
}
});
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
return "/web/ve/aplct/sspnIdtmt/eduAplctList";
}
/**
* 교육신청 목록 화면
*/
@RequestMapping("/web/ve/aplct/sspnIdtmt/fndtnEduAplctList.do")
public String fndtnEduAplctList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request ) throws Exception {
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
vEPrcsDetailVO.setUserId(loginVO.getUniqId());
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//로그인 처리====================================
//1.pageing step1
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_50); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
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.findByAprvlList(vEPrcsDetailVO);
// 리스트 row마다 신청 확인하기
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
return "/web/ve/aplct/sspnIdtmt/fndtnEduAplctList";
}
/**
* 교육상세
*/
@RequestMapping("/web/ve/aplct/sspnIdtmt/eduAplctDetail.do")
public String eduAplctDetail(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request ) throws Exception {
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
//1.pageing step1
//과정 조회
VEPrcsDetailVO vEPrcsDetailVODetail = vEPrcsAplctPrdService.selectDetailNewOne4Fndth(vEPrcsDetailVO);
model.addAttribute("info", vEPrcsDetailVODetail);
return "/web/ve/aplct/sspnIdtmt/eduAplctDetail";
}
/**
* 기반강화연수과정 신청기간 등록
*/
@RequestMapping("/web/ve/aplct/sspnIdtmt/eduRegAjax.do")
public ModelAndView fndthEduPrcsAplctPrdMngRegAjax(
@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(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(eduAplctGnrService.getNextStringId());
vEEduAplctVO.setLctrDivCd("60"); // 기반강화
vEEduAplctVO.setAprvlCd("10"); // 승인코드 VE0003 10 - 요청, 20 - 승인, 30 - 반려
// sbmt_pnttm 제출일시
vEEduAplctVO.setSbmtYn("Y"); // 제출여부
vEEduAplctVO.setFrstRegisterId(loginVO.getUniqId());
// frst_regist_pnttm
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
sspnIdtmtService.insertVeEduAplct(vEEduAplctVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
/**
* 교육신청 목록 화면
*/
@RequestMapping("/web/ve/aplct/sspnIdtmt/sspnIdtmtEduAplctList.do")
public String sspnIdtmtEduAplctList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request ) throws Exception {
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
vEPrcsDetailVO.setUserId(loginVO.getUniqId());
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//로그인 처리====================================
//1.pageing step1
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_60); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
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.findByAprvlList(vEPrcsDetailVO);
// 현재 날짜를 가져옵니다.
LocalDate currentDate = LocalDate.now();
// 날짜비교
vEPrcsDetailVOList.stream().forEach(t->{
t.setDateChk(this.dateChk(t, currentDate));
});
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
return "/web/ve/aplct/sspnIdtmt/sspnIdtmtEduAplctList";
}
private String dateChk(VEPrcsDetailVO vEPrcsDetailVO , LocalDate currentDate) {
String returnDate = "";
String targetDateString = vEPrcsDetailVO.getEduDdlnPnttm();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd");
// 문자열로부터 LocalDate 객체를 생성합니다.
LocalDate targetDate = LocalDate.parse(targetDateString, formatter);
// 교육종료 날짜와 현재날짜 비교
if (currentDate.isBefore(targetDate)) { //현재날짜가 종료날짜보다 이전이면 0
returnDate = "0";
} else if (currentDate.isAfter(targetDate)) { //현재날짜가 종료날짜 이후면 1
returnDate = "1";
} else { // 종료날짜와 같으면 2
returnDate = "2";
}
return returnDate;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// private function
//
//
//페이징을 위한 처리 step1 - 페이징 기본 정보 설정
private PaginationInfo setPagingStep1(
VEPrcsDetailVO p_vEPrcsDetailVO
)throws Exception{
// pageing step1
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(p_vEPrcsDetailVO.getPageIndex());
paginationInfo.setRecordCountPerPage(p_vEPrcsDetailVO.getPageUnit());
paginationInfo.setPageSize(p_vEPrcsDetailVO.getPageSize());
return paginationInfo;
}
//페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 검색 조건 초기화
private VEPrcsDetailVO setPagingStep2(
VEPrcsDetailVO p_vEPrcsDetailVO
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step2
p_vEPrcsDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex());
p_vEPrcsDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex());
p_vEPrcsDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage());
if("".equals(p_vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
p_vEPrcsDetailVO.setSearchSortCnd("prcs_ord");
p_vEPrcsDetailVO.setSearchSortOrd("desc");
}
return p_vEPrcsDetailVO;
}
//페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기
private PaginationInfo setPagingStep3(
List<VEPrcsDetailVO> p_vEPrcsDetailVOList
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step3
int totCnt = 0;
if(p_vEPrcsDetailVOList.size() > 0) totCnt = p_vEPrcsDetailVOList.get(0).getTotCnt();
p_paginationInfo.setTotalRecordCount(totCnt);
return p_paginationInfo;
}
}

View File

@ -51,6 +51,7 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
private String eduPlace; //교육장소
private String sbmtYn; //제출여부
private String sbmtPnttm; //제출일시
private String sbmtPnttmDetail; //제출일시 시분초 추가
private String aprvlCd; //승인코드
private String aprvlPnttm; //승인일시
private String aprvlCn; //승인내용
@ -127,6 +128,7 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
private String endEduPrsnl; //교육인원(이수)
public int getChasi() {
return chasi;
}
@ -260,6 +262,8 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
private String endPnttm; //접수 종료일
private String prcsEndPnttm; //접수 종료일 저작권체험교실.
//강사료확정처리
private String instrFeeOrd;
private String feeSbmtYn;
@ -293,6 +297,8 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
private String prcsAplctPrdOrd;
private String unfthYn; //불성실여부
public String getPrcsAplctPrdOrd() {
return prcsAplctPrdOrd;
@ -338,6 +344,13 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
private String clsCmbtYn; //접적지역
private String ppulDclnYn; //인구감소지역
private String qestnrId; // 설문
private String aplctStateCd; // 교육이수 상태
public String getSpecialWorkAllow() {
return specialWorkAllow;
}
@ -1464,6 +1477,36 @@ public class VEEduAplctVO extends ComDefaultVO implements Serializable {
public void setRmtTrnAtchFileDetail(FileVO rmtTrnAtchFileDetail) {
this.rmtTrnAtchFileDetail = rmtTrnAtchFileDetail;
}
public String getSbmtPnttmDetail() {
return sbmtPnttmDetail;
}
public void setSbmtPnttmDetail(String sbmtPnttmDetail) {
this.sbmtPnttmDetail = sbmtPnttmDetail;
}
public String getPrcsEndPnttm() {
return prcsEndPnttm;
}
public void setPrcsEndPnttm(String prcsEndPnttm) {
this.prcsEndPnttm = prcsEndPnttm;
}
public String getUnfthYn() {
return unfthYn;
}
public void setUnfthYn(String unfthYn) {
this.unfthYn = unfthYn;
}
public String getQestnrId() {
return qestnrId;
}
public void setQestnrId(String qestnrId) {
this.qestnrId = qestnrId;
}
public String getAplctStateCd() {
return aplctStateCd;
}
public void setAplctStateCd(String aplctStateCd) {
this.aplctStateCd = aplctStateCd;
}
}

View File

@ -50,4 +50,6 @@ public interface VEEduMIXService {
void updateRsltRprtFileIdNull(VEEduAplctVO vEEduAplctVO) throws Exception;
void updateRsltRprtFileId(VEEduAplctVO vEEduAplctVO) throws Exception;
//저작권 체험교실 목록
List<VEEduAplctVO> selectExprnPagingList(VEEduAplctVO paramVO) throws Exception;
}

View File

@ -137,4 +137,10 @@ public class VEEduMIXDAO extends EgovAbstractDAO {
public void updateRsltRprtFileId(VEEduAplctVO vEEduAplctVO) throws Exception {
insert("VEEduMIXDAO.updateRsltRprtFileId", vEEduAplctVO);
}
public List<VEEduAplctVO> selectExprnPagingList(VEEduAplctVO paramVO) throws Exception {
@SuppressWarnings("unchecked")
List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectExprnPagingList", paramVO);
return tlist;
}
}

View File

@ -125,4 +125,8 @@ public class VEEduMIXServiceImpl implements VEEduMIXService {
public void updateRsltRprtFileId(VEEduAplctVO vEEduAplctVO) throws Exception {
vEEduMIXDAO.updateRsltRprtFileId(vEEduAplctVO);
}
public List<VEEduAplctVO> selectExprnPagingList(VEEduAplctVO paramVO) throws Exception{
return vEEduMIXDAO.selectExprnPagingList(paramVO);
}
}

View File

@ -9,4 +9,12 @@ public interface VEAPrcsAplctPrdInstrAsgnmService {
void instrInsert(VEAPrcsAplctPrdInstrAsgnmVO vEAPrcsAplctPrdInstrAsgnmVO);
List<VEAPrcsAplctPrdInstrAsgnmVO> findByPrcsAplctPrdOrd(String prcsAplctPrdOrd);
void udpateAprvlCdEduAplct(VEPrcsDetailVO vEPrcsDetailVO);
void insertAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO);
VEPrcsDetailVO selectAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO);
void updateAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO);
}

View File

@ -1,6 +1,7 @@
package kcc.ve.instr.tngrVisitEdu.prcsInfo.service;
import java.util.List;
import java.util.Map;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
@ -38,4 +39,8 @@ public interface VEPrcsAplctPrdService {
List<VEInstrDetailVO> selectinstrAsgnmPopupPagingList(VEPrcsDetailVO vEPrcsDetailVO);
List<VEPrcsDetailVO> findByAprvlList(VEPrcsDetailVO vEPrcsDetailVO);
Map<String, Object> findAllDashboardCnt(VEPrcsDetailVO vEPrcsDetailVO);
}

View File

@ -1,6 +1,7 @@
package kcc.ve.instr.tngrVisitEdu.prcsInfo.service;
import java.io.Serializable;
import java.util.List;
import kcc.com.cmm.ComDefaultVO;
@ -41,6 +42,7 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
//ve_edu_aplct
private String eduAplctOrd; //교육신청순번
private List<String> eduAplctOrdList; //교육신청순번
private String eduChasiOrd; //교육차시순번
private String cnt;
@ -118,6 +120,12 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
private String aprvlCd;
private String aplctStateCd; // 신청상태코드 VEA003
private String eduCmpltCrtfcNmbr;
private String dateChk;
private Boolean qestRsltExists;
@ -247,6 +255,12 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setEduAplctOrd(String eduAplctOrd) {
this.eduAplctOrd = eduAplctOrd;
}
public List<String> getEduAplctOrdList() {
return eduAplctOrdList;
}
public void setEduAplctOrdList(List<String> eduAplctOrdList) {
this.eduAplctOrdList = eduAplctOrdList;
}
public String getEduChasiOrd() {
return eduChasiOrd;
}
@ -559,6 +573,30 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setAprvlCd(String aprvlCd) {
this.aprvlCd = aprvlCd;
}
public String getAplctStateCd() {
return aplctStateCd;
}
public void setAplctStateCd(String aplctStateCd) {
this.aplctStateCd = aplctStateCd;
}
public String getEduCmpltCrtfcNmbr() {
return eduCmpltCrtfcNmbr;
}
public void setEduCmpltCrtfcNmbr(String eduCmpltCrtfcNmbr) {
this.eduCmpltCrtfcNmbr = eduCmpltCrtfcNmbr;
}
public String getDateChk() {
return dateChk;
}
public void setDateChk(String dateChk) {
this.dateChk = dateChk;
}
public Boolean getQestRsltExists() {
return qestRsltExists;
}
public void setQestRsltExists(Boolean qestRsltExists) {
this.qestRsltExists = qestRsltExists;
}
}

View File

@ -29,4 +29,6 @@ public interface VEPrcsService {
//교육과정 리스트 순서 수정
void updatePrcsSort(VEPrcsDetailVO paramVO) throws Exception;
void deleteInstr(VEPrcsDetailVO vEPrcsDetailVO);
}

View File

@ -21,4 +21,21 @@ public class VEAPrcsAplctPrdInstrAsgnmDAO extends EgovAbstractDAO {
return (List<VEAPrcsAplctPrdInstrAsgnmVO>) list("VEAPrcsAplctPrdInstrAsgnmDAO.findByPrcsAplctPrdOrd", prcsAplctPrdOrd);
}
public void udpateAprvlCdEduAplct(VEPrcsDetailVO vEPrcsDetailVO) {
update("VEAPrcsAplctPrdInstrAsgnmDAO.udpateAprvlCdEduAplct", vEPrcsDetailVO);
}
public void insertAprvlCdEduAplctDetail(VEPrcsDetailVO vEPrcsDetailVO) {
insert("VEAPrcsAplctPrdInstrAsgnmDAO.insertAprvlCdEduAplctDetail", vEPrcsDetailVO);
}
public VEPrcsDetailVO selectAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO) {
return (VEPrcsDetailVO) select("VEAPrcsAplctPrdInstrAsgnmDAO.selectAprvlCdEduAplctDetail", vEDetailVO);
}
public void updateAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO) {
delete("VEAPrcsAplctPrdInstrAsgnmDAO.updateAprvlCdEduAplctDetail", vEDetailVO);
}
}

View File

@ -11,6 +11,7 @@ import org.springframework.stereotype.Service;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
@Service("vEAPrcsAplctPrdInstrAsgnmService")
public class VEAPrcsAplctPrdInstrAsgnmServiceImpl implements VEAPrcsAplctPrdInstrAsgnmService {
@ -35,4 +36,26 @@ public class VEAPrcsAplctPrdInstrAsgnmServiceImpl implements VEAPrcsAplctPrdInst
public List<VEAPrcsAplctPrdInstrAsgnmVO> findByPrcsAplctPrdOrd(String prcsAplctPrdOrd) {
return vEAPrcsAplctPrdInstrAsgnmDAO.findByPrcsAplctPrdOrd(prcsAplctPrdOrd);
}
@Override
public void udpateAprvlCdEduAplct(VEPrcsDetailVO vEPrcsDetailVO) {
vEAPrcsAplctPrdInstrAsgnmDAO.udpateAprvlCdEduAplct(vEPrcsDetailVO);
}
@Override
public void insertAprvlCdEduAplctDetail(VEPrcsDetailVO vEPrcsDetailVO) {
vEAPrcsAplctPrdInstrAsgnmDAO.insertAprvlCdEduAplctDetail(vEPrcsDetailVO);
}
@Override
public VEPrcsDetailVO selectAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO) {
return vEAPrcsAplctPrdInstrAsgnmDAO.selectAprvlCdEduAplctDetail(vEDetailVO);
}
@Override
public void updateAprvlCdEduAplctDetail(VEPrcsDetailVO vEDetailVO) {
vEAPrcsAplctPrdInstrAsgnmDAO.updateAprvlCdEduAplctDetail(vEDetailVO);
}
}

View File

@ -1,6 +1,7 @@
package kcc.ve.instr.tngrVisitEdu.prcsInfo.service.impl;
import java.util.List;
import java.util.Map;
import org.springframework.stereotype.Repository;
@ -91,5 +92,13 @@ public class VEPrcsAplctPrdDAO extends EgovAbstractDAO {
return (List<VEInstrDetailVO>) list("VEPrcsAplctPrdDAO.selectinstrAsgnmPopupPagingList", vEPrcsDetailVO);
}
public List<VEPrcsDetailVO> findByAprvlList(VEPrcsDetailVO vEPrcsDetailVO) {
return (List<VEPrcsDetailVO>) list("VEPrcsAplctPrdDAO.findByAprvlList", vEPrcsDetailVO);
}
public Map<String, Object> findAllDashboardCnt(VEPrcsDetailVO vEPrcsDetailVO) {
return (Map<String, Object>) select("VEPrcsAplctPrdDAO.findAllDashboardCnt", vEPrcsDetailVO);
}
}

View File

@ -2,6 +2,7 @@ package kcc.ve.instr.tngrVisitEdu.prcsInfo.service.impl;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
@ -89,4 +90,14 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
return vEPrcsAplctPrdDAO.selectinstrAsgnmPopupPagingList(vEPrcsDetailVO);
}
@Override
public List<VEPrcsDetailVO> findByAprvlList(VEPrcsDetailVO vEPrcsDetailVO) {
return vEPrcsAplctPrdDAO.findByAprvlList(vEPrcsDetailVO);
}
@Override
public Map<String, Object> findAllDashboardCnt(VEPrcsDetailVO vEPrcsDetailVO) {
return vEPrcsAplctPrdDAO.findAllDashboardCnt(vEPrcsDetailVO);
}
}

View File

@ -77,4 +77,8 @@ public class VEPrcsDAO extends EgovAbstractDAO {
update("VEPrcsDAO.updatePrcsSort", paramVO);
}
public void deleteInstr(VEPrcsDetailVO vEPrcsDetailVO) {
delete("VEPrcsDAO.deleteInstr", vEPrcsDetailVO);
}
}

View File

@ -59,4 +59,10 @@ public class VEPrcsServiceImpl implements VEPrcsService {
vEPrcsDAO.updatePrcsSort(paramVO);
}
@Override
public void deleteInstr(VEPrcsDetailVO vEPrcsDetailVO) {
vEPrcsDAO.deleteInstr(vEPrcsDetailVO);
}
}

View File

@ -21,6 +21,7 @@ import kcc.com.cmm.LoginVO;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsCntntVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService;
@ -81,6 +82,10 @@ public class CndtnTrgtMngController {
@Resource(name="prcsOnlnGnrService")
private EgovIdGnrService prcsOnlnGnrService;
//과정차시 관리
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
/*
// 교육신청 서비스단
@ -341,6 +346,7 @@ public class CndtnTrgtMngController {
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//

View File

@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.fdl.cmmn.exception.FdlException;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.ComDefaultCodeVO;
@ -61,6 +62,8 @@ public class CndtnPrcsInfoMngController {
private static final Logger LOGGER = LoggerFactory.getLogger(CndtnPrcsInfoMngController.class);
private final String LCTR_DIV_CD = "60";
//로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
@ -140,7 +143,7 @@ public class CndtnPrcsInfoMngController {
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
String selectCondition = "AND a.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
@ -165,7 +168,7 @@ public class CndtnPrcsInfoMngController {
/**
* 반강화연수과정 화면
* 소유예 화면
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngMdfyAjax.do")
public ModelAndView fndthEduPrcsMngMdfyAjax(
@ -275,7 +278,7 @@ public class CndtnPrcsInfoMngController {
/**
* 반강화연수과정 등록
* 소유예 등록
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngRegAjax.do")
public ModelAndView fndthEduPrcsMngRegAjax(
@ -306,7 +309,7 @@ public class CndtnPrcsInfoMngController {
String prcsOrd = prcsGnrService.getNextStringId(); // 고유ID
vEPrcsDetailVO.setPrcsOrd(prcsOrd);
vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsService.insert(vEPrcsDetailVO);
@ -354,7 +357,7 @@ public class CndtnPrcsInfoMngController {
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctMngList.do")
public String fndthEduPrcsAplctPrdMngList(
public String cndtnEduPrcsAplctMngList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
@ -377,7 +380,7 @@ public class CndtnPrcsInfoMngController {
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
String selectCondition = "AND b.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
@ -415,11 +418,11 @@ public class CndtnPrcsInfoMngController {
/**
* 반강화연수과정 신청기간 등록 화면
* 소유예 신청기간 등록 화면
*/
//@RequestMapping("eduPrcsMngReg.do")
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctMngReg.do")
public String fndthEduPrcsAplctPrdMngReg(
public String cndtnEduPrcsAplctMngReg(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
@ -445,7 +448,7 @@ public class CndtnPrcsInfoMngController {
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO);
@ -482,7 +485,7 @@ public class CndtnPrcsInfoMngController {
/**
* 반강화연수과정 신청기간 등록
* 소유예 신청기간 등록
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctSelectDivAndCnAjax.do")
public ModelAndView cndtnEduPrcsAplctSelectDivAndCnAjax(
@ -528,10 +531,52 @@ public class CndtnPrcsInfoMngController {
/**
* 반강화연수과정 신청기간 등록
* 소유예 신청기간 등록
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctMngRegAjax.do")
public ModelAndView fndthEduPrcsAplctPrdMngRegAjax(
public ModelAndView cndtnEduPrcsAplctMngRegAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, 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 로그인 정보 가져오기
String prcsOrd = prcsGnrService.getNextStringId(); // 고유ID
vEPrcsDetailVO.setPrcsOrd(prcsOrd);
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsService.insert(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
/**
* 기소유예 신청기간 등록
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngRegAjax.do")
public ModelAndView cndtnEduPrcsAplctPrdMngRegAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
//, RedirectAttributes redirectAttributes
@ -556,7 +601,7 @@ public class CndtnPrcsInfoMngController {
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsAplctPrdService.insert(vEPrcsDetailVO);
@ -566,9 +611,119 @@ public class CndtnPrcsInfoMngController {
}
/**
* 기반강화연수과정 기간 상세화면
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngDetail.do")
public String cndtnEduPrcsAplctPrdMngDetail(
@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());
List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectList(paramVO);
vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList);
System.out.println("====");
//대상 리스트, 페이징 정보 전달
model.addAttribute("listPrcsAplct", vEPrcsDetailVOList);
}
// 강사 배치 정보
{
List<VEAPrcsAplctPrdInstrAsgnmVO> vEAPrcsAplctPrdInstrAsgnmList = vEAPrcsAplctPrdInstrAsgnmService.findByPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
List<VEAPrcsAplctPrdInstrAsgnmVO> instrAsgnmList = egovCryptoUtil.decryptVEAPrcsAplctPrdInstrAsgnmVOList(vEAPrcsAplctPrdInstrAsgnmList);
model.addAttribute("instrAsgnmList", instrAsgnmList);
}
return "/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngDetail";
}
/**
* 기반강화 신청자 상태값 변경
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/updateEduAplctAprvlCdAjax.do")
public ModelAndView updateEduAplctAprvlCd(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
System.out.println(vEPrcsDetailVO.getPrcsAplctPrdOrd() +"!!!");
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.udpateAprvlCdEduAplct(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;
}
/**
* 기소유예 기간 상세화면
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctMngDetail.do")
public String cndtnEduPrcsAplctMngDetail(
@ -602,7 +757,7 @@ public class CndtnPrcsInfoMngController {
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd("50"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setPrcsOrd("");
@ -651,7 +806,7 @@ public class CndtnPrcsInfoMngController {
/**
* 반강화연수과정 기간 상세수정화면
* 소유예 기간 상세수정화면
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctMngMdfy.do")
public String fndthEduPrcsAplctPrdMngMdfy(
@ -684,7 +839,7 @@ public class CndtnPrcsInfoMngController {
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setPrcsOrd("");
@ -708,7 +863,7 @@ public class CndtnPrcsInfoMngController {
}
/**
* 반강화연수과정 신청기간 수정
* 소유예 신청기간 수정
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctMngMdfyAjax.do")
public ModelAndView fndthEduPrcsAplctPrdMngMdfyAjax(
@ -739,7 +894,7 @@ public class CndtnPrcsInfoMngController {
//String prcsAplctPrdOrd = prcsAplctPrdGnrService.getNextStringId(); // 고유ID
//vEPrcsDetailVO.setPrcsAplctPrdOrd(prcsAplctPrdOrd);
vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
//vEPrcsDetailVO.setUseYn("Y");
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
@ -880,6 +1035,303 @@ public class CndtnPrcsInfoMngController {
}
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList.do")
public String fndthEduPrcsAplctPrdMngList(
@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-조건부
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);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList";
}
/**
* 기소유예 신청기간 등록 화면
*/
//@RequestMapping("eduPrcsMngReg.do")
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngReg.do")
public String cndtnEduPrcsAplctPrdMngReg(
@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.setOrderByQuery("a.prcs_nm asc");
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
//model.addAttribute("paginationInfo", paginationInfo);
// 교육 부분 코드 가져오는 영역
ComDefaultCodeVO codeVO = new ComDefaultCodeVO();
codeVO.setCodeId("VEA001");//기관구분코드
codeVO.setCode(vEPrcsDetailVOList.get(0).getPrcsDiv());
model.addAttribute("prcsDivNm", cmmUseDAO.selectCmmCodeDetailValue(codeVO).getCodeNm());
// 상세교육과정 내용 가져오는 영역
VEPrcsDetailVO vEPrcsDetailVOPrcsCn = new VEPrcsDetailVO();
vEPrcsDetailVOPrcsCn.setPrcsOrd(vEPrcsDetailVOList.get(0).getPrcsOrd());
model.addAttribute("prcsCn", vEPrcsService.selectDetail(vEPrcsDetailVOPrcsCn).getPrcsCn());
//대상 리스트, 페이징 정보 전달
model.addAttribute("listPrcs", vEPrcsDetailVOList);
}
return "oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngReg";
}
/**
* 기반강화연수과정 기간 상세수정화면
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngMdfy.do")
public String cndtnEduPrcsAplctPrdMngMdfy(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//로그인 처리====================================
System.out.println("vEPrcsDetailVO.getPrcsDiv() : "+ vEPrcsDetailVO.getPrcsDiv());
//과정 정보 가져오기
{
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO.setOrderByQuery("a.prcs_nm asc");
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setPrcsOrd("");
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO);
System.out.println("=====");
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
//model.addAttribute("paginationInfo", paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("listPrcs", vEPrcsDetailVOList);
}
//과정 조회
VEPrcsDetailVO vEPrcsDetailVODetail = vEPrcsAplctPrdService.selectDetailNewOne4Fndth(vEPrcsDetailVO);
model.addAttribute("info", vEPrcsDetailVODetail);
return "oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngMdfy";
}
/**
* 기반강화연수과정 신청기간 수정
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngMdfyAjax.do")
public ModelAndView cndtnEduPrcsAplctPrdMngMdfyAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, 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 로그인 정보 가져오기
//String prcsAplctPrdOrd = prcsAplctPrdGnrService.getNextStringId(); // 고유ID
//vEPrcsDetailVO.setPrcsAplctPrdOrd(prcsAplctPrdOrd);
vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setLastUpdusrId(loginVO.getUniqId()); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
//vEPrcsDetailVO.setUseYn("Y");
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsAplctPrdService.update(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
return modelAndView;
}
/**
* @methodName : aprvlCd20
* @author : 이호영
* @date : 2023.09.25
* @description : aprvlCd == 20 교육 승인 경유
* 승인일 경우 vea_aplct_detail_info TB에 넣어줘야함
* @param vEPrcsDetailVO
* @param uniqId
* @throws FdlException
*/
private void aprvlCd20(VEPrcsDetailVO vEPrcsDetailVO, String uniqId) throws FdlException {
for(String id : vEPrcsDetailVO.getEduAplctOrdList()) {
VEPrcsDetailVO vEDetailVO = new VEPrcsDetailVO();
vEDetailVO.setPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
vEDetailVO.setEduAplctOrd(id);
// 데이터가 있는지만 비교하기 위한 구문
VEPrcsDetailVO vEDetail_DVO = vEAPrcsAplctPrdInstrAsgnmService.selectAprvlCdEduAplctDetail(vEDetailVO);
// 데이터가 없으면 Insert
if(vEDetail_DVO == null) {
vEDetailVO.setAplctStateCd("10"); // 신청상태코드 VEA003 10:미이수 20:이수
vEDetailVO.setFrstRegisterId(uniqId);
vEAPrcsAplctPrdInstrAsgnmService.insertAprvlCdEduAplctDetail(vEDetailVO);
}
}
}
/**
* @methodName : aprvlCd30
* @author : 이호영
* @date : 2023.09.25
* @description : aprvlCd == 30 교육 반려
* 반려일 경우 vea_aplct_detail_info TB에 data 삭제
* @param vEPrcsDetailVO
* @param uniqId
* @throws FdlException
*/
private void aprvlCd30(VEPrcsDetailVO vEPrcsDetailVO) {
for(String id : vEPrcsDetailVO.getEduAplctOrdList()) {
VEPrcsDetailVO vEDetailVO = new VEPrcsDetailVO();
vEDetailVO.setPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
vEDetailVO.setEduAplctOrd(id);
// 데이터가 있는지만 비교하기 위한 구문
VEPrcsDetailVO vEDetail_DVO = vEAPrcsAplctPrdInstrAsgnmService.selectAprvlCdEduAplctDetail(vEDetailVO);
// 데이터가 있으면 삭제
if(vEDetail_DVO != null) {
vEDetailVO.setAplctStateCd("30");
vEAPrcsAplctPrdInstrAsgnmService.updateAprvlCdEduAplctDetail(vEDetailVO);
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//

View File

@ -14,8 +14,9 @@ import org.springframework.web.servlet.ModelAndView;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.LoginVO;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.uss.umt.service.EgovUserManageService;
import kcc.let.uss.umt.service.UserManageVO;
import kcc.ve.aplct.cpyrgExprnClsrm.exprnClsrmAplct.service.ScholInfoMIXService;
import kcc.ve.aplct.cpyrgExprnClsrm.exprnClsrmAplct.service.ScholInfoService;
import kcc.ve.aplct.cpyrgExprnClsrm.exprnClsrmAplct.service.ScholInfoVO;
@ -54,6 +55,11 @@ public class CommonManageWebController {
@Resource(name = "vEEduAplctSndHstryService")
private VEEduAplctSndHstryService vEEduAplctSndHstryService;
//회원조회
@Resource(name = "userManageService")
private EgovUserManageService userManageService;
/**
* 학교정보 검색 팝업 리스트
*/
@ -78,12 +84,25 @@ public class CommonManageWebController {
//검색 조건
String selectCondition = new String();
if (!"".equals(scholInfoVO.getSearchKeyword())) {
selectCondition += "AND a.SCHOL_NM LIKE CONCAT ('%', '" +scholInfoVO.getSearchKeyword() + "', '%')";
selectCondition += " AND A.SCHOL_NM LIKE '%"+scholInfoVO.getSearchKeyword()+"%' ";
}
//2.2 학교종류
if(StringUtil.isNotEmpty(scholInfoVO.getSearchCondition())){
/*if(StringUtil.isNotEmpty(scholInfoVO.getSearchCondition())){
selectCondition += "AND DECODE(schol_grade_nm, '초등학교','10', '중학교','20', '고등학교','30',IF (INSTR(schol_grade_nm,'각종학교')>0,'40','50')) IN ('"+scholInfoVO.getSearchCondition()+"')";
}*/
if (!"".equals(scholInfoVO.getSearchCondition())) {
if(scholInfoVO.getSearchCondition().equals("10")) {
selectCondition += " AND A.SCHOL_GRADE_NM LIKE '%초등%' ";
}else if(scholInfoVO.getSearchCondition().equals("20")) {
selectCondition += " AND A.SCHOL_GRADE_NM LIKE '%중학%' ";
}else if(scholInfoVO.getSearchCondition().equals("30")) {
selectCondition += " AND A.SCHOL_GRADE_NM LIKE '%고등%' ";
}else if(scholInfoVO.getSearchCondition().equals("40")) {
selectCondition += " AND A.SCHOL_GRADE_NM LIKE '%특수%' ";
}else if(scholInfoVO.getSearchCondition().equals("50")) {
selectCondition += " AND A.SCHOL_GRADE_NM LIKE '%각종%' ";
}
}
scholInfoVO.setSelectPagingListQuery(selectCondition);
@ -115,7 +134,7 @@ public class CommonManageWebController {
//권한에 따른 로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO();
vEEduAplctVO.setLastUpdusrId(loginVO.getUniqId());
int rs = vEEduAplctService.statusUpdate(vEEduAplctVO);
//교육콘텐츠 교육승인 상태로 변경 메일발송
@ -198,5 +217,35 @@ public class CommonManageWebController {
return "/web/ve/comm/selectPrcsDetailList";
}
/**
* 회원 검색 팝업 리스트
*/
@RequestMapping("popup/userPopList.do")
public String userPopList(@ModelAttribute("searchVO") UserManageVO userManageVO , ModelMap model , HttpServletRequest request ) throws Exception {
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(userManageVO.getPageIndex());
paginationInfo.setRecordCountPerPage(userManageVO.getPageUnit());
paginationInfo.setPageSize(10);
// paging step2
userManageVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
userManageVO.setLastIndex(paginationInfo.getLastRecordIndex());
userManageVO.setRecordCountPerPage(10);
if("".equals(userManageVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
userManageVO.setSearchSortCnd("mber_id");
userManageVO.setSearchSortOrd("asc");
}
List<UserManageVO> userList = userManageService.selectOffeduUserList(userManageVO);
//3.paging step3
int totCnt = 0;
if(userList.size() > 0) totCnt = userList.get(0).getTotCnt();
paginationInfo.setTotalRecordCount(totCnt);
model.addAttribute("paginationInfo", paginationInfo);
//학교정보 리스트, 페이징 정보 전달
model.addAttribute("userList", userList);
return "oprtn/cmm/userPopListBower";
}
}

View File

@ -1,5 +1,7 @@
package kcc.ve.oprtn.cpyrgExprnClsrm.oprtnAplctMng.web;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
@ -19,10 +21,13 @@ import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.LoginVO;
import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.FileVO;
import kcc.com.cmm.util.DateUtil;
import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.ve.cmm.VeConstants;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
@ -88,6 +93,9 @@ public class OprtnAplctAnncmMngController {
@Resource(name = "checkFileUtil")
private CheckFileUtil checkFileUtil;
//교육과정신청
@Resource(name = "vEPrcsMIXService")
private VEPrcsMIXService vEPrcsMIXService;
/*
@ -132,7 +140,7 @@ public class OprtnAplctAnncmMngController {
*/
@RequestMapping("oprtnAplctAnncmMngList.do")
public String OprtnAplctAnncmMngList(
VEPrcsDetailVO vEPrcsDetailVO
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
@ -171,6 +179,21 @@ public class OprtnAplctAnncmMngController {
}
/**
* 저작권체험교실 등록 화면
*/
@RequestMapping("oprtnAplctAnncmMngReg.do")
public String oprtnAplctMgrReg( @ModelAttribute("modelVO") VEPrcsDetailVO vEPrcsDetailVO , ModelMap model) throws Exception {
vEPrcsDetailVO.setMode(VeConstants.MODE_CRT);
//온라인차시 리스트
vEPrcsDetailVO.setUseYn("Y");
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_30);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsMIXService.selectPrcsList(vEPrcsDetailVO);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngReg";
}
/**
* 교육과정관리 상세 화면
@ -212,6 +235,43 @@ public class OprtnAplctAnncmMngController {
return "oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngDetail";
}
/**
* 교육과정관리 미리보기 팝업
*/
@RequestMapping("cautionGuidePreView.do")
public String cautionGuidePreView(@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO, ModelMap model)throws Exception{
//날짜 표시형식 변환
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMddHHmm");
SimpleDateFormat simpleStrFormat = new SimpleDateFormat("yyyy년 MM월 dd일");
SimpleDateFormat simpleStrFormatEnd = new SimpleDateFormat("MM월 dd일");
//시작일자 날짜 형식 변환
Date stDate = simpleDateFormat.parse(vEPrcsDetailVO.getStrtPnttm());
String stDay = simpleStrFormat.format(stDate);
//종료일자 날짜 형식 변환
Date edDate = simpleDateFormat.parse(vEPrcsDetailVO.getEndPnttm());
String edDay = simpleStrFormatEnd.format(edDate);
//요일 텍스트 받아오기
String strWeekStart = DateUtil.getWeekText(stDate);
String strWeekEnd = DateUtil.getWeekText(edDate);
vEPrcsDetailVO.setStrtPnttm(stDay + "(" + strWeekStart + ")");
vEPrcsDetailVO.setEndPnttm(edDay + "(" + strWeekEnd + ")");
//현재년도
Date year = new Date();
SimpleDateFormat nowYearFormat = new SimpleDateFormat("yyyy");
String nowYear = nowYearFormat.format(year);
model.addAttribute("nowYear", nowYear);
return "oprtn/cpyrgExprnClsrm/popup/cautionGuidePreView";
}
/**
* 교육과정관리 수정 화면
*/
@ -362,29 +422,7 @@ public class OprtnAplctAnncmMngController {
/**
* 교육과정관리 등록 화면
*/
@RequestMapping("oprtnAplctAnncmMngReg.do")
public String OprtnAplctAnncmMngReg(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
model.addAttribute("loginVO", loginVO);
//로그인 처리====================================
return "oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngReg";
}
/**
* 교육과정관리 등록
@ -411,7 +449,6 @@ public class OprtnAplctAnncmMngController {
}
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
// SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
//로그인 처리====================================
@ -436,19 +473,6 @@ public class OprtnAplctAnncmMngController {
//step2.파일 처리====================================
/* if (loginVO!=null) {
System.out.println(loginVO.getMembId());
System.out.println(loginVO.getMembSeq());
System.out.println(loginVO.getId());
System.out.println(loginVO.getUniqId());
}
if (ssoLoginVO!=null) {
System.out.println(ssoLoginVO.getMembId());
System.out.println(ssoLoginVO.getMembSeq());
//System.out.println(ssoLoginVO.getId());
}*/
//번호 생성 디비 생성해주기
String prcsAplctPrdOrd = prcsGnrService.getNextStringId(); // 고유ID
vEPrcsDetailVO.setAtchFileId(s_scholSealAtchFileId); //학교장직인 첨부파일
@ -475,7 +499,6 @@ public class OprtnAplctAnncmMngController {
System.out.println(vEPrcsDetailVO.getEndPnttm());
vEPrcsDetailVO.setLctrDivCd("30");
// vEPrcsDetailVO.setUseYn("Y");
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsAplctPrdService.insert(vEPrcsDetailVO);

View File

@ -1,21 +1,36 @@
package kcc.ve.oprtn.cpyrgExprnClsrm.oprtnAplctMng.web;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
@ -137,7 +152,9 @@ public class OprtnAplctMngController {
//vEEduAplctVO.setLctrDivCd("30");
vEEduAplctVO.setNotiUserId(user.getUniqId());
vEEduAplctVO.setMenuNo(session.getAttribute("menuNo").toString());
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
//List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
vEEduAplctVO.setLctrDivCd("30");
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectExprnPagingList(vEEduAplctVO);
//List복호화
vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList);
//3.pageing step3
@ -151,19 +168,27 @@ public class OprtnAplctMngController {
/**
* 저작권체험교실 등록 화면
* 교육과정관리 등록 화면
*/
@RequestMapping("oprtnAplctMngReg.do")
public String oprtnAplctMgrReg( @ModelAttribute("modelVO") VEPrcsDetailVO vEPrcsDetailVO , ModelMap model) throws Exception {
vEPrcsDetailVO.setMode(VeConstants.MODE_CRT);
//온라인차시 리스트
vEPrcsDetailVO.setUseYn("Y");
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_30);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsMIXService.selectPrcsList(vEPrcsDetailVO);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "oprtn/cpyrgExprnClsrm/oprtnAplctMngReg";
public String OprtnAplctAnncmMngReg(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
model.addAttribute("loginVO", loginVO);
//로그인 처리====================================
return "oprtn/cpyrgExprnClsrm/oprtnAplctMngReg";
}
/**
@ -408,13 +433,13 @@ String[] header = {
,"보고서제출일"
,"운영시기(월)"
,"선정결과"
,"처리상태"
,"성별"
,"참고사항"
};
String[] order = {
"TotCnt"
"EduAplctOrd"
,"EduSlctAreaCd"
,"ScholDivCd"
,"ScholInsttNm"
@ -438,7 +463,7 @@ String[] order = {
,"RprtSbmtDt"
,"OprtnStrtDt"
,"MdfyRqstYn"
,"AprvlCd"
,"ChrgSexCd"
,""
};
@ -457,7 +482,222 @@ String[] order = {
return modelAndView;
}
/**
* 저작권 체험교실 운영신청 목록 업로드 파일 일괄 다운로드
* @param model
* @return
* @throws Exception
*/
@RequestMapping(value = "oprtnAplctFileAllDownLoad.do")
public void oprtnAplctFileAllDownLoad(@RequestParam Map<String, Object> commandMap
, HttpServletRequest request, HttpServletResponse response) throws Exception {
//파일 SN을 리스트에 담기
List<String> atchFileIdList = new ArrayList<String>();
//파일 SN을 리스트에 담기
List<String> atchFileSnList = new ArrayList<String>();
//split을 이용해 아이디를 각자 배열에 담기
String[] splitIdStr = commandMap.get("atchFileId").toString().split(",");
String[] splitSnStr = commandMap.get("fileSn").toString().split(",");
//zip파일 이름
String orgnZipNm = commandMap.get("orgnZipNm").toString();
//downloadType (A:ID가 여러개고 fileSn이 1개인 경우 || B:ID는 하나이고 fileSn이 여러개인 경우)
String downloadType = commandMap.get("downloadType").toString();
String atchFileId = new String();
String fileSn = new String();
//ID가 여러개고 fileSn이 1개인 경우
if("A".equals(downloadType)) {
fileSn = "0";
for(int i=0; i<splitIdStr.length; i++) {
atchFileIdList.add(splitIdStr[i]);
}
}
//ID는 하나이고 fileSn이 여러개인 경우
if("B".equals(downloadType)) {
atchFileId = splitIdStr[0];
for(int i=0; i<splitSnStr.length; i++) {
atchFileSnList.add(splitSnStr[i]);
}
}
FileVO fileVO = new FileVO();
fileVO.setDownloadType(downloadType);
if("A".equals(downloadType)) {
fileVO.setAtchFileIdList(atchFileIdList);
fileVO.setFileSn(fileSn);
} else if("B".equals(downloadType)) {
fileVO.setAtchFileId(atchFileId);
fileVO.setAtchFileSnList(atchFileSnList);
}
List<FileVO> fvoList = fileService.selectZipFileList(fileVO); // 해당 기능에 맞게 파일 조회
if(fvoList.size() == 0){
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br></h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>&copy; webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
return ;
}
// buffer size
int size = 1024;
byte[] buf = new byte[size];
String outZipNm = fvoList.get(0).getFileStreCours()+File.separator + orgnZipNm;
FileInputStream fis = null;
ZipArchiveOutputStream zos = null;
BufferedInputStream bis = null;
try {
// Zip 파일생성
zos = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(outZipNm)));
for ( FileVO vo : fvoList ){
zos.setEncoding("UTF-8");
//buffer에 해당파일의 stream을 입력한다.
fis = new FileInputStream(vo.getFileStreCours() + "/" + vo.getStreFileNm());
bis = new BufferedInputStream(fis,size);
//zip에 넣을 다음 entry 가져온다.
zos.putArchiveEntry(new ZipArchiveEntry(vo.getOrignlFileNm()));
//준비된 버퍼에서 집출력스트림으로 write 한다.
int len;
while((len = bis.read(buf,0,size)) != -1) zos.write(buf,0,len);
bis.close();
fis.close();
zos.closeArchiveEntry();
}
zos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
if( zos != null ) zos.close();
if( fis != null ) fis.close();
if( bis != null ) bis.close();
}
File uFile = new File(fvoList.get(0).getFileStreCours(), orgnZipNm);
long fSize = uFile.length();
if (fSize > 0) {
String mimetype = "application/x-msdownload";
response.setContentType(mimetype);
setDisposition(orgnZipNm, request, response);
//response.setContentLength(fSize);
BufferedInputStream in = null;
BufferedOutputStream out = null;
try {
in = new BufferedInputStream(new FileInputStream(uFile));
out = new BufferedOutputStream(response.getOutputStream());
FileCopyUtils.copy(in, out);
out.flush();
} catch (Exception ex) {
LOGGER.debug("IGNORED: {}", ex.getMessage());
} finally {
if (in != null) {
try {
in.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
if (out != null) {
try {
out.close();
} catch (Exception ignore) {
LOGGER.debug("IGNORED: {}", ignore.getMessage());
}
}
}
//파일 다운로드 파일 삭제
File delFile = new File(outZipNm);
delFile.delete();
} else {
response.setContentType("application/x-msdownload");
PrintWriter printwriter = response.getWriter();
printwriter.println("<html>");
printwriter.println("<br><br><br><h2>Could not get file name:<br>" + orgnZipNm + "</h2>");
printwriter.println("<br><br><br><center><h3><a href='javascript: history.go(-1)'>Back</a></h3></center>");
printwriter.println("<br><br><br>&copy; webAccess");
printwriter.println("</html>");
printwriter.flush();
printwriter.close();
}
}
private void setDisposition(String filename, HttpServletRequest request, HttpServletResponse response) throws Exception {
String browser = getBrowser(request);
String dispositionPrefix = "attachment; filename=";
String encodedFilename = null;
if (browser.equals("MSIE")) {
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
} else if (browser.equals("Trident")) { // IE11 문자열 깨짐 방지
encodedFilename = URLEncoder.encode(filename, "UTF-8").replaceAll("\\+", "%20");
} else if (browser.equals("Firefox")) {
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
} else if (browser.equals("Opera")) {
encodedFilename = "\"" + new String(filename.getBytes("UTF-8"), "8859_1") + "\"";
} else if (browser.equals("Chrome")) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < filename.length(); i++) {
char c = filename.charAt(i);
if (c > '~') {
sb.append(URLEncoder.encode("" + c, "UTF-8"));
} else {
sb.append(c);
}
}
encodedFilename = sb.toString();
} else {
//throw new RuntimeException("Not supported browser");
throw new IOException("Not supported browser");
}
// response.setHeader("Content-Disposition", dispositionPrefix + encodedFilename); // 파일명에 콤마 포함시 오류
response.setHeader("Content-Disposition", dispositionPrefix + "\"" + encodedFilename + "\"");
if ("Opera".equals(browser)) {
response.setContentType("application/octet-stream;charset=UTF-8");
}
}
private String getBrowser(HttpServletRequest request) {
String header = request.getHeader("User-Agent");
if (header.indexOf("MSIE") > -1) {
return "MSIE";
} else if (header.indexOf("Trident") > -1) { // IE11 문자열 깨짐 방지
return "Trident";
} else if (header.indexOf("Chrome") > -1) {
return "Chrome";
} else if (header.indexOf("Opera") > -1) {
return "Opera";
}
return "Firefox";
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//

View File

@ -1,5 +1,6 @@
package kcc.ve.oprtn.fndtnEnhanceTrn.prcsAplctPrdMng.web;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
@ -11,10 +12,13 @@ import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.fdl.cmmn.exception.FdlException;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.ComDefaultCodeVO;
@ -135,6 +139,7 @@ public class FndthPrcsAplctPrdMngController {
//과정
@Resource(name="cmmUseDAO")
private CmmUseDAO cmmUseDAO;
/*
// 교육신청 서비스단
@ -274,11 +279,8 @@ public class FndthPrcsAplctPrdMngController {
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
//model.addAttribute("paginationInfo", paginationInfo);
// 교육 부분 코드 가져오는 영역
ComDefaultCodeVO codeVO = new ComDefaultCodeVO();
codeVO.setCodeId("VEA001");//기관구분코드
@ -290,8 +292,6 @@ public class FndthPrcsAplctPrdMngController {
vEPrcsDetailVOPrcsCn.setPrcsOrd(vEPrcsDetailVOList.get(0).getPrcsOrd());
model.addAttribute("prcsCn", vEPrcsService.selectDetail(vEPrcsDetailVOPrcsCn).getPrcsCn());
//대상 리스트, 페이징 정보 전달
model.addAttribute("listPrcs", vEPrcsDetailVOList);
}
@ -448,8 +448,18 @@ public class FndthPrcsAplctPrdMngController {
paramVO.setPrcsOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
paramVO.setSbmtYn("Y");
// 검색 - 날짜
paramVO.setSearchSmbtStartDt(vEPrcsDetailVO.getSearchSmbtStartDt());
paramVO.setSearchSmbtEndDt(vEPrcsDetailVO.getSearchSmbtEndDt());
// 검색 - 검색어
paramVO.setSearchStatus(vEPrcsDetailVO.getSearchStatus());
List<VEEduAplctVO> vEPrcsDetailVOList = vEEduMIXService.selectList(paramVO);
vEPrcsDetailVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEPrcsDetailVOList);
vEPrcsDetailVOList = egovCryptoUtil.decryptVeEduAplctList(vEPrcsDetailVOList);
System.out.println("====");
//대상 리스트, 페이징 정보 전달
model.addAttribute("listPrcsAplct", vEPrcsDetailVOList);
@ -515,6 +525,7 @@ public class FndthPrcsAplctPrdMngController {
//대상 리스트, 페이징 정보 전달
model.addAttribute("listPrcs", vEPrcsDetailVOList);
System.out.println("==========");
}
//과정 조회
@ -684,9 +695,6 @@ public class FndthPrcsAplctPrdMngController {
//선택한 강사 데이터 등록 처리
vEAPrcsAplctPrdInstrAsgnmVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEAPrcsAplctPrdInstrAsgnmService.instrInsert(vEAPrcsAplctPrdInstrAsgnmVO);
} catch (Exception ex) {
ex.printStackTrace();
}
@ -698,6 +706,122 @@ public class FndthPrcsAplctPrdMngController {
}
/**
* 기반강화 신청자 상태값 변경
*/
@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn/updateEduAplctAprvlCdAjax.do")
public ModelAndView updateEduAplctAprvlCd(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
System.out.println(vEPrcsDetailVO.getPrcsAplctPrdOrd() +"!!!");
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.udpateAprvlCdEduAplct(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;
}
/**
* @methodName : aprvlCd20
* @author : 이호영
* @date : 2023.09.25
* @description : aprvlCd == 20 교육 승인 경유
* 승인일 경우 vea_aplct_detail_info TB에 넣어줘야함
* @param vEPrcsDetailVO
* @param uniqId
* @throws FdlException
*/
private void aprvlCd20(VEPrcsDetailVO vEPrcsDetailVO, String uniqId) throws FdlException {
for(String id : vEPrcsDetailVO.getEduAplctOrdList()) {
VEPrcsDetailVO vEDetailVO = new VEPrcsDetailVO();
vEDetailVO.setPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
vEDetailVO.setEduAplctOrd(id);
// 데이터가 있는지만 비교하기 위한 구문
VEPrcsDetailVO vEDetail_DVO = vEAPrcsAplctPrdInstrAsgnmService.selectAprvlCdEduAplctDetail(vEDetailVO);
// 데이터가 없으면 Insert
if(vEDetail_DVO == null) {
vEDetailVO.setAplctStateCd("10"); // 신청상태코드 VEA003 10:미이수 20:이수
vEDetailVO.setFrstRegisterId(uniqId);
vEAPrcsAplctPrdInstrAsgnmService.insertAprvlCdEduAplctDetail(vEDetailVO);
}
}
}
/**
* @methodName : aprvlCd30
* @author : 이호영
* @date : 2023.09.25
* @description : aprvlCd == 30 교육 반려
* 승인일 경우 vea_aplct_detail_info TB에 data 삭제
* @param vEPrcsDetailVO
* @param uniqId
* @throws FdlException
*/
private void aprvlCd30(VEPrcsDetailVO vEPrcsDetailVO) {
for(String id : vEPrcsDetailVO.getEduAplctOrdList()) {
VEPrcsDetailVO vEDetailVO = new VEPrcsDetailVO();
vEDetailVO.setPrcsAplctPrdOrd(vEPrcsDetailVO.getPrcsAplctPrdOrd());
vEDetailVO.setEduAplctOrd(id);
// 데이터가 있는지만 비교하기 위한 구문
VEPrcsDetailVO vEDetail_DVO = vEAPrcsAplctPrdInstrAsgnmService.selectAprvlCdEduAplctDetail(vEDetailVO);
// 데이터가 있으면 삭제
if(vEDetail_DVO != null) {
vEDetailVO.setAplctStateCd("30");
vEAPrcsAplctPrdInstrAsgnmService.updateAprvlCdEduAplctDetail(vEDetailVO);
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//

View File

@ -332,7 +332,6 @@ public class FndthPrcsInfoMngController {
public ModelAndView fndthEduPrcsMngMdfyAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
//, RedirectAttributes redirectAttributes
, HttpServletRequest request
) throws Exception {
@ -381,6 +380,51 @@ public class FndthPrcsInfoMngController {
}
/**
* 기반강화연수과정 신청기간 등록
*/
@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn/instrDelAjax.do")
public ModelAndView instrDelAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, 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 {
vEPrcsService.deleteInstr(vEPrcsDetailVO);
modelAndView.addObject("result", "success");
} catch (Exception e) {
modelAndView.addObject("result", "");
}
return modelAndView;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//

View File

@ -623,7 +623,7 @@ public class MainController {
//List<MenuManageJTreeVO> menuResultList = menuCreateManageService.selectMenuListJtree(menuManageVO) ;
menuManageVO.setSiteId(siteId);
List<MenuManageJTreeVO> menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO) ;
System.out.println("================================");
List<String> menuTwoExist = new ArrayList<>(); //2뎁스의 하위 매뉴가 있는것 조회
HashSet<String> underMenuEmpty = new HashSet<String>(); //2뎁스의 하위매뉴 없는것 조회
for(MenuManageJTreeVO menuManage : menuResultList){
@ -1355,6 +1355,8 @@ public class MainController {
.replace("addFcltMgr", "fcltMgrList")
.replace("mainzoneModify", "mainzoneList");
menuUrl = strUrl;
System.out.println("strUrl :: "+ strUrl);
}
@ -1465,6 +1467,21 @@ public class MainController {
//현재 메뉴
setViewMenu(request , commandMap , tempMenuManageVO , resultVO , menuManageVO );
String pageUrl = request.getRequestURI().replaceAll(request.getContextPath(), "");
// System.out.println("pageUri :: "+ pageUri.substring(0, pageUri.lastIndexOf("/")));
String pageUri = pageUrl.substring(0, pageUrl.lastIndexOf("/"));
model.addAttribute("pageUri", pageUri);
String pageUriLast = pageUrl.substring(pageUrl.lastIndexOf("/"), pageUrl.length());
model.addAttribute("pageUriLast", pageUriLast);
System.out.println("pageUri :: "+ pageUri);
System.out.println("pageUri :: "+ pageUri);
System.out.println("pageUri :: "+ pageUri);
System.out.println("pageUriLast :: "+ pageUriLast);
//메뉴번호 넘겨주기
model.addAttribute("menuNo", menuManageVO.getMenuNo());
@ -1533,6 +1550,7 @@ public class MainController {
menuManageVO.setAuthorCode(auth);
menuManageVO.setMenuUserType(menuManageVO.getMenuUserType());
List<MenuManageJTreeVO> menuResultList = menuCreateManageService.selectMenuListJtreeWeb(menuManageVO) ;
System.out.println("======================== menuResultList");
for(MenuManageJTreeVO tempResultVo : menuResultList){ //1 뎁스
if(tempResultVo.getDepths().equals("1")){
showOneDepthMenu.add(tempResultVo);
@ -1620,6 +1638,25 @@ public class MainController {
model.addAttribute("menuCurrentResultList", menuCurrentResultList);
model.addAttribute("menuLeftResultList", menuLeftResultList);
for(MenuManageJTreeVO treeVO : menuResultList) {
if(!"1".equals(treeVO.getDepths())) {
continue;
}
for(MenuManageJTreeVO treeLowVO : menuResultList) {
if(treeVO.getMenuNo().equals(treeLowVO.getUpperMenuId())) {
treeVO.setUrl(treeLowVO.getUrl());
break;
}
}
}
model.addAttribute("menuResultList", menuResultList);
// 아래 처리중 중간네비 메뉴 조회를 위해 with recurseive 중첩절을 쓰는 쿼리가 있음으로, 큐브리드 쿼리화 필요

View File

@ -2891,7 +2891,6 @@
<property name="fillChar" value="0" />
</bean>
<!-- 18.일별가능시수설정 vea_dt_psbl_tm_qntty_stng -->
<bean name="dtPsblTmQnttyGnrService" class="egovframework.rte.fdl.idgnr.impl.EgovTableIdGnrServiceImpl" destroy-method="destroy">
<property name="dataSource" ref="dataSource" />

View File

@ -112,7 +112,7 @@
<!-- 강의 NOTI 관리 -->
<sqlMap resource="egovframework/sqlmap/ve/asgnm/VEAsgnm_NOTI_SQL_Cubrid.xml"/>
<!-- 강의 NOTI 관리 -->
<!-- 조건부기소유예관리 대상자 관리 -->
<sqlMap resource="egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Cubrid.xml"/>

View File

@ -53,6 +53,7 @@
<!-- 교육신청복합쿼리 -->
<sqlMap resource="egovframework/sqlmap/ve/prcs/VEAPrcsAplctPrdInstrAsgnm_SQL_Tibero.xml"/>
<sqlMap resource="egovframework/sqlmap/ve/edu/VEEdu_MIX_SQL_Tibero.xml"/>
@ -111,6 +112,8 @@
<!-- 강의 NOTI 관리 -->
<sqlMap resource="egovframework/sqlmap/ve/asgnm/VEAsgnm_NOTI_SQL_Tibero.xml"/>
<!-- 조건부기소유예관리 대상자 관리 -->
<sqlMap resource="egovframework/sqlmap/ve/cndtn/cndtnTrgtInfoMng_SQL_Tibero.xml"/>
<!-- 청소년 추가 -->
<sqlMap resource="egovframework/sqlmap/ve/tngr/VEADtPsblTmQnttyStng_SQL_Tibero.xml"/> <!-- 일별가능시수설정 -->
<sqlMap resource="egovframework/sqlmap/ve/tngr/VEALctrYrStng_SQL_Tibero.xml"/> <!-- 강의년도설정 -->

View File

@ -927,4 +927,16 @@
)
</insert>
<select id="userManageDAO.selectOffeduUserList" parameterClass="userVO" resultClass="userVO">
/* 임시.*NOT_SQL_LOG.* userManageDAO.selectOffeduUser */
SELECT COUNT(mber_id) OVER() AS totCnt,
a.mber_id AS mberId
FROM lettngnrlmber a
WHERE 1=1
<isNotEmpty property="searchWord" prepend="AND">
a.mber_id LIKE '%'||#searchWord#||'%'
</isNotEmpty>
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
</sqlMap>

View File

@ -33,7 +33,7 @@
<!-- 패널티 등록 C -->
<insert id="VEAsgnmNotiDAO.insert" parameterClass="VEAsgnmNotiVO">
MERGE INTO <include refid="VEAsgnmNotiDAO.table_name"/> T1 USING DB_ROOT
<!-- MERGE INTO <include refid="VEAsgnmNotiDAO.table_name"/> T1 USING DB_ROOT
ON (T1.TBL_UNIQ_ORD = #tblUniqOrd# AND T1.FRST_REGISTER_ID = #frstRegisterId# AND T1.MENU_NO = #menuNo# )
WHEN MATCHED THEN
UPDATE SET
@ -48,7 +48,33 @@
#frstRegisterId#,
#menuNo#,
#urlPath#
) -->
MERGE INTO <include refid="VEAsgnmNotiDAO.table_name"/> T1
USING (SELECT
#tblUniqOrd# AS tbl_uniq_ord,
#frstRegisterId# AS frst_register_id,
#menuNo# AS menu_no,
#urlPath# AS url_path FROM DUAL) T2
ON (T1.tbl_uniq_ord = T2.tbl_uniq_ord
AND T1.frst_register_id = T2.frst_register_id
AND T1.menu_no = T2.menu_no)
WHEN MATCHED THEN
UPDATE SET
frst_regist_pnttm = SYSDATE,
url_path = T2.url_path
WHEN NOT MATCHED THEN
INSERT(
<include refid="VEAsgnmNotiDAO.column_name"/>
)VALUES (
T2.TBL_UNIQ_ORD,
SYSDATE,
T2.FRST_REGISTER_ID,
T2.MENU_NO,
T2.URL_PATH
)
</insert>
</sqlMap>

View File

@ -0,0 +1,164 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<!-- 찾교 과정 테이블 -->
<sqlMap namespace="CndtnTrgtInfoMng">
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="CndtnPrcsInfoMngVO" type="kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO"/>
<!-- 공통 테이블 명 -->
<sql id="CndtnTrgtInfoMngDAO.table_name">
vea_sspn_idmt_trgt
</sql>
<!-- 저장용 공통 컬럼 명 -->
<sql id="CndtnTrgtInfoMngDAO.column_name">
sspn_idtmt_trgt_ord
, user_id
, edu_state_cd
, frst_regist_pnttm
, frst_register_id
, last_updt_pnttm
, last_updusr_id
, trgt_nm
, clphone
, d_birth
, addr
, addr_detail
, post
, email
, req_pnttm
, vnt_nmbr
, cmptnt_athrt
, sex
, req_nmbr
, prsctr_nm
, req_state_cd
</sql>
<!-- 조회용 공통 컬럼 명 -->
<sql id="CndtnTrgtInfoMngDAO.select_column_name">
a.sspn_idtmt_trgt_ord AS sspnIdtmtTrgtOrd
, a.user_id AS userId
, a.edu_state_cd AS eduStateCd
, a.frst_regist_pnttm AS frstRegistPnttm
, a.frst_register_id AS frstRegisterId
, a.last_updt_pnttm AS lastUpdtPnttm
, a.last_updusr_id AS lastUpdusrId
, a.trgt_nm AS trgtNm
, a.clphone AS clphone
, a.d_birth AS dBirth
, a.addr AS addr
, a.addr_detail AS addrDetail
, a.post AS post
, a.email AS email
, a.req_pnttm AS reqPnttm
, a.vnt_nmbr AS vntNmbr
, a.cmptnt_athrt AS cmptntAthrt
, a.sex AS sex
, a.req_nmbr AS reqNmbr
, a.prsctr_nm AS prsctrNm
, a.req_state_cd AS reqStateCd
</sql>
<!-- 등록 C -->
<insert id="cndtnTrgtInfoMngDAO.insert" parameterClass="CndtnPrcsInfoMngVO">
INSERT INTO <include refid="CndtnTrgtInfoMngDAO.table_name"/> (
<include refid="CndtnTrgtInfoMngDAO.column_name"/>
)VALUES(
#sspnIdtmtTrgtOrd#
, #userId#
, #eduStateCd#
, now()
, #frstRegisterId#
, #lastUpdtPnttm#
, #lastUpdusrId#
, #trgtNm#
, #clphone#
, #dBirth#
, #addr#
, #addrDetail#
, #post#
, #email#
, #reqPnttm#
, #vntNmbr#
, #cmptntAthrt#
, #sex#
, #reqNmbr#
, #prsctrNm#
, #reqStateCd#
)
</insert>
<select id="cndtnTrgtInfoMngDAO.selectDetail" parameterClass="CndtnPrcsInfoMngVO" resultClass="CndtnPrcsInfoMngVO">
SELECT
<include refid="CndtnTrgtInfoMngDAO.select_column_name"/>
FROM
<include refid="CndtnTrgtInfoMngDAO.table_name"/> a
WHERE
1=1
AND sspn_idtmt_trgt_ord = #sspnIdtmtTrgtOrd#
</select>
<!-- 강사 수정 C -->
<update id="cndtnTrgtInfoMngDAO.update" parameterClass="CndtnPrcsInfoMngVO">
/* cndtnTrgtInfoMngDAO.update */
UPDATE
<include refid="CndtnTrgtInfoMngDAO.table_name"/>
SET
user_id = #userId#
, edu_state_cd = #eduStateCd#
, last_updt_pnttm = SYSDATE
, last_updusr_id = #lastUpdusrId#
, trgt_nm = #trgtNm#
, clphone = #clphone#
, d_birth = #dBirth#
, addr = #addr#
, addr_detail = #addrDetail#
, post = #post#
, email = #email#
, req_pnttm = #reqPnttm#
, vnt_nmbr = #vntNmbr#
, cmptnt_athrt = #cmptntAthrt#
, sex = #sex#
, req_nmbr = #reqNmbr#
, prsctr_nm = #prsctrNm#
, req_state_cd = #reqStateCd#
WHERE
sspn_idtmt_trgt_ord = #sspnIdtmtTrgtOrd#
</update>
<!-- 기소유예 대상자 R -->
<select id="cndtnTrgtInfoMngDAO.selectPagingList" parameterClass="CndtnPrcsInfoMngVO" resultClass="CndtnPrcsInfoMngVO">
SELECT
COUNT(1) OVER() AS totCnt,
<include refid="CndtnTrgtInfoMngDAO.select_column_name"/>
FROM
<include refid="CndtnTrgtInfoMngDAO.table_name"/> a
WHERE
1=1
<isNotEmpty property="searchQuery">
$searchQuery$
</isNotEmpty>
<isNotEmpty property="searchSmbtStartDt">
AND TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchSmbtStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchSmbtEndDt">
AND TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYYMMDD') <![CDATA[ <= ]]> REPLACE(#searchSmbtEndDt#, '.' , '')
</isNotEmpty>
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
</sqlMap>

View File

@ -181,10 +181,10 @@
#email#,
#eduPlace#,
#sbmtYn#,
IF(#sbmtYn# = 'Y', SYSDATE, NULL),
CASE WHEN #sbmtYn# = 'Y' THEN SYSDATE ELSE NULL END,
#aprvlCd#,
IF(#aprvlCd# IS NOT NULL, SYSDATE, NULL),
CASE WHEN #aprvlCd# IS NOT NULL THEN SYSDATE ELSE NULL END,
#aprvlCn#,
#insttNm#,
#insttDivCd#,
@ -240,6 +240,119 @@
)
</insert>
<!-- 강사 등록 C -->
<insert id="VEEduAplctDAO.insertVeEduAplct" parameterClass="VEEduAplctVO">
INSERT INTO <include refid="VEEduAplctDAO.table_name"/> (
EDU_APLCT_ORD,
LCTR_DIV_CD,
USER_ID,
PRCS_ORD,
SBMT_YN,
SBMT_PNTTM,
APRVL_CD,
APRVL_PNTTM,
APRVL_CN,
FRST_REGIST_PNTTM,
FRST_REGISTER_ID,
USE_YN
)VALUES(
#eduAplctOrd#,
#lctrDivCd#,
#userId#,
#prcsOrd#,
#sbmtYn#,
SYSDATE,
#aprvlCd#,
SYSDATE,
#aprvlCn#,
SYSDATE,
#frstRegisterId#,
'Y'
)
</insert>
<!-- 강사 등록 C -->
<select id="VEEduAplctDAO.findByAprvlCd" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
SELECT
<include refid="VEEduAplctDAO.select_column_name"/>
FROM ve_prcs_aplct_prd vpap
LEFT JOIN <include refid="VEEduAplctDAO.table_name"/> a
ON a.prcs_ord = #prcsAplctPrdOrd#
WHERE a.lctr_div_cd =#lctrDivCd#
AND a.user_id = #userId#
GROUP BY
A.EDU_APLCT_ORD ,
A.LCTR_DIV_CD ,
A.USER_ID ,
A.PRCS_ORD ,
A.EDU_SLCT_CD ,
A.EDU_SLCT_AREA_CD ,
A.SCHOL_INSTT_NM ,
A.SCHOL_DIV_CD ,
A.STNDRD_SCHOL_CD ,
A.ISLTN_SCHOL_YN ,
A.ADDR ,
A.ADDR_DETAIL ,
A.CHRG_NM ,
A.CLPHONE ,
A.PHONE ,
A.EMAIL ,
A.EDU_PLACE ,
A.SBMT_YN ,
TO_CHAR(A.SBMT_PNTTM, 'YY-MM-DD') ,
A.APRVL_CD ,
TO_CHAR(A.APRVL_PNTTM, 'YY-MM-DD') ,
A.APRVL_CN ,
A.INSTT_NM ,
A.INSTT_DIV_CD ,
A.HOPE_SBJCT ,
A.RQST_CN ,
A.POST ,
A.JOB_NM ,
A.MDFY_RQST_YN ,
A.EQPMN_CN ,
A.BLNG ,
A.DPRTM ,
A.FULL_NAME ,
A.PSTN ,
A.PRPS ,
a.txt_msg_cn ,
a.e_mail_cn ,
a.prvt_memo_cn ,
TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYY-MM-DD') ,
A.FRST_REGISTER_ID ,
TO_CHAR(A.LAST_UPDT_PNTTM, 'YYYY-MM-DD') ,
A.LAST_UPDUSR_ID,
A.SCHOL_SEAL_ATCH_FILE_ID ,
A.EDU_TRGT ,
A.EDU_PRSNL ,
A.EDU_CN ,
A.STRT_OPRTN_DT ,
A.END_OPRTN_DT ,
A.RPRT_SBMT_DT ,
A.TRANS_ATCH_FILE_ID ,
A.USE_YN ,
A.MNG_NMBR_YR ,
A.MNG_NMBR_SBJCT ,
A.MNG_NMBR_ORD ,
A.EDU_MD ,
A.OATH_ATCH_FILE_ID ,
A.PLAN_ATCH_FILE_ID ,
A.Attend_ATCH_FILE_ID ,
A.PHT_ATCH_FILE_ID ,
A.IS_WAIT ,
A.CORPS_EDU ,
A.BROADROOM_EDU
</select>
<!-- 강사 정보 R -->
<select id="VEEduAplctDAO.selectDetail" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* VEEduAplctDAO.selectDetail */
@ -275,6 +388,7 @@
REMOTE_YN AS remoteYn,
CLS_CMBT_YN clsCmbtYn,
PPUL_DCLN_YN AS ppulDclnYn
, TO_CHAR(A.SBMT_PNTTM, 'YYYY-MM-DD HH24:MI:ss') AS sbmtPnttmDetail
,C.aprvl_cd AS exprnAprvlCd
, C.orgnl_rslt_atch_file_id AS orgnlRsltAtchFileId
, C.cpy_rslt_atch_file_id AS cpyRsltAtchFileId
@ -579,7 +693,7 @@
</isNotEmpty>
<isNotEmpty property="sbmtYn">
, SBMT_YN = #sbmtYn#
, SBMT_PNTTM = IF(SBMT_PNTTM is null, SYSDATE, SBMT_PNTTM)
, SBMT_PNTTM = CASE WHEN SBMT_PNTTM IS NULL THEN SYSDATE ELSE SBMT_PNTTM END
</isNotEmpty>
<isNotEmpty property="aprvlCd">
, APRVL_CD = #aprvlCd#

View File

@ -57,8 +57,7 @@
<sql id="VEEduChasiDAO.select_column_name">
A.EDU_APLCT_ORD AS eduAplctOrd,
A.EDU_CHASI_ORD AS eduChasiOrd,
IF(A.EDU_HOPE_DT is not null and A.EDU_HOPE_DT != '', DATE_FORMAT(A.EDU_HOPE_DT,'%Y.%m.%d'), '') AS eduHopeDt,
CASE WHEN A.EDU_HOPE_DT IS NOT NULL AND A.EDU_HOPE_DT != '' THEN TO_CHAR(TO_DATE(a.EDU_HOPE_DT, 'YYYYMMDD'), 'YYYY.MM.dd') ELSE '' END AS eduHopeDt,
A.STRT_TM AS strtTm,
A.END_TM AS endTm,
A.LRN_TM AS lrnTm,
@ -67,9 +66,9 @@
A.PRSNL AS prsnl,
A.MEMO_CN AS memoCn,
DATE_FORMAT(A.FRST_REGIST_PNTTM,'%Y-%m-%d') AS frstRegistPnttm,
TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYY-MM-dd') AS frstRegistPnttm,
A.FRST_REGISTER_ID AS frstRegisterId,
DATE_FORMAT(A.LAST_UPDT_PNTTM,'%Y-%m-%d') AS lastUpdtPnttm,
TO_CHAR(A.LAST_UPDT_PNTTM, 'YYYY-MM-dd') AS frstRegistPnttm,
A.LAST_UPDUSR_ID AS lastUpdusrId,
A.LRN_SBJCT AS lrnSbjct,
@ -244,6 +243,7 @@
<!-- 강사 정보 L -->
<select id="VEEduChasiDAO.selectList" parameterClass="VEEduChasiVO" resultClass="VEEduChasiVO">
/* 임시.*NOT_SQL_LOG.* VEEduChasiDAO.selectList */
SELECT
<include refid="VEEduChasiDAO.select_column_name"/>
FROM <include refid="VEEduChasiDAO.join_table_name"/>

View File

@ -50,9 +50,9 @@
,#oprtnStrtDt#
,#oprtnEndDt#
,#oprtnFileId#
,NOW()
,SYSDATE
,#frstRegisterId#
,NOW()
,SYSDATE
,#lastUpdusrId#
,#islandsYn#
,#remoteYn#
@ -80,7 +80,7 @@
,OPRTN_STRT_DT = #oprtnStrtDt#
,OPRTN_END_DT = #oprtnEndDt#
,OPRTN_FILE_ID = #oprtnFileId#
,LAST_UPDT_PNTTM = NOW()
,LAST_UPDT_PNTTM = SYSDATE
,LAST_UPDUSR_ID = #lastUpdusrId#
,ISLANDS_YN = #islandsYn#
,REMOTE_YN = #remoteYn#

View File

@ -79,18 +79,18 @@
a.email AS email,
a.edu_place AS eduPlace,
a.sbmt_yn AS sbmtYn,
a.sbmt_pnttm AS sbmtPnttm,
TO_CHAR(a.sbmt_pnttm, 'YYYY-MM-DD') AS sbmtPnttm,
a.aprvl_cd AS aprvlCd,
a.aprvl_pnttm AS aprvlPnttm,
TO_CHAR(a.aprvl_pnttm, 'YYYY-MM-DD') AS aprvlPnttm,
a.aprvl_cn AS aprvlCn,
a.instt_nm AS insttNm,
a.instt_div_cd AS insttDivCd,
a.hope_sbjct AS hopeSbjct,
a.rqst_cn AS rqstCn,
DATE_FORMAT(a.frst_regist_pnttm,'%Y-%m-%d') AS frstRegistPnttm,
TO_CHAR(a.frst_regist_pnttm,'YYYY-MM-DD') AS frstRegistPnttm,
a.frst_register_id AS frstRegisterId,
DATE_FORMAT(a.last_updt_pnttm,'%Y-%m-%d') AS lastUpdtPnttm,
TO_CHAR(a.last_updt_pnttm,'YYYY-MM-DD') AS lastUpdtPnttm,
a.last_updusr_id AS lastUpdusrId,
a.schol_seal_atch_file_id AS scholSealAtchFileId,
@ -100,7 +100,8 @@
a.strt_oprtn_dt AS strtOprtnDt,
a.end_oprtn_dt AS endOprtnDt,
a.rprt_sbmt_dt AS rprtSbmtDt,
a.trans_atch_file_id AS transAtchFileId
a.trans_atch_file_id AS transAtchFileId,
a.use_yn AS useYn
</sql>
@ -120,12 +121,23 @@
<select id="VEEduMIXDAO.selectList" 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"/>
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
WHERE
1=1
<isNotEmpty property="prcsOrd">
AND a.prcs_ord=#prcsOrd#
</isNotEmpty>
@ -133,11 +145,25 @@
AND a.sbmt_yn=#sbmtYn#
</isNotEmpty>
<isNotEmpty property="searchSelStatus">
AND a.aprvl_cd = #searchSelStatus#
</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>
<!-- 강사 정보 L page -->
<select id="VEEduMIXDAO.selectPagingList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* VEEduMIXDAO.selectPagingList */
/* 임시.*NOT_SQL_LOG.* VEEduMIXDAO.selectPagingList */
SELECT
COUNT(1) OVER() AS totCnt
, ROWNUM AS rowNo
@ -263,6 +289,12 @@
FROM ve_prcs_aplct_prd S3
WHERE S3.use_YN = 'Y' AND S3.frst_regist_pnttm = (SELECT MAX(frst_regist_pnttm) FROM ve_prcs_aplct_prd)
) AS endPnttm
, (
SELECT
S4.end_pnttm
FROM ve_prcs_aplct_prd S4
WHERE S4.prcs_aplct_prd_ord = A.prcs_ord
) AS prcsEndPnttm
, (
SELECT
COUNT(1)
@ -2580,9 +2612,10 @@
</select>
<select id="VEEduMIXDAO.selectOprtnExcelList" parameterClass="VEEduAplctVO" resultClass="VEEduExcelVO">
/* VEEduMIXDAO.selectOprtnExcelList */
/* 임시.*NOT_SQL_LOG.* VEEduMIXDAO.selectOprtnExcelList */
SELECT
COUNT(1) OVER() AS totCnt
, ROW_NUMBER() OVER(ORDER BY A.EDU_APLCT_ORD DESC) AS eduAplctOrd
, A.EDU_SLCT_AREA_CD AS eduSlctAreaCd
, A.SCHOL_DIV_CD AS scholDivCd
, A.SCHOL_INSTT_NM AS scholInsttNm
@ -2594,7 +2627,8 @@
, A.addr||' '||A.addr_detail AS addr
, E.chrg_mjr AS chrgMjr
<!-- , E.d_birth AS birth -->
, DATE_FORMAT(STR_TO_DATE(E.d_birth,'%Y%m%d') ,'%Y-%m-%d') AS birth
<!-- , DATE_FORMAT(STR_TO_DATE(E.d_birth,'%Y%m%d') ,'%Y-%m-%d') AS birth -->
,TO_CHAR(TO_DATE(E.d_birth,'YYYYMMdd') ,'YYYY-MM-dd') AS birth
, E.exprn_clsrn_cd AS exprnClsrnCd
, E.exprn_clsrn_year AS exprnClsrnYear
@ -2605,10 +2639,12 @@
, E.TRGT_PRSNL AS trgtPrsnl
, TO_CHAR(E.RPRT_SBMT,'YYYY-MM-DD') AS rprtSbmtDt
, DATE_FORMAT(STR_TO_DATE(E.OPRTN_STRT_DT,'%Y%m%d') ,'%Y-%m-%d') || '~' || DATE_FORMAT(STR_TO_DATE(E.OPRTN_END_DT,'%Y%m%d') ,'%Y-%m-%d')
<!-- , DATE_FORMAT(STR_TO_DATE(E.OPRTN_STRT_DT,'%Y%m%d') ,'%Y-%m-%d') || '~' || DATE_FORMAT(STR_TO_DATE(E.OPRTN_END_DT,'%Y%m%d') ,'%Y-%m-%d') -->
, TO_CHAR(TO_DATE(E.OPRTN_STRT_DT,'YYYYMMdd') ,'YYYY-MM-dd') || '~' || TO_CHAR(TO_DATE(E.OPRTN_END_DT,'YYYYMMdd') ,'YYYY-MM-dd')
AS oprtnStrtDt
, A.MDFY_RQST_YN AS mdfyRqstYn
, DECODE(E.chrg_sex_cd, 'M', '남성', 'F', '여성') AS chrgSexCd
, DECODE(A.aprvl_cd, '10', '운영신청', '70', '수정요청', '80', '수정완료', '60', '운영확정', '90', '운영미확정') AS aprvlCd
FROM
VE_EDU_APLCT A
LEFT OUTER JOIN
@ -2640,9 +2676,9 @@
(
SELECT
EDU_APLCT_ORD
, EDU_CHASI_ORD
, MAX(EDU_CHASI_ORD)
, SUM(lrn_tm) AS lrn_tm
, MIN(REPLACE(IF(EDU_HOPE_DT IS NULL OR EDU_HOPE_DT = '', NULL, EDU_HOPE_DT), '.', '')) AS EDU_HOPE_DT
, MIN(REPLACE(CASE WHEN EDU_HOPE_DT IS NULL OR EDU_HOPE_DT = '' THEN NULL ELSE EDU_HOPE_DT END, '.', '')) AS EDU_HOPE_DT
FROM
VE_EDU_CHASI
GROUP BY EDU_APLCT_ORD
@ -2652,15 +2688,13 @@
ON A.USER_ID = D.USER_ID
LEFT OUTER JOIN VE_EDU_OPRTN E
ON A.EDU_APLCT_ORD = E.EDU_APLCT_ORD
WHERE 1=1
AND NVL(A.USE_YN, 'Y') <![CDATA[ <> ]]> 'N'
WHERE NVL(A.USE_YN, 'Y') <![CDATA[ <> ]]> 'N'
AND A.SBMT_YN = 'Y'
AND A.LCTR_DIV_CD = #lctrDivCd#
<isNotEmpty property="aprvlCd">
AND A.APRVL_CD=#aprvlCd#
</isNotEmpty>
ORDER BY 1=1
, A.EDU_APLCT_ORD DESC
ORDER BY A.EDU_APLCT_ORD DESC
</select>
<insert id="VEEduMIXDAO.insertExprnClsrmEndInfo" parameterClass="VEEduAplctVO">
@ -2693,9 +2727,9 @@ VALUES
, #evdncPhtAtchFileId#
, #rmtTrnAtchFileId#
, NOW()
, SYSDATE
, #frstRegisterId#
, NOW()
, SYSDATE
, #lastUpdusrId#
)
</insert>
@ -3384,7 +3418,7 @@ VALUES
SET
$fileType$ = null,
last_updusr_id = #lastUpdusrId#,
last_updt_pnttm = now()
last_updt_pnttm = SYSDATE
WHERE
edu_aplct_ord = #eduAplctOrd#
</insert>
@ -3407,8 +3441,100 @@ VALUES
rmt_trn_atch_file_id = #rmtTrnAtchFileId#,
</isNotEmpty>
last_updusr_id = #lastUpdusrId#,
last_updt_pnttm = now()
last_updt_pnttm = SYSDATE
WHERE
edu_aplct_ord = #eduAplctOrd#
</insert>
<select id="VEEduMIXDAO.selectExprnPagingList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* 임시.*NOT_SQL_LOG.* VEEduMIXDAO.selectExprnPagingList */
SELECT
COUNT(1) OVER() AS totCnt,
ROWNUM AS rowNo,
A.edu_aplct_ord AS eduAplctOrd,
A.user_id AS userId,
A.prcs_ord AS prcsOrd,
A.aprvl_cd AS aprvlCd,
A.edu_slct_area_cd AS eduSlctAreaCd,
A.schol_instt_nm AS scholInsttNm,
A.chrg_nm AS chrgNm,
TO_CHAR(A.sbmt_pnttm, 'YYYY.MM.DD') AS sbmtPnttm,
D.unfth_yn AS unfthYn,
(
SELECT COUNT(1)
FROM ve_new_noti e
WHERE ((A.edu_aplct_ord = e.tbl_uniq_ord OR B.edu_aplct_ord = e.tbl_uniq_ord) OR B.edu_chasi_ord = e.tbl_uniq_ord)
AND e.menu_no = #menuNo#
AND e.frst_register_id = #notiUserId#
)
AS notiCnt,
C.CHRG_MJR AS chrgMjr
FROM ve_edu_aplct A
LEFT OUTER JOIN (
SELECT
EDU_APLCT_ORD
,EDU_CHASI_ORD
,SUM(lrn_tm) AS lrn_tm
,MIN(
REPLACE(
CASE WHEN EDU_HOPE_DT IS NULL OR EDU_HOPE_DT = '' THEN NULL ELSE EDU_HOPE_DT END
, '.'
, ''
)
) AS EDU_HOPE_DT
FROM VE_EDU_CHASI
GROUP BY EDU_APLCT_ORD, EDU_CHASI_ORD
) B
ON A.edu_aplct_ord = B.edu_aplct_ord
LEFT OUTER JOIN VE_EDU_OPRTN C
ON A.EDU_APLCT_ORD = C.EDU_APLCT_ORD
LEFT JOIN (
SELECT MAX(dd.edu_aplct_ord) AS edu_aplct_ord
FROM ve_edu_aplct dd
JOIN ve_edu_scltn_teacher ddd
ON dd.edu_aplct_ord = ddd.edu_aplct_ord
GROUP BY dd.FRST_REGISTER_ID
) dddd
ON a.EDU_APLCT_ORD = dddd.EDU_APLCT_ORD
LEFT JOIN ve_edu_scltn_teacher D
ON D.EDU_APLCT_ORD = dddd.EDU_APLCT_ORD
WHERE 1=1
<isNotEmpty property="lctrDivCd" prepend="AND">
A.lctr_div_cd = #lctrDivCd#
</isNotEmpty>
<isNotEmpty property="searchYear">
AND TO_CHAR(A.SBMT_PNTTM,'YYYY') = #searchYear#
</isNotEmpty>
<isNotEmpty property="eduSlctAreaCd">
AND A.EDU_SLCT_AREA_CD = #eduSlctAreaCd#
</isNotEmpty>
<isEmpty property="searchCondition">
<isNotEmpty property="searchKeyword">
AND (
A.SCHOL_INSTT_NM LIKE '%' || #searchKeyword# '%' OR
A.INSTT_NM LIKE '%' || #searchKeyword# || '%'
)
</isNotEmpty>
</isEmpty>
<isNotEmpty property="searchCondition">
<isEqual property="searchCondition" compareValue="1">
AND A.SCHOL_INSTT_NM LIKE '%' || #searchKeyword# || '%'
</isEqual>
<isEqual property="searchCondition" compareValue="2">
AND A.CHRG_NM LIKE '%' || #searchKeyword# || '%'
</isEqual>
</isNotEmpty>
<isNotEmpty property="searchScholDivCdArr">
<iterate open="(" close=")" conjunction="," property="searchScholDivCdArr" prepend="AND A.SCHOL_DIV_CD IN " > #searchScholDivCdArr[]#</iterate>
</isNotEmpty>
<isNotEmpty property="searchCpyAprvlCd">
AND A.APRVL_CD = #searchCpyAprvlCd#
</isNotEmpty>
ORDER BY 1
<isNotEmpty property="orderByQuery">
, $orderByQuery$
</isNotEmpty>
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
</sqlMap>

View File

@ -0,0 +1,149 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<!-- 찾교 과정 테이블 -->
<sqlMap namespace="VEAPrcsAplctPrdInstrAsgnm">
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="VEAPrcsAplctPrdInstrAsgnmVO" type="kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmVO"/>
<typeAlias alias="VEPrcsDetailVO" type="kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO"/>
<!-- 공통 테이블 명 -->
<sql id="VEAPrcsAplctPrdInstrAsgnmDAO.table_name">
vea_prcs_aplct_prd_instr_asgnm
</sql>
<!-- 저장용 공통 컬럼 명 -->
<sql id="VEAPrcsAplctPrdInstrAsgnmDAO.column_name">
prcs_aplct_prd_ord
, user_id
, lctr_plan_atch_file_id
, doc_atch_file_id
, asgnm_aprvl_cd
, asgnm_aprvl_pnttm
, asgnm_aprvl_id
, rmrks
, frst_regist_pnttm
, frst_register_id
, last_updt_pnttm
, last_updusr_id
</sql>
<!-- 조회용 공통 컬럼 명 -->
<sql id="VEAPrcsAplctPrdInstrAsgnmDAO.select_column_name">
a.prcs_aplct_prd_ord as prcsAplctPrdOrd
, a.user_id as userId
, a.lctr_plan_atch_file_id as lctrPlanAtchFileId
, a.doc_atch_file_id as docAtchFileId
, a.asgnm_aprvl_cd as asgnmAprvlCd
, a.asgnm_aprvl_pnttm as asgnmAprvlPnttm
, a.asgnm_aprvl_id as asgnmAprvlId
, a.rmrks as rmrks
, a.frst_regist_pnttm as frstRegistPnttm
, a.frst_register_id as frstRegisterId
, a.last_updt_pnttm as lastUpdtPnttm
, a.last_updusr_id as lastUpdusrId
</sql>
<!-- 강사 배정 등록 -->
<insert id="VEAPrcsAplctPrdInstrAsgnmDAO.instrInsert" parameterClass="VEAPrcsAplctPrdInstrAsgnmVO">
INSERT INTO <include refid="VEAPrcsAplctPrdInstrAsgnmDAO.table_name"/> (
<include refid="VEAPrcsAplctPrdInstrAsgnmDAO.column_name"/>
)VALUES(
#prcsAplctPrdOrd#
, #userId#
, #lctrPlanAtchFileId#
, #docAtchFileId#
, #asgnmAprvlCd#
, SYSDATE
, #asgnmAprvlId#
, #rmrks#
, SYSDATE
, #frstRegisterId#
, SYSDATE
, #lastUpdusrId#
)
</insert>
<!-- 강사 배정 등록 -->
<insert id="VEAPrcsAplctPrdInstrAsgnmDAO.insertAprvlCdEduAplctDetail" parameterClass="VEPrcsDetailVO">
/* VEAPrcsAplctPrdInstrAsgnmDAO.insertAprvlCdEduAplctDetail */
INSERT INTO vea_aplct_detail_info
(
prcs_aplct_prd_ord
, edu_aplct_ord
, aplct_state_cd
, frst_regist_pnttm
, frst_register_id
)
VALUES
(
#prcsAplctPrdOrd#
, #eduAplctOrd#
, #aplctStateCd#
, SYSDATE
, #frstRegisterId#
)
</insert>
<select id="VEAPrcsAplctPrdInstrAsgnmDAO.selectAprvlCdEduAplctDetail" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
select
prcs_aplct_prd_ord as prcsAplctPrdOrd
, edu_aplct_ord as eduAplctOrd
, aplct_state_cd as aplctStateCd
, frst_regist_pnttm as frstRegistPnttm
, frst_register_id as frstRegisterId
from vea_aplct_detail_info
where edu_aplct_ord = #eduAplctOrd#
and prcs_aplct_prd_ord = #prcsAplctPrdOrd#
</select>
<delete id="VEAPrcsAplctPrdInstrAsgnmDAO.updateAprvlCdEduAplctDetail" parameterClass="VEPrcsDetailVO">
UPDATE vea_aplct_detail_info SET
aplct_state_cd = #aplctStateCd#
WHERE
edu_aplct_ord = #eduAplctOrd#
AND prcs_aplct_prd_ord = #prcsAplctPrdOrd#
</delete>
<!-- 교육 신청자 상태 update -->
<update id="VEAPrcsAplctPrdInstrAsgnmDAO.udpateAprvlCdEduAplct" parameterClass="VEPrcsDetailVO">
UPDATE VE_EDU_APLCT
SET aprvl_cd = #aprvlCd#
WHERE edu_aplct_ord IN
<iterate property="eduAplctOrdList" open="(" close=")" conjunction=",">
#eduAplctOrdList[]#
</iterate>
</update>
<!-- 강사 배정 등록 -->
<select id="VEAPrcsAplctPrdInstrAsgnmDAO.findByPrcsAplctPrdOrd" parameterClass="String" resultClass="VEAPrcsAplctPrdInstrAsgnmVO">
SELECT
<include refid="VEAPrcsAplctPrdInstrAsgnmDAO.select_column_name"/>
, vid.instr_nm as instrNm
, vid.phone
FROM
<include refid="VEAPrcsAplctPrdInstrAsgnmDAO.table_name"/> a
LEFT JOIN ve_instr_detail vid
ON a.user_id = vid.user_id
WHERE 1=1
AND a.prcs_aplct_prd_ord = #prcsAplctPrdOrd#
AND vid.aprvl_cd ='20' <!-- 변경 승인 -->
AND vid.instr_div ='20' <!-- 성인강사 -->
AND vid.use_yn ='Y'
</select>
</sqlMap>

View File

@ -388,6 +388,7 @@
</select>
<select id="VEPrcsAplctPrdDAO.selectinstrAsgnmPopupPagingList" parameterClass="VEPrcsDetailVO" resultClass="VEInstrDetailVO">
/*VEPrcsAplctPrdDAO.selectinstrAsgnmPopupPagingList*/
SELECT
COUNT(1) OVER() AS totCnt ,
a.instr_div AS instrDiv,
@ -480,7 +481,7 @@
LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select>
<!-- 강사 정보 R -->
<select id="VEPrcsAplctPrdDAO.selectDetailNewOne4Fndth" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
SELECT COUNT(1) OVER() AS totCnt ,
a.prcs_aplct_prd_ord AS prcsAplctPrdOrd,
@ -518,6 +519,7 @@
,a.ddln_cd AS ddlnCd
,a.edu_strt_pnttm AS eduStrtPnttm
,a.edu_ddln_pnttm AS eduDdlnPnttm
,b.prcs_cn AS prcsCn
FROM ve_prcs_aplct_prd a
, ve_prcs b

View File

@ -37,6 +37,7 @@
,ddln_cd
,edu_strt_pnttm
,edu_ddln_pnttm
,edu_place
</sql>
<!-- 조회용 공통 컬럼 명 -->
@ -108,6 +109,7 @@
,#ddlnCd#
,#eduStrtPnttm#
,#eduDdlnPnttm#
,#eduPlace#
)
</insert>
@ -178,6 +180,9 @@
<isNotEmpty property="eduDdlnPnttm">
, edu_ddln_pnttm = #eduDdlnPnttm#
</isNotEmpty>
<isNotEmpty property="eduPlace">
, edu_place = #eduPlace#
</isNotEmpty>
WHERE
prcs_aplct_prd_ord = #prcsAplctPrdOrd#
@ -295,6 +300,7 @@
, (SELECT user_nm FROM comvnusermaster WHERE esntl_id = a.frst_register_id) as frstRegisterNm
, (SELECT orignl_file_nm FROM lettnfiledetail WHERE atch_file_id = a.atch_file_id LIMIT 1) as atchFileNm
, b.prcs_nm as prcsNm
, b.prcs_div as prcsDiv
, (SELECT COUNT(*)
FROM ve_edu_aplct x
@ -349,7 +355,7 @@
</select>
<!-- 강사 정보 R -->
<!-- 과정신청기간 최근 1개 R -->
<select id="VEPrcsAplctPrdDAO.selectDetailNewOne" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
/* VEPrcsAplctPrdDAO.selectDetailNewOne */
SELECT COUNT(1) OVER() AS totCnt ,
@ -378,6 +384,9 @@
AS atchFileNm
FROM ve_prcs_aplct_prd a
WHERE 1 = 1
<isNotEmpty property="lctrDivCd">
AND a.lctr_div_cd=#lctrDivCd#
</isNotEmpty>
AND
a.use_yn = 'Y'
ORDER BY a.strt_pnttm DESC
@ -413,6 +422,8 @@
AS atchFileNm
, b.prcs_nm as prcsNm
, b.prcs_div as prcsDiv
, a.edu_place as eduPlace
,a.dead_line_dt AS deadLineDt
,a.prcs_ord AS prcsOrd
@ -421,6 +432,7 @@
,a.ddln_cd AS ddlnCd
,a.edu_strt_pnttm AS eduStrtPnttm
,a.edu_ddln_pnttm AS eduDdlnPnttm
,b.prcs_cn AS prcsCn
FROM ve_prcs_aplct_prd a
, ve_prcs b
@ -433,7 +445,169 @@
AND a.prcs_aplct_prd_ord=#prcsAplctPrdOrd#
</isNotEmpty>
ORDER BY a.strt_pnttm DESC
LIMIT 1
</select>
<select id="VEPrcsAplctPrdDAO.selectinstrAsgnmPopupPagingList" parameterClass="VEPrcsDetailVO" resultClass="VEInstrDetailVO">
/*VEPrcsAplctPrdDAO.selectinstrAsgnmPopupPagingList*/
SELECT
COUNT(1) OVER() AS totCnt ,
a.instr_div AS instrDiv,
a.user_id AS userId,
(SELECT user_nm FROM COMVNUSERMASTER WHERE USER_ID = a.user_id) AS userNm,
a.instr_detail_ord AS instrDetailOrd,
a.instr_nm AS instrNm,
a.phone AS phone,
a.email AS email,
a.post AS post,
a.addr AS addr,
a.addr_detail AS addrDetail,
a.rsdne AS rsdne,
a.d_birth AS dBirth,
/* IF (length(a.d_birth)=8,DATE_FORMAT(STR_TO_DATE(a.d_birth, '%Y%m%d'),'%Y-%m-%d')
,IF (length(a.d_birth)=6,DATE_FORMAT(STR_TO_DATE(a.d_birth, '%y%m%d'),'%Y-%m-%d'),'')) AS Birth, */
CASE
WHEN LENGTH(NVL(a.d_birth,'')) = 8 THEN TO_CHAR(TO_DATE(a.d_birth, 'YYYYMMDD'), 'YYYY-MM-DD')
WHEN LENGTH(NVL(a.d_birth,'')) = 6 THEN TO_CHAR(TO_DATE(a.d_birth, 'YYMMDD'), 'YYYY-MM-DD')
ELSE ''
END AS Birth,
a.final_schol AS finalSchol,
a.mjr AS mjr,
a.appt_yr AS apptYr,
a.actvt_carer AS actvtCarer,
a.mn_lctr_cn AS mnLctrCn,
a.pht_atch_file_id AS phtAtchFileId,
a.blng AS blng,
a.pstn AS pstn,
a.prfsn_fld AS prfsnFld,
a.sbmt_yn AS sbmtYn,
a.sbmt_pnttm AS sbmtPnttm,
a.aprvl_cd AS aprvlCd,
TO_CHAR(a.aprvl_pnttm,'YYYY-MM-DD') AS aprvlPnttm,
a.aprvl_id AS aprvlId,
a.aprvl_cn AS aprvlCn,
TO_CHAR(a.frst_regist_pnttm,'YYYY-MM-DD') AS frstRegistPnttm,
a.frst_register_id AS frstRegisterId,
TO_CHAR(a.last_updt_pnttm,'YYYY-MM-DD') AS lastUpdtPnttm,
a.last_updusr_id AS lastUpdusrId,
<isNotEmpty property="excelYn">
(SELECT a0.code_nm
FROM LETTCCMMNDETAILCODE a0
WHERE a0.code_id='VE0018'
AND a0.code =a.div_cd
)
AS divCd,
(SELECT a0.code_nm
FROM LETTCCMMNDETAILCODE a0
WHERE a0.code_id='VE0002'
AND a0.code =a.appt_div
)
AS apptDiv,
</isNotEmpty>
<isEmpty property="excelYn">
a.div_cd AS divCd,
a.appt_div AS apptDiv,
</isEmpty>
a.use_yn AS useYn,
a.qlfct_end_yn AS qlfctEndYn,
a.qlfct_end_pnttm AS qlfctEndPnttm,
a.qlfct_end_cn AS qlfctEndCn,
a.appt_dt AS apptDt,
a.hchk_dt AS hchkDt,
a.rmrks AS rmrks,
a.memo AS memo,
a.sig_memo AS sigMemo
FROM
ve_instr b
, ve_instr_detail a
WHERE
1=1
AND a.user_id=b.user_id
<isNotEmpty property="selectPagingListQuery">
$selectPagingListQuery$
</isNotEmpty>
<isNotEmpty property="userId">
AND a.user_id=#userId#
</isNotEmpty>
<isNotEmpty property="instrDiv">
AND a.instr_div=#instrDiv#
</isNotEmpty>
ORDER BY a.sbmt_pnttm DESC
<isEmpty property="orderByQuery">
, b.user_id desc
</isEmpty>
<isNotEmpty property="orderByQuery">
, $orderByQuery$
</isNotEmpty>
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY
</select>
<!-- 교육 확정 목록 -->
<select id="VEPrcsAplctPrdDAO.findByAprvlList" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
/* VEPrcsAplctPrdDAO.findByAprvlList */
select
a.edu_aplct_ord AS eduAplctOrd ,
vpap.PRCS_APLCT_PRD_ORD AS prcsAplctPrdOrd ,
vp.prcs_nm AS prcsNm ,
vp.prcs_cn AS prcsCn ,
vp.prcs_div AS prcsDiv ,
vpap.strt_pnttm AS strtPnttm ,
vpap.end_pnttm AS endPnttm ,
vpap.edu_strt_pnttm AS eduStrtPnttm ,
vpap.edu_ddln_pnttm AS eduDdlnPnttm ,
a.APRVL_CD AS aprvlCd ,
CASE WHEN EXISTS ( /* 설문조사 */
SELECT 1
FROM lettnqestnrrslt lerslt
WHERE lerslt.respond_id = 'USRCNFRM_00000002720'
AND vpap.PRCS_APLCT_PRD_ORD = lerslt.edu_aplct_ord
) THEN 1 ELSE 0 END as qestRsltExists
from
VE_EDU_APLCT a
join ve_prcs_aplct_prd vpap
on a.prcs_ord = vpap.prcs_aplct_prd_ord
join ve_prcs vp /* 과정 */
on vpap.prcs_ord = vp.prcs_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
where
a.lctr_div_cd = #lctrDivCd#
and a.user_id = #userId#
ORDER BY vpap.edu_strt_pnttm
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY
</select>
<select id="VEPrcsAplctPrdDAO.findAllDashboardCnt" parameterClass="VEPrcsDetailVO" resultClass="java.util.HashMap">
/*
VEPrcsAplctPrdDAO.findAllDashboardCnt
count_end_cd 는 조건이 b.aplct_state_cd = '20' (VEA003 - 이수완료) 여야 하는데
이수완료 update 액션 포인트가 아직 안정해져 있어서 날짜로 대체
*/
SELECT
SUM(CASE WHEN a.aprvl_cd = '10' THEN 1 ELSE 0 END) AS count_aprvl_cd_10,
SUM(CASE WHEN a.aprvl_cd = '20' AND TO_DATE(c.edu_ddln_pnttm, 'YYYY.MM.DD') > CURRENT_DATE THEN 1 ELSE 0 END) AS count_aprvl_cd_20,
SUM(CASE WHEN a.aprvl_cd = '20' AND TO_DATE(c.edu_ddln_pnttm, 'YYYY.MM.DD') &lt; CURRENT_DATE THEN 1 ELSE 0 END) AS count_end_cd
FROM
ve_edu_aplct a
LEFT JOIN vea_aplct_detail_info b
ON a.edu_aplct_ord = b.edu_aplct_ord
LEFT JOIN ve_prcs_aplct_prd c
ON c.prcs_aplct_prd_ord = b.prcs_aplct_prd_ord
WHERE
a.lctr_div_cd = #lctrDivCd#
AND a.user_id = #userId#
</select>
</sqlMap>

View File

@ -171,7 +171,7 @@
</select>
<!-- 강사 정보 L page -->
<select id="VEPrcsDAO.selectPagingList" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
<select id="VEPrcsDAO.selectPagingList" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO" remapResults="true">
/* VEPrcsDAO.selectPagingList */
SELECT
COUNT(1) OVER() AS totCnt ,
@ -340,4 +340,11 @@
WHERE PRCS_ORD = #prcsOrd#
</update>
<delete id="VEPrcsDAO.deleteInstr" parameterClass="VEPrcsDetailVO">
DELETE FROM VEA_PRCS_APLCT_PRD_INSTR_ASGNM
WHERE prcs_aplct_prd_ord = #prcsAplctPrdOrd#
AND user_id = #userId#
</delete>
</sqlMap>

View File

@ -51,9 +51,9 @@
a.aprvl_id AS aprvlId,
a.aprvl_cn AS aprvlCn,
DATE_FORMAT(a.frst_regist_pnttm,'%Y%m%d') AS frstRegistPnttm,
TO_CHAR(a.frst_regist_pnttm, 'YYYY-MM-dd') AS frstRegistPnttm,
a.frst_register_id AS frstRegisterId,
DATE_FORMAT(a.last_updt_pnttm,'%Y%m%d') AS lastUpdtPnttm,
TO_CHAR(a.last_updt_pnttm, 'YYYY-MM-dd') AS lastUpdtPnttm,
a.last_updusr_id AS lastUpdusrId,
orgnl_rslt_atch_file_id AS orgnlRsltAtchFileId,

View File

@ -53,6 +53,7 @@
<!-- 강사 정보 L page -->
<select id="ScholInfoMIXDAO.selectPagingList" parameterClass="ScholInfoVO" resultClass="ScholInfoVO">
/* 임시.*NOT_SQL_LOG.* ScholInfoDAO.selectPagingList*/
SELECT
COUNT(1) OVER() AS totCnt ,
a.SCHOL_ID AS scholId
@ -81,25 +82,27 @@
,a.ESTBS_DT AS estbsDt
,a.SCHOL_ANVSRY AS scholAnvsry
,a.LAST_UPDT_PNTTM AS lastUpdtPnttm
, IF(b.stndrd_schol_cd IS null,'N','Y') AS isltnScholYn
, DECODE(schol_grade_nm, '초등학교','10', '중학교','20', '고등학교','30',if (INSTR(schol_grade_nm,'각종학교')>0,'40','50')) AS scholDivCd
/* , IF(b.stndrd_schol_cd IS null,'N','Y') AS isltnScholYn */
, CASE WHEN b.schol_isltn_ord is null THEN 'N' ELSE 'Y' END isltnScholYn
/* , DECODE(schol_grade_nm, '초등학교','10', '중학교','20', '고등학교','30',if (INSTR(schol_grade_nm,'각종학교')>0,'40','50')) AS scholDivCd */
, DECODE(schol_grade_nm, '초등학교','10', '중학교','20', '고등학교','30',CASE WHEN INSTR(schol_grade_nm, '각종학교') > 0 THEN '40' ELSE '50' END) AS scholDivCd
FROM <include refid="ScholInfoMIXDAO.table_name"/> a
LEFT OUTER JOIN ve_schol_isltn b
ON(a.schol_id=b.schol_id)
ON(a.schol_id=b.schol_isltn_ord)
WHERE 1=1
<isNotEmpty property="selectPagingListQuery">
$selectPagingListQuery$
</isNotEmpty>
ORDER BY 1=1
ORDER BY 1
<isEmpty property="orderByQuery">
, a.schol_nm asc
</isEmpty>
<isNotEmpty property="orderByQuery">
, $orderByQuery$
</isNotEmpty>
LIMIT #recordCountPerPage# OFFSET #firstIndex#
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
</sqlMap>

View File

@ -225,15 +225,13 @@
/*
, IF(b.stndrd_schol_cd IS null,'N','Y') AS isltnScholYn
*/
, NVL2(b.stndrd_schol_cd,'Y','N') AS isltnScholYn
/*
, DECODE(schol_grade_nm, '초등학교','10', '중학교','20', '고등학교','30',if (INSTR(schol_grade_nm,'각종학교')>0,'40','50')) AS scholDivCd
*/
, NVL2(b.schol_isltn_ord,'Y','N') AS isltnScholYn
, DECODE(schol_grade_nm, '초등학교','10', '중학교','20', '고등학교','30',CASE WHEN INSTR(schol_grade_nm, '각종학교') > 0 THEN '40' ELSE '50' END) AS scholDivCd
FROM
<include refid="ScholInfoDAO.table_name"/> a
LEFT OUTER JOIN ve_schol_isltn b
ON(a.schol_id=b.schol_id)
ON(a.schol_id=b.schol_isltn_ord)
WHERE 1=1
<isNotEmpty property="scholGrade">
$scholGrade$

View File

@ -153,6 +153,8 @@
<pattern>*/web/ve/**/popup/*</pattern>
<pattern>*/kccadr/oprtn/cpyrgExprnClsrm/cautionGuidePreView.do</pattern> <!-- 관리자 저작권체험교실 교육과정안내 미리보기 팝업 -->
<!-- <pattern>*/tngrVisitEdu/popup/*Popup.do</pattern>
<pattern>*/adultVisitEdu/popup/*Popup.do</pattern> -->

View File

@ -30,6 +30,34 @@
window.open("<c:url value='/cmm/fms/FileDown.do?atchFileId="+atchFileId+"&fileSn="+fileSn+"'/>");
}
function delAtchFile(itemId , fileSn){
if(!confirm("삭제하시겠습니까?")){
return false;
}
$.ajax({
type: "POST",
url: "<c:url value='/uss/ion/fms/fmsfileDeleteAjax.do' />",
data:{ "atchFileId" : itemId , "fileSn" : fileSn},
dataType:'json',
cache: false,
async: false,
timeout: 600000,
success: function (returnData, status) {
if(returnData.result == 'success'){
alert("삭제되었습니다.");
location.reload(true);
}else{
alert("삭제처리에 실패하였습니다.");
}
},
error: function (e) {
console.log("ERROR : ", e);
alert("삭제처리에 실패하였습니다.");
}
});
}
function fn_egov_deleteFile(atchFileId, fileSn, delTrName) {
if(!confirm("<spring:message code="common.delete.msg" />")) return;
@ -127,9 +155,11 @@
<c:choose>
<c:when test="${searchVO.designTy eq 'EMPTY'}">
<c:forEach var="fileVO" items="${fileList}" varStatus="status">
<a href="javascript:fn_egov_downFile('<c:out value="${fileVO.atchFileId}"/>','<c:out value="${fileVO.fileSn}"/>')" class="file_download_a" title="다운로드">
<a href="javascript:fn_egov_downFile('<c:out value="${fileVO.atchFileId}"/>','<c:out value="${fileVO.fileSn}"/>')" class="file_download_a" title="다운로드" style="display:inline-block;">
<c:out value="${fileVO.orignlFileNm}"/>
</a>
<img src="<c:url value='/images/egovframework/com/cmm/btn/btn_del.png' />" class="cursor" onClick="delAtchFile('<c:out value="${fileVO.atchFileId}"/>','<c:out value="${fileVO.fileSn}"/>'); return false;" alt="첨부파일">
<br/>
</c:forEach>
</c:when>
<c:otherwise>

View File

@ -0,0 +1,84 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<!DOCTYPE html>
<html lang="ko">
<head>
<title>학교명 검색</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/kccadrPb/usr/script/popup.js"></script>
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
});
function fncGoList(){
linkPage(1);
}
function linkPage(pageNo){
var popList = document.popList ;
popList.pageIndex.value = pageNo ;
popList.action = "<c:url value='/kccadr/oprtn/comm/popup/userPopList.do'/>";
popList.submit();
}
function fncUserDataSlct(obj){
opener.$("#userId").val(obj.getAttribute('data-value'));
self.close();
}
</script>
</head>
<body>
<!-- 일정 상세 -->
<form:form commandName="userManageVO" id="popList" name="popList" method="post" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${searchVO.pageIndex}' default='1' />"/>
<input type="hidden" name="pageUnit" value="<c:out value='${searchVO.pageUnit}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${searchVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${searchVO.searchSortOrd}" />" />
<div class="area_popup">
<div class="cont_popup">
<div class="pop_list_top">
<input type="text" name="searchWord" id="searchWord" style="width: 450px;" value="<c:out value='${searchVO.searchWord}' />" placeholder="아이디 입력" size="20">
<button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button>
</div>
<div class="pop_tb_type01 list2">
<table>
<colgroup>
<col style="width: auto;">
</colgroup>
<thead>
<tr>
<th scope="col">아이디</th>
</tr>
</thead>
<tbody>
<c:forEach var="row" items="${userList}" varStatus="status">
<tr>
<td>
<a href="#" onclick="fncUserDataSlct(this); return false;" data-value="${row.mberId}"><c:out value="${row.mberId}" /></a>
<input type="hidden" name="userId" value="${row.mberId}"/>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
</div>
</div>
</form:form>
</body>
</html>

View File

@ -0,0 +1,504 @@
<!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(){
// 상태값 확인
ddlnCdSttsChk();
});
function ddlnCdSttsChk(){
var $ddlnCdStts = $("#ddlnCdStts");
// 텍스트가 비어있는지 확인
if ($ddlnCdStts.text().trim() === "") {
var dateText = $ddlnCdStts.closest('table').find("td:eq(2)").text().trim();
var strtPnttm = new Date(dateText.split("~")[0].trim().replace(/\./g, '-'));
var endPnttm = new Date(dateText.split("~")[1].trim().replace(/\./g, '-'));
var currentDate = new Date();
// 시간, 분, 초 초기화
strtPnttm.setHours(0, 0, 0, 0);
endPnttm.setHours(0, 0, 0, 0);
currentDate.setHours(0, 0, 0, 0);
if (currentDate < strtPnttm) {
$ddlnCdStts.text("접수전");
} else if (currentDate >= strtPnttm && currentDate <= endPnttm) {
$ddlnCdStts.text("접수중");
} else if (currentDate > endPnttm) {
$ddlnCdStts.text("접수종료");
}
}
}
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 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'));
}
function updateEduAplctOrd(p_aprvlCd, 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,
"aprvlCd": p_aprvlCd,
"prcsAplctPrdOrd": p_prcsAplctPrdOrd
};
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/updateEduAplctAprvlCdAjax.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: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="VE0003" name="searchSelStatus" id="searchSelStatus" css="class='sel_type1'"
selectedValue="${vEPrcsDetailVO.searchSelStatus}" defaultValue='' includes="10,20,30"
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="fncGoDetail(); return false;">검색</button>
<!-- <button class="btn_type03" onclick="fncReset(this); return false;">초기화</button> -->
</div>
</div>
</div>
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 5%">
<col style="width: 5%">
<col style="width: 210px;">
<col style="width: auto;">
<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>
<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>
<td>
<c:out value="${list.sbmtPnttm}"/>
</td>
<td>
<ve:code codeId="VE0003" code="${list.aprvlCd}"/>
</td>
<td>
<ve:code codeId="VEA003" code="${list.aplctStateCd}"/>
</td>
<td>
<c:choose>
<c:when test="${list.qestnrId }">
<button type="button" class="btn_type04" onclick="fn_qestnr('<c:out value="${list.qestnrId }"/>');">설문결과</button>
</c:when>
<c:otherwise>
미입력
</c:otherwise>
</c:choose>
</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>
</c:otherwise>
</c:choose>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="7">신청자가 없습니다.</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/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="updateEduAplctOrd(20, '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">교육승인</button>
</div>
</div>
</div>
</div>
</div>
</form:form>
<!-- //cont -->
</body>
</html>

View File

@ -0,0 +1,327 @@
<!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/cndtnEduPrcsAplctPrdMngList.do'/>";
listForm.submit();
}
function fncGoDetail(prcsAplctPrdOrd){
var listForm = document.listForm ;
listForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngDetail.do'/>";
listForm.submit();
}
function fncCreate() {
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngReg.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.strtPnttm}"/>~<c:out value="${list.endPnttm}"/>
</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.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>
<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_type01" onclick="fncCreate(); return false;">등록</button>
</div>
</div>
<!-- //page -->
</div>
</div>
</div>
<!-- //cont -->
<!-- //cont -->
</form:form>
</body>
</html>

View File

@ -0,0 +1,285 @@
<!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 : fndthEduPrcsAplctPrdMngMdfy.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">
//세부과정 추가 버튼 클릭 시 세부과정 추가
function addPro() {
var addQuest = $(".addPro_wrap");
var questLen = addQuest.children("div").length;
questLen = Number(questLen+1);
var trHtml="";
trHtml += '<div class="tbody_one">';
trHtml += '<span><span class="span_num3">'+ questLen +'</span>.</span>';
trHtml += '<div>';
trHtml += '<input type="text" name="detailPrcsNm" id="detailPrcsNm"> ';
trHtml += '<button type="button" class="table_del3" onclick="delPro(this)"><img src="${pageContext.request.contextPath}/visitEdu/adm/publish/image/content/btn_del.png"></button>';
trHtml += '</div>';
trHtml += '</div>';
addQuest.append(trHtml);
}
//삭제 버튼 클릭 시 현재 div 삭제 후 지문 숫자 재선언
function delPro(item) {
var bodyThis = $(item).closest('.tbody_one');
var tb = $(item).closest('.addPro_wrap').find('.tbody_one');
var len = $(item).closest('.addPro_wrap').children('.tbody_one').length;
var idx = bodyThis.index();
if(len == 1){
alert("세부과정은 최소1개가 존재해야합니다.");
return false;
}else{
bodyThis.remove();
for(var i=0;i<len;i++){
if(idx>i){
tb.eq(i).find('.span_num3').text(i+1);
}else{
tb.eq(i).find('.span_num3').text(i);
}
}
}
}
function fncAddUser(){
var obj = $(".memList:first").clone(true);
obj.children('input').val('')
/*
var len = $(".memList").length;
$.each(obj.find("input"), function(idx, objInput){
objInput.name = objInput.name.replace(/\[.*\]/,'['+(len+1)+']');
console.log(objInput.name);
if(objInput.name.indexOf("memGrade") < 0){
objInput.value = '';
}
});
obj.find("button").attr("id", obj.find("button").attr("id").replace(/[0-9]/gi, len+2));
obj.find("tr:last > td").text("");
*/
$(".memList:last").after(obj);
}
function fncDelUser(obj){
if($(".memList").length <= 1){
alert("담당자은 최소1개가 존재해야합니다.");
}else{
$(obj).closest("td").remove();
}
}
function fncSave(){
var data = new FormData(document.getElementById("createForm"));
if(confirm("저장하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngMdfyAjax.do'/>";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function fncGoList(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList.do'/>";
listForm.submit();
}
</script>
</head>
<body>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO" method="post">
</form:form>
<form:form id="createForm" name="createForm" commandName="vEPrcsDetailVO" method="post">
<input type="hidden" name="prcsAplctPrdOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdOrd}' default='1' />"/>
<!-- 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:select codeId="VEA001" name="prcsDiv" id="prcsDiv" css="class='sel_type1'" selectedValue="${info.prcsDiv}"/>
</td>
</tr>
<tr>
<th scope="row">과정</th>
<td>
<%-- <ve:select codeId="VE0015" name="prcsDiv" id="prcsDiv" css="class='sel_type1'" selectedValue="<c:out value='${info.prcsDiv}'/>" defaultValue='10'/> --%>
<select name="prcsOrd" id="prcsOrd" class="sel_type1">
<c:forEach var="listPrcs" items="${listPrcs}" varStatus="status">
<option value='<c:out value="${listPrcs.prcsOrd}"/>'
<c:if test="${listPrcs.prcsOrd eq info.prcsOrd}"> selected</c:if>
><c:out value="${listPrcs.prcsOrd}"/>_<c:out value="${listPrcs.prcsNm}"/></option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<th scope="row">신청기간</th>
<td>
<div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="strtPnttm" name="strtPnttm" value="${info.strtPnttm}">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="endPnttm" name="endPnttm" value="${info.endPnttm}">
</div>
</td>
</tr>
<tr>
<th scope="row">교육장소</th>
<td class="addPro_wrap">
<input type="text" name="eduPlace" id="eduPlace" value="${info.eduPlace}" >
</td>
</tr>
<tr>
<th scope="row">교육기간</th>
<td>
<div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="eduStrtPnttm" name="eduStrtPnttm" value="${info.eduStrtPnttm}">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="eduDdlnPnttm" name="eduDdlnPnttm" value="${info.eduDdlnPnttm}">
</div>
</td>
</tr>
<tr>
<th scope="row">상세교육과정</th>
<td>
<textarea name="prcsCn" id="prcsCn" class="memo" disabled="disabled" class="inputLight" style="height: 200px;"><c:out value="${info.prcsCn }" /></textarea>
</td>
</tr>
<tr>
<th scope="row">정원</th>
<td class="addPro_wrap">
<input type="text" name="nos" id="nos" value="${info.nos}" style="width:100px;" maxLength="6">
</td>
</tr>
<tr>
<th scope="row">상태</th>
<td>
<ve:select codeId="VEA004" name="ddlnCd" id="ddlnCd" css="class='sel_type1'" selectedValue="${info.ddlnCd}" defaultValue="" defaultText="선택"/>
</td>
</tr>
<tr>
<th scope="row">
<p>공개여부(사용여부)</p>
</th>
<td>
<input type="radio" name="useYn" id="useY" value="Y" ${empty vEEduAplctVO.useYn or vEEduAplctVO.useYn eq 'Y' ? 'checked' : vEEduAplctVO.useYn}>
<label for="useY">예</label>
<input type="radio" name="useYn" id="useN" value="N" ${vEEduAplctVO.useYn eq 'N' ? 'checked' : vEEduAplctVO.useYn}>
<label for="useN">아니오</label>
</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="fncSave(); return false;">수정</button>
<button type="button" class="btn_type03" onclick="fncGoList(); return false;">취소</button>
</div>
</div>
</div>
</div>
</div>
</form:form>
<!-- //cont -->
</body>
</html>

View File

@ -0,0 +1,311 @@
<!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="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%
/**
* @Class Name : cndtnEduPrcsAplctPrdMngReg.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(){
$('#prcsOrd').change(function(){
fnSelectDivAndCn($(this).val());
});
$('#nos').on('input', function() {
// 숫자만 허용
$(this).val($(this).val().replace(/[^0-9]/g, ''));
// 값이 0으로 시작하면 제거
if ($(this).val().charAt(0) == '0') {
$(this).val($(this).val().substring(1));
}
});
});
//세부과정 추가 버튼 클릭 시 세부과정 추가
function addPro() {
var addQuest = $(".addPro_wrap");
var questLen = addQuest.children("div").length;
questLen = Number(questLen+1);
var trHtml="";
trHtml += '<div class="tbody_one">';
trHtml += '<span><span class="span_num3">'+ questLen +'</span>.</span>';
trHtml += '<div>';
trHtml += '<input type="text" name="detailPrcsNm" id="detailPrcsNm"> ';
trHtml += '<button type="button" class="table_del3" onclick="delPro(this)"><img src="${pageContext.request.contextPath}/visitEdu/adm/publish/image/content/btn_del.png"></button>';
trHtml += '</div>';
trHtml += '</div>';
addQuest.append(trHtml);
}
//삭제 버튼 클릭 시 현재 div 삭제 후 지문 숫자 재선언
function delPro(item) {
var bodyThis = $(item).closest('.tbody_one');
var tb = $(item).closest('.addPro_wrap').find('.tbody_one');
var len = $(item).closest('.addPro_wrap').children('.tbody_one').length;
var idx = bodyThis.index();
if(len == 1){
alert("세부과정은 최소1개가 존재해야합니다.");
return false;
}else{
bodyThis.remove();
for(var i=0;i<len;i++){
if(idx>i){
tb.eq(i).find('.span_num3').text(i+1);
}else{
tb.eq(i).find('.span_num3').text(i);
}
}
}
}
function fncAddUser(){
var obj = $(".memList:first").clone(true);
obj.children('input').val('')
/*
var len = $(".memList").length;
$.each(obj.find("input"), function(idx, objInput){
objInput.name = objInput.name.replace(/\[.*\]/,'['+(len+1)+']');
console.log(objInput.name);
if(objInput.name.indexOf("memGrade") < 0){
objInput.value = '';
}
});
obj.find("button").attr("id", obj.find("button").attr("id").replace(/[0-9]/gi, len+2));
obj.find("tr:last > td").text("");
*/
$(".memList:last").after(obj);
}
function fncDelUser(obj){
if($(".memList").length <= 1){
alert("담당자은 최소1개가 존재해야합니다.");
}else{
$(obj).closest("td").remove();
}
}
function fncSave(){
var data = new FormData(document.getElementById("createForm"));
if(confirm("저장하시겠습니까?")){
var url = "${pageContext.request.contextPath}/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngRegAjax.do";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
// div codeNm 가져오는 function
function fnSelectDivAndCn(prcsOrdVal){
var url = "${pageContext.request.contextPath}/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctSelectDivAndCnAjax.do";
$.ajax({
type:"POST",
url: url,
data:{ "prcsOrd" : prcsOrdVal},
dataType:'json',
async: false,
success:function(returnData){
if(returnData.result == "success"){
$('#prcsDiv').val(returnData.prcsDiv);
$('#prcsCn').val(returnData.prcsCn);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
function fncGoList(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsAplctPrdMngList.do'/>";
listForm.submit();
}
</script>
</head>
<body>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO" method="post">
</form:form>
<form:form id="createForm" name="createForm" commandName="adjustDeptManageVO" method="post">
<!-- 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>
<input type="text" name="prcsDiv" id="prcsDiv" readonly="readonly" value="${prcsDivNm }"/>
</td>
</tr>
<tr>
<th scope="row">교육과정</th>
<td>
<%-- <ve:select codeId="VE0015" name="prcsDiv" id="prcsDiv" css="class='sel_type1'" selectedValue="<c:out value='${info.prcsDiv}'/>" defaultValue='10'/> --%>
<select name="prcsOrd" id="prcsOrd" class="sel_type1">
<c:forEach var="listPrcs" items="${listPrcs}" varStatus="status">
<option value='<c:out value="${listPrcs.prcsOrd}"/>'><c:out value="${listPrcs.prcsOrd}"/>_<c:out value="${listPrcs.prcsNm}"/></option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<th scope="row">교육기간</th>
<td>
<div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="eduStrtPnttm" name="eduStrtPnttm" value="${vEEduAplctVO.strtPnttm}">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="eduDdlnPnttm" name="eduDdlnPnttm" value="${vEEduAplctVO.endPnttm}">
</div>
</td>
</tr>
<tr>
<th scope="row">교육장소</th>
<td class="addPro_wrap">
<input type="text" name="eduPlace" id="eduPlace" value="${vEEduAplctVO.eduPlace}" >
</td>
</tr>
<tr>
<th scope="row">신청기간</th>
<td>
<div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="strtPnttm" name="strtPnttm" value="${vEEduAplctVO.eduStrtPnttm}">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="endPnttm" name="endPnttm" value="${vEEduAplctVO.eduDdlnPnttm}">
</div>
</td>
</tr>
<tr>
<th scope="row">상세교육과정</th>
<td>
<textarea name="prcsCn" id="prcsCn" class="memo" disabled="disabled" class="inputLight" style="height: 200px;"><c:out value="${prcsCn }" /></textarea>
</td>
</tr>
<tr>
<th scope="row">정원</th>
<td class="addPro_wrap">
<input type="text" name="nos" id="nos" value="${vEEduAplctVO.nos}" style="width:100px;" maxLength="6">
</td>
</tr>
<tr>
<th scope="row">
<p>상태</p>
</th>
<td>
<kc:select codeId="VEA004" name="ddlnCd" id="ddlnCd" defaultText="전체" defaultValue="" css="class='sel_type1'" />
</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="fncSave(); return false;">저장</button>
<button type="button" class="btn_type03" onclick="fncGoList(); return false;">목록</button>
</div>
</div>
</div>
</div>
</div>
</form:form>
<!-- //cont -->
</body>
</html>

View File

@ -301,7 +301,7 @@
</td>
<th scope="row">생년월일</th>
<td>
<input type="text" name="dBirth" id="dBirth" placeholder="0000-00-00" maxlength="10" value="<c:out value="${info.dBirth }" />" />
<input type="text" name="dBirth" id="dBirth" placeholder="00000000" maxlength="8" value="<c:out value="${info.dBirth }" />" />
</td>
</tr>
<!-- <tr>

View File

@ -250,7 +250,7 @@
</td>
<th scope="row">생년월일</th>
<td>
<input type="text" name="dBirth" id="dBirth" placeholder="0000-00-00" maxlength="10"/>
<input type="text" name="dBirth" id="dBirth" placeholder="00000000" maxlength="8"/>
</td>
</tr>
<!-- <tr>

View File

@ -223,7 +223,13 @@
}
function fncPreview(){
alert("개발전")
commonPopWindowopenForm(
"${pageContext.request.contextPath}/kccadr/oprtn/cpyrgExprnClsrm/cautionGuidePreView.do"
, 750
, 700
, "cautionGuidePreView"
, $("#popForm")
);
}
</script>
@ -240,6 +246,8 @@
<form id="popForm" name="popForm" method="post">
<input type="hidden" name="callFunc" value="callFunc"/>
<input type="hidden" name="targetId" value=""/>
<input type="hidden" name="strtPnttm" value="${info.strtPnttm}"/>
<input type="hidden" name="endPnttm" value="${info.endPnttm}"/>
</form>
<form:form id="createForm" name="createForm" commandName="vEPrcsDetailVO" method="post">
<!-- cont -->
@ -331,7 +339,7 @@
</c:import>
</td>
</tr>
<tr>
<%-- <tr>
<th scope="row">
<p>안내내용</p>
</th>
@ -347,7 +355,7 @@
<td>
<c:out value='${info.popupCn}'/>
</td>
</tr>
</tr> --%>
<tr>
<th scope="row">
<p>사용여부</p>

View File

@ -289,7 +289,10 @@
<!-- <button class="btnType02" onclick="fncCreate(); return false;" >삭제</button> -->
</td>
<td>
${list.strtPnttm}~${list.endPnttm}
<fmt:parseDate value='${list.strtPnttm}' var='strtPnttmDe' pattern="yyyyMMddHHmm" scope="page" />
<fmt:parseDate value='${list.endPnttm}' var='endPnttmDe' pattern="yyyyMMddHHmm" scope="page" />
<fmt:formatDate value="${strtPnttmDe}" pattern="yyyy-MM-dd"/> ~
<fmt:formatDate value="${endPnttmDe}" pattern="yyyy-MM-dd"/>
</td>
<td>
<c:out value='${list.atchFileNm}'/>

View File

@ -153,14 +153,14 @@
alert("종료일을 입력해주세요.");
return false;
}
if($("#anncmCn").val() == ""){
/* if($("#anncmCn").val() == ""){
alert("안내내용을 입력해주세요.");
return false;
}
if($("#popupCn").val() == ""){
alert("팝업내용을 입력해주세요.");
return false;
}
} */
//첨부파일 등록 처리
$('#file_temp').val(""); //첨부파일 중복 등록 방지를 위해 추가
@ -465,24 +465,6 @@
</tr>
-->
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>안내내용</p>
</th>
<td>
<textarea name="anncmCn" id="anncmCn" cols="30" rows="3"></textarea>
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>팝업내용</p>
</th>
<td>
<textarea name="popupCn" id="popupCn" cols="30" rows="3"></textarea>
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>

View File

@ -126,14 +126,14 @@
alert("종료일을 입력해주세요.");
return false;
}
if($("#anncmCn").val() == ""){
/* if($("#anncmCn").val() == ""){
alert("안내내용을 입력해주세요.");
return false;
}
if($("#popupCn").val() == ""){
alert("팝업내용을 입력해주세요.");
return false;
}
} */
//첨부파일 등록 처리
$('#file_temp').val(""); //첨부파일 중복 등록 방지를 위해 추가
@ -426,7 +426,7 @@
</div>
</td>
</tr>
<tr>
<%-- <tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>안내내용</p>
@ -444,7 +444,7 @@
<td>
<textarea id="popupCn" name="popupCn" class="purpose_text" rows="5" cols="30"><c:out value='${info.popupCn}'/></textarea>
</td>
</tr>
</tr> --%>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>

View File

@ -162,6 +162,7 @@
<c:when test="${not empty info.sbmtPnttm}">
<fmt:parseDate value="${info.sbmtPnttm}" var="sbmtPnttm" pattern="yy-MM-dd"/>
<fmt:formatDate value="${sbmtPnttm}" pattern="20yy.MM.dd"/>
<%-- <c:out value="${info.sbmtPnttm}" /> --%>
</c:when>
<c:otherwise>
-
@ -174,8 +175,9 @@
<td>
<c:choose>
<c:when test="${not empty info.endPnttm}">
<fmt:parseDate value="${info.endPnttm}" var="endPnttm" pattern="yyMMddHHmmss"/>
<fmt:formatDate value="${endPnttm}" pattern="yyyy.MM.dd"/>
<%-- <fmt:parseDate value="${info.endPnttm}" var="endPnttm" pattern="yyMMddHHmmss"/>
<fmt:formatDate value="${endPnttm}" pattern="yyyy.MM.dd"/> --%>
<c:out value="${info.endPnttm}" />
</c:when>
<c:otherwise>
-
@ -413,15 +415,17 @@
<button type="button" class="btn_type01" onclick="fncRejectPopup(); return false;">수정요청</button>
</c:if>
<!-- 운영신청, 수정요청완료 상태에서만 선정여부 설정 가능(선정여부는 교육확정 프로세스에 영향을 끼치지 않음 - 관리자 구분 용도)-->
<c:if test="${info.aprvlCd eq '10' || info.aprvlCd eq '80'}">
<%-- <c:if test="${info.aprvlCd eq '10' || info.aprvlCd eq '80'}">
<button type="button" class="btn_type04" onclick="fncChsChange('Y'); return false;">선정</button>
<button type="button" class="btn_type05" onclick="fncChsChange('N'); return false;">미선정</button>
</c:if>
</c:if> --%>
</div>
<div class="btn_center">
<c:if test="${info.aprvlCd ne '60' && info.aprvlCd ne '90'}">
<button type="button" class="btn_type01" onclick="fncStatusChange('60'); return false;">교육확정</button>
<button type="button" class="btn_type02" onclick="fncStatusChange('90'); return false;">교육미확정</button>
<!-- <button type="button" class="btn_type01" onclick="fncStatusChange('60'); return false;">교육확정</button>
<button type="button" class="btn_type02" onclick="fncStatusChange('90'); return false;">교육미확정</button> -->
<button type="button" class="btn_type01" onclick="fncStatusChange('60'); return false;">선정처리</button>
<button type="button" class="btn_type02" onclick="fncStatusChange('90'); return false;">선정취소</button>
</c:if>
<!-- 교육 확정인 경우 관리자만 수정 가능 하도록 -->
<c:if test="${info.aprvlCd eq '60'}">

View File

@ -1,19 +1,22 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ 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="validator"
uri="http://www.springmodules.org/tags/commons-validator"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="un"
uri="http://jakarta.apache.org/taglibs/unstandard-1.0"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">c
<style>
input:read-only {
background-color: #ededed;
@ -74,17 +77,96 @@
}
});
}
function fnCheckAll(){
var chk = document.listForm.chk;
if(document.listForm.checkAll.checked) {
if(chk) {
if(chk.length > 1) {
for(var i=0; i < chk.length; i++) {
chk[i].checked = true;
}
} else {
chk.checked = true;
}
}
} else {
if(chk) {
if(chk.length > 1) {
for(var j=0; j < chk.length; j++) {
chk[j].checked = false;
}
} else {
chk.checked = false;
}
}
}
}
function fncStatusChangeAll(){
var chkLen = $(listForm).find("input[name=chk]:checked").length;
var aprvlCdSelected = $('#aprvlCdSelect option:selected').val();
if(chkLen ==0){
alert("선택된 항목이 없습니다.");
return;
}
if(aprvlCdSelected == ''){
alert("상태를 선택해주세요.")
return;
}
$("#aprvlCd").val(aprvlCdSelected);
var data = new FormData(document.getElementById("listForm"));
if(confirm("상태를 일괄변경 하시겠습니까?")){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/comm/eduAplctStatusListAjax.do",
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.rsCnt > 0){
alert("상태가 변경 되었습니다.");
location.reload();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function fileDownLoad() {
alert("개발전");
return;
var listForm = document.listForm;
listForm.action = "<c:url value='/kccadr/oprtn/cpyrgExprnClsrm/oprtnAplctFileAllDownLoad.do'/>";
listForm.submit();
}
function fncCreate() {
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cpyrgExprnClsrm/oprtnAplctMngReg.do'/>";
listForm.submit();
}
</script>
<title>신청관리</title>
</head>
<body>
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO" method="post" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEEduAplctVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEEduAplctVO.searchSortOrd}" />" />
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO"
method="post" onsubmit="return false;">
<input type="hidden" name="pageIndex"
value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />" />
<input type="hidden" name="searchSortCnd"
value="<c:out value="${vEEduAplctVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd"
value="<c:out value="${vEEduAplctVO.searchSortOrd}" />" />
<input type="hidden" name="eduAplctOrd" value="" />
<input type="hidden" name="aprvlCd" value="" />
<input type="hidden" name="aprvlCd" id="aprvlCd" value="" />
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
@ -114,15 +196,26 @@
<p>구분</p>
</div>
<div class="util_right">
<select name="searchYear" id="sdfsdf" class="sel_type1 yearSelect" selectValue="${vEEduAplctVO.searchYear}" defaultText='전체'></select>
<ve:select codeId="VE0008" name="eduSlctAreaCd" id="eduSlctAreaCd" styleClass="sel_type1" selectedValue="${vEEduAplctVO.eduSlctAreaCd}" defaultText='전체'/>
<select name="searchCondition" id="searchCondition" class="sel_type1">
<option value="1" ${vEEduAplctVO.searchCondition eq '1' ? 'selected' : '' }>학교명</option>
<option value="2" ${vEEduAplctVO.searchCondition eq '2' ? 'selected' : '' }>담당자</option>
</select>
<input type="text" placeholder="검색어를 입력하세요." title="검색어 입력" class="search_input" id="searchKeyword" name="searchKeyword" value="${cryptoUtil.decrypt(vEEduAplctVO.searchKeyword)}" onkeyDown="press(event);">
<button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
<select name="searchYear" id="sdfsdf"
class="sel_type1 yearSelect"
selectValue="${vEEduAplctVO.searchYear}" defaultText='전체'></select>
<ve:select codeId="VE0008" name="eduSlctAreaCd"
id="eduSlctAreaCd" styleClass="sel_type1"
selectedValue="${vEEduAplctVO.eduSlctAreaCd}" defaultText='전체' />
<select name="searchCondition" id="searchCondition"
class="sel_type1">
<option value="1"
${vEEduAplctVO.searchCondition eq '1' ? 'selected' : '' }>학교명</option>
<option value="2"
${vEEduAplctVO.searchCondition eq '2' ? 'selected' : '' }>담당자</option>
</select> <input type="text" placeholder="검색어를 입력하세요." title="검색어 입력"
class="search_input" id="searchKeyword" name="searchKeyword"
value="${cryptoUtil.decrypt(vEEduAplctVO.searchKeyword)}"
onkeyDown="press(event);">
<button type="button" class="btn_type08"
onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03"
onclick="fncReset(this); return false;">초기화</button>
</div>
</div>
<div class="list_top_2">
@ -131,16 +224,20 @@
</div>
<div class="util_right">
<div class="check_wrap">
<c:set var="searchStatus" value="${fn:join(vEEduAplctVO.searchScholDivCdArr, ',') }"/>
<span><input type="checkbox" ${fn:indexOf(searchStatus, VeConstants.SCHOL_DIV_CD_10) ne -1 ? 'checked' : ''}
value="${VeConstants.SCHOL_DIV_CD_10}" name="searchScholDivCdArr" id="searchSatus2">초등학교
</span>
<span><input type="checkbox" ${fn:indexOf(searchStatus, VeConstants.SCHOL_DIV_CD_20) ne -1 ? 'checked' : ''}
value="${VeConstants.SCHOL_DIV_CD_20}" name="searchScholDivCdArr" id="searchSatus3">중학교
</span>
<span><input type="checkbox" ${fn:indexOf(searchStatus, VeConstants.SCHOL_DIV_CD_30) ne -1 ? 'checked' : ''}
value="${VeConstants.SCHOL_DIV_CD_30}" name="searchScholDivCdArr" id="searchSatus4">고등학교
</span>
<c:set var="searchStatus"
value="${fn:join(vEEduAplctVO.searchScholDivCdArr, ',') }" />
<span><input type="checkbox"
${fn:indexOf(searchStatus, VeConstants.SCHOL_DIV_CD_10) ne -1 ? 'checked' : ''}
value="${VeConstants.SCHOL_DIV_CD_10}"
name="searchScholDivCdArr" id="searchSatus2">초등학교 </span> <span><input
type="checkbox"
${fn:indexOf(searchStatus, VeConstants.SCHOL_DIV_CD_20) ne -1 ? 'checked' : ''}
value="${VeConstants.SCHOL_DIV_CD_20}"
name="searchScholDivCdArr" id="searchSatus3">중학교 </span> <span><input
type="checkbox"
${fn:indexOf(searchStatus, VeConstants.SCHOL_DIV_CD_30) ne -1 ? 'checked' : ''}
value="${VeConstants.SCHOL_DIV_CD_30}"
name="searchScholDivCdArr" id="searchSatus4">고등학교 </span>
</div>
</div>
</div>
@ -151,34 +248,54 @@
<div class="util_right">
<select name="searchCpyAprvlCd" class="sel_type1">
<option value="">전체</option>
<option value="10" <c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '10'}">selected</c:if>>운영신청</option>
<option value="70" <c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '70'}">selected</c:if>>수정요청</option>
<option value="80" <c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '80'}">selected</c:if>>수정요청완료</option>
<option value="60" <c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '60'}">selected</c:if>>교육확정</option>
<option value="90" <c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '90'}">selected</c:if>>교육미확정</option>
<option value="10"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '10'}">selected</c:if>>운영신청</option>
<option value="70"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '70'}">selected</c:if>>수정요청</option>
<option value="80"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '80'}">selected</c:if>>수정완료</option>
<option value="60"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '60'}">selected</c:if>>운영확정</option>
<option value="90"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '90'}">selected</c:if>>운영미확정</option>
</select>
<p style="padding:0 20px 0 30px; font-weight:500; font-size:18px;">선정여부</p>
<%-- <p
style="padding: 0 20px 0 30px; font-weight: 500; font-size: 18px;">선정여부</p>
<div class="check_wrap">
<select name="searchChsYn" class="sel_type1">
<option value="">전체</option>
<option value="Y" <c:if test="${vEEduAplctVO.searchChsYn eq 'Y'}">selected</c:if>>선정</option>
<option value="N" <c:if test="${vEEduAplctVO.searchChsYn eq 'N'}">selected</c:if>>미선정</option>
<option value="Y"
<c:if test="${vEEduAplctVO.searchChsYn eq 'Y'}">selected</c:if>>선정</option>
<option value="N"
<c:if test="${vEEduAplctVO.searchChsYn eq 'N'}">selected</c:if>>미선정</option>
</select>
</div>
</div> --%>
</div>
</div>
</div>
<!-- list_top -->
<div class="list_util">
<p class="list_util_p"><span><c:out value="${paginationInfo.totalRecordCount}" /></span>건의 접수가 검색되었습니다.</p>
<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="${vEEduAplctVO.pageUnit == '10' or vEEduAplctVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEEduAplctVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEEduAplctVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEEduAplctVO.pageUnit == '100'}">selected</c:if>>100줄</option>
<select class="sel_type1" name="pageUnit" id="pageUnit"
onchange="linkPage(1);" title="줄 선택" style="width: 140px"
class="sel_type1">
<option value='10'
<c:if test="${vEEduAplctVO.pageUnit == '10' or vEEduAplctVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20'
<c:if test="${vEEduAplctVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30'
<c:if test="${vEEduAplctVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100'
<c:if test="${vEEduAplctVO.pageUnit == '100'}">selected</c:if>>100줄</option>
</select>
<button type="button" class="btn_down_excel" onclick="excelDownLoad();">엑셀 다운로드</button>
<button type="button"
onclick="fileDownLoad();">첨부파일 다운로드</button>
<button type="button" class="btn_down_excel"
onclick="excelDownLoad();">엑셀 다운로드</button>
</div>
</div>
<!-- //list_top -->
@ -187,23 +304,26 @@
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 5%">
<col style="width: 5%">
<col style="width: 12%">
<col style="width: 18%">
<col style="width: 24%">
<col style="width: auto;">
<col style="width: 16%">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 13%">
</colgroup>
<thead>
<tr>
<th><input type="checkbox" name="checkAll" id="checkAll" onclick="fnCheckAll();" /><label for="checkAll"></label></th>
<th>번호</th>
<th>담당교과</th>
<th>학교명</th>
<th>담당자</th>
<th>신청일자</th>
<th>선정여부</th>
<!-- <th>선정여부</th> -->
<th>처리상태</th>
<th>비고</th>
</tr>
</thead>
<tbody>
@ -217,32 +337,28 @@
</c:otherwise>
</c:choose>
<td>
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
<input name="chk" id="<c:out value="${list.eduAplctOrd}"/>" type="checkbox" value="<c:out value="${list.eduAplctOrd}"/>"/> <label for="<c:out value="${list.eduAplctOrd}"/>"></label>
</td>
<td>
<c:out value="${list.chrgMjr}"/>
<%--<ve:code codeId="VE0008" code="${list.eduSlctAreaCd}"/>--%>
<td><c:out
value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }" />
</td>
<td>
<a href="javascript:fncGoDetail('${list.eduAplctOrd}');" title="<c:out value='${list.eduAplctOrd}'/>">
<c:out value="${list.scholInsttNm}"/>
</a>
<td><c:out value="${list.chrgMjr}" /> <%--<ve:code codeId="VE0008" code="${list.eduSlctAreaCd}"/>--%>
</td>
<td>
<a href="javascript:fncGoDetail('${list.eduAplctOrd}');" title="<c:out value='${list.eduAplctOrd}'/>">
<c:out value="${list.chrgNm}"/>
</a>
</td>
<td>
<c:out value="${list.sbmtPnttm}"/>
</td>
<td>
<c:if test="${list.mdfyRqstYn eq null}">-</c:if>
<c:if test="${list.mdfyRqstYn eq 'Y'}">선정</c:if>
<c:if test="${list.mdfyRqstYn eq 'N'}">미선정</c:if>
</td>
<td>
<c:choose>
<td><a
href="javascript:fncGoDetail('${list.eduAplctOrd}');"
title="<c:out value='${list.eduAplctOrd}'/>"> <c:out
value="${list.scholInsttNm}" />
</a></td>
<td><a
href="javascript:fncGoDetail('${list.eduAplctOrd}');"
title="<c:out value='${list.eduAplctOrd}'/>"> <c:out
value="${list.chrgNm}" />
</a></td>
<td><c:out value="${list.sbmtPnttm}" /></td>
<%-- <td><c:if test="${list.mdfyRqstYn eq null}">-</c:if> <c:if
test="${list.mdfyRqstYn eq 'Y'}">선정</c:if> <c:if
test="${list.mdfyRqstYn eq 'N'}">미선정</c:if></td> --%>
<td><c:choose>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_10}">
<span class="app_status1">운영신청</span>
</c:when>
@ -250,32 +366,60 @@
<span class="app_status2">수정요청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_80}">
<span class="app_status4">수정요청완료</span>
<span class="app_status4">수정완료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_60}">
<span class="app_status4">교육확정</span>
<span class="app_status4">운영확정</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_90}">
<span class="app_status4">교육미확정</span>
<span class="app_status4">운영미확정</span>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</c:choose></td>
<td>
<c:if test="${list.unfthYn eq 'Y'}">
불성실
</c:if>
<c:if test="${list.unfthYn eq 'N'}">
성실
</c:if>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
<tr>
<td colspan="8"><spring:message code="common.nodata.msg" /></td>
</tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
<select name="aprvlCdSelect" id="aprvlCdSelect"class="sel_type1">
<option value="">선택</option>
<option value="10">운영신청</option>
<!-- <option value="70">수정요청</option> -->
<option value="80">수정완료</option>
<option value="60">운영확정</option>
<option value="90">운영미확정</option>
</select>
<button class="btn_type04" onclick="fncStatusChangeAll(); return false;" >일괄변경</button>
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button class="btn_type06" onclick="fncCreate(); return false;" >등록</button>
</div>
</div>
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
<ui:pagination paginationInfo="${paginationInfo}" type="image"
jsFunction="linkPage" />
</div>
<!-- //page -->
</div>

View File

@ -1,44 +1,123 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ 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="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<%
/**
* @Class Name : oprtnAplctAnncmMngReg.jsp
* @Description : 운영신청안내관리 등록
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.16 조용준 최초 생성
* @author 조용주
* @since 2021.12.16
* @version 1.0
* @see
*
*/
%>
<c:set var="now" value="<%=new java.util.Date()%>" />
<c:set var="sysYear"><fmt:formatDate value="${now}" pattern="yyyy" /></c:set>
<c:set var="sysYear">
<fmt:formatDate value="${now}" pattern="yyyy" />
</c:set>
<html lang="ko">
<head>
<title>교육신청 수정</title>
<title>교육과정관리</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
$(document).ready(function() {
$(".btn_add_file").on('click', function(){
/* 학교구분 라이도버튼 비활성화 */
$("input[name=scholDivCd]").attr("onclick", "return(false);")
$(".btn_type01").on('click', function(){
$("#file_temp").click();
});
});
function fncSave(){
if($("#title").val() == ""){
alert("제목을 입력해주세요.");
return false;
}
if($("#strtPnttm").val() == ""){
alert("시작일을 입력해주세요.");
return false;
}
if($("#endPnttm").val() == ""){
alert("종료일을 입력해주세요.");
return false;
}
/* if($("#anncmCn").val() == ""){
alert("안내내용을 입력해주세요.");
return false;
}
if($("#popupCn").val() == ""){
alert("팝업내용을 입력해주세요.");
return false;
} */
//첨부파일 등록 처리
$('#file_temp').val(""); //첨부파일 중복 등록 방지를 위해 추가
//var data = new FormData(form);
var data = new FormData(document.getElementById("createForm"));
//첨부파일 등록 처리-step1
//if(!data.get("fileSize")){
if($('#tbody_fiielist tr').length*1<=0){
alert("첨부파일을 등록해 주세요");
return false;
}
//첨부파일 등록 처리-step2
_fileForm2.forEach(function(obj, idx) {
if (obj) data.append("file"+idx, obj.fileObj);
});
if(confirm("저장하시겠습니까?")){
var url = "${pageContext.request.contextPath}/kccadr/oprtn/cpyrgExprnClsrm/oprtnAplctAnncmMngRegAjax.do";
console.log(data);
$.ajax({
type:"POST",
enctype: 'multipart/form-data',
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
//if(returnData.result == "success" && returnData.rsCnt > 0 ){
if(returnData.result == "success"){
alert("저장되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function fncGoList(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cpyrgExprnClsrm/oprtnAplctMngList.do'/>";
listForm.submit();
}
function fncGoDetail(){
var createForm = document.createForm ;
createForm.action = "<c:url value='/kccadr/oprtn/cpyrgExprnClsrm/oprtnAplctMngDetail.do'/>";
createForm.submit();
}
function fncScholList() {
commonPopWindowopenForm(
"${pageContext.request.contextPath}/kccadr/oprtn/comm/popup/scholPopList.do"
@ -48,6 +127,15 @@
);
}
function fncUserList() {
commonPopWindowopenForm(
"${pageContext.request.contextPath}/kccadr/oprtn/comm/popup/userPopList.do"
, "700"
, "750"
, "UserListPop",$("#popupForm")
);
}
function callBackSchPop(schData){
if(emptyObject(schData)){
alert("오류가 발생하였습니다. 관리자에게 문의해주세요 [ERR-SCH-POP]")
@ -63,288 +151,85 @@
$('input[name=isltnScholYn][value='+schData.isltnScholYn+']').prop('checked', true);
}
function fncSave(type){
if(type == 'S'){
if (!validCheck()) return;
}
var url = '${pageContext.request.contextPath}/kccadr/oprtn/cpyrgExprnClsrm/oprtnAplctMngRegAjax.do';
if(VeConstants.MODE_UPT == $("#mode").val()){
url = '${pageContext.request.contextPath}/kccadr/oprtn/cpyrgExprnClsrm/oprtnAplctMngMdfyAjax.do';
}
fncDataReplace();
var data = new FormData(document.getElementById("createForm"));
if(confirm("교육신청을 "+(type == 'I'? '임시저장' : '등록')+"하시겠습니까?")){
_fileForm2.forEach(function(obj, idx) {
if (obj) data.append("file"+idx, obj.fileObj);
});
//첨부파일 등록 처리
$('#file_temp').val(""); //첨부파일 중복 등록 방지를 위해 추가
$.ajax({
type: "POST",
enctype: 'multipart/form-data',
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (returnData, status) {
$("#eduAplctOrd").val(returnData.VO.eduAplctOrd);
if(status == 'success'){
alert("등록 되었습니다.");
fncGoDetail(); //현재 메인화면 이동
} else if(status== 'fail'){
alert("등록에 실패하였습니다.");
}
},
error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); }
});
function oprtnYn(){
var radioVal = $('input[name="exprnClsrnCd"]:checked').val();
if(radioVal == "01"){
$('input[name="eClsrnYear"]').attr('disabled',false);
}else{
$('input[name="eClsrnYear"]').attr('disabled',true);
$('input[name="eClsrnYear"]').prop('checked',false);
}
}
// 데이터 저장전 치환해야할 데이터
function fncDataReplace(){
if($("#email1").val() != '' && $("#email2").val() != '') {
var emailAll = document.getElementById("email1").value + "@" + document.getElementById("email2").value;
$("#email").val(emailAll)
function fncEtcInputEnable(thisObj){
$("#exprnClsrnAplctCn").val('');
if($(thisObj).val() == '04'){
$("#exprnClsrnAplctCn").prop('disabled' , false);
}else{
$("#exprnClsrnAplctCn").prop('disabled' , true);
}
if($("#birthYear").val() != '' && $("#birthMonth").val() != '' && $("#birthDay").val() != ''){
$("#dBirth").val($("#birthYear").val()+$("#birthMonth").val()+$("#birthDay").val());
}
if($("#cmpltNum").val() != ''){
$('#cmpltNum').val($('#cmpltNum').val().replace(/-/gi, ''));
}
if($("input[name=eClsrnYear]:checked").length != 0){
var arr = $.map($("input[name=eClsrnYear]:checked"), function(elm,idx){return [elm.value]});
$('#exprnClsrnYear').val(arr);
}
$('#rprtSbmt').val($('#rprtSbmt').val().replace(/-/gi, ''));
$('#oprtnStrtDt').val($('#oprtnStrtDt').val().replace(/[.]/gi, ''));
$('#oprtnEndDt').val($('#oprtnEndDt').val().replace(/[.]/gi, ''));
}
function validCheck(){
if($("#scholInsttNm").val() == ''){
alert('학교(기관)명을 선택해주세요.');
$("#scholInsttNm").focus();
return false;
};
if($("#chrgNm").val() == ''){
alert('교사명을 입력해주세요.');
$("#chrgNm").focus();
return false;
};
if($("#chrgSexCd").val() == ''){
alert('성별을 선택해주세요.');
$("#chrgSexCd").focus();
return false;
};
if($("#email1").val() == '' || $("#email2").val() == ''){
alert('이메일을 입력해주세요.');
$("#email1").focus();
return false;
}
if($("#post").val() == ''){
alert('주소를 입력해주세요.');
$("#post").focus();
return false;
};
if($("#addrDetail").val() == ''){
alert('상세주소를 입력해주세요.');
$("#addrDetail").focus();
return false;
};
if($("#chrgMjr").val() == ''){
alert('담당교과를 입력해주세요.');
$("#chrgMjr").focus();
return false;
};
if($("#birthYear").val() == ''){
alert('생년월일 년도를 선택해주세요.');
$("#birthYear").focus();
return false;
};
if($("#birthMonth").val() == ''){
alert('생년월일 월를 선택해주세요.');
$("#birthMonth").focus();
return false;
};
if($("#birthDay").val() == ''){
alert('생년월일 일자를 선택해주세요.');
$("#birthDay").focus();
return false;
};
if($("#cmpltYear").val() == ''){
alert('이수년도를 입력해주세요.');
$("#cmpltYear").focus();
return false;
};
if($("#cmpltNum").val() == ''){
alert('이수번호를 입력해주세요.');
$("#cmpltNum").focus();
return false;
}
if($("#exprnClsrnCd").val() == ''){
alert('체험교실운영여부 구분을 선택해주세요.');
$("#exprnClsrnCd").focus();
return false;
};
if($("input[name=eClsrnYear]:checked").length == 0){
alert('체험교실운영여부 년도를 하나이상 선택하셔야합니다.');
return false;
}
if($("#exprnClsrnAplct").val() == ''){
alert('신청경로을 선택해주세요.');
$("#exprnClsrnAplct").focus();
return false;
};
if($("#exprnClsrnAplct").val() == '04'){
if($("#exprnClsrnAplctCn").val() == '') {
alert('신청경로 기타 내용을 입력해주세요.');
$("#exprnClsrnAplctCn").focus();
return false;
}
};
if($("#trgtGrade").val() == ''){
alert('대학년수를 입력해주세요.');
$("#trgtGrade").focus();
return false;
};
if($("#trgtClsrm").val() == ''){
alert('대상반을 입력해주세요.');
$("#trgtClsrm").focus();
return false;
};
if($("#trgtPrsnl").val() == ''){
alert('대학생수를 입력해주세요.');
$("#trgtPrsnl").focus();
return false;
};
if($("#rprtSbmt").val() == ''){
alert('보고서제출일을 입력해주세요.');
$("#rprtSbmt").focus();
return false;
}
if($("#oprtnStrtDt").val() == ''){
alert('운영시기 시작일을 입력해주세요.');
$("#oprtnStrtDt").focus();
return false;
}
if($("#oprtnEndDt").val() == ''){c
alert('운영시기 종료일을 입력해주세요.');
$("#oprtnEndDt").focus();
return false;
}
if($(".uploaded_obj").length == 0){
alert("파일을 첨부해 주세요.");
return false;
}
return true;
}
</script>
</head>
<body>
<div class="mask2" onclick="timeLayerUtil()"></div>
<form:form id="listForm" name="listForm" method="post">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEPrcsDetailVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEPrcsDetailVO.searchSortOrd}" />" />
</form:form>
<form id="popupForm" name="popupForm" method="post">
<input type="hidden" name="openType" id="openType" value="callBackSchPop" />
<input type="hidden" name="pageIndex" id="pageIndex" value="1" />
<input type="hidden" name="pageUnit" id="pageUnit" value="5" />
<input type="hidden" name="callBackFnc" id="callBackFnc" value="callBackSchPop" />
</form>
<form:form id="listForm" name="listForm" commandName="modelVO" method="post" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${modelVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${modelVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${modelVO.searchSortOrd}" />" />
</form:form>
<form:form id="createForm" name="createForm" commandName="modelVO" onsubmit="return false;">
<input type="hidden" name="userId" id="userId" value="<c:out value='${info.userId}'/>"/> <!-- 사용자 아이디 -->
<!-- validator 체크를 위한 핸드폰, 이메일 input -->
<input type="hidden" name="clphone" id="clphone" value=""/><!-- 연락처(핸드폰) -->
<input type="hidden" name="email" id="email" value=""/><!-- 이메일 -->
<input type="hidden" name="sbmtYn" id="sbmtYn" value=""/><!-- 제출여부 -->
<input type="hidden" name="aprvlCd" id="aprvlCd" value=""/><!-- 승인코드 -->
<input type="hidden" name="dBirth" id="dBirth" value=""/><!-- dBirth -->
<input type="hidden" name="exprnClsrnYear" id="exprnClsrnYear" value=""/><!-- exprnClsrnYear -->
<form:form id="createForm" name="createForm" commandName="vEPrcsDetailVO" method="post">
<input type="hidden" name="lctrDivCd" value="30"/>
<input type="hidden" name="limitcount" id="limitcount" value="3" /><!-- 최대 업로드 파일갯수 -->
<input type="hidden" name="allrowFileExtsn" id="allrowFileExtsn" value="gif,jpg,jpeg,png" /><!-- 최대 업로드 파일갯수 -->
<input type="hidden" name="mode" id="mode" value="${modelVO.mode}" />
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="${info.eduAplctOrd}" />
<input type="hidden" name="oprtnFileId" id="oprtnFileId" value="${info.oprtnFileId}" />
<!-- cont -->
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>교육신청 내용 변경</h2>
<h2>운영신청서 등록</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>교육신청관리</p>
<p>저작권 체험교실</p>
</li>
<li><span class="cur_nav">교육신청 내용 변경</span></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>
<p>저작권 체험교실 운영 신청 등록</p>
</div>
<div class="tb_type02">
<!-- list_상세 -->
<div class="tb_type02 wirte">
<table>
<colgroup>
<col style="width: 220px;">
<col style="width: 210px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>학교(기관)명</p>
<p>교사 아이디</p>
</th>
<td colspan="3">
<input type="text" value="${info.scholInsttNm}" size="25" readonly id="scholInsttNm" name="scholInsttNm" title="학교(기관)명">
<button type="button" class="btn_type06" data-tooltip="sub01_pop02" onclick="fncScholList();">학교검색</button>
<input type="hidden" size="25" title="학교명코드" id="stndrdScholCd" name="stndrdScholCd" value="${info.stndrdScholCd}">
<td>
<input type="text" value="${info.userId}" style="min-width:400px;" size="25" readonly id="userId" name="userId" title="교사아이디">
<button type="button" class="btn_type06" onclick="fncUserList();">사용자 검색</button>
</td>
</tr>
<tr>
@ -353,8 +238,10 @@
<p>교사명</p>
</th>
<td>
<input type="text" value="${info.chrgNm}" size="25" id="chrgNm" name="chrgNm" title="담당자명">
<input type="text" value="${info.chrgNm}" style="min-width:400px;" size="25" id="chrgNm" name="chrgNm" title="교사명">
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>성별</p>
@ -366,17 +253,64 @@
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>이메일</p>
<p>휴대폰</p>
</th>
<td class="input_mail" colspan="3">
<c:set var="email" value="${fn:split(info.email,'@')}"/>
<input type="text" value="${email[0]}" name="email1" id="email1" size="20" maxlength="30" title="이메일 주소 입력">
@
<input type="text" value="${email[1]}" name="email2" id="email2" size="20" maxlength="30" title="이메일 직접 입력">
<kc:select codeId="ADR030" id="emailType" name="emailType" styleClass="sel_type1" defaultValue="" defaultText="직접입력" onChange="emailSelect(this);"/>
<span class="table_req_text">
※ 교내에서 확인 가능한 메일 계정 입력 (예) 교육청 도메인
</span>
<td class="input_phone">
<c:set var="clphone" value="${fn:split(info.clphone,'-')}"/>
<kc:select codeId="ADR020" id="clphone1" name="clphone1" selectedValue="${clphone[0]}" defaultValue="010" styleClass="sel_type1"/>
-
<input type="text" value="${clphone[1]}" id="clphone2" onkeyup="onlyNumber(this);" name="clphone2" maxlength="4" title="휴대폰 중간자리">
-
<input type="text" value="${clphone[2]}" id="clphone3" onkeyup="onlyNumber(this);" name="clphone3" maxlength="4" title="휴대폰 마지막자리">
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>전화</p>
</th>
<td class="input_phone">
<c:set var="phone" value="${fn:split(info.phone,'-')}"/>
<input type="text" value="${phone[0]}" name="phone1" id="phone1" onkeyup="onlyNumber(this);" maxlength="3" style="width: 87px;" title="전화번호입력">
-
<input type="text" value="${phone[1]}" name="phone2" id="phone2" onkeyup="onlyNumber(this);" maxlength="4" title="전화번호입력">
-
<input type="text" value="${phone[2]}" name="phone3" id="phone3" onkeyup="onlyNumber(this);" maxlength="4" title="전화번호입력">
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>학교(기관)명</p>
</th>
<td>
<label for="eduSlctAreaCd" class="label">지역 선택</label>
<kc:select codeId="VE0008" selectedValue="${info.eduSlctAreaCd}" id="eduSlctAreaCd" name="eduSlctAreaCd" styleClass="selType1" css="readonly" defaultText="지역" defaultValue=""
script="onFocus='this.initialSelect = this.selectedIndex;' onChange='this.selectedIndex = this.initialSelect;'"/>
<input type="text" value="${info.scholInsttNm}" style="min-width:400px;" size="25" readonly id="scholInsttNm" name="scholInsttNm" title="학교(기관)명">
<button type="button" class="btn_type06" onclick="fncScholList();">학교검색</button>
<input type="hidden" size="25" title="학교명코드" id="stndrdScholCd" name="stndrdScholCd" value="${info.stndrdScholCd}">
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>학교구분</p>
</th>
<td>
<kc:radio codeId="VE0009" id="scholDivCd" name="scholDivCd" selectedValue="${empty info.scholDivCd ? '10' : info.scholDivCd}" />
</td>
<!-- </tr> -->
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>학교지역특성</p>
</th>
<td>
<input type="checkbox" id="islandsYn" name="islandsYn" value="Y"><label for="islandsYn"> 도서지역</label>
<input type="checkbox" id="remoteYn" name="remoteYn" value="Y"><label for="remoteYn"> 벽지지역</label>
<input type="checkbox" id="clsCmbtYn" name="clsCmbtYn" value="Y"><label for="clsCmbtYn"> 접적지역</label>
<input type="checkbox" id="ppulDclnYn" name="ppulDclnYn" value="Y"><label for="ppulDclnYn"> 인구감소지역</label>
</td>
</tr>
<tr class="input_adress">
@ -384,11 +318,23 @@
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>주소</p>
</th>
<td colspan="3">
<input type="text" class="adressFst adr_input" value="${info.post}" id="post" name="post" title="우편번호" readonly />
<%--<button type="button" class="btnType01" onclick="fn_postCode(this);" title="팝업 열림">주소찾기</button>--%><br/>
<input type="text" class="adressMid searchResultAddr" value="${info.addr}" id="addr" name="addr" title="중간주소" readonly /><br/>
<input type="text" class="adressLst usrInsertAddr" value="${info.addrDetail}" id="addrDetail" name="addrDetail" title="상세주소" readonly>
<td>
<input type="text" value="${info.post}" class="adressFst" id="post" name="post" title="우편번호" readonly><br/><%--<button type="button" class="btnType01">주소찾기</button>--%>
<input type="text" value="${info.addr}" class="adressMid" id="addr" name="addr" title="중간주소" readonly><br/>
<input type="text" value="${info.addrDetail}" class="adressLst" id="addrDetail" name="addrDetail" title="상세주소" readonly>
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>이메일</p>
</th>
<td class="input_mail">
<c:set var="email" value="${fn:split(info.email,'@')}"/>
<input type="text" value="${email[0]}" onkeyup="onlyAlphabetNumber(this);" name="email1" id="email1" size="20" maxlength="30" title="이메일 주소 입력">
@
<input type="text" value="${email[1]}" name="email2" id="email2" size="20" maxlength="30" title="이메일 직접 입력">
<kc:select codeId="ADR030" id="emailType" name="emailType" styleClass="sel_type1" defaultValue="" defaultText="직접입력" onChange="emailSelect(this);"/>
</td>
</tr>
<tr>
@ -397,6 +343,7 @@
<p>담당교과</p>
</th>
<td colspan="3">
<label for="chrgMjr" class="label">담당교과 입력</label>
<input type="text" name="chrgMjr" id="chrgMjr" value="${info.chrgMjr}" size="25">
</td>
</tr>
@ -411,24 +358,12 @@
<c:set var="birthMonth" value="${fn:substring(info.dBirth, 4, 6)}"/>
<c:set var="birthDay" value="${fn:substring(info.dBirth, 6, 8)}"/>
</c:if>
<select name="birthYear" id="birthYear" class="sel_type1 birthYear" selectValue="${birthYear}"></select>
<select name="birthMonth" id="birthMonth" class="sel_type1 birthMonth" selectValue="${birthMonth}"></select>
<select name="birthDay" id="birthDay" class="sel_type1 birthDay" selectValue="${birthDay}"></select>
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>저작권 오프라인<br/>교원연수</p>
</th>
<td colspan="3">
<span class="t_bold">이수년도</span>
<select id="cmpltYear" name="cmpltYear" class="sel_type1 yearSelect"
selectValue="${info.cmpltYear}" start="${sysYear}" emptyOption="true" selected="" order="asc"></select> &nbsp;&nbsp;&nbsp;
<span class="t_bold">이수번호</span> <input type="text" value="${info.cmpltNum}" size="15" id="cmpltNum" name="cmpltNum" maxlength="12" onkeyup="cmpltNoFormat(this);" title="이수번호">
<span class="table_req_text">
※ 교내에서 확인 가능한 메일 계정 입력 (예) 교육청 도메인
</span>
<label for="birthYear" class="label">년도 선택</label>
<select name="birthYear" id="birthYear" class="selType1 birthYear" selectValue="${birthYear}"></select>
<label for="birthMonth" class="label">월 선택</label>
<select name="birthMonth" id="birthMonth" class="selType1 birthMonth" selectValue="${birthMonth}"></select>
<label for="birthDay" class="label">일 선택</label>
<select name="birthDay" id="birthDay" class="selType1 birthDay" selectValue="${birthDay}"></select>
</td>
</tr>
<tr>
@ -437,14 +372,18 @@
<p>체험교실운영여부</p>
</th>
<td colspan="3">
<kc:radio codeId="VE0031" name="exprnClsrnCd" id="exprnClsrnCd" selectedValue="${empty info.exprnClsrnCd ? '01' : info.exprnClsrnCd}"/><br/>
<c:forEach var="year" begin="2009" end="${sysYear}" varStatus="status">
<kc:radio codeId="VE0031" name="exprnClsrnCd" id="exprnClsrnCd"
selectedValue="${empty info.exprnClsrnCd ? '01' : info.exprnClsrnCd}"
onChange="oprtnYn()"/><br/>
<c:forEach var="year" begin="2009" end="${sysYear-1}" varStatus="status">
<input type="checkbox" id="exprnClsrnYear${status.count}" name="eClsrnYear" title="${year}" value="${year}" ${fn:contains(info.exprnClsrnYear, year) ? 'checked' : ''}>
<label for="exprnClsrnYear${status.count}">${year}</label>
<c:if test="${status.count % 10 eq 0}">
<br/>
</c:if>
</c:forEach>
</br>
<span>※ 소속학교 변동 여부와는 관계없이 기운영 여부를 체크.</span>
</td>
</tr>
<tr>
@ -454,59 +393,52 @@
</th>
<td colspan="3">
<kc:radio codeId="VE0030" name="exprnClsrnAplct" id="exprnClsrnAplct" selectedValue="${empty info.exprnClsrnAplct ? '01' : info.exprnClsrnAplct}" onChange="fncEtcInputEnable(this)"/>
<input type="text" value="${info.exprnClsrnAplctCn}" size="25" id="exprnClsrnAplctCn" name="exprnClsrnAplctCn" title="신청경로기타설명" ${info.exprnClsrnAplct eq '04' ? '' : 'disabled'}>
<label for="exprnClsrnAplctCn" class="label">신청경로 기타설명</label>
<input type="text" value="${info.exprnClsrnAplctCn}" size="25" id="exprnClsrnAplctCn" name="exprnClsrnAplctCn" ${info.exprnClsrnAplct eq '04' ? '' : 'disabled'}>
</td>
</tr>
</tbody>
</table>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>운영계획</p>
<span class="cf_text">* 항목은 필수 입력 사항입니다.</span>
</div>
</div>
<div class="tb_type02">
<div class="tb_type02 wirte">
<table>
<colgroup>
<col style="width: 220px;">
<col style="width: 210px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>학년수</p>
<p>학년수 </p>
</th>
<td>
<input type="text" name="trgtGrade" id="trgtGrade" onkeyup="onlyNumber(this);" maxlength="3" value="${info.trgtGrade}" title="교육대상" size="20"> 학년
<td colspan="3">
<label for="trgtGrade" class="label">대상 학년 입력</label>
<input type="text" name="trgtGrade" id="trgtGrade" onkeyup="onlyNumber(this);" maxlength="3" value="${info.trgtGrade}" size="20"> 학년
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>대상 반</p>
</th>
<td>
<input type="text" name="trgtClsrm" id="trgtClsrm" onkeyup="onlyNumber(this);" maxlength="3" value="${info.trgtClsrm}" title="교육인원" size="20"> 반
<td colspan="3">
<label for="trgtClsrm" class="label">대상 반 입력</label>
<input type="text" name="trgtClsrm" id="trgtClsrm" value="${info.trgtClsrm}" title="교육인원" size="20"> 반
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>학생수</p>
<p>학생수</p>
</th>
<td>
<input type="text" name="trgtPrsnl" id="trgtPrsnl" onkeyup="onlyNumber(this);" maxlength="4" value="${info.trgtPrsnl}" title="교육대상" size="20"> 명
</td>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>보고서제출일</p>
</th>
<td>
<div class="calendar_wrap">
<fmt:parseDate value="${info.rprtSbmt}" var="rprtSbmt" pattern="yyyyMMdd"/>
<input type="text" value="<fmt:formatDate value="${rprtSbmt}" pattern="yyyy.MM.dd"/>" name="rprtSbmt" id="rprtSbmt" class="calendar" title="시작일 선택">
</div>
<td colspan="3">
<label for="trgtPrsnl" class="label">학생 수 입력</label>
<input type="text" name="trgtPrsnl" id="trgtPrsnl" onkeyup="onlyNumber(this);" maxlength="4" value="${info.trgtPrsnl}" size="20"> 명
</td>
</tr>
<tr>
@ -515,15 +447,9 @@
<p>운영시기</p>
</th>
<td colspan="3">
<div class="calendar_wrap">
<fmt:parseDate value="${info.oprtnStrtDt}" var="oprtnStrtDt" pattern="yyyyMMdd"/>
<input type="text" value="<fmt:formatDate value="${oprtnStrtDt}" pattern="yyyy.MM.dd"/>" name="oprtnStrtDt" id="oprtnStrtDt" class="calendar" title="시작일 선택">
</div>
~
<div class="calendar_wrap">
<fmt:parseDate value="${info.oprtnEndDt}" var="oprtnEndDt" pattern="yyyyMMdd"/>
<input type="text" value="<fmt:formatDate value="${oprtnEndDt}" pattern="yyyy.MM.dd"/>" name="oprtnEndDt" id="oprtnEndDt" class="calendar" title="종료일 선택">
</div>
<kc:radio codeId="VE0030" name="exprnClsrnAplct" id="exprnClsrnAplct" selectedValue="${empty info.exprnClsrnAplct ? '01' : info.exprnClsrnAplct}" onChange="fncEtcInputEnable(this)"/>
<label for="exprnClsrnAplctCn" class="label">신청경로 기타설명</label>
<input type="text" value="${info.exprnClsrnAplctCn}" size="25" id="exprnClsrnAplctCn" name="exprnClsrnAplctCn" ${info.exprnClsrnAplct eq '04' ? '' : 'disabled'}>
</td>
</tr>
<tr>
@ -531,52 +457,63 @@
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>첨부파일</p>
</th>
<td class="upload_area" colspan="3">
<div class="btn_wrap">
<button type="button" class="btnType01 btn_add_file">파일찾기</button>
<td class="upload_area">
<!-- <input type="text" id="fileNm" size="30" class="file_input" readonly> --><!-- <button type="button" class="btnType01 btn_add_file">파일 첨부하기</button> -->
<input type="file" id="file_temp" name="file_temp" class="uploadFile" style="display:none"/>
</div>
<div class="file_wrap">
<table>
<button type="button" id="filebutton" class="btn_type01">파일 첨부하기</button>
<p style="padding-left:30px;">첨부파일 가능 용량은 20MB입니다. </p><p style="color:red;font-weight:500">업로드 순서는 1.신청서 2.안내문 입니다.</p>
<div class="file_wrap file_upload_box no_img_box">
<table class="tbType02">
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: 60%;">
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 15%;">
<col style="width: 20%;">
<col style="width: 10%;">
</colgroup>
<thead>
<th>파일 명</th>
<th>종류</th>
<th>크기</th>
<!-- <th>
<input type="checkbox" id="all_check"><label for="all_check"></label>
</th> -->
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody class="tb_file_before">
<tr>
<td colspan="3">
<p>첨부하실 파일을 <span>마우스끌어서</span> 넣어주세요.</p>
<td colspan="4">
<p>첨부하실 파일을 <span>마우스끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap">
<table>
<div class="file_wrap fileAfter file_list_div">
<table class="tbType02">
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 15%;">
<col style="width: 100px;">
<col style="width: 60%">
<col style="width: 10%">
<col style="width: 20%">
<col style="width: 10%">
</colgroup>
<thead>
<th>파일 명</th>
<th>종류</th>
<th>크기</th>
<th>삭제</th>
<!-- <th>
<input type="checkbox" id="all_check"><label for="all_check"></label>
</th> -->
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody id="tbody_fiielist" class="tb_file_after">
<c:forEach var="fileList" items="${fileList}" varStatus="status">
<tr class="item_${fileList.atchFileId}_${fileList.fileSn} uploaded_obj">
<tr class="item_<c:out value='${fileList.atchFileId}' />_<c:out value='${fileList.fileSn}' /> uploaded_obj">
<input type="hidden" name="fileSize" class="item_file_size" value="${fileList.fileSize}">
<td class="td_filename">
<span class="file_name_text">${fileList.orignlFileNm}</span>
<!-- <img src="/direct/img/upload_hwp_img.png" alt="" /> -->
<span class="file_name_text"><c:out value='${fileList.orignlFileNm}' /></span>
</td>
<td class="td_filesort">
<span class="file_filesort_text" value="<c:out value="${fileList.fileExtsn}"/>"><c:out value="${fileList.fileExtsn}"/></span>
@ -585,39 +522,32 @@
<span class="file_size_text" value="<c:out value="${fileList.fileMg}"/>"><c:out value="${fileList.fileMg}"/></span>
</td>
<td>
<button type="button" class="btn_del" onclick="delAtchFile('${fileList.atchFileId}', '${fileList.fileSn}'); return false;"><i></i></button>
<button type="button" class="btn_del" onclick="delAtchFile('<c:out value='${fileList.atchFileId}' />', '<c:out value='${fileList.fileSn}' />'); return false;" title="파일삭제"><i></i></button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div class="file_cf">
<div class="cf_left">
<p>최대 <span>3</span>개</p>
<p><span>50MB</span>제한</p>
</div>
</div>
<span class="table_req_text">
※ 신청서(공문)양식 다운로드 후, 직인을 포함하여 업로드 해주세요.
</span>
</td>
</tr>
</tbody>
</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_type01" onclick="fncSave('S');">저장</button>
<button type="button" class="btn_type03" onclick="fncGoList();">취소</button>
<button type="button" class="btn_type05" onclick="fncSave(); return false;">등록</button>
<button type="button" class="btn_type03" onclick="fncGoList(); return false;">취소</button>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,71 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<link rel="stylesheet" href="${pageContext.request.contextPath}/visitEdu/usr/publish/css/popup.css">
<style>.popup_wrap {display: block; width:750px !important;}</style>
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
// 레이어팝업 포커싱 이동 수정
$(".tooltip-close").click(function(){
$('[data-tooltip="sub40_pop01"]').focus();
});
})
function fncGoList(){
linkPage(1);
}
function linkPage(pageNo){
var data = {
pageIndex : pageNo,
searchKeyword : $("#searchKeyword").val(),
searchCondition : $("#searchCondition").val(),
pageUnit : 5,
formId : $("#formId").val(),
}
fncScholList(data);
}
function goWrite(){
location.href= "${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctReg.do";
}
</script>
<div class="popup_wrap popType05" tabindex="0" data-tooltip-con="sub40_pop01" data-focus="sub40_pop01" data-focus-prev="list_popup_close">
<div class="popup_tit">
<p>신청서 작성 안내</p>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="application_wrap">
<div class="info_box">
<dl>
<dt>알려드립니다</dt>
<dd><c:out value='${nowYear}'/>년도 저작권 체험교실 운영 신청은 <c:out value='${vEPrcsDetailVO.strtPnttm }'/> ~ <c:out value='${vEPrcsDetailVO.endPnttm}'/>,<br>9:00 ~ 18:00에 진행되오니 많은 관심 부탁드립니다. 감사합니다.</dd>
</dl>
</div>
<div class="title">· 신청서 접수 시 유의사항</div>
<div class="list">
<ol>
<li><span class="number"></span>저작권 체험교실 운영 신청만 가능합니다. 찾아가는 저작권 교육 신청은 불가능합니다.<span>- 찾아가는 저작권 교육 신청은 해당 사이트(www.copyright.or.kr/offedu)에서 이용하여</br>
&nbsp&nbsp주시기 바랍니다.</span></li>
<li><span class="number"></span>신청 시 공문양식을 다운로드 받아서 반드시 학교장 직인된 공문을 첨부해야 합니다.</li>
<li><span class="number"></span>신청 시 반드시 본인 계정으로 신청해야 하며, 타인 계정으로 신청 시 신청 취소 처리됩니다.</li>
<li><span class="number"></span>체험교실 신규 운영 교사는 체험교실 운영 교사 연수(1일, 8시간)를 반드시 이수해야 하며, 체험교실 운영 기간내에 저작권 e-배움터에서 제공하는 온라인 강좌를 의무 이수해야 합니다.</li>
<li><span class="number"></span>신청기간 내 위원회 업무시간(09:00 ~ 18:00)동안 이용이 가능합니다.</li>
<!-- <li><span class="number">6.</span>신청기간 내 학교급별(초등, 중등, 고등) 게시판을 반드시 확인 후 신청해 주시기 바랍니다.</li> -->
<li><span class="number"></span>신청교사가 교내에서 확인 가능한 메일 계정을 기재해 주시기 바랍니다.</li>
<li><span class="number"></span>신청 중 문의사항은 위원회 체험교실 담당자에게 연락을 주시기 바랍니다(055-792-0234)</li>
<li><span class="number"></span>선정 후 취소(신규 운영 교사 사전 연수 불참 등) 및 운영 포기교실은 차년도 참여를 제한합니다.<br>(해당 내용 학교 공문 발송 예정)</li>
</ol>
</div>
</div>
</div>
</div>
</div>

View File

@ -50,6 +50,11 @@
var endPnttm = new Date(dateText.split("~")[1].trim().replace(/\./g, '-'));
var currentDate = new Date();
// 시간, 분, 초 초기화
strtPnttm.setHours(0, 0, 0, 0);
endPnttm.setHours(0, 0, 0, 0);
currentDate.setHours(0, 0, 0, 0);
if (currentDate < strtPnttm) {
$ddlnCdStts.text("접수전");
} else if (currentDate >= strtPnttm && currentDate <= endPnttm) {
@ -66,13 +71,56 @@
listForm.submit();
}
function fncGoDetail(){
var form = document.detailForm ;
form.action = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctPrdMngDetail.do'/>";
form.submit();
}
function fncMdfy(){
var detailForm = document.detailForm ;
var form = document.mdfyForm ;
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 fncInstrAsgnmInfo(prcsAplctPrdOrd) {
var form = document.popForm;
@ -86,35 +134,92 @@
form.submit();
}
function chkAll(obj) {
// 모든 체크박스의 상태를 헤더 체크박스의 상태와 동일하게 설정
$("input[name='chk']").prop('checked', $(obj).prop('checked'));
}
function updateEduAplctOrd(p_aprvlCd, 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,
"aprvlCd": p_aprvlCd,
"prcsAplctPrdOrd": p_prcsAplctPrdOrd
};
var url = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/updateEduAplctAprvlCdAjax.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: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 id="mdfyForm" name="mdfyForm" method="post">
<input type="hidden" name="prcsAplctPrdOrd" id="prcsAplctPrdOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdOrd}' />"/>
</form>
<form:form id="detailForm" name="detailForm" commandName="vEPrcsDetailVO" method="post">
<input type="hidden" name="prcsAplctPrdOrd" value="<c:out value='${vEPrcsDetailVO.prcsAplctPrdOrd}' default='1' />"/>
<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>
<h2>과정 신청기간 상세</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>교육콘텐츠</p>
<p>조건부기소유예관리</p>
</li>
<li><span class="cur_nav">교육 과정 관리</span></li>
<li><span class="cur_nav">교육 과정 상세</span></li>
<li><span class="cur_nav">과정신청기간관리 신청기간 상세</span></li>
</ul>
</div>
<!-- //cont_tit -->
@ -164,7 +269,12 @@
<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">
@ -216,12 +326,14 @@
<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>
@ -238,12 +350,15 @@
<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="3">강사 배치 정보가 없습니다.</td>
<td colspan="4">강사 배치 정보가 없습니다.</td>
</tr>
</c:otherwise>
</c:choose>
@ -267,7 +382,30 @@
교육 신청자 list_상세
-->
<div class="tb_tit01">
<p>교육신청자</p>
<p>교육신청자</p> <!-- ${listPrcsAplct } -->
</div>
<!-- list_top -->
<div class="list_top search-only">
<div class="list_top_1">
<div class="util_right">
<select id="searchStatus" name="searchStatus" class="sel_type1">
<option value="10" <c:if test="${vEPrcsDetailVO.searchStatus==10 }">selected="selected"</c:if> >확정여부</option>
<option value="20" <c:if test="${vEPrcsDetailVO.searchStatus==20 }">selected="selected"</c:if>>이수여부</option>
</select>
<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="fncGoDetail(); return false;">검색</button>
<!-- <button class="btn_type03" onclick="fncReset(this); return false;">초기화</button> -->
</div>
</div>
</div>
<div class="tb_type01">
<table>
@ -281,20 +419,15 @@
<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>
<th>신청상태</th>
<th>설문조사</th>
<th>이수증</th>
</tr>
</thead>
<tbody>
<!-- 템플릿만 맞춤. 값은 다름 20230906-->
<!-- 템플릿만 맞춤. 값은 다름 20230906-->
<!-- 템플릿만 맞춤. 값은 다름 20230906-->
<c:choose>
<c:when test="${!empty listPrcsAplct}">
<c:forEach var="list" items="${listPrcsAplct}" varStatus="status">
@ -304,10 +437,7 @@
value="${list.eduAplctOrd}" title="Check" type="checkbox"/>
</td>
<td>
<c:out value="${status.count}"/>
</td>
<td>
<c:out value="${list.chrgNm}"/>
<c:out value="${list.userNm}"/>
</td>
<td>
<c:out value="${list.sbmtPnttm}"/>
@ -316,28 +446,55 @@
<ve:code codeId="VE0003" code="${list.aprvlCd}"/>
</td>
<td>
설문조사
<ve:code codeId="VEA003" code="${list.aplctStateCd}"/>
</td>
<td>
출력
<c:choose>
<c:when test="${list.qestnrId }">
<button type="button" class="btn_type04" onclick="fn_qestnr('<c:out value="${list.qestnrId }"/>');">설문결과</button>
</c:when>
<c:otherwise>
미입력
</c:otherwise>
</c:choose>
</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>
</c:otherwise>
</c:choose>
</td>
</tr>
</c:forEach>
</c:when>
<c:otherwise>
<tr>
<td colspan="8">신청자가 없습니다.</td>
<td colspan="7">신청자가 없습니다.</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/fndthEnhanceTrn/fndthEduPrcsAplctPrdMngList.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="updateEduAplctOrd(20, '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">교육승인</button>
</div>
</div>
</div>
</div>

View File

@ -294,7 +294,7 @@
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="4"><spring:message code="common.nodata.msg" /></td></tr>
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>

View File

@ -8,6 +8,7 @@
<%@ 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" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%
/**
* @Class Name : fndthEduPrcsAplctPrdMngMdfy.jsp
@ -29,6 +30,39 @@
<title>교육과정관리</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
$(document).ready(function(){
$('#prcsOrd').change(function(){
fnSelectDivAndCn($(this).val());
});
fnSelectDivAndCn($('#prcsOrd').val());
});
// div codeNm 가져오는 function
function fnSelectDivAndCn(prcsOrdVal){
var url = "${pageContext.request.contextPath}/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsAplctSelectDivAndCnAjax.do";
$.ajax({
type:"POST",
url: url,
data:{ "prcsOrd" : prcsOrdVal},
dataType:'json',
async: false,
success:function(returnData){
if(returnData.result == "success"){
$('#prcsDiv').val(returnData.prcsDiv);
$('#prcsCn').val(returnData.prcsCn);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
//세부과정 추가 버튼 클릭 시 세부과정 추가
function addPro() {
var addQuest = $(".addPro_wrap");
@ -176,7 +210,8 @@
<tr>
<th scope="row">교육부분</th>
<td>
<ve:select codeId="VEA001" name="prcsDiv" id="prcsDiv" css="class='sel_type1'" selectedValue="${info.prcsDiv}"/>
<input type="text" id="prcsDiv" readonly="readonly" value=""/>
<%-- <ve:select codeId="VEA001" name="prcsDiv" id="prcsDiv" css="class='sel_type1'" selectedValue="${info.prcsDiv}"/> --%>
</td>
</tr>
<tr>
@ -189,7 +224,8 @@
<c:forEach var="listPrcs" items="${listPrcs}" varStatus="status">
<option value='<c:out value="${listPrcs.prcsOrd}"/>'
<c:if test="${listPrcs.prcsOrd eq info.prcsOrd}"> selected</c:if>
><c:out value="${listPrcs.prcsOrd}"/>_<c:out value="${listPrcs.prcsNm}"/></option>
>
<c:out value="${listPrcs.prcsOrd}"/>_<c:out value="${listPrcs.prcsNm}"/></option>
</c:forEach>
</select>
@ -230,6 +266,13 @@
</td>
</tr>
<tr>
<th scope="row">상세교육과정</th>
<td>
<textarea name="prcsCn" id="prcsCn" class="memo" disabled="disabled" class="inputLight" style="height: 200px;"><c:out value="${info.prcsCn }" /></textarea>
</td>
</tr>
<tr>
<th scope="row">정원</th>
<td class="addPro_wrap">

View File

@ -35,6 +35,17 @@
$('#prcsOrd').change(function(){
fnSelectDivAndCn($(this).val());
});
$('#nos').on('input', function() {
// 숫자만 허용
$(this).val($(this).val().replace(/[^0-9]/g, ''));
// 값이 0으로 시작하면 제거
if ($(this).val().charAt(0) == '0') {
$(this).val($(this).val().substring(1));
}
});
});
@ -203,13 +214,13 @@
<tbody>
<tr>
<th scope="row">교육부분코드</th>
<th scope="row">교육부분</th>
<td>
<input type="text" name="prcsDiv" id="prcsDiv" readonly="readonly" value="${prcsDivNm }"/>
</td>
</tr>
<tr>
<th scope="row">교육과정</th>
<th scope="row">과정</th>
<td>
<%-- <ve:select codeId="VE0015" name="prcsDiv" id="prcsDiv" css="class='sel_type1'" selectedValue="<c:out value='${info.prcsDiv}'/>" defaultValue='10'/> --%>

View File

@ -127,7 +127,7 @@
function fncGoList(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngList.do'/>";
listForm.action = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngList.do'/>";
listForm.submit();
}

View File

@ -65,7 +65,74 @@ function snsShare(snsName) {
<!-- 바디 전체 div="container" 선언 - 네비/바디 전체 div="container" 종료 - 푸터 -->
<div class="container">
<c:if test="${!fn:contains(URL , 'login/ssoLogin.')}">
<div class="path">
<div class="navigation">
<div class="inner">
<ul class="list">
<li class="home"><a href="/user/main/main.do">메인화면</a></li>
<li>
<!-- 데이터 셋팅 -->
<c:forEach var="resultListTit" items="${menuResultList}" varStatus="status">
<c:if test="${resultListTit.depths eq '2' and fn:contains(resultListTit.url, pageUri)}" >
<!-- 조건을 만족하는 항목에 대한 처리 -->
<c:set var="upperMenuId" value="${resultListTit.upperMenuId }"/>
</c:if>
</c:forEach>
<!-- 1depths -->
<c:forEach var="resultListTit" items="${menuResultList}" varStatus="status">
<c:if test="${resultListTit.depths eq '1' and upperMenuId eq resultListTit.menuNo }" >
<button type="button" class="navi_title" id="p_menu_nm_navi" title="하위메뉴 열기">${resultListTit.menuNm }</button>
<!-- 조건을 만족하는 항목에 대한 처리 -->
</c:if>
</c:forEach>
<ul class="navi_depth" id="navi_depth_1">
<c:forEach var="resultListOne" items="${menuResultList}" varStatus="status">
<c:if test="${resultListOne.depths eq '1' }">
<li>
<a href="${pageContext.request.contextPath}${empty resultListOne.url ? '#' : resultListOne.url }" ${resultListOne.menuType eq 'O' ? 'target="_blank"' : ""} >
<c:out value="${resultListOne.menuNm}" escapeXml="false" />
</a>
</li>
</c:if>
</c:forEach>
</ul>
</li>
<!-- 2depths -->
<li>
<c:set var="found" value="false"/>
<c:forEach var="resultListTwo" items="${menuResultList}" varStatus="status">
<c:if test="${not found
&& resultListTwo.depths eq '2'
&& resultListTwo.upperMenuId eq upperMenuId
and fn:contains(resultListTwo.url, pageUriLast)}">
<button type="button" class="navi_title" id="menu_nm_navi" title="하위메뉴 열기"><c:out value="${resultListTwo.menuNm}" /></button>
<c:set var="found" value="true"/>
</c:if>
</c:forEach>
<ul class="navi_depth" id="navi_depth_2">
<c:forEach var="resultListTwo" items="${menuResultList}" varStatus="status">
<c:if test="${resultListTwo.depths eq '2'
&& resultListTwo.upperMenuId eq upperMenuId }">
<li>
<a href="${pageContext.request.contextPath}${empty resultListTwo.url ? '#' : resultListTwo.url }" ${resultListTwo.menuType eq 'O' ? 'target="_blank"' : ""} >
<c:out value="${resultListTwo.menuNm}" />
</a>
</li>
</c:if>
</c:forEach>
</ul>
</li>
</ul>
</div>
</div>
<%-- <div class="path">
<div class="pathedfr">
<ul>
<li class="home"><i></i>HOME</li>
@ -135,11 +202,11 @@ function snsShare(snsName) {
</ul>
</div>
<!--// mobile snb-->
</div>
</div> --%>
</c:if>
<!-- 선언 - 이너/종료 - 푸터 -->
<div class="inner">
<div class="snb">
<%-- <div class="snb">
<c:forEach var="menuLeftResultList" items="${menuLeftResultList}" varStatus="status">
<c:if test="${menuLeftResultList.depths eq '1' }">
<c:forEach var="resultCurrentList" items="${menuCurrentResultList}" varStatus="status">
@ -162,7 +229,7 @@ function snsShare(snsName) {
</c:forEach>
</ul>
</div>
</div>
</div> --%>

View File

@ -106,6 +106,7 @@
document.body.innerHTML = initBody;
}
//설문조사 주석 임시로
function beforeSrvyPopupAjax(){
var sendData= $(document.listForm).serializeArray();
$("#beforeSrvyPopupLoad").load("${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/Popup/beforeSrvyPopup.do", sendData ,function(response, status, xhr){
@ -283,9 +284,9 @@
</th>
<td>
<c:choose>
<c:when test="${not empty info.endPnttm}">
<fmt:parseDate value="${info.endPnttm}" var="endPnttm" pattern="yyMMddHHmmss"/>
<fmt:formatDate value="${endPnttm}" pattern="yyyy.MM.dd"/>
<c:when test="${not empty info.prcsEndPnttm}">
<fmt:parseDate value="${info.prcsEndPnttm}" var="prcsEndPnttm" pattern="yyMMddHHmm"/>
<fmt:formatDate value="${prcsEndPnttm}" pattern="yyyy.MM.dd"/>
</c:when>
<c:otherwise>
-

View File

@ -113,8 +113,8 @@
</td>
<td>
<a href="javascript:fncGoDetail('${list.eduAplctOrd}');" >
<fmt:parseDate value="${list.endPnttm}" var="endPnttm" pattern="yyMMddHHmmss"/>
<fmt:formatDate value="${endPnttm}" pattern="20yy.MM.dd"/>
<fmt:parseDate value="${list.prcsEndPnttm}" var="prcsEndPnttm" pattern="yyyyMMddHHmm"/>
<fmt:formatDate value="${prcsEndPnttm}" pattern="yyyy.MM.dd"/>
</a>
</td>
<td>
@ -185,8 +185,8 @@
<li>
<span>접수종료일</span>
<span>
<fmt:parseDate value="${list.endPnttm}" var="endPnttm" pattern="yyMMddHHmmss"/>
<fmt:formatDate value="${endPnttm}" pattern="20yy.MM.dd"/>
<fmt:parseDate value="${list.prcsEndPnttm}" var="prcsEndPnttm" pattern="yyyyMMddHHmm"/>
<fmt:formatDate value="${prcsEndPnttm}" pattern="yyyy.MM.dd"/>
</span>
</li>
<li>

View File

@ -1,540 +0,0 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<% pageContext.setAttribute("replaceChar", "\n"); %>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<spring:eval expression="@property['Globals.Innorix.License']" var="license"/>
<script>
/* js에 전달용 */
var contextPath = '${pageContext.request.contextPath}';
var eduAplctOrd = "<c:out value='${info.eduAplctOrd}'/>";
</script>
<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;
}
#orgn{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(/offeduadvc/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;}
#cpy{margin: 8px 0 0 0; border: 1px solid #d5d5d5; border-radius: 5px; height: 150px !important; background-color: #fafafa;}
#evdnc{margin: 8px 0 0 0; border: 1px solid #d5d5d5; border-radius: 5px; height: 150px !important; background-color: #fafafa;}
#evdnc div.irx_filetree.empty-uploader{background: url(/offeduadvc/visitEdu/usr/publish/images/content/dropzone_file_before_only_zip.png) no-repeat center; height: 150px !important;}
#rmttrn{margin: 8px 0 0 0; border: 1px solid #d5d5d5; border-radius: 5px; height: 150px !important; background-color: #fafafa;}
</style>
<script type="text/javaScript" language="javascript">
//대용량 업로드 솔루션
var control1 = new Object();
var control2 = new Object();
var control3 = new Object();
var control4 = new Object();
var control5 = new Object();
//첨부파일 변화 유무
var control1Chg = 'N';
var control2Chg = 'N';
var control3Chg = 'N';
var control4Chg = 'N';
//임시파일 유무 설정
var control1Tmprr = 'N';
var control2Tmprr = 'N';
var control3Tmprr = 'N';
var control4Tmprr = 'N';
//기존 임시저장 확인 여부 - tmprrYn이 == N 테이블 insert / tmprrYn == Y 테이블 update
var tmprrYn = 'N';
var control1Id = '${info.orgnlRsltAtchFileId}';
var control2Id = '${info.cpyRsltAtchFileId}';
var control3Id = '${info.evdncPhtAtchFileId}';
var control4Id = '${info.rmtTrnAtchFileId}';
if(control1Id != null && control1Id != ''){
control1Tmprr = 'Y';
tmprrYn = 'Y';
}
if(control2Id != null && control2Id != ''){
control2Tmprr = 'Y';
tmprrYn = 'Y';
}
if(control3Id != null && control3Id != ''){
control3Tmprr = 'Y';
tmprrYn = 'Y';
}
if(control4Id != null && control4Id != ''){
control4Tmprr = 'Y';
tmprrYn = 'Y';
}
//임시파일 다운로드 jsp 기본 경로
var urlBase = "<c:url value='/innorix/exam/'/>"
$(document).ready(function(){
//대용량 업로드 솔루션 innorix
//원본 결과 보고서 컨트롤 생성
control1 = innorix.create({
el : '#orgn', // 컨트롤 출력 객체 ID
installUrl: '<c:url value="/innorix/install/install.html" />', // Agent 설치 페이지
uploadUrl: '<c:url value="/innorix/exam/upload.jsp?el=orgn" />', // 업로드 URL
maxFileCount : 1, // 첨부가능 파일 전체 개수
width : 870, // 컨트롤 출력 너비(pixel)
height : 80, // 컨트롤 출력 높이(pixel)
allowExtension : ["txt","xls","xlsx","png","jpg","jpeg","doc","ppt","hwp","pdf","zip"],
useContextMenu : 'false' //우클릭을 이용한 개별 업로드 방지
});
// 파일 추가 이벤트
control1.on('afterAddFiles', function (p) {
$('.orgnl_totalfileSize').text(getStrFileSize(p[0].fileSize)) ;
$('.orgnl_totalfileCount').text(p.length);
control1Chg = 'Y';
});
// 파일 삭제 이벤트
// 임시 저장이 아닌, 새로 afterAddFiles(업로드 전 파일추가) - control1Chg 'N'
// 임시 저장 파일 삭제 시 - control1Chg 'Y'
control1.on('removeFiles', function (p) {
$('.orgnl_totalfileSize').text('0MB') ;
$('.orgnl_totalfileCount').text('0');
control1Chg = 'N';
if(control1Tmprr == 'Y'){
if(confirm("삭제하시겠습니까?")){
innorixDelRprtAtchFile(p[0].uniqueFileName, 'orgnl_rslt_atch_file_id')
control1Tmprr = 'N';
control1Chg = 'Y';
$("#control1DownBtn").css('display', 'none');
}else{
return false;
}
}
});
//평가용 결과 보고서 컨트롤 생성
control2 = innorix.create({
el : '#cpy', // 컨트롤 출력 객체 ID
installUrl: '<c:url value="/innorix/install/install.html" />', // Agent 설치 페이지
uploadUrl: '<c:url value="/innorix/exam/upload.jsp?el=cpy" />', // 업로드 URL
maxFileCount : 1, // 첨부가능 파일 전체 개수
width : 870, // 컨트롤 출력 너비(pixel)
height : 80, // 컨트롤 출력 높이(pixel)
allowExtension : ["txt","xls","xlsx","png","jpg","jpeg","doc","ppt","hwp","pdf","zip"],
useContextMenu : 'false'
});
// 파일 추가 이벤트
control2.on('afterAddFiles', function (p) {
$('.cpy_totalfileSize').text(getStrFileSize(p[0].fileSize)) ;
$('.cpy_totalfileCount').text(p.length);
control2Chg = 'Y';
});
// 파일 삭제 이벤트
control2.on('removeFiles', function (p) {
$('.cpy_totalfileSize').text('0MB') ;
$('.cpy_totalfileCount').text('0');
control2Chg = 'N';
if(control2Tmprr == 'Y'){
if(confirm("삭제하시겠습니까?")){
innorixDelRprtAtchFile(p[0].uniqueFileName, 'cpy_rslt_atch_file_id')
control2Tmprr = 'N';
control2Chg = 'Y';
$("#control2DownBtn").css('display', 'none');
}else{
return false;
}
}
});
//증빙사진 컨트롤 생성
control3 = innorix.create({
el : '#evdnc', // 컨트롤 출력 객체 ID
installUrl: '<c:url value="/innorix/install/install.html" />', // Agent 설치 페이지
uploadUrl: '<c:url value="/innorix/exam/upload.jsp?el=evdnc" />', // 업로드 URL
maxFileCount : 1, // 첨부가능 파일 전체 개수
width : 870, // 컨트롤 출력 너비(pixel)
height : 80, // 컨트롤 출력 높이(pixel)
allowExtension : ["zip"],
useContextMenu : 'false'
});
// 파일 추가 이벤트
control3.on('afterAddFiles', function (p) {
$('.evdnc_totalfileSize').text(getStrFileSize(p[0].fileSize)) ;
$('.evdnc_totalfileCount').text(p.length);
control3Chg = 'Y';
});
// 파일 삭제 이벤트
control3.on('removeFiles', function (p) {
$('.evdnc_totalfileSize').text('0MB') ;
$('.evdnc_totalfileCount').text('0');
control3Chg = 'N';
if(control3Tmprr == 'Y'){
if(confirm("삭제하시겠습니까?")){
innorixDelRprtAtchFile(p[0].uniqueFileName, 'evdnc_pht_atch_file_id')
control3Tmprr = 'N';
control3Chg = 'Y';
$("#control3DownBtn").css('display', 'none');
}else{
return false;
}
}
});
//원격연수 이수증 컨트롤 생성
control4 = innorix.create({
el : '#rmttrn', // 컨트롤 출력 객체 ID
installUrl: '<c:url value="/innorix/install/install.html" />', // Agent 설치 페이지
uploadUrl: '<c:url value="/innorix/exam/upload.jsp?el=rmttrn" />', // 업로드 URL
maxFileCount : 1, // 첨부가능 파일 전체 개수
width : 870, // 컨트롤 출력 너비(pixel)
height : 80, // 컨트롤 출력 높이(pixel)
allowExtension : ["txt","xls","xlsx","png","jpg","jpeg","doc","ppt","hwp","pdf","zip"],
useContextMenu : 'false'
});
// 파일 추가 이벤트
control4.on('afterAddFiles', function (p) {
$('.rmtTrn_totalfileSize').text(getStrFileSize(p[0].fileSize)) ;
$('.rmtTrn_totalfileCount').text(p.length);
control4Chg = 'Y';
});
// 파일 삭제 이벤트
control4.on('removeFiles', function (p) {
$('.rmtTrn_totalfileSize').text('0MB') ;
$('.rmtTrn_totalfileCount').text('0');
control4Chg = 'N';
if(control4Tmprr == 'Y'){
if(confirm("삭제하시겠습니까?")){
innorixDelRprtAtchFile(p[0].uniqueFileName, 'rmt_trn_atch_file_id')
control4Tmprr = 'N';
control4Chg = 'Y';
$("#control4DownBtn").css('display', 'none');
}else{
return false;
}
}
});
//멀티 컨트롤 생성 - hidden으로 화면 비노출, 제출 시 컨트롤 1~4를 add하여 업로드
control5 = innorix.create({
el : '#fileControl5', // 컨트롤 출력 객체 ID
installUrl: '<c:url value="/innorix/install/install.html" />', // Agent 설치 페이지
uploadUrl: '<c:url value="/innorix/exam/upload.jsp" />', // 업로드 URL
maxFileCount : 4, // 첨부가능 파일 전체 개수
});
//임시저장 데이터가 있을 시 임시저장 파일 처리
if(control1Tmprr == 'Y'){
control1.presetDownloadFiles([{
printFileName: '${info.orgnlRsltAtchFileDetail.orignlFileNm}',
fileSize: '${info.orgnlRsltAtchFileDetail.fileSize}',
downloadUrl: urlBase + "download.jsp?fileName=" + '${info.orgnlRsltAtchFileDetail.streFileNm}',
uniqueFileName : '${info.orgnlRsltAtchFileDetail.atchFileId}'
}]);
control1Chg = 'N'; //임시저장 파일 세팅 시 'afterAddFiles' 이벤트에서 control1Chg = 'Y' 처리가 되어 다시 N으로 설정
}
if(control2Tmprr == 'Y'){
control2.presetDownloadFiles([{
printFileName: '${info.cpyRsltAtchFileDetail.orignlFileNm}',
fileSize: '${info.cpyRsltAtchFileDetail.fileSize}',
downloadUrl: urlBase + "download.jsp?fileName=" + '${info.cpyRsltAtchFileDetail.streFileNm}',
uniqueFileName : '${info.cpyRsltAtchFileDetail.atchFileId}'
}]);
control2Chg = 'N';
}
if(control3Tmprr == 'Y'){
control3.presetDownloadFiles([{
printFileName: '${info.evdncPhtAtchFileDetail.orignlFileNm}',
fileSize: '${info.evdncPhtAtchFileDetail.fileSize}',
downloadUrl: urlBase + "download.jsp?fileName=" + '${info.evdncPhtAtchFileDetail.streFileNm}',
uniqueFileName : '${info.evdncPhtAtchFileDetail.atchFileId}'
}]);
control3Chg = 'N';
}
if(control4Tmprr == 'Y'){
control4.presetDownloadFiles([{
printFileName: '${info.rmtTrnAtchFileDetail.orignlFileNm}',
fileSize: '${info.rmtTrnAtchFileDetail.fileSize}',
downloadUrl: urlBase + "download.jsp?fileName=" + '${info.rmtTrnAtchFileDetail.streFileNm}',
uniqueFileName : '${info.rmtTrnAtchFileDetail.atchFileId}'
}]);
control4Chg = 'N';
}
//첨부파일 업로드 후속조치 - 결과제출 시 처리
control5.on('uploadComplete', function (p) {
fn_callBackInnorixInsert(p.files);
});
});
function fn_callBackInnorixInsert(data){
var url = "<c:url value='/web/common/insertRprtInnorixFileAjax.do' />";
if(tmprrYn == 'Y'){ //임시 저장 데이터가 있을 시 테이블 update 처리
var url = "<c:url value='/web/common/updateRprtInnorixFileAjax.do' />";
}
var sendData = {
"eduAplctOrd": $('#eduAplctOrd').val()
, "aprvlCd" : $('#aprvlCd').val() //결과제출 - 10, 임시제출 - 230
, "innorixFileListVO": data
, "successMsg" : "제출 완료되었습니다."
}
if(fn_innorixCmmAjax(sendData, url) == "OK")
{
fncGoList();
}
}
function fncGoList(){
var linkForm = document.linkForm ;
linkForm.action = "<c:url value='/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndDetail.do'/>";
linkForm.submit();
}
function fncSave(){
if(control1.getFileCount() == 0){
alert("원본 결과보고서를 첨부해주세요.")
return false;
}
if(control2.getFileCount() == 0){
alert("평가용 결과보고서를 첨부해주세요.")
return false;
}
if(control3.getFileCount() == 0){
alert("증빙사진을 첨부해주세요.")
return false;
}
document.getElementById('aprvlCd').value = '10';
//임시저장 파일이 아닌 새로 추가한 파일만 업로드 처리
control5.removeAllFiles(); //control5 초기화
if(control1Chg == 'Y'){
control5.addFiles(control1.getAllFiles());
}
if(control2Chg == 'Y'){
control5.addFiles(control2.getAllFiles());
}
if(control3Chg == 'Y'){
control5.addFiles(control3.getAllFiles());
}
if(control4Chg == 'Y'){
control5.addFiles(control4.getAllFiles());
}
//업로드 파일 사이즈 500MB 제한
//임시로 저장되어 있던 파일들 용량까지 체크하기 위하여 control5.getTotalSize()가 아닌 각각 파일의 사이즈를 더하여 비교
if(control1.getTotalSize() + control2.getTotalSize() + control3.getTotalSize() + control4.getTotalSize()> 524288000){
alert("업로드 가능한 용량은 전체 파일을 합산한 기준으로 500MB 제한이 있습니다.")
return false;
}
//기존 임시 저장상태에서 새로 등록한 파일이 없다면, 상태 값만 10으로 update 처리
if(control5.getFileCount() == '0'){
var url = "<c:url value='/web/common/updateRprtInnorixFileAjax.do' />";
var sendData = {
"eduAplctOrd": $('#eduAplctOrd').val()
, "aprvlCd" : $('#aprvlCd').val()
, "successMsg" : "제출 완료되었습니다."
}
if(fn_innorixCmmAjax(sendData, url) == "OK")
{
fncGoList();
}
}else{
//업로드 경로 설정 -upload.jsp에서 uploader.setDirectory(innoDirPath) 식으로 사용
//230810 기준 : innoDirPath = globals_local.properties = /usr/local/tomcat/file/sht/ 경로지만
//upload.jsp에서 /app/doc/offedu/sht/로 다시 set. context-properties.xml에서 파일 경로도 /app/doc/offedu/sht/
var postObj = new Object();
postObj.innoDirPath = $('#innoDirPath').val();
control5.setPostData(postObj); // 업로드시 함께 전달될 POST Param 추가
control5.upload();
}
}
function fncTmprrSave(){
//첨부파일이 변경됐을시만 업로드. 임시저장으로 인하여 비교 필요
control5.removeAllFiles(); //control5 초기화
if(control1Chg == 'Y'){
control5.addFiles(control1.getAllFiles());
}
if(control2Chg == 'Y'){
control5.addFiles(control2.getAllFiles());
}
if(control3Chg == 'Y'){
control5.addFiles(control3.getAllFiles());
}
if(control4Chg == 'Y'){
control5.addFiles(control4.getAllFiles());
}
//업로드 파일 사이즈 500MB 제한
if(control1.getTotalSize() + control2.getTotalSize() + control3.getTotalSize() + control4.getTotalSize()> 524288000){
alert("업로드 가능한 용량은 전체 파일을 합산한 기준으로 500MB 제한이 있습니다.")
return false;
}
if((control1Chg == 'N' && control2Chg == 'N'
&& control3Chg == 'N' && control4Chg == 'N') || control5.getFileCount() == '0'){
alert("임시저장할 파일을 첨부해주세요.")
return false;
}
document.getElementById('aprvlCd').value = '230';
//업로드 경로 설정 -upload.jsp에서 uploader.setDirectory(innoDirPath) 식으로 사용
//230810 기준 : innoDirPath = globals_local.properties = /usr/local/tomcat/file/sht/ 경로지만
//upload.jsp에서 /app/doc/offedu/sht/로 다시 set. context-properties.xml에서 파일 경로도 /app/doc/offedu/sht/
var postObj = new Object();
postObj.innoDirPath = $('#innoDirPath').val();
control5.setPostData(postObj); // 업로드시 함께 전달될 POST Param 추가
control5.upload();
}
</script>
<form:form id="linkForm" name="linkForm" commandName="vEEduAplctVO" onsubmit="return false;" method="post">
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="${info.eduAplctOrd}" />
<input type="hidden" name="aprvlCd" id="aprvlCd" value="" />
<input type="hidden" id="innoDirPath" value="<spring:eval expression="@globalSettings['Globals.Innorix.FilePath']"/>" />
</form:form>
<div class="cont_wrap" id="sub">
<div class="cont_tit">
<h2>결과보고</h2>
<div class="sns_go">
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
</div>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>결과보고 정보</p>
<span class="cf_text" style="font-size: 16px; font-weight: 400; color: #e40000;line-height: 1.5;margin-left:100px;">※ 업로드 가능한 용량은 전체 파일을 합산한 기준으로 500MB 제한이 있습니다.
<br/>&nbsp;&nbsp;&nbsp;&nbsp;용량을 초과할 경우, 오류 발생으로 인해 업로드가 되지 않으니 유의하시기 바랍니다. </span>
</div>
</div>
<div class="exprnClsrmEndRslt_wrap">
<dl class="filewrap_div">
<dt><p class="req_text"><span>필수입력 항목</span>*</p>원본 결과보고서</dt>
<dd>
<div class="btn_wrap">
<button type="button" onclick="control1.openFileDialogSingle();" class="btnType01 orgnl_btn_add_file">원본 결과보고서 파일찾기</button>
<c:if test="${info.orgnlRsltAtchFileId != null && info.orgnlRsltAtchFileId != ''}">
<button type="button" id="control1DownBtn" onclick="control1.download();" class="btnType01 cpy_btn_add_file">다운로드</button>
</c:if>
</div>
<div id="orgn"></div><br/>
<div class="file_cf">
<div class="cf_left">
<p>최대 <span class="orgnl_limitFileCount">1</span>개</p>
</div>
<div class="cf_right">
<p>등록된 파일 <span class="upload_number orgnl_totalfileCount">0</span>개</p>
<span class="upload_number orgnl_totalfileSize">0MB</span>
</div>
</div>
</dd>
</dl>
<dl class="filewrap_div">
<dt><p class="req_text"><span>필수입력 항목</span>*</p>평가용 결과보고서</dt>
<dd>
<div class="btn_wrap">
<button type="button" onclick="control2.openFileDialogSingle();" class="btnType01 cpy_btn_add_file">평가용 결과보고서 파일찾기</button>
<c:if test="${info.cpyRsltAtchFileId != null && info.cpyRsltAtchFileId != ''}">
<button type="button" id="control2DownBtn" onclick="control2.download();" class="btnType01 cpy_btn_add_file">다운로드</button>
</c:if>
</div>
<div id="cpy"></div><br/>
<div class="file_cf">
<div class="cf_left">
<p>최대 <span class="cpy_limitFileCount">1</span>개</p>
</div>
<div class="cf_right">
<p>등록된 파일 <span class="upload_number cpy_totalfileCount">0</span>개</p>
<span class="upload_number cpy_totalfileSize">0MB</span>
</div>
</div>
</dd>
</dl>
<dl class="filewrap_div">
<dt><p class="req_text"><span>필수입력 항목</span>*</p>증빙사진</dt>
<dd>
<div class="btn_wrap">
<button type="button" onclick="control3.openFileDialogSingle();" class="btnType01 evdnc_btn_add_file">증빙 사진 파일찾기</button>
<c:if test="${info.evdncPhtAtchFileId != null && info.evdncPhtAtchFileId != ''}">
<button type="button" id="control3DownBtn" onclick="control3.download();" class="btnType01 cpy_btn_add_file">다운로드</button>
</c:if>
</div>
<div id="evdnc"></div><br/>
<div class="file_cf">
<div class="cf_left">
<p>최대 <span class="evdnc_limitFileCount">1</span>개</p>
</div>
<div class="cf_right">
<p>등록된 파일 <span class="upload_number evdnc_totalfileCount">0</span>개</p>
<span class="upload_number evdnc_totalfileSize">0MB</span>
</div>
</div>
</dd>
</dl>
<dl class="filewrap_div">
<dt>원격연수 이수증</dt>
<dd>
<div class="btn_wrap">
<button type="button" onclick="control4.openFileDialogSingle();" class="btnType01 rmtTrn_btn_add_file">원격연수 이수증 파일찾기</button>
<c:if test="${info.rmtTrnAtchFileId != null && info.rmtTrnAtchFileId != ''}">
<button type="button" id="control4DownBtn" onclick="control4.download();" class="btnType01 cpy_btn_add_file">다운로드</button>
</c:if>
</div>
<div id="rmttrn"></div><br/>
<div class="file_cf">
<div class="cf_left">
<p>최대 <span class="rmtTrn_limitFileCount">1</span>개</p>
</div>
<div class="cf_right">
<p>등록된 파일 <span class="upload_number rmtTrn_totalfileCount">0</span>개</p>
<span class="upload_number rmtTrn_totalfileSize">0MB</span>
</div>
</div>
</dd>
</dl>
</div>
<div class="btn_wrap btn_layout01">
<div class="btn_left"></div>
<div class="btn_center">
<button type="button" class="btnType06" onclick="fncSave();">결과제출</button>
<button type="button" class="btnType06" onclick="fncTmprrSave();">임시저장</button>
</div>
<div class="btn_right">
<div id="fileControl5" style="display:none"></div>
<button type="button" class="btnType02 m_btn_block" onclick="fncGoList();">취소</button>
</div>
</div>
</div>

View File

@ -0,0 +1,965 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<% pageContext.setAttribute("replaceChar", "\n"); %>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<style>
input:disabled {
background-color: #f9f9f9 !important;
}
input:read-only {
background-color: #f9f9f9 !important;
}
</style>
<script type="text/javaScript" language="javascript">
$( document ).ready(function(){
// 원본 결과보고
$(".orgnl_btn_add_file").on('click', function(){
$("#orgnl_file_temp").click();
});
$(document).on("drop",".orgnl_file_drop",function(e){
e.preventDefault();
var files = e.originalEvent.dataTransfer.files;
var objDragAndDrop = $(".orgnl_file_drop");
orgnlFileUpload(files,objDragAndDrop); //파일업로드
});
$(function(){ //단일 파일업로드
$('#orgnl_file_temp').change(function(e){
var objUpload = $(".upload_area");
var files = $('#orgnl_file_temp')[0].files;
orgnlFileUpload(files,objUpload); //파일업로드
if($("#orgnl_file_temp").length > 0){
$("#orgnl_file_temp").val(""); //파일지우기
}
});
});
//첨부파일 영역 hide 처리
drawUploadArea();
});
var _orgnFileIdx = 0;
var _orgnFileForm = new Array();
function orgnlFileUpload(files,obj) //업로드 function
{
var limitsize = 100*1024*1024; //파일 제한 체크(10개, 100MB)
var limitcount = $("input[name=orgnl_limitcount]").val()*1 ;
var allrowFileExtsn = $("input[name=orgnl_allrowFileExtsn]").val();
if($('#orgnl_tbody_fiielist').find('tr').length + files.length > limitcount ){
alert("업로드 파일은 최대 "+limitcount+"개 입니다.");
return ;
}
for (var i = 0; i < files.length; i++)
{
if(files[i].size > limitsize){
alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 100MB이하만 업로드 가능합니다.");
return ;
}
if(allrowFileExtsn != undefined && allrowFileExtsn != ""){
if(allrowFileExtsn.toLowerCase().indexOf(files[i].name.split(".")[1].toLowerCase()) < 0 ){
alert(allrowFileExtsn.toUpperCase() +" 파일 형식만 업로드 가능합니다.");
return ;
}
}
}
for (var i = 0; i < files.length; i++)
{
var fd = new FormData();
fd.append('file', files[i]);
var tmpObj = new Object();
tmpObj.name = "file_" + _orgnFileIdx;
tmpObj.type = "orgn";
tmpObj.fileObj = files[i];
_orgnFileForm.push(tmpObj);
orgnlSendFileToServer(fd, obj, files[i], _orgnFileIdx);
_orgnFileIdx++;
var totalfileSize = 0;
$('.orgnl_totalfileCount').text($('.orgnl_item_file_size').length);
$('.orgnl_item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.orgnl_totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
}
function orgnlSendFileToServer(formData, obj , fileObj, _orgnFileIdx)
{
$('.orgnl_no_img_box').hide(); //list 박스 형식 변경
$('.orgnl_file_list_div').show();
var list_html = "";
var tt = "";
var fileNm = fileObj.name;
var fileExt = fileNm.split('.').pop().toLowerCase();
list_html += '<tr class="item_'+tt+' uploaded_obj">';
list_html += '<td class="td_filename file_name"><img src="'+getfile_img(fileObj.name)+'" alt=""><span class="file_name_text">'+fileObj.name+'</span></td>';
list_html += '<td class="td_filesort file_extension"><span class="file_filesort_text" value='+fileExt+'>.'+fileExt+'</span></td>';
list_html += '<td class="td_filesize file_size"><span class="file_size_text" value='+fileObj.size+'>'+getStrFileSize(fileObj.size)+'</span></td>';
list_html += '<td class="file_del"><button type="button" class="btn_del" onclick="orgnlDelete_item(this, '+_orgnFileIdx+')" title="';
list_html += fileObj.name;
list_html += ' 삭제"><i></i></button></td>';
list_html += '<input type="hidden" name="fileSize" class="orgnl_item_file_size" value="'+fileObj.size+'">';
list_html += '</tr>';
$('#orgnl_tbody_fiielist').append(list_html);
}
/* 삭제버튼 클릭시 */
function orgnlDelete_item(obj, fileIdx){
$(obj).closest("tr").remove();
_orgnFileForm.forEach(function(fobj, idx) {
if (fobj.name == ("file_" + fileIdx)) _orgnFileForm[idx] = "";
});
if($('.orgnl_item_file_size').length == 0){
$('.orgnl_no_img_box').show();
$('.orgnl_file_list_div').hide();
var totalfileSize = 0;
$('.orgnl_totalfileCount').text($('.orgnl_item_file_size').length) ;
$('.orgnl_item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.orgnl_totalfileSize').text(getStrFileSize(totalfileSize)) ;
}else{
var totalfileSize = 0;
$('.orgnl_totalfileCount').text($('.orgnl_item_file_size').length) ;
$('.orgnl_item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.orgnl_totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
_orgnFileIdx--;
_orgnFileForm.splice(0,1);
}
// 평가용 결과보고서 파일등록
$( document ).ready(function(){
// 평가용 결과보고
$(".cpy_btn_add_file").on('click', function(){
$("#cpy_file_temp").click();
});
$(document).on("drop",".cpy_file_drop",function(e){
e.preventDefault();
var files = e.originalEvent.dataTransfer.files;
var objDragAndDrop = $(".cpy_file_drop");
cpyFileUpload(files,objDragAndDrop); //파일업로드
});
$(function(){ //단일 파일업로드
$('#cpy_file_temp').change(function(e){
var objUpload = $(".upload_area");
var files = $('#cpy_file_temp')[0].files;
cpyFileUpload(files,objUpload); //파일업로드
if($("#cpy_file_temp").length > 0){
$("#cpy_file_temp").val(""); //파일지우기
}
});
});
});
var _cpyFileIdx = 0;
var _cpyFileForm = new Array();
function cpyFileUpload(files,obj) //업로드 function
{
var limitsize = 100*1024*1024; //파일 제한 체크(10개, 100MB)
var limitcount = $("input[name=cpy_limitcount]").val()*1 ;
var allrowFileExtsn = $("input[name=cpy_allrowFileExtsn]").val();
if($('#cpy_tbody_fiielist').find('tr').length + files.length > limitcount ){
alert("업로드 파일은 최대 "+limitcount+"개 입니다.");
return ;
}
for (var i = 0; i < files.length; i++)
{
if(files[i].size > limitsize){
alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 100MB이하만 업로드 가능합니다.");
return ;
}
if(allrowFileExtsn != undefined && allrowFileExtsn != ""){
if(allrowFileExtsn.toLowerCase().indexOf(files[i].name.split(".")[1].toLowerCase()) < 0 ){
alert(allrowFileExtsn.toUpperCase() +" 파일 형식만 업로드 가능합니다.");
return ;
}
}
}
for (var i = 0; i < files.length; i++)
{
var fd = new FormData();
fd.append('file', files[i]);
var tmpObj = new Object();
tmpObj.name = "file_" + _cpyFileIdx;
tmpObj.type = "cpy";
tmpObj.fileObj = files[i];
_cpyFileForm.push(tmpObj);
cpySendFileToServer(fd, obj, files[i], _cpyFileIdx);
_cpyFileIdx++;
var totalfileSize = 0;
$('.cpy_totalfileCount').text($('.cpy_item_file_size').length) ;
$('.cpy_item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.cpy_totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
}
function cpySendFileToServer(formData, obj , fileObj, _cpyFileIdx)
{
$('.cpy_no_img_box').hide(); //list 박스 형식 변경
$('.cpy_file_list_div').show();
var list_html = "";
var tt = "";
var fileNm = fileObj.name;
var fileExt = fileNm.split('.').pop().toLowerCase();
list_html += '<tr class="item_'+tt+' uploaded_obj">';
list_html += '<td class="td_filename file_name"><img src="'+getfile_img(fileObj.name)+'" alt=""><span class="file_name_text">'+fileObj.name+'</span></td>';
list_html += '<td class="td_filesort file_extension"><span class="file_filesort_text" value='+fileExt+'>.'+fileExt+'</span></td>';
list_html += '<td class="td_filesize file_size"><span class="file_size_text" value='+fileObj.size+'>'+getStrFileSize(fileObj.size)+'</span></td>';
list_html += '<td class="file_del"><button type="button" class="btn_del" onclick="cpyDelete_item(this, '+_cpyFileIdx+')" title="';
list_html += fileObj.name;
list_html += ' 삭제"><i></i></button></td>';
list_html += '<input type="hidden" name="fileSize" class="cpy_item_file_size" value="'+fileObj.size+'">';
list_html += '</tr>';
$('#cpy_tbody_fiielist').append(list_html);
}
/* 삭제버튼 클릭시 */
function cpyDelete_item(obj, fileIdx){
$(obj).closest("tr").remove();
_cpyFileForm.forEach(function(fobj, idx) {
if (fobj.name == ("file_" + fileIdx)) _cpyFileForm[idx] = "";
});
if($('.cpy_item_file_size').length == 0){
$('.cpy_no_img_box ').show();
$('.cpy_file_list_div').hide();
var totalfileSize = 0;
$('.cpy_totalfileCount').text($('.cpy_item_file_size').length) ;
$('.cpy_item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.cpy_totalfileSize').text(getStrFileSize(totalfileSize)) ;
}else{
var totalfileSize = 0;
$('.cpy_totalfileCount').text($('.cpy_item_file_size').length) ;
$('.cpy_item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.cpy_totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
_cpyFileIdx--;
_cpyFileForm.splice(0,1);
}
// 증빈사진 파일등록
$( document ).ready(function(){
// 증빙사진
$(".evdnc_btn_add_file").on('click', function(){
$("#evdnc_file_temp").click();
});
$(document).on("drop",".evdnc_file_drop",function(e){
e.preventDefault();
var files = e.originalEvent.dataTransfer.files;
var objDragAndDrop = $(".evdnc_file_drop");
evdncFileUpload(files,objDragAndDrop); //파일업로드
});
$(function(){ //단일 파일업로드
$('#evdnc_file_temp').change(function(e){
var objUpload = $(".upload_area");
var files = $('#evdnc_file_temp')[0].files;
evdncFileUpload(files,objUpload); //파일업로드
if($("#evdnc_file_temp").length > 0){
$("#evdnc_file_temp").val(""); //파일지우기
}
});
});
});
var _evdncFileIdx = 0;
var _evdncFileForm = new Array();
function evdncFileUpload(files,obj) //업로드 function
{
var limitsize = 100*1024*1024; //파일 제한 체크(10개, 100MB)
var limitcount = $("input[name=evdnc_limitcount]").val()*1 ;
var allrowFileExtsn = $("input[name=evdnc_allrowFileExtsn]").val();
if($('#evdnc_tbody_fiielist').find('tr').length + files.length > limitcount ){
alert("업로드 파일은 최대 "+limitcount+"개 입니다.");
return ;
}
for (var i = 0; i < files.length; i++)
{
if(files[i].size > limitsize){
alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 100MB이하만 업로드 가능합니다.");
return ;
}
if(allrowFileExtsn != undefined && allrowFileExtsn != ""){
var _fileLen = files[i].name.length;
var _lastDot = files[i].name.lastIndexOf('.')+1;
if(allrowFileExtsn.toLowerCase().indexOf(files[i].name.substring(_lastDot, _fileLen).toLowerCase()) < 0 ){
alert(allrowFileExtsn.toUpperCase() +" 파일 형식만 업로드 가능합니다.");
return ;
}
}
}
for (var i = 0; i < files.length; i++)
{
var fd = new FormData();
fd.append('file', files[i]);
var tmpObj = new Object();
tmpObj.name = "file_" + _evdncFileIdx;
tmpObj.type = "evdnc";
tmpObj.fileObj = files[i];
_evdncFileForm.push(tmpObj);
evdncSendFileToServer(fd, obj, files[i], _evdncFileIdx);
_evdncFileIdx++;
var totalfileSize = 0;
$('.evdnc_totalfileCount').text($('.evdnc_item_file_size').length) ;
$('.evdnc_item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.evdnc_totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
}
function evdncSendFileToServer(formData, obj , fileObj, _evdncFileIdx)
{
$('.evdnc_no_img_box').hide(); //list 박스 형식 변경
$('.evdnc_file_list_div').show();
var list_html = "";
var tt = "";
var fileNm = fileObj.name;
var fileExt = fileNm.split('.').pop().toLowerCase();
list_html += '<tr class="item_'+tt+' uploaded_obj">';
list_html += '<td class="td_filename file_name"><img src="'+getfile_img(fileObj.name)+'" alt=""><span class="file_name_text">'+fileObj.name+'</span></td>';
list_html += '<td class="td_filesort file_extension"><span class="file_filesort_text" value='+fileExt+'>.'+fileExt+'</span></td>';
list_html += '<td class="td_filesize file_size"><span class="file_size_text" value='+fileObj.size+'>'+getStrFileSize(fileObj.size)+'</span></td>';
list_html += '<td class="file_del"><button type="button" class="btn_del" onclick="evdncDelete_item(this, '+_evdncFileIdx+')" title="';
list_html += fileObj.name;
list_html += ' 삭제"><i></i></button></td>';
list_html += '<input type="hidden" name="fileSize" class="evdnc_item_file_size" value="'+fileObj.size+'">';
list_html += '</tr>';
$('#evdnc_tbody_fiielist').append(list_html);
}
/* 삭제버튼 클릭시 */
function evdncDelete_item(obj, fileIdx){
$(obj).closest("tr").remove();
_evdncFileForm.forEach(function(fobj, idx) {
if (fobj.name == ("file_" + fileIdx)) _evdncFileForm[idx] = "";
});
if($('.evdnc_item_file_size').length == 0){
$('.evdnc_no_img_box').show();
$('.evdnc_file_list_div').hide();
var totalfileSize = 0;
$('.evdnc_totalfileCount').text($('.evdnc_item_file_size').length) ;
$('.evdnc_item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.evdnc_totalfileSize').text(getStrFileSize(totalfileSize)) ;
}else{
var totalfileSize = 0;
$('.evdnc_totalfileCount').text($('.evdnc_item_file_size').length) ;
$('.evdnc_item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.evdnc_totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
_evdncFileIdx--;
_evdncFileForm.splice(0,1);
}
// 원격연수 이수증
$( document ).ready(function(){
// 원격연수
$(".rmtTrn_btn_add_file").on('click', function(){
$("#rmtTrn_file_temp").click();
});
$(document).on("drop",".rmtTrn_file_drop",function(e){
e.preventDefault();
var files = e.originalEvent.dataTransfer.files;
var objDragAndDrop = $(".rmtTrn_file_drop");
rmtTrnFileUpload(files,objDragAndDrop); //파일업로드
});
$(function(){ //단일 파일업로드
$('#rmtTrn_file_temp').change(function(e){
var objUpload = $(".upload_area");
var files = $('#rmtTrn_file_temp')[0].files;
rmtTrnFileUpload(files,objUpload); //파일업로드
if($("#rmtTrn_file_temp").length > 0){
$("#rmtTrn_file_temp").val(""); //파일지우기
}
});
});
});
var _rmtTrnFileIdx = 0;
var _rmtTrnFileForm = new Array();
function rmtTrnFileUpload(files,obj) //업로드 function
{
var limitsize = 100*1024*1024; //파일 제한 체크(10개, 100MB)
var limitcount = $("input[name=rmtTrn_limitcount]").val()*1 ;
var allrowFileExtsn = $("input[name=rmtTrn_allrowFileExtsn]").val();
if($('#rmtTrn_tbody_fiielist').find('tr').length + files.length > limitcount ){
alert("업로드 파일은 최대 "+limitcount+"개 입니다.");
return ;
}
for (var i = 0; i < files.length; i++)
{
if(files[i].size > limitsize){
alert(files[i].name+"파일 사이즈가"+getStrFileSize(files[i].size)+"로 100MB이하만 업로드 가능합니다.");
return ;
}
if(allrowFileExtsn != undefined && allrowFileExtsn != ""){
if(allrowFileExtsn.toLowerCase().indexOf(files[i].name.split(".")[1].toLowerCase()) < 0 ){
alert(allrowFileExtsn.toUpperCase() +" 파일 형식만 업로드 가능합니다.");
return ;
}
}
}
for (var i = 0; i < files.length; i++)
{
var fd = new FormData();
fd.append('file', files[i]);
var tmpObj = new Object();
tmpObj.name = "file_" + _rmtTrnFileIdx;
tmpObj.type = "rmtTrn";
tmpObj.fileObj = files[i];
_rmtTrnFileForm.push(tmpObj);
rmtTrnSendFileToServer(fd, obj, files[i], _rmtTrnFileIdx);
_rmtTrnFileIdx++;
var totalfileSize = 0;
$('.rmtTrn_totalfileCount').text($('.rmtTrn_item_file_size').length) ;
$('.rmtTrn_item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.rmtTrn_totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
}
function rmtTrnSendFileToServer(formData, obj , fileObj, _fileIdx)
{
$('.rmtTrn_no_img_box').hide(); //list 박스 형식 변경
$('.rmtTrn_file_list_div').show();
var list_html = "";
var tt = "";
var fileNm = fileObj.name;
var fileExt = fileNm.split('.').pop().toLowerCase();
list_html += '<tr class="item_'+tt+' uploaded_obj">';
list_html += '<td class="td_filename file_name"><img src="'+getfile_img(fileObj.name)+'" alt=""><span class="file_name_text">'+fileObj.name+'</span></td>';
list_html += '<td class="td_filesort file_extension"><span class="file_filesort_text" value='+fileExt+'>.'+fileExt+'</span></td>';
list_html += '<td class="td_filesize file_size"><span class="file_size_text" value='+fileObj.size+'>'+getStrFileSize(fileObj.size)+'</span></td>';
list_html += '<td class="file_del"><button type="button" class="btn_del" onclick="rmtTrnDelete_item(this, '+_fileIdx+')" title="';
list_html += fileObj.name;
list_html += ' 삭제"><i></i></button></td>';
list_html += '<input type="hidden" name="fileSize" class="rmtTrn_item_file_size" value="'+fileObj.size+'">';
list_html += '</tr>';
$('#rmtTrn_tbody_fiielist').append(list_html);
}
/* 삭제버튼 클릭시 */
function rmtTrnDelete_item(obj, fileIdx){
$(obj).closest("tr").remove();
_rmtTrnFileForm.forEach(function(fobj, idx) {
if (fobj.name == ("file_" + fileIdx)) _rmtTrnFileForm[idx] = "";
});
if($('.rmtTrn_item_file_size').length == 0){
$('.rmtTrn_no_img_box ').show();
$('.rmtTrn_file_list_div').hide();
var totalfileSize = 0;
$('.rmtTrn_totalfileCount').text($('.rmtTrn_item_file_size').length) ;
$('.rmtTrn_item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.rmtTrn_totalfileSize').text(getStrFileSize(totalfileSize)) ;
}else{
var totalfileSize = 0;
$('.rmtTrn_totalfileCount').text($('.rmtTrn_item_file_size').length) ;
$('.rmtTrn_item_file_size').each(function(){
totalfileSize += $(this).val()*1 ;
});
$('.rmtTrn_totalfileSize').text(getStrFileSize(totalfileSize)) ;
}
_rmtTrnFileIdx --;
_rmtTrnFileForm.splice(0,1);
}
function fncGoList()
{
var linkForm = document.linkForm ;
linkForm.action = "<c:url value='/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndDetail.do'/>";
linkForm.submit();
}
function fncSave(){
var data = new FormData(document.getElementById("fileUploadForm"));
if(_orgnFileForm.length == '0'){
alert("원본 결과보고서를 첨부해주세요.")
return false;
}
_orgnFileForm.forEach(function(obj, idx) {
if (obj) data.append("fileOrgn"+idx, obj.fileObj);
});
if(_cpyFileForm.length == '0'){
alert("평가용 결과보고서를 첨부해주세요.")
return false;
}
_cpyFileForm.forEach(function(obj, idx) {
if (obj) data.append("fileCpy"+idx, obj.fileObj);
});
if(_evdncFileForm.length == '0'){
alert("증빙사진을 첨부해주세요.")
return false;
}
_evdncFileForm.forEach(function(obj, idx) {
if (obj) data.append("fileEvdnc"+idx, obj.fileObj);
});
/*
if(_rmtTrnFileForm.length == '0'){
alert("원격연수 이수증을 첨부해주세요.")
return false;
}
*/
_rmtTrnFileForm.forEach(function(obj, idx) {
if (obj) data.append("fileRmtTrn"+idx, obj.fileObj);
});
if(confirm("결과보고를 제출하시겠습니까?")){
$.ajax({
type: "POST"
, enctype: 'multipart/form-data'
, url: "${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndRsltAjax.do"
, data: data
, dataType:'json'
, async: false
, processData: false
, contentType: false
, cache: false
, success: function (returnData, status) {
if(status == 'success'){
alert("등록 되었습니다.");
fncGoList(); //현재 메인화면 이동
} else if(status== 'fail'){
alert("등록에 실패하였습니다.");
}
}
, error: function (e) {
alert("저장에 실패하였습니다."); console.log("ERROR : ", e);
}
});
}
}
</script>
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO" onsubmit="return false;" method="post">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEEduAplctVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEEduAplctVO.searchSortOrd}" />" />
<input type="hidden" name="searchStatus" value="<c:out value="${vEEduAplctVO.searchStatus}" />" />
</form:form>
<form:form id="linkForm" name="linkForm" commandName="vEEduAplctVO" onsubmit="return false;" method="post">
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="${info.eduAplctOrd}" />
</form:form>
<form id="fileUploadForm">
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="${info.eduAplctOrd}" />
</form>
<div class="cont_wrap" id="sub">
<div class="cont_tit">
<h2>결과보고</h2>
<div class="sns_go">
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
</div>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>결과보고 정보</p>
<span class="cf_text" style="font-size: 16px; font-weight: 400; color: #e40000;line-height: 1.5;margin-left:100px;"
>※ 업로드 가능한 용량은 전체 파일을 합산한 기준으로 500MB 제한이 있습니다.
<br/>&nbsp;&nbsp;&nbsp;&nbsp;용량을 초과할 경우, 오류 발생으로 인해 업로드가 되지 않으니 유의하시기 바랍니다.
</span>
</div>
</div>
<div class="exprnClsrmEndRslt_wrap">
<dl class="filewrap_div">
<dt><p class="req_text"><span>필수입력 항목</span>*</p>원본 결과보고서</dt>
<dd>
<div class="btn_wrap">
<button type="button" class="btnType01 orgnl_btn_add_file">원본 결과보고서 업로드</button>
<input type="file" id="orgnl_file_temp" name="orgnl_file_temp" class="uploadFile" style="display:none"/>
</div>
<div class="file_wrap no_img_box orgnl_no_img_box">
<table>
<caption>첨부파일 파일명, 종류, 크기 정보 제공</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 15%;">
</colgroup>
<thead>
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
</thead>
<tbody class="tb_file_before orgnl_file_drop">
<tr>
<td colspan="3">
<p>첨부하실 파일을 <span>마우스끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap file_list_div orgnl_file_list_div">
<table>
<colgroup>
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 15%;">
<col style="width: 100px;">
</colgroup>
<thead>
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody id="orgnl_tbody_fiielist" class="orgnl_tb_file_after tb_file_after">
<c:forEach var="fileList" items="${fileList}" varStatus="status">
<tr class="item_${fileList.atchFileId}_${fileList.fileSn} uploaded_obj">
<input type="hidden" name="fileSize" class="orgnl_item_file_size" value="${fileList.fileSize}">
<td class="td_filename">
<span class="file_name_text">${fileList.orignlFileNm}</span>
</td>
<td class="td_filesort">
<span class="file_filesort_text" value="<c:out value="${fileList.fileExtsn}"/>"><c:out value="${fileList.fileExtsn}"/></span>
</td>
<td class="td_filesize">
<span class="file_size_text" value="<c:out value="${fileList.fileMg}"/>"><c:out value="${fileList.fileMg}"/></span>
</td>
<td>
<button type="button" class="btn_del" title="df" onclick="delAtchFile('${fileList.atchFileId}', '${fileList.fileSn}'); return false;"><i></i></button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div class="file_cf">
<input type="hidden" name="orgnl_limitcount" id="orgnl_limitcount" value="1" /><!-- 최대 업로드 파일갯수 -->
<input type="hidden" name="orgnl_allrowFileExtsn" id="orgnl_allrowFileExtsn" value="" /><!-- 허용 확장자 -->
<div class="cf_left">
<p>최대 <span class="orgnl_limitFileCount">1</span>개</p>
<p><span>100MB</span>제한</p>
</div>
<div class="cf_right">
<p>등록된 파일 <span class="upload_number orgnl_totalfileCount">0</span>개</p>
<span class="upload_number orgnl_totalfileSize">0MB</span>
</div>
</div>
</dd>
</dl>
<dl class="filewrap_div">
<dt><p class="req_text"><span>필수입력 항목</span>*</p>평가용 결과보고서</dt>
<dd>
<div class="btn_wrap">
<button type="button" class="btnType01 cpy_btn_add_file">평가용 결과보고서 업로드</button>
<input type="file" id="cpy_file_temp" name="cpy_file_temp" class="uploadFile" style="display:none"/>
</div>
<div class="file_wrap no_img_box cpy_no_img_box">
<table>
<caption>첨부파일 파일명, 종류, 크기 정보 제공</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 15%;">
</colgroup>
<thead>
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
</thead>
<tbody class="tb_file_before cpy_file_drop">
<tr>
<td colspan="3">
<p>첨부하실 파일을 <span>마우스끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap file_list_div cpy_file_list_div">
<table>
<caption>첨부파일 파일명, 종류, 크기, 삭제 정보 제공</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 15%;">
<col style="width: 100px;">
</colgroup>
<thead>
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
<th scope="col">삭제</th>
</thead>
<tbody id="cpy_tbody_fiielist" class="cpy_tb_file_after tb_file_after">
<c:forEach var="fileList" items="${fileList}" varStatus="status">
<tr class="item_${fileList.atchFileId}_${fileList.fileSn} uploaded_obj">
<input type="hidden" name="fileSize" class="cpy_item_file_size" value="${fileList.fileSize}">
<td class="td_filename">
<span class="file_name_text">${fileList.orignlFileNm}</span>
</td>
<td class="td_filesort">
<span class="file_filesort_text" value="<c:out value="${fileList.fileExtsn}"/>"><c:out value="${fileList.fileExtsn}"/></span>
</td>
<td class="td_filesize">
<span class="file_size_text" value="<c:out value="${fileList.fileMg}"/>"><c:out value="${fileList.fileMg}"/></span>
</td>
<td>
<button type="button" class="btn_del" onclick="delAtchFile('${fileList.atchFileId}', '${fileList.fileSn}'); return false;"><i></i></button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div class="file_cf">
<input type="hidden" name="cpy_limitcount" id="cpy_limitcount" value="1" /><!-- 최대 업로드 파일갯수 -->
<input type="hidden" name="cpy_allrowFileExtsn" id="cpy_allrowFileExtsn" value="" /><!-- 허용 확장자 -->
<div class="cf_left">
<p>최대 <span class="cpy_limitFileCount">1</span>개</p>
<p><span>100MB</span>제한</p>
</div>
<div class="cf_right">
<p>등록된 파일 <span class="upload_number cpy_totalfileCount">0</span>개</p>
<span class="upload_number cpy_totalfileSize">0MB</span>
</div>
</div>
</dd>
</dl>
<dl class="filewrap_div">
<dt><p class="req_text"><span>필수입력 항목</span>*</p>증빙사진</dt>
<dd>
<div class="btn_wrap">
<button type="button" class="btnType01 evdnc_btn_add_file">증빙 사진 업로드</button>
<input type="file" id="evdnc_file_temp" name="evdnc_file_temp" class="uploadFile" style="display:none"/>
</div>
<div class="file_wrap no_img_box evdnc_no_img_box">
<table>
<caption>첨부파일 파일명, 종류, 크기 정보 제공</caption>
<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 evdnc_file_drop">
<tr>
<td colspan="3">
<p>첨부하실 파일을 <span>마우스끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap file_list_div evdnc_file_list_div">
<table>
<caption>첨부파일 파일명, 종류, 크기, 삭제 정보 제공</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 15%;">
<col style="width: 100px;">
</colgroup>
<thead>
<th>파일 명</th>
<th>종류</th>
<th>크기</th>
<th>삭제</th>
</thead>
<tbody id="evdnc_tbody_fiielist" class="evdnc_tb_file_after tb_file_after">
<c:forEach var="fileList" items="${fileList}" varStatus="status">
<tr class="item_${fileList.atchFileId}_${fileList.fileSn} uploaded_obj">
<input type="hidden" name="fileSize" class="evdnc_item_file_size" value="${fileList.fileSize}">
<td class="td_filename">
<span class="file_name_text">${fileList.orignlFileNm}</span>
</td>
<td class="td_filesort">
<span class="file_filesort_text" value="<c:out value="${fileList.fileExtsn}"/>"><c:out value="${fileList.fileExtsn}"/></span>
</td>
<td class="td_filesize">
<span class="file_size_text" value="<c:out value="${fileList.fileMg}"/>"><c:out value="${fileList.fileMg}"/></span>
</td>
<td>
<button type="button" class="btn_del" onclick="delAtchFile('${fileList.atchFileId}', '${fileList.fileSn}'); return false;"><i></i></button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div class="file_cf">
<input type="hidden" name="evdnc_limitcount" id="evdnc_limitcount" value="1" /><!-- 최대 업로드 파일갯수 -->
<input type="hidden" name="evdnc_allrowFileExtsn" id="evdnc_allrowFileExtsn" value="ZIP" /><!-- 허용 확장자 -->
<div class="cf_left">
<p>최대 <span class="evdnc_limitFileCount">1</span>개</p>
<p><span>100MB</span>제한</p>
</div>
<div class="cf_right">
<p>등록된 파일 <span class="upload_number evdnc_totalfileCount">0</span>개</p>
<span class="upload_number evdnc_totalfileSize">0MB</span>
</div>
</div>
</dd>
</dl>
<dl class="filewrap_div">
<dt>원격연수 이수증</dt>
<dd>
<div class="btn_wrap">
<button type="button" class="btnType01 rmtTrn_btn_add_file">원격연수 이수증 업로드</button>
<input type="file" id="rmtTrn_file_temp" name="rmtTrn_file_temp" class="uploadFile" style="display:none"/>
</div>
<div class="file_wrap no_img_box rmtTrn_no_img_box">
<table>
<caption>첨부파일 파일명, 종류, 크기 정보 제공</caption>
<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 rmtTrn_file_drop">
<tr>
<td colspan="3">
<p>첨부하실 파일을 <span>마우스끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap file_list_div rmtTrn_file_list_div">
<table>
<caption>첨부파일 파일명, 종류, 크기, 삭제 정보 제공</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 15%;">
<col style="width: 100px;">
</colgroup>
<thead>
<th>파일 명</th>
<th>종류</th>
<th>크기</th>
<th>삭제</th>
</thead>
<tbody id="rmtTrn_tbody_fiielist" class="rmtTrn_tb_file_after tb_file_after">
<c:forEach var="fileList" items="${fileList}" varStatus="status">
<tr class="item_${fileList.atchFileId}_${fileList.fileSn} uploaded_obj">
<input type="hidden" name="fileSize" class="rmtTrn_item_file_size" value="${fileList.fileSize}">
<td class="td_filename">
<span class="file_name_text">${fileList.orignlFileNm}</span>
</td>
<td class="td_filesort">
<span class="file_filesort_text" value="<c:out value="${fileList.fileExtsn}"/>"><c:out value="${fileList.fileExtsn}"/></span>
</td>
<td class="td_filesize">
<span class="file_size_text" value="<c:out value="${fileList.fileMg}"/>"><c:out value="${fileList.fileMg}"/></span>
</td>
<td>
<button type="button" class="btn_del" onclick="delAtchFile('${fileList.atchFileId}', '${fileList.fileSn}'); return false;"><i></i></button>
</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
<div class="file_cf">
<input type="hidden" name="rmtTrn_limitcount" id="rmtTrn_limitcount" value="1" /><!-- 최대 업로드 파일갯수 -->
<input type="hidden" name="rmtTrn_allrowFileExtsn" id="rmtTrn_allrowFileExtsn" value="" /><!-- 허용 확장자 -->
<div class="cf_left">
<p>최대 <span class="rmtTrn_limitFileCount">1</span>개</p>
<p><span>100MB</span>제한</p>
</div>
<div class="cf_right">
<p>등록된 파일 <span class="upload_number rmtTrn_totalfileCount">0</span>개</p>
<span class="upload_number rmtTrn_totalfileSize">0MB</span>
</div>
</div>
</dd>
</dl>
</div>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btnType06" onclick="fncSave();">결과제출</button>
</div>
<div class="btn_right">
<button type="button" class="btnType02 m_btn_block" onclick="fncGoList();">취소</button>
</div>
</div>
</div>

View File

@ -148,9 +148,9 @@
</th>
<td>
<c:choose>
<c:when test="${not empty info.sbmtPnttm}">
<fmt:parseDate value="${info.sbmtPnttm}" var="sbmtPnttm" pattern="yyyy-MM-dd"/>
<fmt:formatDate value="${sbmtPnttm}" pattern="20yy.MM.dd"/>
<c:when test="${not empty info.sbmtPnttmDetail}">
<fmt:parseDate value="${info.sbmtPnttmDetail}" var="sbmtPnttm" pattern="yyyy-MM-dd HH:mm:ss"/>
<fmt:formatDate value="${sbmtPnttm}" pattern="yyyy.MM.dd HH시 mm분"/>
</c:when>
<c:otherwise>
-
@ -164,7 +164,7 @@
<td>
<c:choose>
<c:when test="${not empty info.endPnttm}">
<fmt:parseDate value="${info.endPnttm}" var="endPnttm" pattern="yyMMddHHmmss"/>
<fmt:parseDate value="${info.endPnttm}" var="endPnttm" pattern="yyyyMMddHHmm"/>
<fmt:formatDate value="${endPnttm}" pattern="yyyy.MM.dd"/>
</c:when>
<c:otherwise>
@ -196,7 +196,7 @@
<td colspan="3">
<c:choose>
<c:when test="${not empty info.endPnttm}">
<fmt:parseDate value="${info.endPnttm}" var="endPnttm" pattern="yyMMddHHmmss"/>
<fmt:parseDate value="${info.endPnttm}" var="endPnttm" pattern="yyyyMMddHHmm"/>
<fmt:formatDate value="${endPnttm}" pattern="yyyy.MM.dd"/>
</c:when>
<c:otherwise>

View File

@ -18,7 +18,7 @@
}
function openPop(){
if(!checkAplctPsbl()) return;
//if(!checkAplctPsbl()) return;
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/popup/cautionGuide.do"

View File

@ -24,7 +24,7 @@
}
function goWrite(){
if(!checkAplctPsbl()) return;
/* if(!checkAplctPsbl()) return; */
$("#listForm").attr("action","${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctGuide.do").submit();
}
@ -98,9 +98,9 @@
<option ${vEEduAplctVO.searchStatus2 eq '' ? 'selected' : ''} value="">전체</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.APRVL_CD_10 ? 'selected' : ''} value="${VeConstants.APRVL_CD_10}">운영신청</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.APRVL_CD_70 ? 'selected' : ''} value="${VeConstants.APRVL_CD_70}">수정요청</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.APRVL_CD_80 ? 'selected' : ''} value="${VeConstants.APRVL_CD_80}">수정요청완료</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.APRVL_CD_60 ? 'selected' : ''} value="${VeConstants.APRVL_CD_60}">교육확정</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.APRVL_CD_90 ? 'selected' : ''} value="${VeConstants.APRVL_CD_90}">교육미확정</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.APRVL_CD_80 ? 'selected' : ''} value="${VeConstants.APRVL_CD_80}">수정완료</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.APRVL_CD_60 ? 'selected' : ''} value="${VeConstants.APRVL_CD_60}">운영확정</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.APRVL_CD_90 ? 'selected' : ''} value="${VeConstants.APRVL_CD_90}">운영미확정</option>
</select>
</div>
<div class="btn_wrap">
@ -154,8 +154,8 @@
</td>
<td>
<a href="javascript:fncGoDetail('${list.eduAplctOrd}');" >
<fmt:parseDate value="${list.endPnttm}" var="endPnttm" pattern="yyMMddHHmmss"/>
<fmt:formatDate value="${endPnttm}" pattern="20yy.MM.dd"/>
<fmt:parseDate value="${list.endPnttm}" var="endPnttm" pattern="yyyyMMddHHmm"/>
<fmt:formatDate value="${endPnttm}" pattern="yyyy.MM.dd"/>
<%--<c:choose>
<c:when test="${not empty list.rprtSbmtDt}">
<fmt:parseDate value="${list.rprtSbmtDt}" var="eduHopeDt" pattern="yyyyMMdd"/>
@ -187,13 +187,13 @@
<span class="app_status3">수정요청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_80}">
<span class="app_status3">수정요청완료</span>
<span class="app_status3">수정완료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_60}">
<span class="app_status1">교육확정</span>
<span class="app_status1">운영확정</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_90}">
<span class="app_status1">교육미확정</span>
<span class="app_status1">운영미확정</span>
</c:when>
<c:otherwise>
-
@ -227,8 +227,8 @@
<li>
<span>접수종료일</span>
<span>
<fmt:parseDate value="${list.endPnttm}" var="endPnttm" pattern="yyMMddHHmmss"/>
<fmt:formatDate value="${endPnttm}" pattern="20yy.MM.dd"/>
<fmt:parseDate value="${list.endPnttm}" var="endPnttm" pattern="yyyyMMddHHmm"/>
<fmt:formatDate value="${endPnttm}" pattern="yyyy.MM.dd"/>
</span>
</li>
<li>

View File

@ -107,7 +107,7 @@
$(".tb_write").find("input[type=radio]:first-child").attr('checked',true);
$(".addClassRowClsrm > tbody").find(">tr:gt(5)").remove();
$("#agree").prop('checked',false);
$("#agree1").prop('checked',false);
/* $("#agree1").prop('checked',false); */
$("input[name=onlnPrcsOrd]").prop('checked',false);
var fileVo = new Array();
@ -234,9 +234,20 @@
$('#exprnClsrnYear').val(arr);
}
if($('#oprtnStrtDt').val() != null){
$('#oprtnStrtDt').val($('#oprtnStrtDt').val().replace(/[.]/gi, ''));
}
if($('#oprtnEndDt').val() != null){
$('#oprtnEndDt').val($('#oprtnEndDt').val().replace(/[.]/gi, ''));
}
//임시저장 데이터 불러왔을 시 duet-date-picker에서 날짜 input에 id를 넣어주지 않음
if($('duet-date-picker[name=oprtnStrtDt]').val() != null){
$('duet-date-picker[name=oprtnStrtDt]').val($('duet-date-picker[name=oprtnStrtDt]').val().replace(/[.]/gi, ''))
}
if($('duet-date-picker[name=oprtnEndDt]').val() != null){
$('duet-date-picker[name=oprtnEndDt]').val($('duet-date-picker[name=oprtnEndDt]').val().replace(/[.]/gi, ''))
}
}
function validCheck(){
@ -382,8 +393,10 @@
return false;
}
var oprtnStrtDt = $('#oprtnStrtDt').val();
var oprtnEndDt = $('#oprtnEndDt').val();
/* var oprtnStrtDt = $('#oprtnStrtDt').val();
var oprtnEndDt = $('#oprtnEndDt').val(); */
var oprtnStrtDt = $('duet-date-picker[name=oprtnStrtDt]').val();
var oprtnEndDt = $('duet-date-picker[name=oprtnEndDt]').val();
oprtnStrtDt = oprtnStrtDt.replace(/[.]/gi, '');
oprtnEndDt = oprtnEndDt.replace(/[.]/gi, '');
@ -394,7 +407,8 @@
return false;
}
var oprtnStrtDtDate = $('#oprtnStrtDt').val();
/* var oprtnStrtDtDate = $('#oprtnStrtDt').val(); */
var oprtnStrtDtDate = $('duet-date-picker[name=oprtnStrtDt]').val();
var yyyy = oprtnStrtDtDate.substr(0,4);
var mm = oprtnStrtDtDate.substr(5,2);
var dd = oprtnStrtDtDate.substr(8,2);
@ -417,10 +431,10 @@
return false;
}
if($("#agree1").length > 0 && $('#agree1').val() != 'Y'){
/* if($("#agree1").length > 0 && !$('#agree1').prop('checked')){
alert('개인정보 이용 약관에 동의해주세요.');
return false;
}
} */
return true;
}
@ -501,7 +515,10 @@
// cmpltNoFormat(document.getElementById('cmpltNum'));
// }
$("#exprnClsrnCd").val(info.exprnClsrnCd);
$('input[name=exprnClsrnCd][value='+info.exprnClsrnCd+']').prop('checked', true);
if(info.exprnClsrnCd == '02'){
$('input[name="eClsrnYear"]').attr('disabled',true);
}
$('input[name=eClsrnYear]').prop('checked',false);
if(isNotEmpty(info.exprnClsrnYear)){
var yearList = info.exprnClsrnYear.split(',');
@ -510,7 +527,7 @@
});
}
$("#exprnClsrnAplct").val(info.exprnClsrnAplct);
$('input[name=exprnClsrnAplct][value='+info.exprnClsrnAplct+']').prop('checked', true);
if(info.exprnClsrnAplct == '04'){
$("#exprnClsrnAplctCn").prop('disabled' , false);
$("#exprnClsrnAplctCn").val(info.exprnClsrnAplctCn);
@ -524,11 +541,15 @@
$("#trgtPrsnl").val(info.trgtPrsnl);
if(isNotEmpty(info.oprtnStrtDt)){
$("#oprtnStrtDt").val(dateFormat(info.oprtnStrtDt.replace(/[.]/gi,''), 'date'));
/* $("#oprtnStrtDt").val(dateFormat(info.oprtnStrtDt.replace(/[.]/gi,''), 'date')); */
$('duet-date-picker[name=oprtnStrtDt]').val(dateFormat(info.oprtnStrtDt.replace(/[.]/gi,''), 'date'))
$('#oprtnStrtDt').val(dateFormat(info.oprtnStrtDt.replace(/[.]/gi,''), 'date'));
}
if(isNotEmpty(info.oprtnEndDt)){
$("#oprtnEndDt").val(dateFormat(info.oprtnEndDt.replace(/[.]/gi,''), 'date'));
/* $("#oprtnEndDt").val(dateFormat(info.oprtnEndDt.replace(/[.]/gi,''), 'date')); */
$('duet-date-picker[name=oprtnEndDt]').val(dateFormat(info.oprtnEndDt.replace(/[.]/gi,''), 'date'))
$('#oprtnEndDt').val(dateFormat(info.oprtnEndDt.replace(/[.]/gi,''), 'date'));
}
$("#oprtnFileId").val(info.oprtnFileId);
@ -536,6 +557,7 @@
var fileTbody = $("#tbody_fiielist");
$.each(fileList, function(idx, obj){
var tr = $("<tr/>").addClass('item_'+obj.atchFileId+'_'+obj.fileSn).addClass('uploaded_obj');
var hiddenInput = $('<input/>').attr('type', 'hidden').attr('name', 'fileSize').addClass('item_file_size').val(obj.fileSize);
var td1 = $('<td/>').addClass('td_filename');
var td2 = $('<td/>').addClass('td_filesort');
var td3 = $('<td/>').addClass('td_filesize');
@ -551,7 +573,7 @@
td2.append(span2);
td3.append(span3);
td4.append(button);
tr.append(td1).append(td2).append(td3).append(td4);
tr.append(hiddenInput).append(td1).append(td2).append(td3).append(td4);
fileTbody.append(tr);
});
if(fileList.length > 0){
@ -593,6 +615,8 @@
<input type="hidden" name="mode" id="mode" value="${modelVO.mode}" />
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="${info.eduAplctOrd}" />
<input type="hidden" name="oprtnFileId" id="oprtnFileId" value="${info.oprtnFileId}" />
<input type="hidden" name="prcsOrd" id="prcsOrd" value="${detailVO.prcsAplctPrdOrd}" /> <!-- 교육과정신청기간 ID -->
<div class="cont_tit">
<h2>운영신청서 작성</h2>
@ -1069,7 +1093,7 @@
</dd>
</dl>
<div class="agree_wrap">
<!-- <div class="agree_wrap">
<div class="tb_tit01">
<p>개인정보 이용 동의</p>
</div>
@ -1093,11 +1117,11 @@
<div>
<input type="checkbox" id="agree1" name="agree1" value="Y">
<label for="agree1">위 사항에 동의합니다.</label>
<input type="hidden" id="agreeError" name="agreeError"> <!-- IE에서 체크박스가 마지막에 있을 시 이상한 오류 발생. 오류 방지를 위해히든 하나 넣어둠 -->
</div>
<input type="hidden" id="agreeError" name="agreeError"> IE에서 체크박스가 마지막에 있을 시 이상한 오류 발생. 오류 방지를 위해히든 하나 넣어둠
</div>
</div>
</div>
</div> -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>

View File

@ -31,11 +31,16 @@
}
function goWrite(){
location.href= "${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctReg.do";
var frm = document.getElementById("prcsOrdForm");
frm.action = "<c:url value='/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctReg.do'/>";
frm.submit();
}
</script>
<form id="prcsOrdForm" name="prcsOrdForm">
<input type="hidden" name="prcsOrd" id="prcsOrd" value="${detailVO.prcsAplctPrdOrd}" /> <!-- 교육과정신청기간 ID -->
</form>
<div class="popup_wrap popType05" tabindex="0" data-tooltip-con="sub40_pop01" data-focus="sub40_pop01" data-focus-prev="list_popup_close">
<div class="popup_tit">
<p>신청서 작성 안내</p> <button class="btn_popup_close tooltip-close" data-focus="list_popup_close" title="팝업 닫기"><i></i></button>
@ -46,7 +51,12 @@
<div class="info_box">
<dl>
<dt>알려드립니다</dt>
<dd>2023년도 저작권 체험교실 운영 신청은 2023년 02월27(월) ~ 03월06일(월),<br>9:00 ~ 18:00에 진행되오니 많은 관심 부탁드립니다. 감사합니다.</dd>
<c:if test="${detailVO.checkYn eq 'Y' }">
<dd><c:out value='${nowYear}'/>년도 저작권 체험교실 운영 신청은 <c:out value='${detailVO.strtPnttm }'/> ~ <c:out value='${detailVO.endPnttm}'/>,<br>9:00 ~ 18:00에 진행되오니 많은 관심 부탁드립니다. 감사합니다.</dd>
</c:if>
<c:if test="${detailVO.checkYn ne 'Y' }">
<dd><c:out value='${nowYear}'/>년도 저작권 체험교실 운영 신청은 <c:out value='${detailVO.strtPnttm }'/> ~ <c:out value='${detailVO.endPnttm}'/>,<br>9:00 ~ 18:00에 진행되었습니다.<br> 현재는 신청기간이 아니므로 찾아가는 저작권 교육을 이용하여 주시기 바랍니다. 감사합니다.</dd>
</c:if>
</dl>
</div>
<div class="title">· 신청서 접수 시 유의사항</div>
@ -69,7 +79,9 @@
<div class="btn_left">
</div>
<div class="btn_center">
<c:if test="${detailVO.checkYn eq 'Y' }">
<button type="button" class="btnType05" onclick="goWrite();">확인</button>
</c:if>
<button type="button" class="btnType02 tooltip-close" data-focus="list_popup_close" data-focus-next="sub40_pop01">취소</button>
</div>
<div class="btn_right">

View File

@ -202,6 +202,12 @@
</td>
</tr>
<tr>
<th scope="row">상세교육과정</th>
<td>
<c:out value="${info.prcsCn }" />
</td>
</tr>
<tr>
<th scope="row">정원</th>
<td class="addPro_wrap">

View File

@ -31,7 +31,17 @@ $(document).ready(function(){
var endPnttm = new Date($currentRow.find("td:eq(2)").text().split("~")[1].trim());
var currentDate = new Date();
// 시간, 분, 초 초기화
strtPnttm.setHours(0, 0, 0, 0);
endPnttm.setHours(0, 0, 0, 0);
currentDate.setHours(0, 0, 0, 0);
var ddlnCdText = '';
console.log('currentDate : ', currentDate);
console.log('strtPnttm : ', strtPnttm);
console.log('endPnttm : ', endPnttm);
console.log('');
if (currentDate < strtPnttm) {
ddlnCdText = "접수전";
} else if (currentDate >= strtPnttm && currentDate <= endPnttm) {
@ -59,7 +69,7 @@ $(document).ready(function(){
var data = new FormData(document.getElementById("regForm"));
if(confirm("신청하시겠습니까?")){
var url = "${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/eduRegAjax.do";
var url = "${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduRegAjax.do";
console.log(data);
$.ajax({
type:"POST",
@ -86,7 +96,7 @@ $(document).ready(function(){
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/web/ve/aplct/fndtnEnhanceTrn/eduAplctList.do'/>";
listForm.action = "<c:url value='/web/ve/aplct/sspnIdtmt/eduAplctList.do'/>";
listForm.submit();
}
@ -94,7 +104,7 @@ $(document).ready(function(){
function fncGoDetail(prcsAplctPrdOrd){
var viewForm = document.viewForm ;
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();
}
@ -109,6 +119,19 @@ $(document).ready(function(){
$(this).val('');
});
}
function fn_eduInquiry(){
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/comm/popup/eduInquiryPopup.do"
, 470
, 464
// , data
, ""
, "Y"
, "eduInquiryPopup"
);
}
</script>
<!-- content -->
@ -220,17 +243,12 @@ $(document).ready(function(){
</c:choose>
</td>
<td class="aplctBtn">
<!-- <button type="button" class="btnType02" onclick="fncReset(this);">초기화</button> -->
<button type="button" class="btnType04" onclick="fncEduReg('<c:out value="${list.prcsAplctPrdOrd}"/>');">신청</button>
<%-- <button type="button" class="btnType04" onclick="fncEduReg('<c:out value="${list.prcsAplctPrdOrd}"/>');"><c:out value="${list.aprvlCd }" /></button> --%>
</td>
<!-- <td> -->
<%-- <c:out value="${list.useYn}"/> --%>
<!-- </td> -->
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="4"><spring:message code="common.nodata.msg" /></td></tr>
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
@ -242,7 +260,7 @@ $(document).ready(function(){
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btnType01" onclick="goWrite()">교육문의(미개발)</button>
<button type="button" class="btnType01" onclick="fn_eduInquiry()">교육문의(미개발)</button>
</div>
</div>

View File

@ -0,0 +1,226 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국저작권위원회 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
});
function fncEduReg(prcsAplctPrdOrd){
var regForm = document.regForm;
regForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd;
var data = new FormData(document.getElementById("regForm"));
if(confirm("신청하시겠습니까?")){
var url = "${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/eduRegAjax.do";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/web/ve/aplct/fndtnEnhanceTrn/eduAplctList.do'/>";
listForm.submit();
}
function goEduAplctList(prcsAplctPrdOrd){
var goEduAplctListForm = document.goEduAplctListForm ;
goEduAplctListForm.action = "<c:url value='/web/ve/aplct/fndtnEnhanceTrn/eduAplctList.do'/>";
goEduAplctListForm.submit();
}
function fncGoList(){
linkPage(1);
}
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
$(this).val('');
});
}
function fncGoDetail(prcsAplctPrdOrd){
var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.action = "<c:url value='/web/ve/aplct/fndtnEnhanceTrn/eduAplctDetail.do'/>";
viewForm.submit();
}
</script>
<!-- content -->
<div class="cont_wrap" id="sub">
<form name="regForm" id="regForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form name="viewForm" id="viewForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form name="goEduAplctListForm" id="goEduAplctListForm">
</form>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEPrcsDetailVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEPrcsDetailVO.searchSortOrd}" />" />
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="" />
<div class="cont_tit">
<h2>강의신청목록</h2>
<div class="sns_go">
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
</div>
</div>
<div class="list_top">
<div class="list_top_left">
<label for="searchStatus" class="label">신청상태 선택</label>
<select class="selType1" id="searchStatus" name="searchStatus">
<option ${vEPrcsDetailVO.searchStatus eq '' ? 'selected' : ''} value="">전체</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_SBMT ? 'selected' : ''} value="${VeConstants.STATUS_CD_SBMT}">교육신청</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDT_REQ ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_REQ}">수정요청</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDT_CMPT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_CMPT}">수정완료</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_CAN ? 'selected' : ''} value="${VeConstants.STATUS_CD_CAN}">교육취소</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDU_SELCT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDU_SELCT}">교육확정</option>
</select>
</div>
<div class="btn_wrap">
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchStartDt" name="searchStartDt" title="시작일 선택" value="${vEPrcsDetailVO.searchStartDt}"> --%>
<duet-date-picker identifier="date" name="searchStartDt" class="startDate" value="${vEPrcsDetailVO.searchStartDt}"></duet-date-picker>
</div>
~
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchEndDt" name="searchEndDt" title="종료일 선택" value="${vEPrcsDetailVO.searchEndDt}"> --%>
<duet-date-picker identifier="date" name="searchEndDt" class="endDate" value="${vEPrcsDetailVO.searchEndDt}"></duet-date-picker>
</div>
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script>
<button type="button" class="btnType01" onclick="fncGoList();">검색</button>
<button type="button" class="btnType02" onclick="fncReset(this);">초기화</button>
</div>
</div>
<!-- list -->
<div class="tb_list01">
<table>
<caption>교육 목록표</caption>
<colgroup>
<col style="width:35%;">
<col style="width:;">
<col style="width:13%;">
<col style="width:13%;">
<col style="width:13%;">
</colgroup>
<thead>
<tr>
<th>교육과정</th>
<th>교육기간</th>
<th>신청결과</th>
<th>설문조사</th>
<th>이수증</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<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><kc:code codeId="VE0003" code="${list.aprvlCd}"/></td>
<td>
<!-- 신청 승인상태 20 and 현재가 교육종료보다 이후 체크 1 -->
<c:choose>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and not list.qestRsltExists }">
<button type="button" title="설문등록" class="btnType04" data-tooltip="edu_in">설문등록</button>
</c:when>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and list.qestRsltExists }">
설문완료
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${list.qestRsltExists }">
<button type="button" title="출력" class="btnType03">출력</button>
</c:when>
<c:when test="${list.dateChk eq 1 and not list.qestRsltExists}">
교육완료
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<!-- <td>-</td> -->
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="6"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btnType01" onclick="location.href='<c:url value="/web/ve/aplct/fndtnEnhanceTrn/eduAplctList.do" />'">강의목록</button>
</div>
</div>
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
</form:form>
</div>

View File

@ -7,6 +7,7 @@
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국저작권위원회 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
@ -44,126 +45,77 @@
<div class="cont_wrap" id="sub">
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEEduAplctVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEEduAplctVO.searchSortOrd}" />" />
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="" />
<div class="cont_tit">
<h2>대시보드 (개발해야함)</h2>
<div class="sns_go">
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
<h2>기반강화연수 대시보드</h2>
</div>
<ul class="edu_process">
<li class="edu_apply"><i></i><div class="text_area">신청중 강의<p><span><c:out value="${countMap['COUNT_APRVL_CD_10']}" /></span>건</p></div></li>
<li class="edu_register"><i></i><div class="text_area">수강중 강의<p><span><c:out value="${countMap['COUNT_APRVL_CD_20']}" /></span>건</p></div></li>
<li class="edu_close"><i></i><div class="text_area">종료된 강의<p><span><c:out value="${countMap['COUNT_END_CD']}" /></span>건</p></div></li>
</ul>
<div class="tb_tit02">
<div class="tb_tit02_left">
<div class="t_best">최근 교육 목록</div>
</div>
<div class="list_top">
<div class="list_top_left">
<label for="searchStatus2" class="label">신청상태 선택</label>
<select class="selType1" id="searchStatus2" name="searchStatus2">
<option ${vEEduAplctVO.searchStatus2 eq '' ? 'selected' : ''} value="">전체</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_SBMT ? 'selected' : ''} value="${VeConstants.STATUS_CD_SBMT}">교육신청</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDT_REQ ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_REQ}">수정요청</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDT_CMPT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_CMPT}">수정완료</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_CAN ? 'selected' : ''} value="${VeConstants.STATUS_CD_CAN}">교육취소</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDU_SELCT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDU_SELCT}">교육확정</option>
</select>
</div>
<div class="btn_wrap">
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchStartDt" name="searchStartDt" title="시작일 선택" value="${vEEduAplctVO.searchStartDt}"> --%>
<duet-date-picker identifier="date" name="searchStartDt" class="startDate" value="${vEEduAplctVO.searchStartDt}"></duet-date-picker>
</div>
~
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchEndDt" name="searchEndDt" title="종료일 선택" value="${vEEduAplctVO.searchEndDt}"> --%>
<duet-date-picker identifier="date" name="searchEndDt" class="endDate" value="${vEEduAplctVO.searchEndDt}"></duet-date-picker>
</div>
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script>
<button type="button" class="btnType01" onclick="fncGoList();">검색</button>
<button type="button" class="btnType02" onclick="fncReset(this);">초기화</button>
<div class="btn_wrap1">
<button type="button" title="최근 교육 목록 더보기" class="con_more" onclick="location.href='<c:url value="/web/ve/aplct/fndtnEnhanceTrn/fndtnEduAplctList.do" />'">더보기</button>
</div>
</div>
<div class="tb_list01">
<div class="tb_list02">
<table>
<caption>최근 교육 목록표</caption>
<colgroup>
<col style="width: 10%;">
<col style="width: 18%;">
<col style="width: 15%">
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 15%;">
<col style="width:35%;">
<col style="width:;">
<col style="width:13%;">
<col style="width:13%;">
<col style="width:13%;">
</colgroup>
<thead>
<tr>
<th scope="col">번호</th>
<th scope="col">교육희망일</th>
<th scope="col">기관구분</th>
<th scope="col">기관(단체)명</th>
<th scope="col">신청유형</th>
<th scope="col">신청상태</th>
<th>교육과정</th>
<th>교육기간</th>
<th>신청결과</th>
<th>설문조사</th>
<th>이수증</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<%-- <td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" style="cursor:pointer;"> --%>
<td>
<c:out value='${list.rowNo}'/>
<c:out value="${list.prcsNm}"/>(<c:out value="${list.prcsAplctPrdOrd}"/>)
</td>
<td>
<a href="javascript:fncGoDetail('${list.eduAplctOrd}');">
<c:out value="${list.eduStrtPnttm}"/>~<c:out value="${list.eduDdlnPnttm}"/>
</td>
<td><kc:code codeId="VE0003" code="${list.aprvlCd}"/></td>
<td>
<!-- 신청 승인상태 20 and 현재가 교육종료보다 이후 체크 1 -->
<c:choose>
<c:when test="${not empty list.eduHopeDt}">
<fmt:parseDate value="${list.eduHopeDt}" var="eduHopeDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${eduHopeDt}" pattern="yyyy.MM.dd"/>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and not list.qestRsltExists }">
<button type="button" title="설문등록" class="btnType04" data-tooltip="edu_in">설문등록</button>
</c:when>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and list.qestRsltExists }">
설문완료
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</a>
</td>
<td>
<a href="javascript:fncGoDetail('${list.eduAplctOrd}');">
<ve:code codeId="VE0012" code="${list.insttDivCd}"/>
</a>
</td>
<td>
<a href="javascript:fncGoDetail('${list.eduAplctOrd}');">
<c:out value='${list.insttNm}'/>
</a>
</td>
<td>
<a href="javascript:fncGoDetail('${list.eduAplctOrd}');">
<ve:code codeId="VE0007" code="${list.eduSlctCd}"/>
</a>
</td>
<td>
<c:choose>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_SBMT}">
<span class="app_status1">교육신청</span>
<c:when test="${list.qestRsltExists }">
<button type="button" title="출력" class="btnType03">출력</button>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_CFRM}">
<span class="app_status2">교육승인</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_RJT}">
<span class="app_status4">교육반려</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_CAN}">
<span class="app_status4">교육취소</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_CHI_CMPT}">
<span class="app_status4">선정완료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_EDT_REQ}">
<span class="app_status3">수정요청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_EDT_CMPT}">
<span class="app_status3">수정완료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_EDU_SELCT}">
<span class="app_status1">교육확정</span>
<c:when test="${list.dateChk eq 1 and not list.qestRsltExists}">
교육완료
</c:when>
<c:otherwise>
-
@ -179,92 +131,5 @@
</table>
</div>
<div class="tb_list01_m">
<c:forEach var="list" items="${list}" varStatus="status">
<ul onclick="javascript:fncGoDetail('${list.eduAplctOrd}');">
<li>
<span>번호</span>
<span><c:out value='${list.rowNo}'/></span>
</li>
<li>
<span>교육희망일</span>
<span>
<c:choose>
<c:when test="${not empty list.eduHopeDt}">
<fmt:parseDate value="${list.eduHopeDt}" var="eduHopeDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${eduHopeDt}" pattern="yyyy.MM.dd"/>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</span>
</li>
<li>
<span>기관구분</span>
<span><ve:code codeId="VE0012" code="${list.insttDivCd}"/></span>
</li>
<li>
<span>기관(단체)명</span>
<span><c:out value='${list.insttNm}'/></span>
</li>
<li>
<span>신청유형</span>
<span><ve:code codeId="VE0007" code="${list.eduSlctCd}"/></span>
</li>
<li>
<span>신청상태</span>
<span>
<span class="app_status1">
<c:choose>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_SBMT}">
<span class="app_status1">교육신청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_CFRM}">
<span class="app_status2">교육승인</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_RJT}">
<span class="app_status4">교육반려</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_CAN}">
<span class="app_status4">교육취소</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_CHI_CMPT}">
<span class="app_status4">선정완료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_EDT_REQ}">
<span class="app_status3">수정요청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_EDT_CMPT}">
<span class="app_status3">수정완료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.STATUS_CD_EDU_SELCT}">
<span class="app_status1">교육확정</span>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</span>
</span>
</li>
</ul>
</c:forEach>
</div>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btnType04" onclick="goWrite()">등록</button>
</div>
</div>
<!-- page -->
<%-- <div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div> --%>
</form:form>
</div>

View File

@ -0,0 +1,227 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<% pageContext.setAttribute("replaceChar", "\n"); %>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<style>
input:disabled {
background-color: #f9f9f9 !important;
}
input:read-only {
background-color: #f9f9f9 !important;
}
</style>
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
// 상태값 확인
ddlnCdSttsChk();
});
function ddlnCdSttsChk(){
var $ddlnCdStts = $("#ddlnCdStts");
// 텍스트가 비어있는지 확인
if ($ddlnCdStts.text().trim() === "") {
var dateText = $ddlnCdStts.closest('table').find("td:eq(2)").text().trim();
var strtPnttm = new Date(dateText.split("~")[0].trim().replace(/\./g, '-'));
var endPnttm = new Date(dateText.split("~")[1].trim().replace(/\./g, '-'));
var currentDate = new Date();
if (currentDate < strtPnttm) {
$ddlnCdStts.text("접수전");
} else if (currentDate >= strtPnttm && currentDate <= endPnttm) {
$ddlnCdStts.text("접수중");
} else if (currentDate > endPnttm) {
$ddlnCdStts.text("접수종료");
}
}
}
function fncGoList(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/web/ve/aplct/adultVisitEdu/eduAplct/eduAplctList.do'/>";
listForm.submit();
}
function fncGoEdit(){
var linkForm = document.linkForm ;
linkForm.action = "<c:url value='/web/ve/aplct/adultVisitEdu/eduAplct/eduAplctMdfy.do'/>";
linkForm.submit();
}
function fncSendSubmit(){
if(confirm("제출 하시겠습니까?")){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/web/ve/aplct/adultVisitEdu/eduAplct/eduAplctStatusAjax.do",
data: {
"eduAplctOrd" : $("#eduAplctOrd").val() ,
"sbmtYn" : 'Y',
"aprvlCd" : VeConstants.APRVL_CD_80,
},
dataType:'json',
success:function(returnData){
if(returnData.rsCnt > 0){
alert("제출 되었습니다.");
fncGoDetail();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function fncCancleSubmit(){
if(confirm("교육신청 취소하시겠습니까?")){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/web/ve/aplct/adultVisitEdu/eduAplct/eduAplctStatusAjax.do",
data: {
"eduAplctOrd" : $("#eduAplctOrd").val() ,
"useYn" : 'N'
},
dataType:'json',
success:function(returnData){
if(returnData.rsCnt > 0){
alert("교육신청 취소되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function fncGoDetail(){
var linkForm = document.linkForm ;
linkForm.action = "<c:url value='/web/ve/aplct/adultVisitEdu/eduAplct/eduAplctDetail.do'/>";
linkForm.submit();
}
function chrgInfoUpdatePop(){
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/comm/popup/chrgInfoUpdatePop.do"
, 650
, 464
, {'eduAplctOrd' : $("#eduAplctOrd").val()}
, "Y"
, "chrgInfoUpdatePop"
);
}
</script>
<div class="cont_wrap" id="sub">
<div class="cont_tit">
<h2>교육신청 상세</h2>
<div class="sns_go">
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
</div>
</div>
<div class="tit_box">
<i class="tit_box_icon1"></i>
<div>
<p>찾아가는 저작권 교육</p>
<span>
‘찾아가는 저작권 교육’은 저작권 교육이 필요한 <span>공공기관, 대학, 문화예술단체 등을 </span>대상으로 무료로 강의를 지원하는 맞춤형 교육 서비스입니다.
<p style="font-weight:400;color:red;font-size:17px;padding-top:10px;">담당자 연락처) 02-2669-0083</p>
</span>
</div>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>교육신청 내용</p>
</div>
<%--
<c:if test="${info.aprvlCd eq VeConstants.STATUS_CD_SBMT}">
<div class="btn_wrap">
<button type="button" class="btnType06" onclick="chrgInfoUpdatePop();">담당자 정보 수정</button>
</div>
</c:if>
--%>
</div>
<div class="tb_type01 tb_write">
<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>
</tbody>
</table>
</div>
</div>

View File

@ -0,0 +1,303 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국저작권위원회 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
$(".aplctBtn button").click(function(){
var regForm = document.regForm;
regForm.prcsAplctPrdOrd.value = $(this).data('info');
});
// 상태값 확인
$(".ddlnCdStts").each(function() {
var $thisCell = $(this);
var $applyButton = $thisCell.closest('tr').find(".aplctBtn button");
// var $aprvlCd = $thisCell.closest('tr').find(".aplctBtn input");
// 텍스트가 비어있는지 확인
if ($thisCell.text().trim() === "") {
var $currentRow = $thisCell.closest('tr');
var strtPnttm = new Date($currentRow.find("td:eq(2)").text().split("~")[0].trim());
var endPnttm = new Date($currentRow.find("td:eq(2)").text().split("~")[1].trim());
var currentDate = new Date();
// 시간, 분, 초 초기화
strtPnttm.setHours(0, 0, 0, 0);
endPnttm.setHours(0, 0, 0, 0);
currentDate.setHours(0, 0, 0, 0);
var ddlnCdText = '';
console.log('currentDate : ', currentDate);
console.log('strtPnttm : ', strtPnttm);
console.log('endPnttm : ', endPnttm);
console.log('');
if (currentDate < strtPnttm) {
ddlnCdText = "접수전";
} else if (currentDate >= strtPnttm && currentDate <= endPnttm) {
ddlnCdText = "접수중";
} else if (currentDate > endPnttm) {
ddlnCdText = "접수종료";
}
$thisCell.text(ddlnCdText);
}
// 텍스트가 "접수중"인지 확인
if ($thisCell.text().trim() !== "접수중") {
$applyButton.prop('disabled', true); // 버튼 비활성화
}
});
});
function fncEduReg(prcsAplctPrdOrd){
var regForm = document.regForm;
regForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd;
var data = new FormData(document.getElementById("regForm"));
if(confirm("신청하시겠습니까?")){
var url = "${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduRegAjax.do";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/web/ve/aplct/sspnIdtmt/eduAplctList.do'/>";
listForm.submit();
}
function fncGoDetail(prcsAplctPrdOrd){
var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.action = "<c:url value='/web/ve/aplct/sspnIdtmt/eduAplctDetail.do'/>";
viewForm.submit();
}
function fncGoList(){
linkPage(1);
}
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
$(this).val('');
});
}
function fn_eduInquiry(){
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/comm/popup/eduInquiryPopup.do"
, 470
, 464
// , data
, ""
, "Y"
, "eduInquiryPopup"
);
}
</script>
<!-- content -->
<div class="cont_wrap" id="sub">
<form name="regForm" id="regForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form name="viewForm" id="viewForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEEduAplctVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEEduAplctVO.searchSortOrd}" />" />
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="" />
<div class="cont_tit">
<h2>교육신청목록</h2>
<div class="sns_go">
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
</div>
</div>
<div class="list_top">
<div class="list_top_left">
<label for="searchStatus2" class="label">신청상태 선택</label>
<select class="selType1" id="searchStatus2" name="searchStatus2">
<option ${vEEduAplctVO.searchStatus2 eq '' ? 'selected' : ''} value="">전체</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_SBMT ? 'selected' : ''} value="${VeConstants.STATUS_CD_SBMT}">교육신청</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDT_REQ ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_REQ}">수정요청</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDT_CMPT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_CMPT}">수정완료</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_CAN ? 'selected' : ''} value="${VeConstants.STATUS_CD_CAN}">교육취소</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.STATUS_CD_EDU_SELCT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDU_SELCT}">교육확정</option>
</select>
</div>
<div class="btn_wrap">
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchStartDt" name="searchStartDt" title="시작일 선택" value="${vEEduAplctVO.searchStartDt}"> --%>
<duet-date-picker identifier="date" name="searchStartDt" class="startDate" value="${vEEduAplctVO.searchStartDt}"></duet-date-picker>
</div>
~
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchEndDt" name="searchEndDt" title="종료일 선택" value="${vEEduAplctVO.searchEndDt}"> --%>
<duet-date-picker identifier="date" name="searchEndDt" class="endDate" value="${vEEduAplctVO.searchEndDt}"></duet-date-picker>
</div>
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script>
<button type="button" class="btnType01" onclick="fncGoList();">검색</button>
<button type="button" class="btnType02" onclick="fncReset(this);">초기화</button>
</div>
</div>
<!-- list -->
<div class="tb_list01">
<table>
<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.strtPnttm}"/>~<c:out value="${list.endPnttm}"/>
</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">
<c:choose>
<c:when test="${not empty list.aprvlCd}">
<kc:code codeId="VE0003" code="${list.aprvlCd}"/>
</c:when>
<c:otherwise>
<kc:code codeId="VEA004" code="${list.ddlnCd}"/>
</c:otherwise>
</c:choose>
</td>
<td class="aplctBtn">
<%-- <button type="button" class="btnType04" onclick="fncEduReg('<c:out value="${list.prcsAplctPrdOrd}"/>');">신청</button> --%>
<button type="button" class="btnType04" data-info="<c:out value="${list.prcsAplctPrdOrd}"/>" data-tooltip="reg_search" >신청</button>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btnType01" onclick="fn_eduInquiry()">교육문의(미개발)</button>
</div>
</div>
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
</form:form>
</div>
<!-- 신청 클릭 > 기소유예 대상자 확인 팝업 -->
<div class="tooltip-wrap">
<div class="popup_wrap popType01" tabindex="0" data-tooltip-con="reg_search" data-focus="reg_search"
data-focus-prev="reg_search_close">
<div class="popup_tit">
<p>교육대상자 확인</p> <button class="btn_popup_close tooltip-close" data-focus="reg_search_close"
title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<p class="text_greeting">안녕하세요.</br>한국저작권위원회입니다.</p>
<div class="popup_texta"><textarea placeholder="문의내용을 입력해 주세요."></textarea></div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btnType05">문의하기</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
<!--// 신청 클릭 > 기소유예 대상자 확인 팝업 -->

View File

@ -0,0 +1,226 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국저작권위원회 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
});
function fncEduReg(prcsAplctPrdOrd){
var regForm = document.regForm;
regForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd;
var data = new FormData(document.getElementById("regForm"));
if(confirm("신청하시겠습니까?")){
var url = "${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/eduRegAjax.do";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/web/ve/aplct/fndtnEnhanceTrn/eduAplctList.do'/>";
listForm.submit();
}
function goEduAplctList(prcsAplctPrdOrd){
var goEduAplctListForm = document.goEduAplctListForm ;
goEduAplctListForm.action = "<c:url value='/web/ve/aplct/fndtnEnhanceTrn/eduAplctList.do'/>";
goEduAplctListForm.submit();
}
function fncGoList(){
linkPage(1);
}
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
$(this).val('');
});
}
function fncGoDetail(prcsAplctPrdOrd){
var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.action = "<c:url value='/web/ve/aplct/fndtnEnhanceTrn/eduAplctDetail.do'/>";
viewForm.submit();
}
</script>
<!-- content -->
<div class="cont_wrap" id="sub">
<form name="regForm" id="regForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form name="viewForm" id="viewForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form name="goEduAplctListForm" id="goEduAplctListForm">
</form>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEPrcsDetailVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEPrcsDetailVO.searchSortOrd}" />" />
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="" />
<div class="cont_tit">
<h2>나의 강의 신청목록</h2>
<div class="sns_go">
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
</div>
</div>
<div class="list_top">
<div class="list_top_left">
<label for="searchStatus" class="label">신청상태 선택</label>
<select class="selType1" id="searchStatus" name="searchStatus">
<option ${vEPrcsDetailVO.searchStatus eq '' ? 'selected' : ''} value="">전체</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_SBMT ? 'selected' : ''} value="${VeConstants.STATUS_CD_SBMT}">교육신청</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDT_REQ ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_REQ}">수정요청</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDT_CMPT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_CMPT}">수정완료</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_CAN ? 'selected' : ''} value="${VeConstants.STATUS_CD_CAN}">교육취소</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDU_SELCT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDU_SELCT}">교육확정</option>
</select>
</div>
<div class="btn_wrap">
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchStartDt" name="searchStartDt" title="시작일 선택" value="${vEPrcsDetailVO.searchStartDt}"> --%>
<duet-date-picker identifier="date" name="searchStartDt" class="startDate" value="${vEPrcsDetailVO.searchStartDt}"></duet-date-picker>
</div>
~
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchEndDt" name="searchEndDt" title="종료일 선택" value="${vEPrcsDetailVO.searchEndDt}"> --%>
<duet-date-picker identifier="date" name="searchEndDt" class="endDate" value="${vEPrcsDetailVO.searchEndDt}"></duet-date-picker>
</div>
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script>
<button type="button" class="btnType01" onclick="fncGoList();">검색</button>
<button type="button" class="btnType02" onclick="fncReset(this);">초기화</button>
</div>
</div>
<!-- list -->
<div class="tb_list01">
<table>
<caption>교육 목록표</caption>
<colgroup>
<col style="width:35%;">
<col style="width:;">
<col style="width:13%;">
<col style="width:13%;">
<col style="width:13%;">
</colgroup>
<thead>
<tr>
<th>교육과정</th>
<th>교육기간</th>
<th>신청결과</th>
<th>설문조사</th>
<th>이수증</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<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><kc:code codeId="VE0003" code="${list.aprvlCd}"/></td>
<td>
<!-- 신청 승인상태 20 and 현재가 교육종료보다 이후 체크 1 -->
<c:choose>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and not list.qestRsltExists }">
<button type="button" title="설문등록" class="btnType04" data-tooltip="edu_in">설문등록</button>
</c:when>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and list.qestRsltExists }">
설문완료
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${list.qestRsltExists }">
<button type="button" title="출력" class="btnType03">출력</button>
</c:when>
<c:when test="${list.dateChk eq 1 and not list.qestRsltExists}">
교육완료
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<!-- <td>-</td> -->
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="6"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btnType01" onclick="location.href='<c:url value="/web/ve/aplct/fndtnEnhanceTrn/eduAplctList.do" />'">강의목록</button>
</div>
</div>
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
</form:form>
</div>

View File

@ -0,0 +1,137 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국저작권위원회 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javaScript" language="javascript">
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/web/ve/aplct/adultVisitEdu/eduAplct/eduAplctList.do'/>";
listForm.submit();
}
function goWrite(){
$("#listForm").attr("action","${pageContext.request.contextPath}/web/ve/aplct/adultVisitEdu/eduAplct/eduAplctReg.do").submit();
}
function fncGoDetail(eduAplctOrd){
var listForm = document.listForm ;
listForm.eduAplctOrd.value = eduAplctOrd ;
$("#listForm").attr("action","${pageContext.request.contextPath}/web/ve/aplct/adultVisitEdu/eduAplct/eduAplctDetail.do").submit();
}
function fncGoList(){
linkPage(1);
}
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
$(this).val('');
});
}
</script>
<!-- content -->
<div class="cont_wrap" id="sub">
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEEduAplctVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEEduAplctVO.searchSortOrd}" />" />
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="" />
<div class="cont_tit">
<h2>기소유예 대시보드</h2>
</div>
<ul class="edu_process">
<li class="edu_apply"><i></i><div class="text_area">신청중 강의<p><span><c:out value="${countMap['COUNT_APRVL_CD_10']}" /></span>건</p></div></li>
<li class="edu_register"><i></i><div class="text_area">수강중 강의<p><span><c:out value="${countMap['COUNT_APRVL_CD_20']}" /></span>건</p></div></li>
<li class="edu_close"><i></i><div class="text_area">종료된 강의<p><span><c:out value="${countMap['COUNT_END_CD']}" /></span>건</p></div></li>
</ul>
<div class="tb_tit02">
<div class="tb_tit02_left">
<div class="t_best">최근 교육 목록</div>
</div>
<div class="btn_wrap1">
<button type="button" title="최근 교육 목록 더보기" class="con_more" onclick="location.href='<c:url value="/web/ve/aplct/sspnIdtmt/sspnIdtmtEduAplctList.do"/>'">더보기</button>
</div>
</div>
<div class="tb_list02">
<table>
<caption>최근 교육 목록표</caption>
<colgroup>
<col style="width:35%;">
<col style="width:;">
<col style="width:13%;">
<col style="width:13%;">
<col style="width:13%;">
</colgroup>
<thead>
<tr>
<th>교육과정</th>
<th>교육기간</th>
<th>신청결과</th>
<th>설문조사</th>
<th>이수증</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<%-- <td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" style="cursor:pointer;"> --%>
<td>
<c:out value="${list.prcsNm}"/>(<c:out value="${list.prcsAplctPrdOrd}"/>)
</td>
<td>
<c:out value="${list.eduStrtPnttm}"/>~<c:out value="${list.eduDdlnPnttm}"/>
</td>
<td><kc:code codeId="VE0003" code="${list.aprvlCd}"/></td>
<td>
<!-- 신청 승인상태 20 and 현재가 교육종료보다 이후 체크 1 -->
<c:choose>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and not list.qestRsltExists }">
<button type="button" title="설문등록" class="btnType04" data-tooltip="edu_in">설문등록</button>
</c:when>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and list.qestRsltExists }">
설문완료
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${list.qestRsltExists }">
<button type="button" title="출력" class="btnType03">출력</button>
</c:when>
<c:when test="${list.dateChk eq 1 and not list.qestRsltExists}">
교육완료
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="6"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
</form:form>
</div>

View File

@ -0,0 +1,226 @@
<%@ page contentType="text/html; charset=utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국저작권위원회 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
});
function fncEduReg(prcsAplctPrdOrd){
var regForm = document.regForm;
regForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd;
var data = new FormData(document.getElementById("regForm"));
if(confirm("신청하시겠습니까?")){
var url = "${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/eduRegAjax.do";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/web/ve/aplct/fndtnEnhanceTrn/eduAplctList.do'/>";
listForm.submit();
}
function goEduAplctList(prcsAplctPrdOrd){
var goEduAplctListForm = document.goEduAplctListForm ;
goEduAplctListForm.action = "<c:url value='/web/ve/aplct/fndtnEnhanceTrn/eduAplctList.do'/>";
goEduAplctListForm.submit();
}
function fncGoList(){
linkPage(1);
}
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
$(this).val('');
});
}
function fncGoDetail(prcsAplctPrdOrd){
var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.action = "<c:url value='/web/ve/aplct/fndtnEnhanceTrn/eduAplctDetail.do'/>";
viewForm.submit();
}
</script>
<!-- content -->
<div class="cont_wrap" id="sub">
<form name="regForm" id="regForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form name="viewForm" id="viewForm">
<input type="hidden" name="prcsAplctPrdOrd">
</form>
<form name="goEduAplctListForm" id="goEduAplctListForm">
</form>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEPrcsDetailVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEPrcsDetailVO.searchSortOrd}" />" />
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="" />
<div class="cont_tit">
<h2>강의신청목록</h2>
<div class="sns_go">
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
</div>
</div>
<div class="list_top">
<div class="list_top_left">
<label for="searchStatus" class="label">신청상태 선택</label>
<select class="selType1" id="searchStatus" name="searchStatus">
<option ${vEPrcsDetailVO.searchStatus eq '' ? 'selected' : ''} value="">전체</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_SBMT ? 'selected' : ''} value="${VeConstants.STATUS_CD_SBMT}">교육신청</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDT_REQ ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_REQ}">수정요청</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDT_CMPT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDT_CMPT}">수정완료</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_CAN ? 'selected' : ''} value="${VeConstants.STATUS_CD_CAN}">교육취소</option>
<option ${vEPrcsDetailVO.searchStatus eq VeConstants.STATUS_CD_EDU_SELCT ? 'selected' : ''} value="${VeConstants.STATUS_CD_EDU_SELCT}">교육확정</option>
</select>
</div>
<div class="btn_wrap">
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchStartDt" name="searchStartDt" title="시작일 선택" value="${vEPrcsDetailVO.searchStartDt}"> --%>
<duet-date-picker identifier="date" name="searchStartDt" class="startDate" value="${vEPrcsDetailVO.searchStartDt}"></duet-date-picker>
</div>
~
<div class="calendar_wrap">
<%-- <input type="text" class="calendar" id="searchEndDt" name="searchEndDt" title="종료일 선택" value="${vEPrcsDetailVO.searchEndDt}"> --%>
<duet-date-picker identifier="date" name="searchEndDt" class="endDate" value="${vEPrcsDetailVO.searchEndDt}"></duet-date-picker>
</div>
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script>
<button type="button" class="btnType01" onclick="fncGoList();">검색</button>
<button type="button" class="btnType02" onclick="fncReset(this);">초기화</button>
</div>
</div>
<!-- list -->
<div class="tb_list01">
<table>
<caption>교육 목록표</caption>
<colgroup>
<col style="width:35%;">
<col style="width:;">
<col style="width:13%;">
<col style="width:13%;">
<col style="width:13%;">
</colgroup>
<thead>
<tr>
<th>교육과정</th>
<th>교육기간</th>
<th>신청결과</th>
<th>설문조사</th>
<th>이수증</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<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><kc:code codeId="VE0003" code="${list.aprvlCd}"/></td>
<td>
<!-- 신청 승인상태 20 and 현재가 교육종료보다 이후 체크 1 -->
<c:choose>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and not list.qestRsltExists }">
<button type="button" title="설문등록" class="btnType04" data-tooltip="edu_in">설문등록</button>
</c:when>
<c:when test="${list.aprvlCd eq 20 and list.dateChk eq 1 and list.qestRsltExists }">
설문완료
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${list.qestRsltExists }">
<button type="button" title="출력" class="btnType03">출력</button>
</c:when>
<c:when test="${list.dateChk eq 1 and not list.qestRsltExists}">
교육완료
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</td>
<!-- <td>-</td> -->
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="6"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btnType01" onclick="location.href='<c:url value="/web/ve/aplct/sspnIdtmt/eduAplctList.do" />'">강의목록</button>
</div>
</div>
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
</form:form>
</div>

View File

@ -0,0 +1,166 @@
<%@ 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="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ 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="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<script type="text/javascript">
$(document).ready(function() {
boardCaptionDetailToggle4();
// 레이어팝업 포커싱 이동 수정
$(".tooltip-close").click(function(){
$('[data-tooltip="sub01_pop01"]').focus();
});
//레이어팝업 초정 이동 시 필요한 data 값 추가
var btnLast = $('.popup_cont').find('.page').find('button:last-child');
btnLast.attr('data-focus-next','sub01_pop01');
btnLast.attr('data-focus','sub01_pop01_close');
});
function fncClose() {
window.close();
}
function linkPage(pageNo){
var data = {'lctrDivCd' : '${vEEduAplctVO.lctrDivCd}', 'pageUnit' : 5, 'pageIndex': pageNo , 'sbmtYn' : 'N'};
searchBeforeData(data);
}
function fcnCallData(eduAplctOrd){
if(confirm("선택하신 데이터로 변경하시겠습니까?")){
$.ajax({
type:"POST",
url:"<c:url value='/web/ve/comm/dataCallAjax.do'/>",
data: {"eduAplctOrd" : eduAplctOrd, 'lctrDivCd' :'${vEEduAplctVO.lctrDivCd}' },
dataType:'json',
success:function(returnData){
if(returnData.result == 'success'){
var rsData = new Object();
rsData.info = returnData.info;
rsData.list = returnData.list;
rsData.chasiList = returnData.chasiList;
rsData.fileList = returnData.fileList;
rsData.fileListCnt = returnData.fileListCnt;
callDataSetting(rsData);
$('button[data-focus=list_popup_close]').trigger('click');
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
</script>
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEEduAplctVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEEduAplctVO.searchSortOrd}" />" />
<input type="hidden" name="searchStatus" value="<c:out value="${vEEduAplctVO.searchStatus}" />" />
</form:form>
<div class="popup_wrap popType01" tabindex="0" data-tooltip-con="sub01_pop01" data-focus="sub01_pop01" data-focus-prev="sub01_pop01_close">
<div class="popup_tit">
<p>이전 교육신청 목록</p>
<button class="btn_popup_close tooltip-close" data-focus="list_popup_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="pop_tb_type02">
<table>
<caption>이전 교육신청 목록 교육구분, 신청일, 선택 을/를 제공하는 표</caption>
<colgroup>
<col style="width: calc(100%/3);">
<col style="width: calc(100%/3);">
<col style="width: calc(100%/3);">
</colgroup>
<thead>
<tr>
<c:choose>
<c:when test="${vEEduAplctVO.lctrDivCd eq VeConstants.LCTR_DIV_CD_30}">
<th scope="col">담당교과</th>
</c:when>
<c:when test="${vEEduAplctVO.lctrDivCd eq VeConstants.LCTR_DIV_CD_40}">
<th scope="col">구분</th>
</c:when>
<c:otherwise>
<th scope="col">교육구분</th>
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${vEEduAplctVO.lctrDivCd eq VeConstants.LCTR_DIV_CD_40}">
<th scope="col">성명</th>
</c:when>
<c:when test="${vEEduAplctVO.lctrDivCd eq VeConstants.LCTR_DIV_CD_30}">
<th scope="col">교사명</th>
</c:when>
<c:otherwise>
<th scope="col">신청일</th>
</c:otherwise>
</c:choose>
<th scope="col">선택</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<th scope="row">
<c:choose>
<c:when test="${vEEduAplctVO.lctrDivCd eq VeConstants.LCTR_DIV_CD_30}">
${list.chrgMjr}
</c:when>
<c:when test="${vEEduAplctVO.lctrDivCd eq VeConstants.LCTR_DIV_CD_40}">
<kc:code codeId="VE0012" code="${list.insttDivCd}"/>
</c:when>
<c:otherwise>
<kc:code codeId="VE0007" code="${list.eduSlctCd}"/>
</c:otherwise>
</c:choose>
</th>
<td>
<c:choose>
<c:when test="${vEEduAplctVO.lctrDivCd eq VeConstants.LCTR_DIV_CD_40}">
${list.fullName}
</c:when>
<c:when test="${vEEduAplctVO.lctrDivCd eq VeConstants.LCTR_DIV_CD_30}">
${list.chrgNm}
</c:when>
<c:otherwise>
<c:choose>
<c:when test="${not empty list.eduHopeDt}">
<fmt:parseDate value="${list.eduHopeDt}" var="eduHopeDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${eduHopeDt}" pattern="yyyy.MM.dd"/>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
</td>
<td><button type="button" class="btnType01" onclick="fcnCallData('${list.eduAplctOrd}');">선택</button></td>
</tr>
</c:forEach>
<c:if test="${fn:length(list) eq 0}">
<tr>
<td colspan="3"><spring:message code="common.nodata.msg" /></td>
</tr>
</c:if>
</tbody>
</table>
</div>
<!-- <div class="page"> -->
<%-- <ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" /> --%>
<!-- </div> -->
</div>
</div>
</div>

View File

@ -19,7 +19,72 @@
<url-pattern>*.do</url-pattern>
</filter-mapping>
<!-- CORS -->
<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
</init-param>
<init-param>
<param-name>cors.support.credentials</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>cors.preflight.maxage</param-name>
<param-value>10</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT,DELETE</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
</init-param>
<init-param>
<!-- 쿠키 통신을 안하는데 이걸 true로 하면 4XX 서버 에러가 뜬다 -->
<param-name>cors.support.credentials</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>cors.preflight.maxage</param-name>
<param-value>10</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 템플릿 소스에서는 아래의 필터사용 대신 JSP 출력시 <c:out> 태그를 사용하는 것을 기본정책으로 한다 -->
<!-- egovframework.rte.ptl.mvc.filter.HTMLTagFilter kcc.com.cmm.filter.HTMLTagFilter-->

View File

@ -269,7 +269,8 @@ function delAtchFile(itemId , fileSn){
$.ajax({
type: "POST",
url: "/offeduadvc/uss/ion/fms/fmsfileDeleteAjax.do",
/*url: "/offeduadvc/uss/ion/fms/fmsfileDeleteAjax.do",*/
url: "/offeduadvc/web/fms/fmsfileDeleteAjax.do",
data:{ "atchFileId" : itemId , "fileSn" : fileSn},
dataType:'json',
cache: false,

Some files were not shown because too many files have changed in this diff Show More