이지우 - 저작권 체험교실 상태 값 추가 및 운영 계획서 등록 과정 변경으로 인하여 로직 변경, 대시보드 수정

This commit is contained in:
jiwoo 2023-12-06 10:58:20 +09:00
parent b14c8049df
commit 01ad6c5561
33 changed files with 2997 additions and 2119 deletions

View File

@ -1,13 +1,11 @@
package kcc.ve.aplct.cpyrgExprnClsrm.exprnClsrmAplct.service.impl;
import java.time.LocalDateTime;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.BeanUtils;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
@ -18,18 +16,17 @@ import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.FileVO;
import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.kccadr.cmm.RestResponse;
import kcc.kccadr.cmm.innorix.service.AdrInnorixFileVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.let.utl.fcc.service.EgovStringUtil;
import kcc.ve.aplct.cpyrgExprnClsrm.exprnClsrmAplct.service.ExprnClsrmAplctService;
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.VEEduChasiVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduOprtnService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduOprtnVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.impl.VEEduChasiDAO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService;
@ -91,6 +88,9 @@ public class ExprnClsrmAplctServiceImpl implements ExprnClsrmAplctService {
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
//차시
@Resource(name = "vEEduChasiDAO")
private VEEduChasiDAO vVEEduChasiDAO;
@ -203,6 +203,38 @@ public class ExprnClsrmAplctServiceImpl implements ExprnClsrmAplctService {
// 저작권 등록
veEduOprtnService.update(oprtn);
//저작권 체험교실 서류제출 차시별 운영계획서 제출
if("30".equals(vEEduAplctVO.getLctrDivCd()) && "50".equals(vEEduAplctVO.getAprvlCd())) {
//차시 저장
String[] s_eduHopeDt = request.getParameterValues("eduHopeDt");
String[] s_strtTm = request.getParameterValues("strtTm");
String[] s_endTm = request.getParameterValues("endTm");
String[] s_lrnTm = request.getParameterValues("lrnTm");
String[] s_lrnSbjct = request.getParameterValues("lrnSbjct");
String[] s_lrnCn = request.getParameterValues("lrnCn");
String[] s_rmrks = request.getParameterValues("rmrks");
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd()); //교육신청순번
vEEduChasiVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
for (int i=0;i<s_eduHopeDt.length;i++) {
String eduChasiOrd = eduChasiGnrService.getNextStringId(); // 교육차시 순번
vEEduChasiVO.setEduChasiOrd(eduChasiOrd);
//vEEduChasiVO.setEduHopeDt(s_eduHopeDt[i].replaceAll("[^0-9]",""));
vEEduChasiVO.setEduHopeDt(s_eduHopeDt[i]);
vEEduChasiVO.setStrtTm(s_strtTm[i].replaceAll("[^0-9]",""));
vEEduChasiVO.setEndTm(s_endTm[i].replaceAll("[^0-9]",""));
vEEduChasiVO.setLrnTm(s_lrnTm[i]);
vEEduChasiVO.setLrnSbjct(s_lrnSbjct[i]);
vEEduChasiVO.setLrnCn(s_lrnCn[i]);
vEEduChasiVO.setRmrks(s_rmrks[i]);
vVEEduChasiDAO.insert(vEEduChasiVO);
}
}
return true;
}

View File

@ -36,6 +36,7 @@ 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.VEEduChasiVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
@ -157,7 +158,8 @@ public class ExprnClsrmAplctController {
PaginationInfo paginationInfo = this.setPagingStep1(vEEduAplctVO);
//2. pageing step2
vEEduAplctVO = this.setPagingStep2(vEEduAplctVO, paginationInfo);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
//List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectExprnPagingList(vEEduAplctVO);
vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEEduAplctVOList, paginationInfo);
@ -548,9 +550,13 @@ public class ExprnClsrmAplctController {
if(vEPrcsDetailVO != null) {
model.addAttribute("endPnttm", vEPrcsDetailVO.getEndPnttm());
}
if("1".equals(Type)) { //type1 - 신청정보
if("10".equals(Type) || "20".equals(Type)) { //type1 - 운영신청
//등록일이 과정신청기간에 포함 되는지 확인 - 신청기간에 포함되며 신청 단계의 경우 수정 기능 추가
int cnt = vEEduAplctService.selectCntAplctPrd(vEEduAplctVO);
model.addAttribute("cnt", cnt);
return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnAplctDashboard";
}else if("2".equals(Type)) { //type2 - 서류제출
}else if("40".equals(Type)) { //type4 - 결과보고
//거래선 파일 정보 가져오기
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(vEEduAplctVO.getTransAtchFileId());
@ -569,10 +575,111 @@ public class ExprnClsrmAplctController {
result = fileService.selectFileInfs(fileVO);
model.addAttribute("planFileList", result);
model.addAttribute("planFileListCnt", result.size());
//운영계획 차시 리스트
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
vEEduChasiVO.setInstrDiv("30");
vEEduChasiVO.setPageIndex(0);
List<VEEduChasiVO> vEEduChasiVOList = vEEduMIXService.selectChasiList(vEEduChasiVO);
//복호화
if(vEEduChasiVOList != null) {
vEEduChasiVOList = egovCryptoUtil.decryptVEEduChasiVOList(vEEduChasiVOList);
}
model.addAttribute("chasiList", vEEduChasiVOList);
return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnDocumentDashboard";
}else if("3".equals(Type)) { //type3 - 운영계획
}else if("50".equals(Type) || "60".equals(Type)){ //type5 - 최종결과
FileVO fileVO = new FileVO();
if(vEEduAplctVO.getOrgnlRsltAtchFileId() != null){
fileVO.setAtchFileId(vEEduAplctVO.getOrgnlRsltAtchFileId());
fileVO.setFileSn("0");
vEEduAplctVO.setOrgnlRsltAtchFileDetail(fileService.selectFileInf(fileVO));
}
if(vEEduAplctVO.getCpyRsltAtchFileId() != null){
fileVO.setAtchFileId(vEEduAplctVO.getCpyRsltAtchFileId());
fileVO.setFileSn("0");
vEEduAplctVO.setCpyRsltAtchFileDetail(fileService.selectFileInf(fileVO));
}
if(vEEduAplctVO.getEvdncPhtAtchFileId() != null){
fileVO.setAtchFileId(vEEduAplctVO.getEvdncPhtAtchFileId());
fileVO.setFileSn("0");
vEEduAplctVO.setEvdncPhtAtchFileDetail(fileService.selectFileInf(fileVO));
}
if(vEEduAplctVO.getRmtTrnAtchFileId() != null){
fileVO.setAtchFileId(vEEduAplctVO.getRmtTrnAtchFileId());
fileVO.setFileSn("0");
vEEduAplctVO.setRmtTrnAtchFileDetail(fileService.selectFileInf(fileVO));
}
return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnRprtDashboard";
}else {
FileVO fileVO = new FileVO();
if(vEEduAplctVO.getOrgnlRsltAtchFileId() != null){
fileVO.setAtchFileId(vEEduAplctVO.getOrgnlRsltAtchFileId());
fileVO.setFileSn("0");
vEEduAplctVO.setOrgnlRsltAtchFileDetail(fileService.selectFileInf(fileVO));
}
if(vEEduAplctVO.getCpyRsltAtchFileId() != null){
fileVO.setAtchFileId(vEEduAplctVO.getCpyRsltAtchFileId());
fileVO.setFileSn("0");
vEEduAplctVO.setCpyRsltAtchFileDetail(fileService.selectFileInf(fileVO));
}
if(vEEduAplctVO.getEvdncPhtAtchFileId() != null){
fileVO.setAtchFileId(vEEduAplctVO.getEvdncPhtAtchFileId());
fileVO.setFileSn("0");
vEEduAplctVO.setEvdncPhtAtchFileDetail(fileService.selectFileInf(fileVO));
}
if(vEEduAplctVO.getRmtTrnAtchFileId() != null){
fileVO.setAtchFileId(vEEduAplctVO.getRmtTrnAtchFileId());
fileVO.setFileSn("0");
vEEduAplctVO.setRmtTrnAtchFileDetail(fileService.selectFileInf(fileVO));
}
//운영계획 차시 리스트
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
vEEduChasiVO.setInstrDiv("30");
vEEduChasiVO.setPageIndex(0);
List<VEEduChasiVO> vEEduChasiVOList = vEEduMIXService.selectChasiList(vEEduChasiVO);
//복호화
if(vEEduChasiVOList != null) {
vEEduChasiVOList = egovCryptoUtil.decryptVEEduChasiVOList(vEEduChasiVOList);
}
model.addAttribute("chasiList", vEEduChasiVOList);
return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnRsltDashboard";
}
/* if("10".equals(Type)) { //type1 - 운영신청
return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnAplctDashboard";
}else if("20".equals(Type)) { //type2 - 운영확정
return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnDocumentDashboard";
}else if("30".equals(Type)) { //type3 - 서류제출
//거래선 파일 정보 가져오기
FileVO fileVO = new FileVO();
fileVO.setAtchFileId(vEEduAplctVO.getTransAtchFileId());
List<FileVO> result = fileService.selectFileInfs(fileVO);
model.addAttribute("transFileList", result);
model.addAttribute("transFileListCnt", result.size());
//서약서 파일 정보 가져오기
fileVO.setAtchFileId(vEEduAplctVO.getOathAtchFileId());
result = fileService.selectFileInfs(fileVO);
model.addAttribute("oathFileList", result);
model.addAttribute("oathFileListCnt", result.size());
//계획서 파일 정보 가져오기
fileVO.setAtchFileId(vEEduAplctVO.getPlanAtchFileId());
result = fileService.selectFileInfs(fileVO);
model.addAttribute("planFileList", result);
model.addAttribute("planFileListCnt", result.size());
return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnPlanDashboard";
}else if("4".equals(Type)) { //type4 - 결과보고
}else if("40".equals(Type)) { //type4 - 결과보고
FileVO fileVO = new FileVO();
if(vEEduAplctVO.getOrgnlRsltAtchFileId() != null){
fileVO.setAtchFileId(vEEduAplctVO.getOrgnlRsltAtchFileId());
@ -620,7 +727,7 @@ public class ExprnClsrmAplctController {
}
return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnRsltDashboard";
}
}
*/ }
//체험교실 운영신청 초기화 첨부파일 삭제
@RequestMapping(value = "/fmsfileMultipleDeleteAjax.do", method = RequestMethod.POST)

View File

@ -25,6 +25,7 @@ import kcc.com.cmm.LoginVO;
import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.EgovFileMngUtil;
import kcc.com.cmm.service.FileVO;
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;
@ -35,10 +36,12 @@ import kcc.let.uss.olp.qrm.service.QustnrRespondManageVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.aplct.cpyrgExprnClsrm.exprnClsrmAplct.service.ExprnClsrmAplctService;
import kcc.ve.cmm.VeConstants;
import kcc.ve.cmm.VeSendMail;
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.VEEduChasiVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
@ -169,13 +172,15 @@ public class ExprnClsrmEndController {
// 저작권
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_30);
vEEduAplctVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
//체험교실은 상태 종류 추가로 인하여 코드 20 이상일 운영
vEEduAplctVO.setSearchQuery("AND A.APRVL_CD >= 20");
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEEduAplctVO);
//2. pageing step2
vEEduAplctVO = this.setPagingStep2(vEEduAplctVO, paginationInfo);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
//List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectExprnEndPagingList(vEEduAplctVO);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectExprnPagingList(vEEduAplctVO);
vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEEduAplctVOList, paginationInfo);
@ -223,6 +228,26 @@ public class ExprnClsrmEndController {
if(vEPrcsDetailVO != null) {
model.addAttribute("endPnttm", vEPrcsDetailVO.getEndPnttm());
}
//운영계획 차시 리스트
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
vEEduChasiVO.setInstrDiv("30");
vEEduChasiVO.setPageIndex(0);
List<VEEduChasiVO> vEEduChasiVOList = vEEduMIXService.selectChasiList(vEEduChasiVO);
//복호화
if(vEEduChasiVOList != null) {
vEEduChasiVOList = egovCryptoUtil.decryptVEEduChasiVOList(vEEduChasiVOList);
}
model.addAttribute("chasiList", vEEduChasiVOList);
//결과보고 파일 존재 유무 체크(4개 모두)
String rsltAllYn = "Y";
if (StringUtil.isEmpty(vEEduAplctVO.getOrgnlRsltAtchFileId()) || StringUtil.isEmpty(vEEduAplctVO.getEvdncPhtAtchFileId()) || StringUtil.isEmpty(vEEduAplctVO.getCpyRsltAtchFileId()) || StringUtil.isEmpty(vEEduAplctVO.getRmtTrnAtchFileId())) {
rsltAllYn = "N";
}
model.addAttribute("rsltAllYn", rsltAllYn);
return "/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndDetail";
}
@ -551,6 +576,20 @@ public class ExprnClsrmEndController {
return modelAndView;
}
@RequestMapping(value="/eduAplctStatusAjax.do")
public ModelAndView eduAplctStatusAjax(HttpServletRequest request , ModelMap model , VEEduAplctVO vEEduAplctVO) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//권한에 따른 로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO();
vEEduAplctVO.setLastUpdusrId(loginVO.getUniqId());
int rs = vEEduAplctService.statusUpdate(vEEduAplctVO);
modelAndView.addObject("rsCnt", rs);
modelAndView.addObject("result", "success");
return modelAndView;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//

View File

@ -105,4 +105,18 @@ public class VeConstants {
public static final String CLASS_TM_90 = "90";//, // 교육시간
public static final String ADULT_TM_60 = "60";//, // 성인 시간
public static final String EXPRN_APRVL_CD_10 = "10"; // 운영신청
public static final String EXPRN_APRVL_CD_11 = "11"; // 수정요청
public static final String EXPRN_APRVL_CD_12 = "12"; // 운영 미확정
public static final String EXPRN_APRVL_CD_13 = "13"; // 수정완료
public static final String EXPRN_APRVL_CD_20 = "20"; // 운영확정
public static final String EXPRN_APRVL_CD_30 = "30"; // 서류제출 요청
public static final String EXPRN_APRVL_CD_40 = "40"; // 서류제출
public static final String EXPRN_APRVL_CD_50 = "50"; // 운영 진행중
public static final String EXPRN_APRVL_CD_60 = "60"; // 결과보고 완료
public static final String EXPRN_APRVL_CD_70 = "70"; // 검토중
public static final String EXPRN_APRVL_CD_80 = "80"; // 운영종료
}

View File

@ -80,4 +80,7 @@ public interface VEEduMIXService {
//저작권 체험교실 이력 과정 목록
List<VEEduAplctVO> selectExprnHstryPagingList(VEEduAplctVO paramVO) throws Exception;
//Page List - 체험교실 운영목록(상태 20이상)
List<VEEduAplctVO> selectExprnEndPagingList(VEEduAplctVO paramVO) throws Exception;
}

View File

@ -93,7 +93,7 @@ public class VEEduAplctServiceImpl implements VEEduAplctService {
decryptVEEduAplctVO(vo);
//교육확정 관리번호 추가
if("60".equals(vEEduAplctVO.getAprvlCd())) {
if( ("60".equals(vEEduAplctVO.getAprvlCd()) && !"30".equals(vo.getLctrDivCd())) || ("20".equals(vEEduAplctVO.getAprvlCd()) && "30".equals(vo.getLctrDivCd())) ) {
String mngNmbrDigits = "00000"; //관리번호 5자릿수로 만들기 변수
String mngNmbr = "";
String mngNmbrType = "";

View File

@ -203,5 +203,9 @@ public class VEEduMIXDAO extends EgovAbstractDAO {
List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectExprnHstryPagingList", paramVO);
return tlist;
}
public List<VEEduAplctVO> selectExprnEndPagingList(VEEduAplctVO paramVO) throws Exception {
@SuppressWarnings("unchecked")
List<VEEduAplctVO> tlist = (List<VEEduAplctVO>) list("VEEduMIXDAO.selectExprnEndPagingList", paramVO);
return tlist;
}
}

View File

@ -181,4 +181,10 @@ public class VEEduMIXServiceImpl implements VEEduMIXService {
public List<VEEduAplctVO> selectExprnHstryPagingList(VEEduAplctVO paramVO) throws Exception{
return vEEduMIXDAO.selectExprnHstryPagingList(paramVO);
}
//paging List
public List<VEEduAplctVO> selectExprnEndPagingList(VEEduAplctVO paramVO) throws Exception{
return vEEduMIXDAO.selectExprnEndPagingList(paramVO);
}
}

View File

@ -32,6 +32,7 @@ import kcc.ve.cmm.VeConstants;
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.VEEduChasiVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduOprtnService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduOprtnVO;
@ -143,7 +144,8 @@ public class OprtnStateMngController {
//로그인 처리====================================
vEEduAplctVO.setLctrDivCd("30"); // 저작권체험교실
vEEduAplctVO.setAprvlCd("60"); // 승인상태(VE0003) 교육확정코드(60)
//체험교실은 상태 종류 추가로 인하여 코드 20 이상일 운영
vEEduAplctVO.setSearchQuery("AND A.APRVL_CD >= 20");
if("2".equals(vEEduAplctVO.getSearchCondition())) { // 담당자 검색
vEEduAplctVO.setSearchKeyword(egovCryptoUtil.encrypt(vEEduAplctVO.getSearchKeyword()));
@ -154,8 +156,7 @@ public class OprtnStateMngController {
//2. pageing step2
vEEduAplctVO = this.setPagingStep2(vEEduAplctVO, paginationInfo);
vEEduAplctVO.setOrderByQuery("H.LAST_UPDT_PNTTM DESC, A.LAST_UPDT_PNTTM DESC , E.LAST_UPDT_PNTTM DESC");
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectExprnPagingList(vEEduAplctVO);
//List복호화
vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList);
@ -243,6 +244,19 @@ public class OprtnStateMngController {
VEInstrDetailVO lastVEInstrDetailVO = vEInstrDetailService.selectLastYearDetail(vEEduAplctVO);
model.addAttribute("lastVEInstrDetailVO",lastVEInstrDetailVO);
//차시별 운영계획 조회
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
vEEduChasiVO.setInstrDiv("30");
vEEduChasiVO.setPageIndex(0);
List<VEEduChasiVO> vEEduChasiVOList = vEEduMIXService.selectChasiList(vEEduChasiVO);
//복호화
if(vEEduChasiVOList != null) {
vEEduChasiVOList = egovCryptoUtil.decryptVEEduChasiVOList(vEEduChasiVOList);
}
model.addAttribute("chasiList", vEEduChasiVOList);
return "oprtn/cpyrgExprnClsrm/oprtnStateMngDetail";
}

View File

@ -1360,7 +1360,7 @@
VE_EDU_APLCT a
WHERE USER_ID = #userId#
AND LCTR_DIV_CD = '30'
AND APRVL_CD = '60'
<!-- AND APRVL_CD >= '20' -->
</select>
<insert id="VEEduAplctDAO.insertDocReq" parameterClass="VEEduAplctVO">

View File

@ -66,29 +66,71 @@
<update id="VEEduOprtnDAO.update" parameterClass="VEEduOprtnVO" >
UPDATE VE_EDU_OPRTN SET
CHRG_MJR = #chrgMjr#
,D_BIRTH = #dBirth#
,CHRG_SEX_CD = #chrgSexCd#
,CMPLT_YEAR = #cmpltYear#
,CMPLT_NUM = #cmpltNum#
,EXPRN_CLSRN_CD = #exprnClsrnCd#
,EXPRN_CLSRN_YEAR = #exprnClsrnYear#
,EXPRN_CLSRN_APLCT = #exprnClsrnAplct#
,EXPRN_CLSRN_APLCT_CN = #exprnClsrnAplctCn#
,TRGT_GRADE = #trgtGrade#
,TRGT_CLSRM = #trgtClsrm#
,TRGT_PRSNL = #trgtPrsnl#
,RPRT_SBMT = #rprtSbmt#
,OPRTN_STRT_DT = #oprtnStrtDt#
,OPRTN_END_DT = #oprtnEndDt#
,OPRTN_FILE_ID = #oprtnFileId#
,LAST_UPDT_PNTTM = SYSDATE
LAST_UPDT_PNTTM = SYSDATE
,LAST_UPDUSR_ID = #lastUpdusrId#
,ISLANDS_YN = #islandsYn#
,REMOTE_YN = #remoteYn#
,CLS_CMBT_YN = #clsCmbtYn#
,PPUL_DCLN_YN = #ppulDclnYn#
,NEED_TXTB_NUM = #needTxtbNum#
<isNotEmpty property="chrgMjr">
,CHRG_MJR = #chrgMjr#
</isNotEmpty>
<isNotEmpty property="dBirth">
,D_BIRTH = #dBirth#
</isNotEmpty>
<isNotEmpty property="chrgSexCd">
,CHRG_SEX_CD = #chrgSexCd#
</isNotEmpty>
<isNotEmpty property="cmpltYear">
,CMPLT_YEAR = #cmpltYear#
</isNotEmpty>
<isNotEmpty property="cmpltNum">
,CMPLT_NUM = #cmpltNum#
</isNotEmpty>
<isNotEmpty property="exprnClsrnCd">
,EXPRN_CLSRN_CD = #exprnClsrnCd#
</isNotEmpty>
<isNotEmpty property="exprnClsrnYear">
,EXPRN_CLSRN_YEAR = #exprnClsrnYear#
</isNotEmpty>
<isNotEmpty property="exprnClsrnAplct">
,EXPRN_CLSRN_APLCT = #exprnClsrnAplct#
</isNotEmpty>
<isNotEmpty property="exprnClsrnAplctCn">
,EXPRN_CLSRN_APLCT_CN = #exprnClsrnAplctCn#
</isNotEmpty>
<isNotEmpty property="trgtGrade">
,TRGT_GRADE = #trgtGrade#
</isNotEmpty>
<isNotEmpty property="trgtClsrm">
,TRGT_CLSRM = #trgtClsrm#
</isNotEmpty>
<isNotEmpty property="trgtPrsnl">
,TRGT_PRSNL = #trgtPrsnl#
</isNotEmpty>
<isNotEmpty property="rprtSbmt">
,RPRT_SBMT = #rprtSbmt#
</isNotEmpty>
<isNotEmpty property="oprtnStrtDt">
,OPRTN_STRT_DT = #oprtnStrtDt#
</isNotEmpty>
<isNotEmpty property="oprtnEndDt">
,OPRTN_END_DT = #oprtnEndDt#
</isNotEmpty>
<isNotEmpty property="oprtnFileId">
,OPRTN_FILE_ID = #oprtnFileId#
</isNotEmpty>
<isNotEmpty property="islandsYn">
,ISLANDS_YN = #islandsYn#
</isNotEmpty>
<isNotEmpty property="remoteYn">
,REMOTE_YN = #remoteYn#
</isNotEmpty>
<isNotEmpty property="clsCmbtYn">
,CLS_CMBT_YN = #clsCmbtYn#
</isNotEmpty>
<isNotEmpty property="ppulDclnYn">
,PPUL_DCLN_YN = #ppulDclnYn#
</isNotEmpty>
<isNotEmpty property="needTxtbNum">
,NEED_TXTB_NUM = #needTxtbNum#
</isNotEmpty>
WHERE 1=1
AND EDU_APLCT_ORD = #eduAplctOrd#
</update>

View File

@ -5216,33 +5216,18 @@ VALUES
A.schol_instt_nm AS scholInsttNm,
A.chrg_nm AS chrgNm,
TO_CHAR(A.sbmt_pnttm, 'YYYY.MM.DD') AS sbmtPnttm,
TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYY.MM.DD') AS frstRegistPnttm,
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)
WHERE A.edu_aplct_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 (
@ -5268,12 +5253,28 @@ VALUES
)D
ON a.USER_ID = D.USER_ID
WHERE 1=1
AND A.SBMT_YN = 'Y'
<isNotEmpty property="lctrDivCd" prepend="AND">
A.lctr_div_cd = #lctrDivCd#
</isNotEmpty>
<isNotEmpty property="userId" prepend="AND">
A.user_id = #userId#
</isNotEmpty>
<isNotEmpty property="searchYear">
AND TO_CHAR(A.SBMT_PNTTM,'YYYY') = #searchYear#
</isNotEmpty>
<isNotEmpty property="searchStatus2">
AND A.APRVL_CD = #searchStatus2#
</isNotEmpty>
<isNotEmpty property="searchQuery">
$searchQuery$
</isNotEmpty>
<isNotEmpty property="searchStartSbmtPnttm">
AND TO_CHAR(A.SBMT_PNTTM,'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStartSbmtPnttm#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchEndSbmtPnttm">
AND TO_CHAR(A.SBMT_PNTTM,'YYYYMMDD') <![CDATA[ <= ]]> REPLACE(#searchEndSbmtPnttm#, '.' , '')
</isNotEmpty>
<isNotEmpty property="eduSlctAreaCd">
AND A.EDU_SLCT_AREA_CD = #eduSlctAreaCd#
</isNotEmpty>
@ -5760,10 +5761,810 @@ VALUES
AND a.user_id=b.user_id
AND a.lctr_div_cd=b.lctr_div_cd
AND a.edu_aplct_ord!=b.edu_aplct_ord
AND b.sbmt_yn = 'Y'
ORDER BY 1
<isNotEmpty property="orderByQuery">
, $orderByQuery$
</isNotEmpty>
</select>
<select id="VEEduMIXDAO.selectExprnEndPagingList" parameterClass="VEEduAplctVO" resultClass="VEEduAplctVO">
/* 임시.*NOT_SQL_LOG.* VEEduMIXDAO.selectPagingList */
SELECT
COUNT(1) OVER() AS totCnt
, ROWNUM AS rowNo
, A.EDU_CN AS eduCn
<isNotEmpty property="s4Excel">
, A.EDU_SLCT_CD AS eduSlctCd
, (SELECT a0.code_nm
FROM LETTCCMMNDETAILCODE a0
WHERE a0.code_id='VE0008'
AND a0.code =a.edu_slct_area_cd
)
AS eduSlctAreaCd
, (SELECT a0.code_nm
FROM LETTCCMMNDETAILCODE a0
WHERE a0.code_id='VE0009'
AND a0.code =a.schol_div_cd
)
AS scholDivCd
, (SELECT a0.code_nm
FROM LETTCCMMNDETAILCODE a0
WHERE a0.code_id='VE0003'
AND a0.code =a.aprvl_cd
)
AS aprvlCd
/*
, IF(A.APRVL_CD = '60', TO_CHAR(A.APRVL_PNTTM, 'YYYY.MM.DD'), '-') AS aprvlPnttm
*/
, CASE WHEN A.APRVL_CD = '60' THEN TO_CHAR(A.APRVL_PNTTM, 'YYYY.MM.DD') ELSE '-' END AS aprvlPnttm
, A.frst_Regist_Pnttm AS frstRegistPnttm
</isNotEmpty>
<isEmpty property="s4Excel">
, A.EDU_SLCT_CD AS eduSlctCd
, A.EDU_SLCT_AREA_CD AS eduSlctAreaCd
, A.SCHOL_DIV_CD AS scholDivCd
, A.APRVL_CD AS aprvlCd
, TO_CHAR(A.APRVL_PNTTM, 'YYYY.MM.DD') AS aprvlPnttm
</isEmpty>
, A.EDU_PLACE AS eduPlace
, A.SBMT_YN AS sbmtYn
, TO_CHAR(A.SBMT_PNTTM, 'YYYY.MM.DD') AS sbmtPnttm
, A.SCHOL_INSTT_NM AS scholInsttNm
, A.INSTT_NM AS InsttNm
, A.EDU_APLCT_ORD AS eduAplctOrd
, A.EDU_TRGT AS eduTrgt
, A.EDU_PRSNL AS eduPrsnl
, A.CHRG_NM AS chrgNm
, A.JOB_NM AS jobNm
, A.USE_YN AS useYn
, A.MDFY_RQST_YN AS mdfyRqstYn
, A.EQPMN_CN AS eqpmnCn
, A.BLNG AS blng
, A.DPRTM AS dprtm
, A.FULL_NAME AS fullName
, A.PSTN AS pstn
, A.PRPS AS prps
, A.RPRT_SBMT_DT AS rprtSbmtDt
, A.hope_sbjct AS hopeSbjct
, A.isltn_schol_yn AS isltnScholYn
, A.clphone AS clphone
, A.phone AS phone
, A.Email AS email
, A.Addr AS addr
, A.IS_WAIT AS isWait
, A.CORPS_EDU AS corpsEdu
, A.BROADROOM_EDU AS broadroomEdu
, A.ADMIN_UPDT_YN AS adminUpdtYn
, A.OATH_ATCH_FILE_ID AS oathAtchFileId
, A.PLAN_ATCH_FILE_ID AS planAtchFileId
,(
SELECT
MAX(S2.PRCS_NM)||
CASE WHEN COUNT(*) > 1 THEN '외' || (COUNT(*)-1)
ELSE '' END AS PRCS_NM
FROM VE_EDU_APLCT_ONLN S1 INNER JOIN VE_PRCS S2
ON S1.PRCS_ORD = S2.PRCS_ORD
WHERE 1=1
AND S1.EDU_APLCT_ORD = A.EDU_APLCT_ORD
GROUP BY S1.EDU_APLCT_ORD
/*
ORDER BY S1.PRCS_ORD
*/
) AS prcsGroupNm
, A.INSTT_DIV_CD AS insttDivCd
, A.FRST_REGISTER_ID AS frstRegisterId
, TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYY.MM.DD') AS frstRegistPnttm
, A0.CNT-1 AS cnt
, A0.PRCS_ORD AS prcsOrd
, A0.PRCS_NM AS prcsNm
, CC.EDU_HOPE_DT AS eduHopeDt
, CC.EDU_CHASI_ORD AS eduChasiOrd
, CC.lrn_tm AS lrnTm
, CC.strt_tm AS strtTm
, CC.end_tm AS endTm
, D.USER_NM AS userNm
, E.CHRG_MJR AS chrgMjr
, E.D_BIRTH AS dBirth
, E.CHRG_SEX_CD AS chrgSexCd
, E.CMPLT_YEAR AS cmpltYear
, E.CMPLT_NUM AS cmpltNum
, E.EXPRN_CLSRN_CD AS exprnClsrnCd
, E.EXPRN_CLSRN_YEAR AS exprnClsrnYear
, E.EXPRN_CLSRN_APLCT AS exprnClsrnAplct
, E.EXPRN_CLSRN_APLCT_CN AS exprnClsrnAplctCn
, E.TRGT_GRADE AS trgtGrade
, E.TRGT_CLSRM AS trgtClsrm
, E.TRGT_PRSNL AS trgtPrsnl
, E.RPRT_SBMT AS rprtSbmt
, E.OPRTN_STRT_DT AS oprtnStrtDt
, E.OPRTN_END_DT AS oprtnEndDt
, E.OPRTN_FILE_ID AS oprtnFileId
, H.APRVL_CD AS rprtAprvlCd
, (
SELECT
S3.end_pnttm
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)
FROM ve_edu_chasi_instr_asgnm X
, ve_edu_chasi y
WHERE A.edu_aplct_ord = X.edu_aplct_ord
AND X.asgnm_aprvl_cd = '30'
AND x.EDU_APLCT_ORD=y.EDU_APLCT_ORD
AND x.EDU_CHASI_ORD=y.EDU_CHASI_ORD
) AS instrCnfrmCnt
,(
SELECT
/*
COUNT(1)
*/
sum(NVL(chasi,1))
FROM ve_edu_chasi Z
WHERE Z.edu_aplct_ord = A.edu_aplct_ord
) AS chasiCnt
, (
SELECT COUNT(1)
FROM ve_new_noti e
WHERE ((A.edu_aplct_ord = e.tbl_uniq_ord OR CC.edu_aplct_ord = e.tbl_uniq_ord) OR CC.edu_chasi_ord = e.tbl_uniq_ord)
AND e.menu_no = #menuNo#
AND e.frst_register_id = #notiUserId#
)
AS notiCnt,
( SELECT
COUNT(1)
FROM ve_acmdt_aplct ZZ
, VE_EDU_CHASI YY
WHERE A.EDU_APLCT_ORD = ZZ.EDU_APLCT_ORD
AND ZZ.EDU_APLCT_ORD = YY.EDU_APLCT_ORD
AND ZZ.EDU_CHASI_ORD = YY.EDU_CHASI_ORD
AND ZZ.sbmt_yn = 'Y'
AND ZZ.APRVL_CD = '10'
) AS acmdtCnt,
( SELECT COUNT(1)
FROM VE_ACMDT_APLCT ZZ
, VE_EDU_CHASI YY
WHERE A.EDU_APLCT_ORD = ZZ.EDU_APLCT_ORD
AND ZZ.EDU_APLCT_ORD = YY.EDU_APLCT_ORD
AND ZZ.EDU_CHASI_ORD = YY.EDU_CHASI_ORD
AND ZZ.SBMT_YN = 'Y'
) AS acmdtAllCnt
,(
SELECT COUNT(*)
FROM ve_prcs_cmplt_detail a0
INNER JOIN ve_prcs b0
ON a0.prcs_ord = b0.prcs_ord
INNER JOIN ve_prcs_onln_cntnt c0
ON c0.prcs_onln_cntnt_ord = a0.prcs_onln_cntnt_ord
WHERE 1 =1
AND a0.edu_aplct_ord =A.EDU_APLCT_ORD
AND NVL(a0.sbmt_yn,'N')='Y'
) AS isEndCnt
,(
SELECT sum(a0.EDU_PRSNL)
FROM ve_prcs_cmplt_detail a0
INNER JOIN ve_prcs b0
ON a0.prcs_ord = b0.prcs_ord
INNER JOIN ve_prcs_onln_cntnt c0
ON c0.prcs_onln_cntnt_ord = a0.prcs_onln_cntnt_ord
WHERE 1 =1
AND a0.edu_aplct_ord =A.EDU_APLCT_ORD
AND NVL(a0.sbmt_yn,'N')='Y'
) AS endEduPrsnl
, g.edu_strt_dt AS eduStrtDt
, g.edu_end_dt AS eduEndDt
/*
, IF(A.APRVL_CD='20'
and
(
SELECT COUNT(*)
FROM ve_prcs_cmplt_detail a0
INNER JOIN ve_prcs b0
ON a0.prcs_ord = b0.prcs_ord
INNER JOIN ve_prcs_onln_cntnt c0
ON c0.prcs_onln_cntnt_ord = a0.prcs_onln_cntnt_ord
WHERE 1 =1
AND a0.edu_aplct_ord =A.EDU_APLCT_ORD
AND NVL(a0.sbmt_yn,'N')='Y'
)>0
, g.edu_reg_dt
, ''
) AS eduRegDt
*/
/*
, IF(A.APRVL_CD='20'
and
(
SELECT COUNT(*)
FROM ve_prcs_cmplt_detail a0
INNER JOIN ve_prcs b0
ON a0.prcs_ord = b0.prcs_ord
INNER JOIN ve_prcs_onln_cntnt c0
ON c0.prcs_onln_cntnt_ord = a0.prcs_onln_cntnt_ord
WHERE 1 =1
AND a0.edu_aplct_ord =A.EDU_APLCT_ORD
AND NVL(a0.sbmt_yn,'N')='Y'
)>0
and length(g.edu_strt_dt)=8
and length(g.edu_end_dt)=8
,
SUBSTRING(g.edu_strt_dt,1,4) || '.' || SUBSTRING(g.edu_strt_dt,5,2) || '.' || SUBSTRING(g.edu_strt_dt,7,2)
|| '~'
|| SUBSTRING(g.edu_end_dt,1,4) || '.' || SUBSTRING(g.edu_end_dt,5,2) || '.' || SUBSTRING(g.edu_end_dt,7,2)
, ''
) AS eduDt
*/
, i.instr_nm AS instrNm
, i.asgnm_aprvl_cd AS asgnmAprvlCd
, i.user_id AS userId
, j.acmdt_aplct_ord AS acmdtAplctOrd
, j.sbmt_yn AS acmdtSbmtYn
, j.aprvl_cd AS acmdtAprvlCd
FROM VE_EDU_APLCT A LEFT OUTER JOIN (
SELECT
AA.EDU_APLCT_ORD
, AA.CNT
, AA.PRCS_ORD
, BB.PRCS_NM
FROM (
SELECT
A.EDU_APLCT_ORD
, COUNT(*) CNT
, MIN(B.PRCS_ORD) PRCS_ORD
FROM VE_EDU_APLCT A , VE_EDU_APLCT_ONLN B
WHERE A.EDU_APLCT_ORD = B.EDU_APLCT_ORD
GROUP BY A.EDU_APLCT_ORD
)AA, VE_PRCS BB
WHERE AA.PRCS_ORD = BB.PRCS_ORD
)A0 ON(A.EDU_APLCT_ORD = A0.EDU_APLCT_ORD)
LEFT OUTER JOIN (
SELECT
EDU_APLCT_ORD
,EDU_CHASI_ORD
,SUM(lrn_tm) AS lrn_tm
,MIN(strt_tm) AS strt_tm
,MIN(end_tm) AS end_tm
,MIN(
REPLACE(
/*
IF(EDU_HOPE_DT IS NULL OR EDU_HOPE_DT = '', NULL, EDU_HOPE_DT)
*/
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
) CC ON A.EDU_APLCT_ORD = CC.EDU_APLCT_ORD
LEFT OUTER JOIN COMVNUSERMASTER D
ON A.USER_ID = D.USER_ID
LEFT OUTER JOIN VE_EDU_OPRTN E
ON A.EDU_APLCT_ORD = E.EDU_APLCT_ORD
<isEqual property="lctrDivCd" compareValue="20">
LEFT OUTER JOIN ve_edu_chasi_instr_asgnm DD
ON (
A.EDU_APLCT_ORD = DD.EDU_APLCT_ORD
AND CC.EDU_CHASI_ORD = DD.EDU_CHASI_ORD
)
LEFT OUTER JOIN ve_instr_detail F
ON (DD.USER_ID = F.USER_ID
AND F.USE_YN = 'Y'
<isNotEmpty property="instrDiv">
AND F.instr_div = #instrDiv#
</isNotEmpty>
AND F.INSTR_DIV = #instrDiv#)
</isEqual>
LEFT OUTER JOIN
(
/*
SELECT edu_aplct_ord, edu_strt_dt, edu_end_dt , DATE_FORMAT(sbmt_pnttm,'%Y%m%d') AS edu_reg_dt
FROM ve_prcs_cmplt_detail
GROUP BY edu_aplct_ord, edu_strt_dt, edu_end_dt , DATE_FORMAT(sbmt_pnttm,'%Y%m%d')
*/
SELECT edu_aplct_ord, edu_strt_dt, edu_end_dt , TO_CHAR(sbmt_pnttm,'YYYYMMDD') AS edu_reg_dt
FROM ve_prcs_cmplt_detail
GROUP BY edu_aplct_ord, edu_strt_dt, edu_end_dt , TO_CHAR(sbmt_pnttm,'YYYYMMDD')
) G
ON A.EDU_APLCT_ORD = G.EDU_APLCT_ORD
LEFT OUTER JOIN ve_edu_rslt_rprt H
ON A.EDU_APLCT_ORD = H.EDU_APLCT_ORD
/* 청소년 교육배치확정 목록에서 사용 */
LEFT OUTER JOIN (
SELECT a.edu_aplct_ord
, a.edu_chasi_ord
, b.instr_nm
, a.asgnm_aprvl_cd
, a.user_id
FROM ve_edu_chasi_instr_asgnm a
, ve_instr_detail b
WHERE a.user_id=b.user_id
AND b.use_yn='Y'
) I
ON (
CC.EDU_APLCT_ORD = I.EDU_APLCT_ORD
AND CC.EDU_CHASI_ORD = I.EDU_CHASI_ORD
)
LEFT OUTER JOIN (
SELECT bb.edu_aplct_ord
, bb.edu_chasi_ord
, bb.acmdt_aplct_ord
, bb.sbmt_yn
, bb.aprvl_cd
FROM (
SELECT a.edu_aplct_ord
, a.edu_chasi_ord
, max(acmdt_aplct_ord) AS acmdt_aplct_ord
FROM ve_acmdt_aplct a
WHERE a.use_yn='Y'
GROUP BY a.edu_aplct_ord
, a.edu_chasi_ord
)aa
, ve_acmdt_aplct bb
WHERE aa.edu_aplct_ord=bb.edu_aplct_ord
AND aa.edu_chasi_ord=bb.edu_chasi_ord
AND aa.acmdt_aplct_ord=bb.acmdt_aplct_ord
)J
ON (
CC.EDU_APLCT_ORD = J.EDU_APLCT_ORD
AND CC.EDU_CHASI_ORD = J.EDU_CHASI_ORD
)
WHERE 1=1
/*
AND IFNULL(A.USE_YN, 'Y') <![CDATA[ <> ]]> 'N'
*/
AND NVL(A.USE_YN, 'Y') <![CDATA[ <> ]]> 'N'
<isEmpty property="sbmtYn">
AND A.SBMT_YN = 'Y'
</isEmpty>
<isNotEmpty property="sbmtYn">
AND A.SBMT_YN != 'Y'
</isNotEmpty>
<isNotEmpty property="searchAcmdtCnt">
<isEqual property="searchAcmdtCnt" compareValue="20">
AND J.sbmt_yn='Y'
AND J.aprvl_cd is null
</isEqual>
<isEqual property="searchAcmdtCnt" compareValue="30">
AND NVL(J.sbmt_yn,'N')='N'
</isEqual>
<isEqual property="searchAcmdtCnt" compareValue="40">
AND J.sbmt_yn='Y'
AND J.aprvl_cd ='40'
</isEqual>
<isEqual property="searchAcmdtCnt" compareValue="50">
AND J.sbmt_yn='Y'
AND J.aprvl_cd ='50'
</isEqual>
/*
AND
(
SELECT
COUNT(1)
FROM
ve_acmdt_aplct ZZ
WHERE
A.edu_aplct_ord = ZZ.edu_aplct_ord
AND
ZZ.sbmt_yn = 'Y'
) > 0
*/
</isNotEmpty>
<isNotEmpty property="lctrDivCd">
AND A.LCTR_DIV_CD = #lctrDivCd#
</isNotEmpty>
<isNotEmpty property="aprvlCd">
AND A.APRVL_CD >= #aprvlCd#
</isNotEmpty>
<isNotEmpty property="searchAsgnmAprvlCd">
<isEqual property="searchAsgnmAprvlCd" compareValue="90">
AND I.asgnm_aprvl_cd is null
</isEqual>
<isNotEqual property="searchAsgnmAprvlCd" compareValue="90">
AND I.asgnm_aprvl_cd = #searchAsgnmAprvlCd#
</isNotEqual>
</isNotEmpty>
<isNotEmpty property="searchStartDt">
AND CC.EDU_HOPE_DT <![CDATA[ >= ]]> REPLACE(#searchStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchEndDt">
AND CC.EDU_HOPE_DT <![CDATA[ <= ]]> REPLACE(#searchEndDt#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchStartSbmtPnttm">
AND TO_CHAR(A.SBMT_PNTTM,'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStartSbmtPnttm#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchEndSbmtPnttm">
AND TO_CHAR(A.SBMT_PNTTM,'YYYYMMDD') <![CDATA[ <= ]]> REPLACE(#searchEndSbmtPnttm#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchStartRegistPnttm">
AND TO_CHAR(A.FRST_REGIST_PNTTM,'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStartRegistPnttm#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchEndRegistPnttm">
AND TO_CHAR(A.FRST_REGIST_PNTTM,'YYYYMMDD') <![CDATA[ <= ]]> REPLACE(#searchEndRegistPnttm#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchStratAprvlPnttm">
AND TO_CHAR(A.APRVL_PNTTM, 'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStratAprvlPnttm#, '.' , '')
</isNotEmpty>
<isNotEmpty property="searchEndAprvlPnttm">
AND TO_CHAR(A.APRVL_PNTTM, 'YYYYMMDD') <![CDATA[ <= ]]> REPLACE(#searchEndAprvlPnttm#, '.' , '')
</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>
<isNotEmpty property="searchScholDivCd">
AND A.SCHOL_DIV_CD = #searchScholDivCd#
</isNotEmpty>
<isEmpty property="searchStartDt">
<isEmpty property="searchEndDt">
AND 1=1
</isEmpty>
</isEmpty>
<isNotEmpty property="searchEduSlctAreaCd">
AND (
(
A.EDU_SLCT_AREA_CD = #searchEduSlctAreaCd#
AND
A.EDU_SLCT_CD = '20'
)
OR
(
'400' = #searchEduSlctAreaCd#
AND
A.EDU_SLCT_CD = '10'
)
)
</isNotEmpty>
<isNotEmpty property="searchEduSlctAreaCd2">
AND (
A.EDU_SLCT_AREA_CD = #searchEduSlctAreaCd2#
OR
'400' = #searchEduSlctAreaCd2#
)
</isNotEmpty>
<isNotEmpty property="searchEduSlctCd">
AND A.EDU_SLCT_CD = #searchEduSlctCd#
</isNotEmpty>
<isNotEmpty property="searchInsttDivCd">
AND A.INSTT_DIV_CD = #searchInsttDivCd#
</isNotEmpty>
<isNotEmpty property="userId">
AND A.USER_ID = #userId#
</isNotEmpty>
<isNotEmpty property="frstRegisterId">
AND A.FRST_REGISTER_ID = #frstRegisterId#
</isNotEmpty>
<isNotEmpty property="searchScholNm">
AND A.SCHOL_INSTT_NM LIKE '%' || #searchScholNm# || '%'
</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="0">
AND (A.SCHOL_INSTT_NM LIKE '%' || #searchKeyword# || '%' OR A.CHRG_NM LIKE '%' || #searchKeyword# || '%')
</isEqual>
<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="searchChrgNm">
AND A.CHRG_NM LIKE '%' || #searchChrgNm# , '%')
</isNotEmpty>
<isNotEmpty property="searchStatusArr">
<iterate open="(" close=")" conjunction="," property="searchStatusArr" prepend="AND A.APRVL_CD IN " > #searchStatusArr[]#</iterate>
</isNotEmpty>
<isNotEmpty property="searchNotStatusArr">
<iterate open="(" close=")" conjunction="," property="searchNotStatusArr" prepend="AND A.APRVL_CD NOT IN " > #searchNotStatusArr[]#</iterate>
</isNotEmpty>
<isNotEmpty property="searchScholDivCdArr">
<iterate open="(" close=")" conjunction="," property="searchScholDivCdArr" prepend="AND A.SCHOL_DIV_CD IN " > #searchScholDivCdArr[]#</iterate>
</isNotEmpty>
<isNotEmpty property="searchStatus">
<isEqual property="searchStatus" compareValue="99">
AND
(
SELECT
CNT
FROM
( SELECT COUNT(1) AS CNT
FROM VE_PRCS_CMPLT_DETAIL
WHERE edu_aplct_ord = A.edu_aplct_ord ) bb
WHERE bb.CNT <![CDATA[ > ]]> 0
) > 0
</isEqual>
<isNotEqual property="searchStatus" compareValue="99">
AND
(
SELECT
CNT
FROM
( SELECT COUNT(1) AS CNT
FROM VE_PRCS_CMPLT_DETAIL
WHERE edu_aplct_ord = A.edu_aplct_ord ) bb
WHERE bb.CNT = 0
) = 0
</isNotEqual>
</isNotEmpty>
<isNotEmpty property="searchStateYear">
AND TO_CHAR(A.FRST_REGIST_PNTTM, 'YYYY') = #searchStateYear#
</isNotEmpty>
<isNotEmpty property="searchStateStatusArr">
AND
(1=2
<iterate property="searchStateStatusArr" >
<isEqual property="searchStateStatusArr[]" compareValue="10">
<!-- OR (A.strt_oprtn_dt <![CDATA[ <= ]]> TO_CHAR(NOW(), 'YYYYMMDD') AND end_oprtn_dt <![CDATA[ >= ]]> TO_CHAR(NOW(), 'YYYYMMDD')) -->
OR (E.oprtn_strt_dt <![CDATA[ <= ]]> TO_CHAR(NOW(), 'YYYYMMDD') AND E.oprtn_end_dt <![CDATA[ >= ]]> TO_CHAR(NOW(), 'YYYYMMDD'))
</isEqual>
<isEqual property="searchStateStatusArr[]" compareValue="20">
<!-- OR
(
A.end_oprtn_dt <![CDATA[ < ]]> TO_CHAR(NOW(), 'YYYYMMDD')
AND
(
SELECT
CNT
FROM
( SELECT COUNT(1) AS CNT
FROM ve_edu_rslt_rprt
WHERE edu_aplct_ord = a.edu_aplct_ord ) AA
WHERE AA.CNT = 0
)
) -->
OR
(
E.oprtn_end_dt <![CDATA[ < ]]> TO_CHAR(NOW(), 'YYYYMMDD')
AND
( SELECT COUNT(1) AS CNT
FROM ve_edu_rslt_rprt
WHERE edu_aplct_ord = A.edu_aplct_ord )
= 0
)
</isEqual>
<isEqual property="searchStateStatusArr[]" compareValue="30">
<!-- OR
(
A.end_oprtn_dt <![CDATA[ < ]]> TO_CHAR(NOW(), 'YYYYMMDD')
AND
(
SELECT
CNT
FROM
( SELECT COUNT(1) AS CNT
FROM ve_edu_rslt_rprt
WHERE edu_aplct_ord = a.edu_aplct_ord ) AA
WHERE AA.CNT <![CDATA[ > ]]> 0
)
) -->
OR
(
E.oprtn_end_dt <![CDATA[ < ]]> TO_CHAR(NOW(), 'YYYYMMDD')
AND
( SELECT COUNT(1) AS CNT
FROM ve_edu_rslt_rprt
WHERE edu_aplct_ord = A.edu_aplct_ord )
> 0
)
</isEqual>
<isEqual property="searchStateStatusArr[]" compareValue="40">
/* 서류제출완료 */
OR(
1=1
)
</isEqual>
</iterate>
)
</isNotEmpty>
<isNotEmpty property="searchStateStatusArr">
<iterate property="searchStateStatusArr" >
<isEqual property="searchStateStatusArr[]" compareValue="40">
/* 서류제출완료 */
AND
(
a.oath_atch_file_id IS NOT NULL
OR a.trans_atch_file_id IS NOT null
)
</isEqual>
</iterate>
</isNotEmpty>
<isNotEmpty property="searchChsYn">
AND A.MDFY_RQST_YN = #searchChsYn#
</isNotEmpty>
<isNotEmpty property="selectPagingListQuery">
$selectPagingListQuery$
</isNotEmpty>
<isNotEmpty property="eduAplctOrd">
AND A.EDU_APLCT_ORD = #eduAplctOrd#
</isNotEmpty>
<isNotEmpty property="searchStatus2">
/* 교육콘텐츠 신청 > 수강신청 목록 셀렉트박스 검색자 */
<isEqual property="searchStatus2" compareValue="90">
AND A.APRVL_CD = '20'
AND
( SELECT COUNT(*)
FROM ve_prcs_cmplt_detail a0
INNER JOIN ve_prcs b0
ON a0.prcs_ord = b0.prcs_ord
INNER JOIN ve_prcs_onln_cntnt c0
ON c0.prcs_onln_cntnt_ord = a0.prcs_onln_cntnt_ord
WHERE 1 =1
AND a0.edu_aplct_ord =A.EDU_APLCT_ORD
AND NVL(a0.sbmt_yn,'N') ='Y'
) > 0
</isEqual>
<isNotEqual property="searchStatus2" compareValue="90">
AND A.APRVL_CD = #searchStatus2#
AND 0>=
( SELECT COUNT(*)
FROM ve_prcs_cmplt_detail a0
INNER JOIN ve_prcs b0
ON a0.prcs_ord = b0.prcs_ord
INNER JOIN ve_prcs_onln_cntnt c0
ON c0.prcs_onln_cntnt_ord = a0.prcs_onln_cntnt_ord
WHERE 1 =1
AND a0.edu_aplct_ord =A.EDU_APLCT_ORD
AND NVL(a0.sbmt_yn,'N') ='Y'
)
</isNotEqual>
</isNotEmpty>
<isNotEmpty property="searchYear">
/*저작권 체험교실 년도 검색*/
AND TO_CHAR(A.SBMT_PNTTM,'YYYY') = #searchYear#
</isNotEmpty>
<isNotEmpty property="eduSlctAreaCd">
/*저작권 체험교실 지역 검색*/
AND A.EDU_SLCT_AREA_CD = #eduSlctAreaCd#
</isNotEmpty>
<isNotEmpty property="searchCpyAprvlCd">
/*저작권 체험교실 상태 검색*/
AND A.APRVL_CD = #searchCpyAprvlCd#
</isNotEmpty>
<isNotEmpty property="searchFullName">
/*교육콘텐츠 신청자 검색*/
AND (
/*
A.FULL_NAME like '%' || searchFullName || '%'
OR A.BLNG like concat('%', searchFullName, '%')
*/
A.FULL_NAME like '%'||#searchFullName#||'%'
OR A.BLNG like '%'||#searchFullName#||'%'
)
</isNotEmpty>
<isEqual property="searchAdminUpdtYn" compareValue="Y">
AND A.ADMIN_UPDT_YN = 'Y'
</isEqual>
/*
ORDER BY 1=1
*/
ORDER BY 1
<isNotEmpty property="orderByQuery">
, $orderByQuery$
</isNotEmpty>
<isNotEqual property="mode" compareValue="EXCEL">
/*
LIMIT recordCountPerPage OFFSET firstIndex
*/
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</isNotEqual>
</select>
</sqlMap>

View File

@ -27,7 +27,7 @@
aprvlCd = VeConstants.APRVL_CD_30;
} else {
msg = "수정요청";
aprvlCd = VeConstants.APRVL_CD_70;
aprvlCd = '11';
}
if(confirm(msg+" 하시겠습니까?")){
$.ajax({

View File

@ -182,41 +182,10 @@
</tr>
<tr>
<th scope="row">
<p>처리상태</p>
<p>처리상태 </p>
</th>
<td colspan="3">
<c:choose>
<c:when test="${info.useYn eq 'N'}">
<span class="app_status3">신청취소</span>
</c:when>
<c:when test="${info.sbmtYn eq 'N' or empty info.sbmtYn}">
<span class="app_status2">작성중</span>
</c:when>
<c:when test="${info.aprvlCd eq '10'}">
<span class="app_status1">운영신청</span>
</c:when>
<c:when test="${info.aprvlCd eq '20'}">
<span class="app_status1">운영확정</span>
</c:when>
<c:when test="${info.aprvlCd eq '30'}">
<span class="app_status1">신청반려</span>
</c:when>
<c:when test="${info.aprvlCd eq '60'}">
<span class="app_status1">교육확정</span>
</c:when>
<c:when test="${info.aprvlCd eq '70'}">
<span class="app_status1">수정요청</span>
</c:when>
<c:when test="${info.aprvlCd eq '80'}">
<span class="app_status1">수정요청완료</span>
</c:when>
<c:when test="${info.aprvlCd eq '90'}">
<span class="app_status1">교육미확정</span>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
<ve:code codeId="VEA013" code="${info.aprvlCd}"/>
</td>
</tr>
<c:if test="${info.aprvlCd eq '70'}">
@ -344,7 +313,8 @@
</div>
<!-- 운영계획 -->
<div class="tb_tit01">
<!-- 231130 운영계획 - 고객 요청으로 서류제출 단계로 이동 -->
<%-- <div class="tb_tit01">
<p>운영 계획</p>
</div>
<div class="tb_type02">
@ -361,10 +331,10 @@
<p>대상학년/반</p>
</th>
<td>${info.trgtGrade}</td>
<%-- <th scope="row">
<th scope="row">
<p>대상반</p>
</th>
<td>${info.trgtClsrm}</td> --%>
<td>${info.trgtClsrm}</td>
</tr>
<tr>
<th scope="row">
@ -401,7 +371,7 @@
</tr>
</tbody>
</table>
</div>
</div> --%>
<!-- 운영계획 -->
@ -449,8 +419,7 @@
</c:otherwise>
</c:choose>
<td><c:out
value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }" />
<td><c:out value="${status.index+1}" />
</td>
<td><a
href="javascript:fncGoDetail('${list.eduAplctOrd}');"
@ -466,26 +435,7 @@
</td>
<td>
<c:choose>
<c:when test="${list.aprvlCd eq '10'}">
<span class="app_status1">운영신청</span>
</c:when>
<c:when test="${list.aprvlCd eq '70'}">
<span class="app_status2">수정요청</span>
</c:when>
<c:when test="${list.aprvlCd eq '80'}">
<span class="app_status4">수정완료</span>
</c:when>
<c:when test="${list.aprvlCd eq '60'}">
<span class="app_status4">운영확정</span>
</c:when>
<c:when test="${list.aprvlCd eq '90'}">
<span class="app_status4">운영미확정</span>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
<ve:code codeId="VEA013" code="${list.aprvlCd}"/>
</td>
<td><c:out value="${list.aprvlPnttm}" /></td>
@ -518,7 +468,7 @@
</c:forEach>
<c:if test="${empty list}">
<tr>
<td colspan="7"><spring:message code="common.nodata.msg" /></td>
<td colspan="9"><spring:message code="common.nodata.msg" /></td>
</tr>
</c:if>
</tbody>
@ -529,38 +479,23 @@
<!-- btn_wrap -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
<!--
<select name="saveStatus" name="saveStatus" class="sel_type1">
<option value="">전체</option>
<option value="10" <c:if test="${vEEduAplctVO.searchStatus eq '10'}">selected</c:if>>운영신청</option>
<option value="70" <c:if test="${vEEduAplctVO.searchStatus eq '70'}">selected</c:if>>수정요청</option>
<option value="80" <c:if test="${vEEduAplctVO.searchStatus eq '80'}">selected</c:if>>수정요청완료</option>
<option value="60" <c:if test="${vEEduAplctVO.searchStatus eq '60'}">selected</c:if>>교육확정</option>
<option value="90" <c:if test="${vEEduAplctVO.searchStatus eq '90'}">selected</c:if>>교육미확정</option>
</select>
-->
<!-- 운영신청 상태에서만 수정요청 가능 -->
<c:if test="${info.aprvlCd eq '10'}">
<!-- 운영신청 상태, 수정완료상태에서만 수정요청 가능 -->
<c:if test="${info.aprvlCd eq '10' or info.aprvlCd eq '13'}">
<button type="button" class="btn_type01" onclick="fncRejectPopup(); return false;">수정요청</button>
</c:if>
<!-- 운영신청, 수정요청완료 상태에서만 선정여부 설정 가능(선정여부는 교육확정 프로세스에 영향을 끼치지 않음 - 관리자 구분 용도)-->
<%-- <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> --%>
</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>
<!-- 운영신청, 수정요청, 수정완료 시 -->
<c:if test="${info.aprvlCd eq '10' || info.aprvlCd eq '13' || info.aprvlCd eq '11'}">
<button type="button" class="btn_type01" onclick="fncStatusChange('20'); return false;">선정처리</button>
<button type="button" class="btn_type02" onclick="fncStatusChange('12'); return false;">선정취소</button>
</c:if>
<!-- 운영확정 시 -->
<c:if test="${info.aprvlCd eq '20'}">
<button type="button" class="btn_type01" onclick="fncStatusChange('40'); return false;">서류제출 요청</button>
</c:if>
<!-- 교육 확정인 경우 관리자만 수정 가능 하도록 -->
<%-- <c:if test="${info.aprvlCd eq '60'}"> --%>
<button type="button" class="btn_type01" onclick="fncGoEdit();">수정</button>
<%-- </c:if> --%>
<button type="button" class="btn_type01" onclick="fncGoEdit();">수정</button>
</div>
<div class="btn_right">
<button type="button" class="btn_type03" onclick="fncGoList(); return false;">목록</button>

View File

@ -16,7 +16,7 @@
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">c
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
input:read-only {
background-color: #ededed;
@ -250,14 +250,26 @@ input:read-only {
<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="11"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '11'}">selected</c:if>>수정요청</option>
<option value="12"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '12'}">selected</c:if>>운영 미확정</option>
<option value="13"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '13'}">selected</c:if>>수정완료</option>
<option value="20"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '20'}">selected</c:if>>운영 확정</option>
<%-- <option value="30"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '30'}">selected</c:if>>서류제출 요청</option> --%>
<option value="40"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '40'}">selected</c:if>>서류제출</option>
<option value="50"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '50'}">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>
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '60'}">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>
</select>
<%-- <p
style="padding: 0 20px 0 30px; font-weight: 500; font-size: 18px;">선정여부</p>
@ -355,29 +367,7 @@ input:read-only {
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>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_70}">
<span class="app_status2">수정요청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_80}">
<span class="app_status4">수정완료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_60}">
<span class="app_status4">운영확정</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_90}">
<span class="app_status4">운영미확정</span>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose></td>
<td><ve:code codeId="VEA013" code="${list.aprvlCd}"/></td>
<td>
<c:if test="${list.unfthYn eq 'Y'}">
불성실
@ -403,9 +393,14 @@ input:read-only {
<option value="">선택</option>
<option value="10">운영신청</option>
<!-- <option value="70">수정요청</option> -->
<option value="80">수정완료</option>
<option value="60">운영확정</option>
<option value="90">운영미확정</option>
<option value="12">운영미확정</option>
<option value="13">수정완료</option>
<option value="20">운영확정</option>
<option value="40">서류제출 요청</option>
<option value="50">운영 진행중</option>
<option value="60">결과보고 완료</option>
<option value="70">검토중</option>
<option value="80">운영종료</option>
</select>
<button class="btn_type04" onclick="fncStatusChangeAll(); return false;" >일괄변경</button>
</div>

View File

@ -300,7 +300,7 @@
}
}
if($('#trgtGrade').val() == ''){
/* if($('#trgtGrade').val() == ''){
alert('학년수를 입력해주세요.');
$("#trgtGrade").focus();
return false;
@ -355,7 +355,7 @@
if($(".uploaded_obj").length == 0){
alert("파일을 첨부해 주세요.");
return false;
}
} */
/* if($("#agree1").length > 0 && !$('#agree1').prop('checked')){
alert('개인정보 이용 약관에 동의해주세요.');
@ -385,12 +385,12 @@
$('#exprnClsrnYear').val(arr);
}
if($('#oprtnStrtDt').val() != null){
/* 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, ''))
@ -723,7 +723,8 @@
</table>
</div>
<div class="tb_tit01">
<!-- 231130 운영계획 - 고객 요청으로 서류제출 단계로 이동 -->
<%-- <div class="tb_tit01">
<p>운영계획</p>
</div>
<div class="tb_type02 wirte">
@ -867,7 +868,7 @@
</tr>
</table>
</div>
</div> --%>
<!-- //list_상세 -->

View File

@ -99,6 +99,28 @@
}
});
}
function fncStatusChange(statusVal){
if(confirm("상태를 변경 하시겠습니까?")){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/kccadr/oprtn/comm/eduAplctStatusAjax.do",
data: {
"eduAplctOrd" : $("#eduAplctOrd").val() ,
"aprvlCd" : statusVal,
},
dataType:'json',
success:function(returnData){
alert("상태가 변경 되었습니다.");
location.reload();
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
</script>
</head>
@ -196,7 +218,9 @@
<th scope="row">
<p>진행상태</p>
</th>
<td colspan="3"><ve:code codeId="VE0003" code="${info.aprvlCd}" /></td>
<td colspan="3">
<ve:code codeId="VEA013" code="${info.aprvlCd}"/>
</td>
</tr>
</tbody>
</table>
@ -208,27 +232,22 @@
<div class="tb_type02">
<table>
<colgroup>
<col style="width: 20%;">
<col style="width: 30%;">
<col style="width: 20%;">
<col style="width: 30%;">
<col style="width: 210px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">
<p>학교(기관)명</p>
</th>
<td><c:out value='${info.scholInsttNm}'/></td>
<th scope="row">
<p>담당자</p>
</th>
<td><c:out value='${info.chrgNm}'/></td>
<td>${info.scholInsttNm}</td>
</tr>
<tr>
<th scope="row">
<p>학교지역특성</p>
</th>
<td colspan="3">
<td>
<input type="checkbox" id="islandsYn" name="islandsYn" disabled="disabled" <c:if test="${info.islandsYn eq 'Y'}">checked</c:if> /><label for="islandsYn"> 도서지역</label>
<input type="checkbox" id="remoteYn" name="remoteYn" disabled="disabled" <c:if test="${info.remoteYn eq 'Y'}">checked</c:if> /><label for="remoteYn"> 벽지지역</label>
<input type="checkbox" id="clsCmbtYn" name="clsCmbtYn" disabled="disabled" <c:if test="${info.clsCmbtYn eq 'Y'}">checked</c:if> /><label for="clsCmbtYn"> 접적지역</label>
@ -236,56 +255,84 @@
</td>
</tr>
<tr>
<th scope="row"><p>휴대폰</p></th>
<td><c:out value='${info.clphone}'/></td>
</tr>
<tr>
<th scope="row"><p>이메일</p></th>
<td><c:out value='${info.email}'/></td>
<th scope="row">
<p>교사명</p>
</th>
<td>${info.chrgNm}</td>
</tr>
<tr>
<th scope="row">
<p>첨부파일</p>
<p>성별</p>
</th>
<td class="file_download">
<c:import url="/cmm/fms/selectForNmChgFile.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.scholSealAtchFileId}" />
<c:param name="chgNm" value="${info.scholInsttNm}_${info.chrgNm}_신청서" />
</c:import>
<td>
<ve:code codeId="COM014" code="${info.chrgSexCd}"/>
</td>
</tr>
<tr>
<th scope="row">
<p>거래선 등록 여부</p>
<p>이메일</p>
</th>
<td class="file_download">
<c:if test="${info.transAtchFileId ne null}">
<c:import url="/cmm/fms/selectRsltRprtFile.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.transAtchFileId}" />
</c:import>
<td>${info.email}</td>
</tr>
<tr>
<th scope="row">
<p>휴대폰</p>
</th>
<td>${info.clphone}</td>
</tr>
<tr>
<th scope="row">
<p>전화</p>
</th>
<td>${info.phone}</td>
</tr>
<tr>
<th scope="row">
<p>주소</p>
</th>
<td>(${info.post}) ${info.addr} ${info.addrDetail}</td>
</tr>
<tr>
<th scope="row">
<p>담당교과</p>
</th>
<td>${info.chrgMjr}</td>
</tr>
<tr>
<th scope="row">
<p>생년월일</p>
</th>
<td>
<c:if test="${not empty info.dBirth}">
<c:set var="birthYear" value="${fn:substring(info.dBirth, 0, 4)}"/>
<c:set var="birthMonth" value="${fn:substring(info.dBirth, 4, 6)}"/>
<c:set var="birthDay" value="${fn:substring(info.dBirth, 6, 8)}"/>
</c:if>
<!-- <a href="#none" title="다운로드">신분증_사본.jpg</a>
<a href="#none" title="다운로드">통장_사본.jpg</a> -->
${birthYear}년 ${birthMonth}월 ${birthDay}일
</td>
</tr>
<tr>
<th scope="row">
<p>서약서 제출</p>
<p>체험교실운영여부</p>
</th>
<td class="file_download">
<c:if test="${info.oathAtchFileId ne null}">
<c:import url="/cmm/fms/selectRsltRprtFile.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.oathAtchFileId}" />
</c:import>
<td>
운영구분코드 : <ve:code codeId="VE0031" code="${info.exprnClsrnCd}"/> <br/>
운영구분년도 : ${info.exprnClsrnYear}
</td>
</tr>
<tr>
<th scope="row">
<p>신청경로</p>
</th>
<td>
<ve:code codeId="VE0030" code="${info.exprnClsrnAplct}"/>
<c:if test="${not empty info.exprnClsrnAplctCn}">
&nbsp;&nbsp;&nbsp;(기타 내용 : ${info.exprnClsrnAplctCn})
</c:if>
<!-- <a href="#none" title="다운로드">신분증_사본.jpg</a>
<a href="#none" title="다운로드">통장_사본.jpg</a> -->
</td>
</tr>
</tbody>
</table>
</div>
@ -314,9 +361,9 @@
</tr>
<tr>
<th scope="row">
<p>교육내용</p>
<p>필요 교재 수량</p>
</th>
<td colspan="3"><c:out value="${info.chrgMjr}" /></td>
<td colspan="3"><c:out value="${info.needTxtbNum}" /></td>
</tr>
<tr>
<th scope="row">
@ -330,7 +377,7 @@
<fmt:formatDate value="${oprtnEndDt}" pattern="yyyy.MM.dd"/>
</td>
</tr>
<tr>
<%-- <tr>
<th scope="row">
<p>계획서 파일</p>
</th>
@ -344,11 +391,67 @@
<!-- <a href="#none" title="다운로드">신분증_사본.jpg</a>
<a href="#none" title="다운로드">통장_사본.jpg</a> -->
</td>
</tr>
</tr> --%>
</tbody>
</table>
</div>
<div class="tb_tit01">
<p>차시별 운영계획</p>
</div>
<div class="tb_type01 list2">
<table>
<colgroup>
<col style="width: 10%;">
<col style="width: 15%;">
<col style="width: auto;">
<col style="width: 30%;">
<col style="width: 15%;">
</colgroup>
<thead>
<tr>
<th scope="col"><p>교육희망일</p></th>
<th scope="col"><p>시간</p></th>
<th scope="col"><p>학습주제</p></th>
<th scope="col"><p>지도내용</p></th>
<th scope="col"><p>비고</p></th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${chasiList}" varStatus="status">
<tr>
<th>
<c:choose>
<c:when test="${not empty list.eduHopeDt}">
${list.eduHopeDt}
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</th>
<td>
<fmt:parseDate value="${list.strtTm}" var="strtTm" pattern="kkmm"/>
<fmt:formatDate value="${strtTm}" pattern="kk:mm"/>
~
<fmt:parseDate value="${list.endTm}" var="endTm" pattern="kkmm"/>
<fmt:formatDate value="${endTm}" pattern="kk:mm"/>
(${list.lrnTm}분)
</td>
<td>${list.lrnSbjct}</td>
<td>${list.lrnCn}</td>
<td>${list.rmrks}</td>
</tr>
</c:forEach>
<c:if test="${empty chasiList}">
<tr><td colspan="5"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<div class="tb_tit01">
<p>결과보고</p>
</div>
@ -407,7 +510,7 @@
</c:import>
</td>
</tr>
<tr>
<%-- <tr>
<th scope="row">
<p>사전 설문조사</p>
</th>
@ -437,7 +540,7 @@
</c:otherwise>
</c:choose>
</td>
</tr>
</tr> --%>
</tbody>
</table>
</div>
@ -571,7 +674,16 @@
<button type="button" class="btn_type05" onclick="fncSlctnTeacherPopup(); return false;">선정교사 설정</button>
</div>
<div class="btn_center">
<button type="button" class="btn_type01" onclick="fncGoMdfy(); return false;">수정</button>
<!-- <button type="button" class="btn_type01" onclick="fncGoMdfy(); return false;">수정</button> -->
<c:if test="${info.aprvlCd eq '20'}">
<button type="button" class="btn_type01" onclick="fncStatusChange('40'); return false;">서류제출 요청</button>
</c:if>
<c:if test="${info.aprvlCd eq '60'}">
<button type="button" class="btn_type01" onclick="fncStatusChange('70'); return false;">검토중</button>
</c:if>
<c:if test="${info.aprvlCd eq '70'}">
<button type="button" class="btn_type01" onclick="fncStatusChange('80'); return false;">운영종료</button>
</c:if>
</div>
<div class="btn_right">
<button type="button" class="btn_type03" onclick="fncGoList(); return false;">목록</button>

View File

@ -178,7 +178,7 @@
<p>처리상태</p>
</div>
<div class="util_right">
<div class="check_wrap">
<%-- <div class="check_wrap">
<c:set var="searchStatus" value="${fn:join(vEEduAplctVO.searchStateStatusArr, ',') }"/>
<span><input type="radio" ${fn:indexOf(searchStatus, VeConstants.VE0020_10) ne -1 ? 'checked' : ''}
value="${VeConstants.VE0020_10}" name="searchStateStatusArr" id="searchStateSatus2"><label for="searchStateSatus2">교육진행중</label>
@ -192,12 +192,29 @@
<span><input type="radio" ${fn:indexOf(searchStatus, VeConstants.VE0020_30) ne -1 ? 'checked' : ''}
value="${VeConstants.VE0020_30}" name="searchStateStatusArr" id="searchStateSatus4"><label for="searchStateSatus4">결과보고제출(운영완료)</label>
</span>
</div>
</div> --%>
<select name="searchCpyAprvlCd" class="sel_type1">
<option value="">전체</option>
<option value="20"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '20'}">selected</c:if>>운영 확정</option>
<%-- <option value="30"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '30'}">selected</c:if>>서류제출 요청</option> --%>
<option value="40"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '40'}">selected</c:if>>서류제출</option>
<option value="50"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '50'}">selected</c:if>>운영 진행중</option>
<option value="60"
<c:if test="${vEEduAplctVO.searchCpyAprvlCd eq '60'}">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>
</select>
</div>
</div>
<div class="list_top_3">
<div class="util_left">
<p>처리상태</p>
<p>등록일</p>
</div>
<div class="util_right">
<div class="calendar_wrap">
@ -270,35 +287,7 @@
<td>
<c:out value="${list.sbmtPnttm}"/>
</td>
<td>
<jsp:useBean id="date" class="java.util.Date" />
<fmt:formatDate value="${date}" pattern="yyyyMMdd" var="now" />
<c:choose>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_60 && list.oprtnStrtDt <= now && now <= list.oprtnEndDt}">
<span >운영진행</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_60 && now > list.oprtnEndDt}">
<span >운영종료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_60}">
<span >운영확정</span>
</c:when>
<c:when test="${list.aprvlCd eq list.aprvlCd eq VeConstants.APRVL_CD_90}">
<span >운영취소</span>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${list.rprtAprvlCd eq '10'}">
<span >(결과보고)</span>
</c:when>
<c:when test="${list.oathAtchFileId ne null || list.planAtchFileId ne null}">
<span >(서류제출)</span>
</c:when>
</c:choose>
</td>
<td><ve:code codeId="VEA013" code="${list.aprvlCd}"/></td>
</tr>
</c:forEach>
<c:if test="${empty list}">

View File

@ -7,6 +7,7 @@
<%@ 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" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<% pageContext.setAttribute("replaceChar", "\n"); %>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
@ -191,11 +192,6 @@
}
}
function fncReject(){
// commonPopWindowopenForm("/kccadr/adjReqMgr/popup/adjReqMgrRegCompanionPopup.do" , "600", "340", "rejectPop",$("#detailForm"));
}
function filePopupLayer(type){
commonPopLayeropen(
"${pageContext.request.contextPath}/web/ve/comm/popup/fileUploadPop.do"
@ -220,6 +216,187 @@
window.open("<c:url value='/cmm/fms/FileDown.do?atchFileId="+atchFileId+"&fileSn=0'/>");
}
function fncSave(aprvlCd){
if (!validCheck()) return;
url = '${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctMdfyAjax.do';
if(confirm("계획서를 제출하시겠습니까?")){
$("#aprvlCd").val('50');
$('input[name="scholDivCd"]').val(""); /* 차시 최소시간 체크를 제외하기 위한 임시 scholDivCd를 update 처리에서 제외하기 위함 */
if($('input[name=oprtnStrtDt]').val() != null){
$('input[name=oprtnStrtDt]').val($('input[name=oprtnStrtDt]').val().replace(/[.]/gi, ''));
}
if($('input[name=oprtnEndDt]').val() != null){
$('input[name=oprtnEndDt]').val($('input[name=oprtnEndDt]').val().replace(/[.]/gi, ''));
}
var data = new FormData(document.getElementById("createForm"));
$.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("제출 되었습니다.");
location.reload();
} else if(status== 'fail'){
alert("등록에 실패하였습니다.");
}
},
error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
function validCheck(){
if($('#trgtGrade').val() == ''){
alert('대상학년/반을 입력해주세요.');
$("#trgtGrade").focus();
return false;
}
if($('#trgtPrsnl').val() == ''){
alert('전체학생 수를 입력해주세요.');
$("#trgtPrsnl").focus();
return
false;
}
if($('#needTxtbNum').val() == ''){
alert('필요 교재 수량을 입력해주세요.');
$("#needTxtbNum").focus();
return false;
}
if($('duet-date-picker[name=oprtnStrtDt]').val() == ''){
alert('운영시기 시작일을 입력해주세요.');
$("#oprtnStrtDt").focus();
return false;
}
if($('duet-date-picker[name=oprtnEndDt]').val() == ''){
alert('운영시기 종료일을 입력해주세요.');
$("#oprtnEndDt").focus();
return false;
}
var oprtnStrtDt = $('duet-date-picker[name=oprtnStrtDt]').val();
var oprtnEndDt = $('duet-date-picker[name=oprtnEndDt]').val();
oprtnStrtDt = oprtnStrtDt.replace(/[.]/gi, '');
oprtnEndDt = oprtnEndDt.replace(/[.]/gi, '');
if(oprtnStrtDt > oprtnEndDt){
alert("시작일이 종료일보다 클 수 없습니다.");
$("#oprtnEndDt").focus();
return false;
}
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);
var oprtnStrtDtDate = new Date(yyyy, mm-1, dd); // 교육희망일을 Date 형태로 변경
var today = new Date();
var tyyyy = today.getFullYear();
var tmm = today.getMonth()+1;
var tdd = today.getDate();
var todayDate = new Date(tyyyy, tmm-1, tdd)
//교육희망일이 오늘보다 전인지 체크
if(oprtnStrtDtDate < todayDate) {
alert('시작일 오늘 이후의 날짜로 입력해주세요.');
return flag = false;
}
var trObj = $('.addClassRow').find('tbody > tr').not('.calendar_wrap tr');
if(trObj.length == 0){
alert('차시별 운영계획 정보를 등록해주세요.');
return false;
}
var flag = true;
$.each(trObj , function(idx, row){
if($(this).find('input[name=eduHopeDt]').val() == ''){
alert('교육희망일 입력해주세요.');
$('input[name=eduHopeDt]:eq('+idx+')').focus();
return flag = false;
}
var eduHopeDt = $(this).find('input[name=eduHopeDt]').val();
var yyyy = eduHopeDt.substr(0,4);
var mm = eduHopeDt.substr(5,2);
var dd = eduHopeDt.substr(8,2);
var eduHopeDtDate = new Date(yyyy, mm-1, dd); // 교육희망일을 Date 형태로 변경
console.log(eduHopeDt);
var today = new Date();
var tyyyy = today.getFullYear();
var tmm = today.getMonth()+1;
var tdd = today.getDate();
var todayDate = new Date(tyyyy, tmm-1, tdd)
if(eduHopeDtDate < todayDate) {
alert('교육희망일은 오늘 이후의 날짜로 입력해주세요.');
return flag = false;
}
if($(this).find('input[name=strtTm]').val() == ''){
alert('교육시작 시간을 입력해주세요.');
$('input[name=strtTm]:eq('+idx+')').focus();
return flag = false;
}
if($(this).find('input[name=strtTm]').val().indexOf('선택') != -1){
alert('교육시작 시간을 입력해주세요.');
$('input[name=strtTm]:eq('+idx+')').focus();
return flag = false;
}
if($(this).find('input[name=endTm]').val() == ''){
alert('교육종료 시간을 입력해주세요.');
$('input[name=endTm]:eq('+idx+')').focus();
return flag = false;
}
if($(this).find('input[name=endTm]').val().indexOf('선택') != -1){
alert('교육종료 시간을 입력해주세요.');
$('input[name=endTm]:eq('+idx+')').focus();
return flag = false;
}
if($(this).find('input[name=lrnSbjct]').val() == ''){
alert('학습주제를 입력해주세요.');
$('input[name=lrnSbjct]:eq('+idx+')').focus();
return flag = false;
}
if($(this).find('input[name=lrnCn]').val() == ''){
alert('지도내용을 입력해주세요.');
$('input[name=lrnCn]:eq('+idx+')').focus();
return flag = false;
}
});
if(!flag){
return false;
}
return true;
}
</script>
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO" onsubmit="return false;" method="post">
@ -240,6 +417,11 @@
<div id="beforePrintPopupLoad"></div>
<div id="afterPrintPopupLoad"></div>
<!-- 시간 선택 시 교육별 최소 시간 체크 제외를 위한 임시 checkbox -->
<div style="display:none;">
<input type="checkbox" name="scholDivCd" value="exprn" checked>
</div>
<div class="cont_wrap" id="sub">
<div class="cont_tit">
<h2>운영상세</h2>
@ -291,35 +473,7 @@
<p>처리상태</p>
</th>
<td colspan="3">
<c:choose>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_SBMT}">
<span class="app_status1">교육신청</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_CFRM}">
<span class="app_status2">교육승인</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_RJT}">
<span class="app_status4">교육반려</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_CAN}">
<span class="app_status4">교육취소</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_CHI_CMPT}">
<span class="app_status4">선정완료</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_EDT_REQ}">
<span class="app_status3">수정요청</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_EDT_CMPT}">
<span class="app_status3">수정요청완료</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_EDU_SELCT}">
<span class="app_status1">교육확정</span>
</c:when>
<c:otherwise>
임시저장
</c:otherwise>
</c:choose>
<ve:code codeId="VEA013" code="${info.aprvlCd}"/>
</td>
</tr>
<c:if test="${info.aprvlCd eq '30'}">
@ -432,152 +586,427 @@
</td>
</tr>
<tr>
<!-- <th scope="row"><p>거래선 등록 여부</p></th> -->
<th scope="row"><p>거래선 양식</p></th>
<td>
<!-- 22.03.22 고객사 요청으로 숨김 -->
<%--
<c:choose>
<c:when test="${info.transAtchFileId ne null}">
<c:import url="/cmm/fms/selectSimpleDownInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.transAtchFileId}" />
</c:import>
<button type="button" class="btnType01" onclick="filePopupLayer('TRANS')">거래선 파일 변경</button>
</c:when>
<c:otherwise>
<button type="button" class="btnType01" onclick="filePopupLayer('TRANS')">거래선 업로드</button>
</c:otherwise>
</c:choose>
--%>
<button type="button" class="btnType01" onclick="location.href='${pageContext.request.contextPath}/cmm/fms/FileDown.do?atchFileId=FILE_000000000015299&amp;fileSn=2'" title="거래선 양식 다운로드">거래선 양식 다운로드</button>
<p>
<span class="cf_text">※ 거래선 파일은 개인정보 수집 및 보호를 위해 반드시 메일(entt@copyright.or.kr)로 제출하시기 바랍니다.</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><p>서약서 제출</p></th>
<td>
<c:choose>
<c:when test="${info.oathAtchFileId ne null}">
<!-- 서류요청 제출 시만 거래선, 서약서 제출 가능 -->
<c:if test="${info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_40}">
<tr>
<th scope="row"><p>거래선 양식</p></th>
<td>
<button type="button" class="btnType01" onclick="location.href='${pageContext.request.contextPath}/cmm/fms/FileDown.do?atchFileId=FILE_000000000015299&amp;fileSn=2'" title="거래선 양식 다운로드">거래선 양식 다운로드</button>
<p>
<span class="cf_text">※ 거래선 파일은 개인정보 수집 및 보호를 위해 반드시 메일(entt@copyright.or.kr)로 제출하시기 바랍니다.</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><p>서약서 제출</p></th>
<td>
<c:choose>
<c:when test="${info.oathAtchFileId ne null}">
<c:import url="/cmm/fms/selectScholSealInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.oathAtchFileId}" />
</c:import>
<button type="button" class="btnType01" data-tooltip="sub35_pop01" id="OATH" onclick="filePopupLayer('OATH')" title="팝업 열림">서약서 파일 변경</button>
</c:when>
<c:otherwise>
<button type="button" class="btnType01" data-tooltip="sub35_pop01" id="OATH" onclick="filePopupLayer('OATH')" title="팝업 열림">서약서 업로드</button>
</c:otherwise>
</c:choose>
<button type="button" class="btnType01" onclick="location.href='${pageContext.request.contextPath}/cmm/fms/FileDown.do?atchFileId=FILE_000000000015299&amp;fileSn=1'" title="서약서 양식 다운로드">서약서 양식 다운로드</button>
</td>
</tr>
</c:if>
<c:if test="${info.aprvlCd ne VeConstants.EXPRN_APRVL_CD_40}">
<tr>
<th scope="row"><p>서약서</p></th>
<td>
<c:if test="${info.oathAtchFileId ne null}">
<c:import url="/cmm/fms/selectScholSealInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.oathAtchFileId}" />
</c:import>
<button type="button" class="btnType01" data-tooltip="sub35_pop01" id="OATH" onclick="filePopupLayer('OATH')" title="팝업 열림">서약서 파일 변경</button>
</c:when>
<c:otherwise>
<button type="button" class="btnType01" data-tooltip="sub35_pop01" id="OATH" onclick="filePopupLayer('OATH')" title="팝업 열림">서약서 업로드</button>
</c:otherwise>
</c:choose>
<button type="button" class="btnType01" onclick="location.href='${pageContext.request.contextPath}/cmm/fms/FileDown.do?atchFileId=FILE_000000000015299&amp;fileSn=1'" title="서약서 양식 다운로드">서약서 양식 다운로드</button>
</td>
</tr>
<!-- <button type="button" class="btnType01" data-tooltip="sub35_pop01" id="OATH" onclick="filePopupLayer('OATH')" title="팝업 열림">서약서 파일 변경</button> -->
</c:if>
</td>
</tr>
</c:if>
</tbody>
</table>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>운영계획</p>
<!-- 서류요청 제출 시만 거래선, 서약서 제출 가능 -->
<form:form id="createForm" name="createForm" commandName="modelVO" onsubmit="return false;">
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="${info.eduAplctOrd}" />
<input type="hidden" name="aprvlCd" id="aprvlCd" value=""/><!-- 승인코드 -->
<c:if test="${info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_40}">
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>운영 계획</p>
<span class="cf_text">* 항목은 필수 입력 사항입니다.</span>
</div>
</div>
</div>
<div class="tb_type01 tb_write">
<table>
<caption>운영계획 (th 명)을 보여주는 표</caption>
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">
<p>대상학년/반</p>
</th>
<td>${info.trgtGrade}</td>
<%-- <th scope="row">
<p>대상반</p>
</th>
<td>${info.trgtClsrm}</td> --%>
</tr>
<tr>
<th scope="row">
<p>대상학생수</p>
</th>
<td>
${info.trgtPrsnl}
</td>
<th scope="row">
<p>운영시기</p>
</th>
<td>
<fmt:parseDate value="${info.oprtnStrtDt}" var="oprtnStrtDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnStrtDt}" pattern="yyyy.MM.dd"/>
~
<fmt:parseDate value="${info.oprtnEndDt}" var="oprtnEndDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnEndDt}" pattern="yyyy.MM.dd"/>
</td>
<!--
<th scope="row">
<p>보고서 제출일(예정)</p>
</th>
<td>
<fmt:parseDate value="${info.rprtSbmt}" var="rprtSbmt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${rprtSbmt}" pattern="yyyy.MM.dd"/>
<div class="tb_type01 tb_write tb_input">
<table>
<caption>운영 계획 (th 명)을 입력하는 표</caption>
<colgroup>
<col style="width: 150px;">
<col style="width: auto;">
<col style="width: 150px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>대상학년/반</p>
</th>
<td>
<label for="trgtGrade" class="label">대상 학년 입력</label>
<input type="text" name="trgtGrade" id="trgtGrade" maxlength="20" value="${info.trgtGrade}" size="20">
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>전체학생 수</p>
</th>
<td>
<label for="trgtPrsnl" class="label">학생 수 입력</label>
<input type="text" name="trgtPrsnl" id="trgtPrsnl" onkeyup="onlyNumber(this);" maxlength="4" value="${info.trgtPrsnl}" size="20"> 명
</td>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>운영시기</p>
</th>
<td class="calendar_td">
</td>
-->
</tr>
<tr>
<th scope="row">
<p>필요 교재 수량</p>
</th>
<td>
${info.needTxtbNum}
</td>
</tr>
<!--
<tr>
<th scope="row">
<p>운영시기</p>
</th>
<td colspan="3">
<fmt:parseDate value="${info.oprtnStrtDt}" var="oprtnStrtDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnStrtDt}" pattern="yyyy.MM.dd"/>
~
<fmt:parseDate value="${info.oprtnEndDt}" var="oprtnEndDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnEndDt}" pattern="yyyy.MM.dd"/>
</td>
</tr>
-->
<tr>
<th scope="row">
<p>첨부파일</p>
</th>
<td class="file_download onlyFile" colspan="3">
<c:import url="/cmm/fms/selectScholSealInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.oprtnFileId}" />
</c:import>
</td>
</tr>
<tr>
<th scope="row"><p>차시별 계획서 제출</p></th>
<td colspan="3">
<c:if test="${info.planAtchFileId ne null}">
<c:import url="/cmm/fms/selectScholSealInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.planAtchFileId}" />
</c:import>
<div class="calendar_wrap">
<duet-date-picker identifier="date" name="oprtnStrtDt" value="" pattern="yyyy.MM.dd"/></duet-date-picker>
</div>
~
<div class="calendar_wrap">
<duet-date-picker identifier="date" name="oprtnEndDt" value="" pattern="yyyy.MM.dd"/></duet-date-picker>
</div>
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script>
<script>
$(window).on("load",function(){
//title 변경
$(".startDate .duet-date__input").attr("title","운영시기 시작날짜를 YYYY.MM.DD 형식으로 입력해주세요");
$(".endDate .duet-date__input").attr("title","운영시기 종료날짜를 YYYY.MM.DD 형식으로 입력해주세요");
});
</script>
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>필요 교재 수량</p>
</th>
<td>
<label for="needTxtbNum" class="label">필요 교재 수량 입력</label>
<input type="text" name="needTxtbNum" id="needTxtbNum" onkeyup="onlyNumber(this);" value="${info.needTxtbNum}" title="필요 교재 수량" size="20" maxlength="4">
</td>
</tr>
</tbody>
</table>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left" style="display: block;">
<p>차시별 운영계획</p>
<span class="cf_text2" style="display:block; padding-left:0; padding-top: 6px;">※ 운영지원금 지원을 위한 계획서(계획은 웅영에따 따라 변경 가능)<br/>※ 담당교사의 재량으로 자율 편성하되, 1일 최대 2차시까지만 운영 가능</span>
</div>
<div class="btn_wrap">
<button type="button" class="btnType05" title="교육차시 입력테이블 추가생성" onclick="addEduClassCopyTngr('addClassRow')">교육추가</button>
</div>
</div>
<div class="tb_type02 tb_type02_write">
<table class="addClassRow" rowLimit="1" >
<colgroup>
<col style="width: 20%;">
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 12%;">
<col style="width: 9%;">
<col style="width: 6%;">
</colgroup>
<thead>
<tr>
<th scope="col"><p class="req_text"><span>필수입력 항목</span>*</p>교육희망일</th>
<th scope="col"><p class="req_text"><span>필수입력 항목</span>*</p>시간</th>
<th scope="col"><p class="req_text"><span>필수입력 항목</span>*</p>학습주제</th>
<th scope="col"><p class="req_text"><span>필수입력 항목</span>*</p>지도내용</th>
<th scope="col">비고</th>
<th scope="col">삭제</th>
</tr>
</thead>
<tbody>
<tr>
<th class="calendar_th">
<div class="calendar_wrap">
<duet-date-picker identifier="date" class="startDate" name="eduHopeDt"></duet-date-picker>
</div>
</th>
<td>
<div class="table_time_wrap">
<div class="time_wrap time_select_wrap">
<input type="text" class="time" name="strtTm" title="시작 시간 입력" readonly>
<button type="button" title="팝업 열림" class="time_set_btn"><img src="<c:url value='/visitEdu/usr/publish/images/content/timeIcon.png'/>" alt="시작 시간 선택"></button>
<div class="time_layer">
<div class="time_top">
<p>시간 선택</p>
</div>
<div class="time_cont">
<div class="hours">
<select name="st_hours" class="hours_select" title="시 선택">
<option value="선택">선택</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
</select>
</div>
:
<div class="min">
<select name="st_minute" class="min_select" title="분 선택">
<option value="선택">선택</option>
<option value="00">00</option>
<option value="05">05</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="20">20</option>
<option value="25">25</option>
<option value="30">30</option>
<option value="35">35</option>
<option value="40">40</option>
<option value="45">45</option>
<option value="50">50</option>
<option value="55">55</option>
</select>
</div>
</div>
<button type="button" class="time_close" onclick="timeLayerUtil()" title="팝업 닫기"><i></i>닫기</button>
</div>
</div>
<div class="time_wrap time_select_wrap">
<input type="text" class="time" name="endTm" title="종료 시간 입력" readonly>
<button type="button" title="팝업 열림" class="time_set_btn"><img src="<c:url value='/visitEdu/usr/publish/images/content/timeIcon.png'/>" alt="종료 시간 선택"></button>
<div class="time_layer">
<div class="time_top">
<p>시간 선택</p>
</div>
<div class="time_cont">
<div class="hours">
<select name="en_hours" class="hours_select" title="시 선택">
<option value="선택">선택</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
</select>
</div>
:
<div class="min">
<select name="en_minute" class="min_select" title="분 선택">
<option value="선택">선택</option>
<option value="00">00</option>
<option value="05">05</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="20">20</option>
<option value="25">25</option>
<option value="30">30</option>
<option value="35">35</option>
<option value="40">40</option>
<option value="45">45</option>
<option value="50">50</option>
<option value="55">55</option>
</select>
</div>
</div>
<button type="button" class="time_close" onclick="timeLayerUtil()" title="팝업 닫기"><i></i>닫기</button>
</div>
</div>(<input type="text" readonly="readonly" class="input_time" name="lrnTm" title="교육 시간">분)
</div>
</td>
<td>
<label for="lrnSbjct" class="label">학습주제</label>
<input type="text" id="lrnSbjct" name="lrnSbjct" maxlength="50">
</td>
<td>
<label for="lrnCn" class="label">지도내용</label>
<input type="text"" id="lrnCn" name="lrnCn" maxlength="50">
</td>
<td>
<label for="text" class="label">비고</label>
<input type="text" id="rmrks" name="rmrks" maxlength="50" >
</td>
<td><button type="button" class="table_del" onclick="tableDel(this)" title="해당 교육차시 정보 삭제"><img alt="" src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/del_btn.png"></button></td>
</tr>
</tbody>
</table>
<script src="<c:url value='/visitEdu/usr/publish/script/duetdatepicker2.js' /> "></script>
</div>
</c:if>
<c:if test="${info.aprvlCd > VeConstants.EXPRN_APRVL_CD_40}">
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>운영계획</p>
</div>
</div>
<div class="tb_type01 tb_write">
<table>
<caption>운영계획 (th 명)을 보여주는 표</caption>
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">
<p>대상학년/반</p>
</th>
<td>${info.trgtGrade}</td>
</tr>
<tr>
<th scope="row">
<p>대상학생수</p>
</th>
<td>
${info.trgtPrsnl}
</td>
<th scope="row">
<p>운영시기</p>
</th>
<td>
<fmt:parseDate value="${info.oprtnStrtDt}" var="oprtnStrtDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnStrtDt}" pattern="yyyy.MM.dd"/>
~
<fmt:parseDate value="${info.oprtnEndDt}" var="oprtnEndDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnEndDt}" pattern="yyyy.MM.dd"/>
</td>
</tr>
<tr>
<th scope="row">
<p>필요 교재 수량</p>
</th>
<td>
${info.needTxtbNum}
</td>
</tr>
</tbody>
</table>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left" style="display: block;">
<p>차시별 운영계획</p>
<span class="cf_text2" style="display:block; padding-left:0; padding-top: 6px;">※ 운영지원금 지원을 위한 계획서(계획은 웅영에따 따라 변경 가능)<br/>※ 담당교사의 재량으로 자율 편성하되, 1일 최대 2차시까지만 운영 가능</span>
</div>
</div>
<div class="tb_type02 tb_type02_write">
<table class="addClassRow" rowLimit="1" >
<colgroup>
<col style="width: 10%;">
<col style="width: 15%;">
<col style="width: auto;">
<col style="width: 30%;">
<col style="width: 15%;">
</colgroup>
<thead>
<tr>
<th scope="col">교육희망일</th>
<th scope="col">시간</th>
<th scope="col">학습주제</th>
<th scope="col">지도내용</th>
<th scope="col">비고</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${chasiList}" varStatus="status">
<tr>
<th>
<c:choose>
<c:when test="${not empty list.eduHopeDt}">
${list.eduHopeDt}
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</th>
<td>
<fmt:parseDate value="${list.strtTm}" var="strtTm" pattern="kkmm"/>
<fmt:formatDate value="${strtTm}" pattern="kk:mm"/>
~
<fmt:parseDate value="${list.endTm}" var="endTm" pattern="kkmm"/>
<fmt:formatDate value="${endTm}" pattern="kk:mm"/>
(${list.lrnTm}분)
</td>
<td>${list.lrnSbjct}</td>
<td>${list.lrnCn}</td>
<td>${list.rmrks}</td>
</tr>
</c:forEach>
<c:if test="${fn:length(chasiList) eq 0}">
<tr>
<td colspan="5"><spring:message code="common.nodata.msg" /></td>
</tr>
</c:if>
<button type="button" class="btnType01" data-tooltip="sub35_pop01" id="PLAN" onclick="filePopupLayer('PLAN')" title="팝업 열림">계획서 업로드</button>
<button type="button" class="btnType01" onclick="location.href='${pageContext.request.contextPath}/cmm/fms/FileDown.do?atchFileId=FILE_000000000015299&amp;fileSn=0'" title="계획서 양식 다운로드">계획서 양식 다운로드</button>
</td>
</tr>
</tbody>
</table>
</div>
</tbody>
</table>
</div>
</c:if>
</form:form>
<!-- 220317 고객사 요청으로 숨김 -->
<%-- <div class="tb_tit01">
<div class="tb_tit01_left">
@ -639,7 +1068,7 @@
</tbody>
</table>
</div> --%>
<c:if test="${info.orgnlRsltAtchFileId ne null}">
<c:if test="${rsltAllYn eq 'Y'}">
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>결과보고</p>
@ -710,9 +1139,12 @@
</div>
<div class="btn_center">
<!-- 231101 요청사항으로 교육콘텐츠 관련 메뉴 삭제 -->
<!-- <button type="button" class="btnType04" onclick="fncGoLctrAplctReg();">교육콘텐츠 신청</button> -->
<c:if test="${info.exprnAprvlCd ne '10'}">
<button type="button" class="btnType05" onclick="fncGoRslt();">결과보고제출</button>
<button type="button" class="btnType04" onclick="fncGoLctrAplctReg();">교육콘텐츠 신청</button>
<c:if test="${info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_50 or (rsltAllYn eq 'N' and info.aprvlCd > VeConstants.EXPRN_APRVL_CD_50)}">
<button type="button" class="btnType05" onclick="fncGoRslt();">결과보고제출</button>
</c:if>
<c:if test="${info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_40}">
<button type="button" class="btnType05" onclick="fncSave('50');">계획서 제출</button>
</c:if>
</div>
<div class="btn_right">

View File

@ -5,6 +5,7 @@
<%@ 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" %>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
@ -104,8 +105,8 @@
</td>
<td>
<a href="javascript:fncGoDetail('${list.eduAplctOrd}');" >
<fmt:parseDate value="${list.oprtnStrtDt}" var="oprtnStrtDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnStrtDt}" pattern="yyyy년"/>
<fmt:parseDate value="${list.frstRegistPnttm}" var="year" pattern="yyyy.MM.dd"/>
<fmt:formatDate value="${year}" pattern="yyyy년"/>
</a>
</td>
<td>
@ -124,33 +125,7 @@
</a>
</td>
<td>
<jsp:useBean id="date" class="java.util.Date" />
<fmt:formatDate value="${date}" pattern="yyyyMMdd" var="now" />
<c:choose>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_60 && list.oprtnStrtDt <= now && now <= list.oprtnEndDt}">
<span class="app_status1">운영진행</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_60 && now > list.oprtnEndDt}">
<span class="app_status1">운영종료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_60}">
<span class="app_status1">운영확정</span>
</c:when>
<c:when test="${list.aprvlCd eq list.aprvlCd eq VeConstants.APRVL_CD_90}">
<span class="app_status1">운영취소</span>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${list.rprtAprvlCd eq '10'}">
<span class="app_status1">(결과보고)</span>
</c:when>
<c:when test="${list.oathAtchFileId ne null || list.planAtchFileId ne null}">
<span class="app_status1">(서류제출)</span>
</c:when>
</c:choose>
<ve:code codeId="VEA013" code="${list.aprvlCd}"/>
</td>
</tr>
</c:forEach>
@ -199,30 +174,43 @@
<span>처리상태</span>
<span>
<c:choose>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_60 && list.oprtnStrtDt <= now && now <= list.oprtnEndDt}">
<span class="app_status1">운영진행</span>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_10}">
<span class="app_status1">운영신청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_60 && now > list.oprtnEndDt}">
<span class="app_status1">운영종료</span>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_11}">
<span class="app_status1">수정요청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_60}">
<span class="app_status1">운영확정</span>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_12}">
<span class="app_status1">운영확정</span>
</c:when>
<c:when test="${list.aprvlCd eq list.aprvlCd eq VeConstants.APRVL_CD_90}">
<span class="app_status1">운영취소</span>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_13}">
<span class="app_status1">수정완료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_20}">
<span class="app_status3">운영확정</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_30}">
<span class="app_status3">서류제출 요청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_40}">
<span class="app_status1">서류제출</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_50}">
<span class="app_status1">운영 진행중</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_60}">
<span class="app_status1">결과보고 완료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_70}">
<span class="app_status1">검토중</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_80}">
<span class="app_status1">운영 종료</span>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="${list.rprtAprvlCd eq '10'}">
<span class="app_status1">(결과보고)</span>
</c:when>
<c:when test="${list.oathAtchFileId ne null || list.planAtchFileId ne null}">
<span class="app_status1">(서류제출)</span>
</c:when>
</c:choose>
</span>
</li>
</ul>

View File

@ -305,7 +305,7 @@
if(fn_innorixCmmAjax(sendData, url) == "OK")
{
fncGoList();
fncStatusChange('60');
}
}
@ -365,7 +365,7 @@
}
if(fn_innorixCmmAjax(sendData, url) == "OK")
{
fncGoList();
fncStatusChange('60');
}
}else{
//업로드 경로 설정 -upload.jsp에서 uploader.setDirectory(innoDirPath) 식으로 사용
@ -416,6 +416,25 @@
control5.setPostData(postObj); // 업로드시 함께 전달될 POST Param 추가
control5.upload();
}
function fncStatusChange(statusVal){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/eduAplctStatusAjax.do",
data: {
"eduAplctOrd" : $("#eduAplctOrd").val() ,
"aprvlCd" : statusVal,
},
dataType:'json',
success:function(returnData){
fncGoList();
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
<form:form id="linkForm" name="linkForm" commandName="vEEduAplctVO" onsubmit="return false;" method="post">

View File

@ -6,6 +6,7 @@
<%@ 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"); %>
@ -35,14 +36,14 @@
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="${info.eduAplctOrd}" />
</form:form>
<div class="cont_wrap" id="sub">
<div class="cont_wrap" id="sub" style="margin-top: 20px;">
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>운영신청 상세</p>
</div>
<div class="tb_tit01_right">
<div class="btn_wrap">
<button type="button" class="btnType05" onclick="nextTab('2');">다음 &#8594;</button>
<!-- <button type="button" class="btnType05" onclick="nextTab('2');">다음 &#8594;</button> -->
</div>
</div>
</div>
@ -115,26 +116,7 @@
<p>처리상태</p>
</th>
<td colspan="3">
<c:choose>
<c:when test="${info.aprvlCd eq VeConstants.APRVL_CD_10}">
<span class="app_status1">운영신청</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.APRVL_CD_70}">
<span class="app_status3">수정요청</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.APRVL_CD_80}">
<span class="app_status3">수정요청완료</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.APRVL_CD_60}">
<span class="app_status1">교육확정</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.APRVL_CD_90}">
<span class="app_status1">교육미확정</span>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
<ve:code codeId="VEA013" code="${info.aprvlCd}"/>
</td>
</tr>
<c:if test="${info.aprvlCd eq '30'}">
@ -274,13 +256,12 @@
<button type="button" class="btnType05" onclick="fncGoEdit();">수정</button>
</c:if>
<!-- 23.07031 - 신청기간 내 수정 기능 추가 - 요청중일때만 수정 가능 -->
<c:if test="${info.aprvlCd eq VeConstants.STATUS_CD_SBMT and cnt > 0}">
<c:if test="${(info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_10 and cnt > 0) or info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_11}">
<button type="button" class="btnType06" onclick="fncGoEdit();">수정</button>
</c:if>
</div>
<div class="btn_right">
<button type="button" class="btnType05" onclick="location.href='<c:url value="/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndList.do"/>'">운영 목록으로 이동</button>
<!-- <button type="button" class="btnType05" onclick="nextTab('2');">서류제출로 이동</button> -->
</div>
</div>
</div>

View File

@ -5,7 +5,7 @@
<%@ 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"); %>
@ -20,27 +20,36 @@
}
</style>
<script type="text/javaScript" language="javascript">
var aprvlCd = ${info.aprvlCd}
if(aprvlCd == '11' || aprvlCd == '12' || aprvlCd == '13'){
aprvlCd = '10';
}
$( document ).ready(function(){
if(${info == null}){
alert("진행 중인 체험교실이 없습니다.");
location.href = "<c:url value='/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctGuide.do'/>"
location.href = "<c:url value='/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctGuide.do'/>";
}else{
$("#p_1").click();
$("#p_"+aprvlCd).parent().attr('class', 'p_on');
$("#p_"+aprvlCd).parent().prevAll().attr('class', 'p_on');
$("#p_"+aprvlCd).css("color", "#FFFF00");
$("#p_"+aprvlCd).click();
}
});
function tabLoad(tab, type){
if(type > aprvlCd){
return false;
}
if($("#loadType").val() != type){
$("#loadType").val(type);
var sendData = $("#loadForm").serializeArray() ;
$("#loadArea").load("<c:url value='/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnDashboardLoadAjax.do' />", sendData ,function(response, status, xhr){
if(status == 'success'){
$(tab).parent().siblings().each(function(index){
var className = $(this).attr('class').split('_on')[0];
$(this).removeClass();
$(this).attr('class', className);
$(this).children('a').css('color', '')
});
$(tab).parent().attr('class',$(tab).parent().attr('class')+'_on')
$(tab).css("color", "#FFFF00");
}else{
alert("조회 실패");
location.href="<c:url value='/web/main/mainPage.do'/>"
@ -67,11 +76,18 @@
</div>
<!-- 체험교실 프로세스 -->
<ul class="ex_process">
<li class="p_1"><a href="#" id="p_1" onclick="tabLoad(this,'1');">신청정보</a></li>
<!-- <li class="p_1"><a href="#" id="p_1" onclick="tabLoad(this,'1');">신청정보</a></li>
<li class="p_2"><a href="#" onclick="tabLoad(this,'2');">서류 제출</a></li>
<li class="p_3"><a href="#" onclick="tabLoad(this,'3');">운영계획</a></li>
<li class="p_4"><a href="#" onclick="tabLoad(this,'4');">결과보고</a></li>
<li class="p_5"><a href="#" onclick="tabLoad(this,'5');">최종결과</a></li>
<li class="p_5"><a href="#" onclick="tabLoad(this,'5');">최종결과</a></li> -->
<li class="p"><a href="#" id="p_10" onclick="tabLoad(this,'10');">운영신청</a></li>
<li class="p"><a href="#" id="p_20" onclick="tabLoad(this,'20');">운영확정</a></li>
<li class="p"><a href="#" id="p_40" onclick="tabLoad(this,'40');">서류제출</a></li>
<li class="p"><a href="#" id="p_50" onclick="tabLoad(this,'50');">운영 진행중</a></li>
<li class="p"><a href="#" id="p_60" onclick="tabLoad(this,'60');">결과보고 완료</a></li>
<li class="p"><a href="#" id="p_70" onclick="tabLoad(this,'70');">검토중</a></li>
<li class="p"><a href="#" id="p_80" onclick="tabLoad(this,'80');">운영종료</a></li>
</ul>
<div id="loadArea">

View File

@ -6,6 +6,7 @@
<%@ 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"); %>
@ -173,26 +174,7 @@
<p>처리상태</p>
</th>
<td colspan="3">
<c:choose>
<c:when test="${info.aprvlCd eq VeConstants.APRVL_CD_10}">
<span class="app_status1">운영신청</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.APRVL_CD_70}">
<span class="app_status3">수정요청</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.APRVL_CD_80}">
<span class="app_status3">수정요청완료</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.APRVL_CD_60}">
<span class="app_status1">교육확정</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.APRVL_CD_90}">
<span class="app_status1">교육미확정</span>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
<ve:code codeId="VEA013" code="${info.aprvlCd}"/>
</td>
</tr>
<c:if test="${info.aprvlCd eq '30'}">
@ -331,7 +313,8 @@
</table>
</div>
<div class="tb_tit01">
<!-- 231130 운영계획 - 고객 요청으로 서류제출 단계로 이동 -->
<%-- <div class="tb_tit01">
<div class="tb_tit01_left">
<p>운영계획</p>
</div>
@ -350,10 +333,10 @@
<p>대상학년/반</p>
</th>
<td>${info.trgtGrade}</td>
<%-- <th scope="row">
<th scope="row">
<p>대상반</p>
</th>
<td>${info.trgtClsrm}</td> --%>
<td>${info.trgtClsrm}</td>
</tr>
<tr class="trLength2">
<th scope="row">
@ -361,12 +344,12 @@
</th>
<td colspan="3">${info.trgtGrade}</td>
</tr>
<%-- <tr class="trLength2">
<tr class="trLength2">
<th scope="row">
<p>대상반</p>
</th>
<td colspan="3">${info.trgtClsrm}</td>
</tr> --%>
</tr>
<tr class="trLength4">
<th scope="row">
<p>대상학생수</p>
@ -466,7 +449,7 @@
</tr>
</tbody>
</table>
</div>
</div> --%>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
@ -474,14 +457,14 @@
<div class="btn_center">
</div>
<div class="btn_right">
<c:if test="${info.aprvlCd eq VeConstants.STATUS_CD_EDT_REQ or info.sbmtYn ne 'Y'}">
<c:if test="${info.aprvlCd eq VeConstants.STATUS_CD_EDT_REQ}">
<%-- <c:if test="${info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_11 or info.sbmtYn ne 'Y'}">
<c:if test="${info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_11}">
<button type="button" class="btnType04" onclick="fncSendSubmit();">제출</button>
</c:if>
<button type="button" class="btnType06" onclick="fncGoEdit();">수정</button>
</c:if>
<!-- 23.07031 - 신청기간 내 수정 기능 추가 - 요청중일때만 수정 가능 -->
<c:if test="${info.aprvlCd eq VeConstants.STATUS_CD_SBMT and cnt > 0}">
</c:if> --%>
<!-- 23.07031 - 신청기간 내 수정 기능 추가 or 수정요청중일때 수정 가능 -->
<c:if test="${(info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_10 and cnt > 0) or info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_11}">
<button type="button" class="btnType06" onclick="fncGoEdit();">수정</button>
</c:if>
<button type="button" class="btnType02 m_btn_block" onclick="fncGoList();">목록</button>

View File

@ -5,6 +5,7 @@
<%@ 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" %>
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
@ -96,11 +97,17 @@
<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.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.EXPRN_APRVL_CD_10 ? 'selected' : ''} value="${VeConstants.EXPRN_APRVL_CD_10}">운영신청</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.EXPRN_APRVL_CD_11 ? 'selected' : ''} value="${VeConstants.EXPRN_APRVL_CD_11}">수정요청</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.EXPRN_APRVL_CD_12 ? 'selected' : ''} value="${VeConstants.EXPRN_APRVL_CD_12}">운영 미확정</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.EXPRN_APRVL_CD_13 ? 'selected' : ''} value="${VeConstants.EXPRN_APRVL_CD_13}">수정완료</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.EXPRN_APRVL_CD_20 ? 'selected' : ''} value="${VeConstants.EXPRN_APRVL_CD_20}">운영확정</option>
<%-- <option ${vEEduAplctVO.searchStatus2 eq VeConstants.EXPRN_APRVL_CD_30 ? 'selected' : ''} value="${VeConstants.EXPRN_APRVL_CD_30}">서류제출 요청</option> --%>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.EXPRN_APRVL_CD_40 ? 'selected' : ''} value="${VeConstants.EXPRN_APRVL_CD_40}">서류제출</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.EXPRN_APRVL_CD_50 ? 'selected' : ''} value="${VeConstants.EXPRN_APRVL_CD_50}">운영 진행중</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.EXPRN_APRVL_CD_60 ? 'selected' : ''} value="${VeConstants.EXPRN_APRVL_CD_60}">운영결과보고 완료</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.EXPRN_APRVL_CD_70 ? 'selected' : ''} value="${VeConstants.EXPRN_APRVL_CD_70}">검토중</option>
<option ${vEEduAplctVO.searchStatus2 eq VeConstants.EXPRN_APRVL_CD_80 ? 'selected' : ''} value="${VeConstants.EXPRN_APRVL_CD_80}">운영종료</option>
</select>
</div>
<div class="btn_wrap">
@ -150,10 +157,8 @@
<td>
<a href="javascript:fncGoDetail('${list.eduAplctOrd}');" >
<!-- 프로세스 변경 후 적용. 신청단계에서는 운영계획이 없어서 등록일을 기준으로 운영년도 보여주기 -->
<%-- <fmt:parseDate value="${list.frstRegistPnttm}" var="frstRegistPnttm" pattern="yyyy.MM.dd"/>
<fmt:formatDate value="${frstRegistPnttm}" pattern="yyyy년"/> --%>
<fmt:parseDate value="${list.oprtnStrtDt}" var="oprtnStrtDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnStrtDt}" pattern="yyyy년"/>
<fmt:parseDate value="${list.frstRegistPnttm}" var="year" pattern="yyyy.MM.dd"/>
<fmt:formatDate value="${year}" pattern="yyyy년"/>
</a>
</td>
<td>
@ -176,9 +181,18 @@
<!-- 프로세스 변경 후 적용-->
<c:choose>
<%-- <c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_10}">
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_10}">
<span class="app_status1">운영신청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_11}">
<span class="app_status1">수정요청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_12}">
<span class="app_status1">운영 미확정</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_13}">
<span class="app_status1">수정완료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_20}">
<span class="app_status3">운영확정</span>
</c:when>
@ -200,24 +214,6 @@
<c:when test="${list.aprvlCd eq VeConstants.EXPRN_APRVL_CD_80}">
<span class="app_status1">운영 종료</span>
</c:when>
<c:otherwise>
-
</c:otherwise> --%>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_10}">
<span class="app_status1">운영신청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_70}">
<span class="app_status3">수정요청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_80}">
<span class="app_status3">수정완료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_60}">
<span class="app_status1">운영확정</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_90}">
<span class="app_status1">운영미확정</span>
</c:when>
<c:otherwise>
-
</c:otherwise>
@ -268,26 +264,7 @@
<li>
<span>처리상태</span>
<span>
<c:choose>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_10}">
<span class="app_status1">운영신청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_70}">
<span class="app_status3">수정요청</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_80}">
<span class="app_status3">수정요청완료</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_60}">
<span class="app_status1">교육확정</span>
</c:when>
<c:when test="${list.aprvlCd eq VeConstants.APRVL_CD_90}">
<span class="app_status1">교육미확정</span>
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
<ve:code codeId="VEA013" code="${info.aprvlCd}"/>
</span>
</li>
</ul>

View File

@ -36,6 +36,11 @@
$("#file_temp").click();
});
// cmpltNoFormat(document.getElementById('cmpltNum'));
if('${info.exprnClsrnCd}' == '02'){
$('input[name="eClsrnYear"]').attr('disabled',true);
$('input[name="eClsrnYear"]').prop('checked',false);
}
});
function oprtnYn(){
@ -182,7 +187,7 @@
$("#sbmtYn").val("N");
}else if(type == 'E'){
$("#sbmtYn").val("Y");
$("#aprvlCd").val(VeConstants.APRVL_CD_80);
$("#aprvlCd").val(VeConstants.EXPRN_APRVL_CD_13);
}else{
$("#sbmtYn").val("Y");
$("#aprvlCd").val(VeConstants.APRVL_CD_10);
@ -262,19 +267,19 @@
$('#exprnClsrnYear').val(arr);
}
if($('#oprtnStrtDt').val() != null){
/* 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){
/* 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(){
@ -392,30 +397,30 @@
}
}
if($('#trgtGrade').val() == ''){
/* if($('#trgtGrade').val() == ''){
alert('학년수를 입력해주세요.');
$("#trgtGrade").focus();
return false;
}
} */
/* if($('#trgtClsrm').val() == ''){
alert('대상반을 입력해주세요.');
$("#trgtClsrm").focus();
return false;
} */
if($('#trgtPrsnl').val() == ''){
/* if($('#trgtPrsnl').val() == ''){
alert('전체학생 수를 입력해주세요.');
$("#trgtPrsnl").focus();
return
false;
}
if($('#needTxtbNum').val() == ''){
} */
/* if($('#needTxtbNum').val() == ''){
alert('필요 교재 수량을 입력해주세요.');
$("#needTxtbNum").focus();
return false;
}
} */
if($('#oprtnStrtDt').val() == ''){
/* if($('#oprtnStrtDt').val() == ''){
alert('운영시기 시작일을 입력해주세요.');
$("#oprtnStrtDt").focus();
return false;
@ -425,11 +430,9 @@
alert('운영시기 종료일을 입력해주세요.');
$("#oprtnEndDt").focus();
return false;
}
} */
/* var oprtnStrtDt = $('#oprtnStrtDt').val();
var oprtnEndDt = $('#oprtnEndDt').val(); */
var oprtnStrtDt = $('duet-date-picker[name=oprtnStrtDt]').val();
/* var oprtnStrtDt = $('duet-date-picker[name=oprtnStrtDt]').val();
var oprtnEndDt = $('duet-date-picker[name=oprtnEndDt]').val();
oprtnStrtDt = oprtnStrtDt.replace(/[.]/gi, '');
@ -439,10 +442,10 @@
alert("시작일이 종료일보다 클 수 없습니다.");
$("#oprtnEndDt").focus();
return false;
}
} */
/* var oprtnStrtDtDate = $('#oprtnStrtDt').val(); */
var oprtnStrtDtDate = $('duet-date-picker[name=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);
@ -463,7 +466,7 @@
if($(".uploaded_obj").length == 0){
alert("파일을 첨부해 주세요.");
return false;
}
} */
if($("#agree1").length > 0 && !$('#agree1').prop('checked')){
alert('개인정보 이용 약관에 동의해주세요.');
@ -579,26 +582,24 @@
$("#exprnClsrnAplctCn").val('');
}
$("#trgtGrade").val(info.trgtGrade);
/* $("#trgtGrade").val(info.trgtGrade); */
/* $("#trgtClsrm").val(info.trgtClsrm); */
$("#trgtPrsnl").val(info.trgtPrsnl);
$("#needTxtbNum").val(info.needTxtbNum);
/* $("#trgtPrsnl").val(info.trgtPrsnl); */
/* $("#needTxtbNum").val(info.needTxtbNum); */
if(isNotEmpty(info.oprtnStrtDt)){
/* $("#oprtnStrtDt").val(dateFormat(info.oprtnStrtDt.replace(/[.]/gi,''), 'date')); */
/* if(isNotEmpty(info.oprtnStrtDt)){
$('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')); */
$('duet-date-picker[name=oprtnEndDt]').val(dateFormat(info.oprtnEndDt.replace(/[.]/gi,''), 'date'))
$('#oprtnEndDt').val(dateFormat(info.oprtnEndDt.replace(/[.]/gi,''), 'date'));
}
} */
$("#oprtnFileId").val(info.oprtnFileId);
/* $("#oprtnFileId").val(info.oprtnFileId); */
var fileTbody = $("#tbody_fiielist");
/* 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);
@ -623,7 +624,7 @@
if(fileList.length > 0){
$(".no_img_box").hide();
$(".fileAfter").show()
}
} */
}
function fncEtcInputEnable(thisObj){
@ -891,7 +892,8 @@
</table>
</div>
<div class="tb_tit01">
<!-- 231130 운영계획 - 고객 요청으로 서류제출 단계로 이동 -->
<%-- <div class="tb_tit01">
<div class="tb_tit01_left">
<p>운영 계획</p>
<span class="cf_text">* 항목은 필수 입력 사항입니다.</span>
@ -917,14 +919,14 @@
<input type="text" name="trgtGrade" id="trgtGrade" maxlength="20" value="${info.trgtGrade}" size="20">
</td>
<!-- 231107 학년과 대상 통합 요청 -->
<%--<th scope="row">
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>대상 반</p>
</th>
<td>
<label for="trgtClsrm" class="label">대상 반 입력</label>
<input type="text" name="trgtClsrm" id="trgtClsrm" value="${info.trgtClsrm}" title="교육인원" size="20"> 반
</td> --%>
</td>
</tr>
<tr>
<th scope="row">
@ -942,26 +944,15 @@
<td class="calendar_td">
<%-- <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> --%>
<div class="calendar_wrap">
<fmt:parseDate value="${info.oprtnStrtDt}" var="oprtnStrtDt" pattern="yyyyMMdd"/>
<%-- <input type="text" class="calendar" id="searchStartDt" name="searchStartDt" title="시작일 선택" value="${vEEduAplctVO.searchStartDt}"> --%>
<input type="text" class="calendar" id="searchStartDt" name="searchStartDt" title="시작일 선택" value="${vEEduAplctVO.searchStartDt}">
<duet-date-picker identifier="date" class="startDate" name="oprtnStrtDt" value="<fmt:formatDate value="${oprtnStrtDt}" pattern="yyyy.MM.dd"/>" pattern="yyyy.MM.dd"></duet-date-picker>
</div>
~
<div class="calendar_wrap">
<fmt:parseDate value="${info.oprtnEndDt}" var="oprtnEndDt" pattern="yyyyMMdd"/>
<%-- <input type="text" class="calendar" id="searchEndDt" name="searchEndDt" title="종료일 선택" value="${vEEduAplctVO.searchEndDt}"> --%>
<input type="text" class="calendar" id="searchEndDt" name="searchEndDt" title="종료일 선택" value="${vEEduAplctVO.searchEndDt}">
<duet-date-picker identifier="date" class="endDate" name="oprtnEndDt" value="<fmt:formatDate value="${oprtnEndDt}" pattern="yyyy.MM.dd"/>"></duet-date-picker>
</div>
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script>
@ -986,86 +977,6 @@
<input type="text" name="needTxtbNum" id="needTxtbNum" onkeyup="onlyNumber(this);" value="${info.needTxtbNum}" title="필요 교재 수량" size="20" maxlength="4">
</td>
</tr>
<%-- <tr>
<th scope="row">
<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>
<button type="button" class="btnType05" onclick="javascript:fn_egov_downFile('<c:out value="${detailVO.atchFileId}"/>','0')">양식 다운로드</button>
<input type="file" id="file_temp" name="file_temp" class="uploadFile" style="display:none"/>
</div>
<div class="file_wrap no_img_box file_upload_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">
<tr>
<td colspan="3">
<p>첨부하실 파일을 <span>마우스끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap file_list_div fileAfter">
<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="tbody_fiielist" class="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="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">
<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>
</table>
</div>
@ -1075,7 +986,6 @@
<dd class="upload_area">
<div class="btn_wrap">
<button type="button" class="btnType01 btn_add_file">파일찾기</button>
<%-- <button type="button" class="btnType05" onclick="javascript:fn_egov_downFile('<c:out value="${detailVO.atchFileId}"/>','0')">양식 다운로드</button> --%>
<input type="file" id="file_temp" name="file_temp" class="uploadFile" style="display:none"/>
</div>
<div class="file_wrap no_img_box file_upload_box">
@ -1146,7 +1056,7 @@
※ 학교장 직인이 포함된 운영신청서 파일을 업로드
</span>
</dd>
</dl>
</dl> --%>
<div class="agree_wrap">
<div class="tb_tit01">
@ -1200,7 +1110,7 @@
</div>
<div class="btn_center">
<c:choose>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_EDT_REQ}">
<c:when test="${info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_11}">
<button type="button" class="btnType06" onclick="fncSave('E'); return false;">저장</button>
</c:when>
<c:otherwise>

View File

@ -28,6 +28,7 @@
margin-bottom: 0;
}
</style>
<script type="text/javaScript" language="javascript">
$( document ).ready(function(){
@ -36,6 +37,139 @@
$("#file_temp").click();
});
//시간 selectbox 관련 content.js에 존재하지만, load로 호출한 페이지라 js의 $( document ).ready 작동 안함
//시간 설정 팝업
$(".time_set_btn").click(function () {
$(this).next($(".time_layer")).addClass("on");
$(".mask2").show();
})
$('.table_time_wrap .time_wrap .time_layer').find(".ampm_select,.hours_select,.min_select").change(function(){
var td = $(this).closest('td');
var len = td.find(".time_wrap").length;
var timeWarp = $(this).closest('.time_wrap');
var idx = $(this).closest('.time_wrap').index();
var houTxt = timeWarp.find(".hours_select option:selected").val();
var minTxt = timeWarp.find(".min_select option:selected").val();
var otherHouTxt = '00';
var otherMinTxt = '00';
var otherObj;
var diffStartTime = '0000';
var diffEndTime = '0000';
var msg = '교육 시작시간이 종료시간보다 큽니다. 확인해주세요.';
var flag = true;
var time = '';
var minute = '';
if(len > 1){
if(idx == 1){
otherObj = td.find('.time_wrap:eq('+0+')');
otherHouTxt = otherObj.find(".hours_select option:selected").val();
otherMinTxt = otherObj.find(".min_select option:selected").val();
diffStartTime = otherHouTxt + otherMinTxt;
diffEndTime = houTxt + minTxt;
msg = '교육 종료시간이 시작시간보다 작습니다. 확인해주세요.';
time = houTxt - otherHouTxt;
minute = minTxt - otherMinTxt;
}else{
otherObj = td.find('.time_wrap:eq('+1+')');
otherHouTxt = otherObj.find(".hours_select option:selected").val();
otherMinTxt = otherObj.find(".min_select option:selected").val();
diffEndTime = otherHouTxt + otherMinTxt;
diffStartTime = houTxt + minTxt;
time = otherHouTxt - houTxt;
minute = otherMinTxt - minTxt;
}
if(diffStartTime.indexOf('선택') == -1 && diffEndTime.indexOf('선택') == -1){
if(diffStartTime > diffEndTime){
flag = false;
alert(msg);
timeWarp.find('.time').val('');
}else{
var lrnTm = (time*60)+minute;
var scholDivCd = $("input[name=scholDivCd]:checked").val();
if(isNotEmpty(scholDivCd)){
// 초등, 특수 , 기타
if(scholDivCd == VeConstants.CLASS_CD_10 || scholDivCd == VeConstants.CLASS_CD_40 || scholDivCd == VeConstants.CLASS_CD_50){
if(lrnTm < VeConstants.CLASS_TM_40){
alert('학교구분이 초등/특수/기타와 같다면 최소교육시간 '+VeConstants.CLASS_TM_40+'분 이상이여야합니다.');
$(this).focus();
flag = false;
}
// 중등
}else if(scholDivCd == VeConstants.CLASS_CD_20 ){
if(lrnTm < VeConstants.CLASS_TM_45){
alert('학교구분이 중등과 같다면 최소교육시간 '+VeConstants.CLASS_TM_45+'분 이상이여야합니다.');
$(this).focus();
flag = false;
}
// 고등
}else if(scholDivCd == VeConstants.CLASS_CD_30){
if(lrnTm < VeConstants.CLASS_TM_50){
alert('학교구분이 고등과 같다면 최소교육시간 '+VeConstants.CLASS_TM_50+'분 이상이여야합니다.');
$(this).focus();
flag = false;
}
}
td.find('.input_time').val('0');
timeWarp.find('.time').val('');
}else{
if(lrnTm < VeConstants.ADULT_TM_60){
alert('성인교육 최소시간 '+VeConstants.ADULT_TM_60+'분 이상이여야합니다.');
$(this).focus();
flag = false;
}
}
if(flag){
td.find('.input_time').val(lrnTm);
}else{
timeWarp.find('.time').val('');
td.find('.input_time').val('0');
}
}
}
}
if(flag){
timeWarp.find('.time').val(houTxt + ":" + minTxt);
}
});
const oprtnStrtDt = document.querySelector(".oprtnStrtDt");
oprtnStrtDt.localization = {
placeholder: '시작일을 입력해주세요.',
selectedDateMessage: 'Selected date is',
prevMonthLabel: '이전 달 보기',
nextMonthLabel: '다음 달 보기',
monthSelectLabel: '달 선택',
yearSelectLabel: '년도 선택',
closeLabel: '달력 닫기',
dayNames: ['일', '월', '화', '수', '목', '금', '토'],
monthNames: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
monthNamesShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
}
const oprtnEndDt = document.querySelector(".oprtnEndDt");
oprtnEndDt.localization = {
placeholder: '종료일을 입력해주세요.',
selectedDateMessage: 'Selected date is',
prevMonthLabel: '이전 달 보기',
nextMonthLabel: '다음 달 보기',
monthSelectLabel: '달 선택',
yearSelectLabel: '년도 선택',
closeLabel: '달력 닫기',
dayNames: ['일', '월', '화', '수', '목', '금', '토'],
monthNames: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
monthNamesShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
}
});
function filePopupLayer(type){
@ -57,8 +191,190 @@
window.open("<c:url value='/cmm/fms/FileDown.do?atchFileId="+atchFileId+"&fileSn=0'/>");
}
</script>
function fncSave(aprvlCd){
if (!validCheck()) return;
url = '${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmInfo/exprnClsrmAplctMdfyAjax.do';
if(confirm("계획서를 제출하시겠습니까?")){
$("#aprvlCd").val('50');
$('input[name="scholDivCd"]').val(""); /* 차시 최소시간 체크를 제외하기 위한 임시 scholDivCd를 update 처리에서 제외하기 위함 */
if($('input[name=oprtnStrtDt]').val() != null){
$('input[name=oprtnStrtDt]').val($('input[name=oprtnStrtDt]').val().replace(/[.]/gi, ''));
}
if($('input[name=oprtnEndDt]').val() != null){
$('input[name=oprtnEndDt]').val($('input[name=oprtnEndDt]').val().replace(/[.]/gi, ''));
}
var data = new FormData(document.getElementById("createForm"));
$.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("제출 되었습니다.");
location.reload();
} else if(status== 'fail'){
alert("등록에 실패하였습니다.");
}
},
error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
function validCheck(){
if($('#trgtGrade').val() == ''){
alert('대상학년/반을 입력해주세요.');
$("#trgtGrade").focus();
return false;
}
if($('#trgtPrsnl').val() == ''){
alert('전체학생 수를 입력해주세요.');
$("#trgtPrsnl").focus();
return
false;
}
if($('#needTxtbNum').val() == ''){
alert('필요 교재 수량을 입력해주세요.');
$("#needTxtbNum").focus();
return false;
}
if($('duet-date-picker[name=oprtnStrtDt]').val() == ''){
alert('운영시기 시작일을 입력해주세요.');
$("#oprtnStrtDt").focus();
return false;
}
if($('duet-date-picker[name=oprtnEndDt]').val() == ''){
alert('운영시기 종료일을 입력해주세요.');
$("#oprtnEndDt").focus();
return false;
}
var oprtnStrtDt = $('duet-date-picker[name=oprtnStrtDt]').val();
var oprtnEndDt = $('duet-date-picker[name=oprtnEndDt]').val();
oprtnStrtDt = oprtnStrtDt.replace(/[.]/gi, '');
oprtnEndDt = oprtnEndDt.replace(/[.]/gi, '');
if(oprtnStrtDt > oprtnEndDt){
alert("시작일이 종료일보다 클 수 없습니다.");
$("#oprtnEndDt").focus();
return false;
}
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);
var oprtnStrtDtDate = new Date(yyyy, mm-1, dd); // 교육희망일을 Date 형태로 변경
var today = new Date();
var tyyyy = today.getFullYear();
var tmm = today.getMonth()+1;
var tdd = today.getDate();
var todayDate = new Date(tyyyy, tmm-1, tdd)
//교육희망일이 오늘보다 전인지 체크
if(oprtnStrtDtDate < todayDate) {
alert('시작일 오늘 이후의 날짜로 입력해주세요.');
return flag = false;
}
var trObj = $('.addClassRow').find('tbody > tr').not('.calendar_wrap tr');
if(trObj.length == 0){
alert('차시별 운영계획 정보를 등록해주세요.');
return false;
}
var flag = true;
$.each(trObj , function(idx, row){
if($(this).find('input[name=eduHopeDt]').val() == ''){
alert('교육희망일 입력해주세요.');
$('input[name=eduHopeDt]:eq('+idx+')').focus();
return flag = false;
}
var eduHopeDt = $(this).find('input[name=eduHopeDt]').val();
var yyyy = eduHopeDt.substr(0,4);
var mm = eduHopeDt.substr(5,2);
var dd = eduHopeDt.substr(8,2);
var eduHopeDtDate = new Date(yyyy, mm-1, dd); // 교육희망일을 Date 형태로 변경
console.log(eduHopeDt);
var today = new Date();
var tyyyy = today.getFullYear();
var tmm = today.getMonth()+1;
var tdd = today.getDate();
var todayDate = new Date(tyyyy, tmm-1, tdd)
if(eduHopeDtDate < todayDate) {
alert('교육희망일은 오늘 이후의 날짜로 입력해주세요.');
return flag = false;
}
if($(this).find('input[name=strtTm]').val() == ''){
alert('교육시작 시간을 입력해주세요.');
$('input[name=strtTm]:eq('+idx+')').focus();
return flag = false;
}
if($(this).find('input[name=strtTm]').val().indexOf('선택') != -1){
alert('교육시작 시간을 입력해주세요.');
$('input[name=strtTm]:eq('+idx+')').focus();
return flag = false;
}
if($(this).find('input[name=endTm]').val() == ''){
alert('교육종료 시간을 입력해주세요.');
$('input[name=endTm]:eq('+idx+')').focus();
return flag = false;
}
if($(this).find('input[name=endTm]').val().indexOf('선택') != -1){
alert('교육종료 시간을 입력해주세요.');
$('input[name=endTm]:eq('+idx+')').focus();
return flag = false;
}
if($(this).find('input[name=lrnSbjct]').val() == ''){
alert('학습주제를 입력해주세요.');
$('input[name=lrnSbjct]:eq('+idx+')').focus();
return flag = false;
}
if($(this).find('input[name=lrnCn]').val() == ''){
alert('지도내용을 입력해주세요.');
$('input[name=lrnCn]:eq('+idx+')').focus();
return flag = false;
}
});
if(!flag){
return false;
}
return true;
}
</script>
<div class="mask2" onclick="timeLayerUtil()"></div>
<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}" />" />
@ -71,15 +387,20 @@
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="${info.eduAplctOrd}" />
</form:form>
<div class="cont_wrap" id="sub">
<!-- 시간 선택 시 교육별 최소 시간 체크 제외를 위한 임시 checkbox -->
<div style="display:none;">
<input type="checkbox" name="scholDivCd" value="exprn" checked>
</div>
<div class="cont_wrap" id="sub" style="margin-top: 20px;">
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>거래선 및 서약서 정보</p>
</div>
<div class="tb_tit01_right">
<div class="btn_wrap">
<button type="button" class="btnType05" onclick="nextTab('1');">&#8592 이전</button>
<button type="button" class="btnType05" onclick="nextTab('3');">다음 &#8594;</button>
<!-- <button type="button" class="btnType05" onclick="nextTab('1');">&#8592 이전</button>
<button type="button" class="btnType05" onclick="nextTab('3');">다음 &#8594;</button> -->
</div>
</div>
</div>
@ -91,36 +412,423 @@
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row"><p>거래선 양식</p></th>
<td>
<button type="button" class="btnType01" onclick="location.href='${pageContext.request.contextPath}/cmm/fms/FileDown.do?atchFileId=FILE_000000000015299&amp;fileSn=2'" title="거래선 양식 다운로드">거래선 양식 다운로드</button>
<p>
<span class="cf_text">※ 거래선 파일은 개인정보 수집 및 보호를 위해 반드시 메일(entt@copyright.or.kr)로 제출하시기 바랍니다.</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><p>서약서 제출</p></th>
<td>
<c:choose>
<c:when test="${info.oathAtchFileId ne null}">
<c:import url="/cmm/fms/selectScholSealInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.oathAtchFileId}" />
</c:import>
<button type="button" class="btnType01" data-tooltip="sub35_pop01" id="OATH" onclick="filePopupLayer('OATH')" title="팝업 열림">서약서 파일 변경</button>
</c:when>
<c:otherwise>
<button type="button" class="btnType01" data-tooltip="sub35_pop01" id="OATH" onclick="filePopupLayer('OATH')" title="팝업 열림">서약서 업로드</button>
</c:otherwise>
</c:choose>
<button type="button" class="btnType01" onclick="location.href='${pageContext.request.contextPath}/cmm/fms/FileDown.do?atchFileId=FILE_000000000015299&amp;fileSn=1'" title="서약서 양식 다운로드">서약서 양식 다운로드</button>
</td>
</tr>
<c:if test="${info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_40}">
<tr>
<th scope="row"><p>거래선 양식</p></th>
<td>
<button type="button" class="btnType01" onclick="location.href='${pageContext.request.contextPath}/cmm/fms/FileDown.do?atchFileId=FILE_000000000015299&amp;fileSn=2'" title="거래선 양식 다운로드">거래선 양식 다운로드</button>
<p>
<span class="cf_text">※ 거래선 파일은 개인정보 수집 및 보호를 위해 반드시 메일(entt@copyright.or.kr)로 제출하시기 바랍니다.</span>
</p>
</td>
</tr>
<tr>
<th scope="row"><p>서약서 제출</p></th>
<td>
<c:choose>
<c:when test="${info.oathAtchFileId ne null}">
<c:import url="/cmm/fms/selectScholSealInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.oathAtchFileId}" />
</c:import>
<button type="button" class="btnType01" data-tooltip="sub35_pop01" id="OATH" onclick="filePopupLayer('OATH')" title="팝업 열림">서약서 파일 변경</button>
</c:when>
<c:otherwise>
<button type="button" class="btnType01" data-tooltip="sub35_pop01" id="OATH" onclick="filePopupLayer('OATH')" title="팝업 열림">서약서 업로드</button>
</c:otherwise>
</c:choose>
<button type="button" class="btnType01" onclick="location.href='${pageContext.request.contextPath}/cmm/fms/FileDown.do?atchFileId=FILE_000000000015299&amp;fileSn=1'" title="서약서 양식 다운로드">서약서 양식 다운로드</button>
</td>
</tr>
</c:if>
<c:if test="${info.aprvlCd > VeConstants.EXPRN_APRVL_CD_40}">
<tr>
<th scope="row"><p>서약서 제출</p></th>
<td>
<c:import url="/cmm/fms/selectScholSealInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.oathAtchFileId}" />
</c:import>
</td>
</tr>
</c:if>
</tbody>
</table>
</div>
<form:form id="createForm" name="createForm" commandName="modelVO" onsubmit="return false;">
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="${info.eduAplctOrd}" />
<input type="hidden" name="aprvlCd" id="aprvlCd" value=""/><!-- 승인코드 -->
<c:if test="${info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_40}">
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>운영 계획</p>
<span class="cf_text">* 항목은 필수 입력 사항입니다.</span>
</div>
</div>
<div class="tb_type01 tb_write tb_input">
<table>
<caption>운영 계획 (th 명)을 입력하는 표</caption>
<colgroup>
<col style="width: 150px;">
<col style="width: auto;">
<col style="width: 150px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>대상학년/반</p>
</th>
<td>
<label for="trgtGrade" class="label">대상 학년 입력</label>
<input type="text" name="trgtGrade" id="trgtGrade" maxlength="20" value="${info.trgtGrade}" size="20">
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>전체학생 수</p>
</th>
<td>
<label for="trgtPrsnl" class="label">학생 수 입력</label>
<input type="text" name="trgtPrsnl" id="trgtPrsnl" onkeyup="onlyNumber(this);" maxlength="4" value="${info.trgtPrsnl}" size="20"> 명
</td>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>운영시기</p>
</th>
<td class="calendar_td">
<div class="calendar_wrap">
<duet-date-picker identifier="date" class="oprtnStrtDt" name="oprtnStrtDt" value="" pattern="yyyy.MM.dd"/></duet-date-picker>
</div>
~
<div class="calendar_wrap">
<duet-date-picker identifier="date" class="oprtnEndDt" name="oprtnEndDt" value="" pattern="yyyy.MM.dd"/></duet-date-picker>
</div>
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script>
<script>
$(window).on("load",function(){
//title 변경
$(".startDate .duet-date__input").attr("title","운영시기 시작날짜를 YYYY.MM.DD 형식으로 입력해주세요");
$(".endDate .duet-date__input").attr("title","운영시기 종료날짜를 YYYY.MM.DD 형식으로 입력해주세요");
});
</script>
</td>
</tr>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>필요 교재 수량</p>
</th>
<td>
<label for="needTxtbNum" class="label">필요 교재 수량 입력</label>
<input type="text" name="needTxtbNum" id="needTxtbNum" onkeyup="onlyNumber(this);" value="${info.needTxtbNum}" title="필요 교재 수량" size="20" maxlength="4">
</td>
</tr>
</tbody>
</table>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left" style="display: block;">
<p>차시별 운영계획</p>
<span class="cf_text2" style="display:block; padding-left:0; padding-top: 6px;">※ 운영지원금 지원을 위한 계획서(계획은 웅영에따 따라 변경 가능)<br/>※ 담당교사의 재량으로 자율 편성하되, 1일 최대 2차시까지만 운영 가능</span>
</div>
<div class="btn_wrap">
<button type="button" class="btnType05" title="교육차시 입력테이블 추가생성" onclick="addEduClassCopyTngr('addClassRow')">교육추가</button>
</div>
</div>
<div class="tb_type02 tb_type02_write">
<table class="addClassRow" rowLimit="1" >
<colgroup>
<col style="width: 20%;">
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 12%;">
<col style="width: 9%;">
<col style="width: 6%;">
</colgroup>
<thead>
<tr>
<th scope="col"><p class="req_text"><span>필수입력 항목</span>*</p>교육희망일</th>
<th scope="col"><p class="req_text"><span>필수입력 항목</span>*</p>시간</th>
<th scope="col"><p class="req_text"><span>필수입력 항목</span>*</p>학습주제</th>
<th scope="col"><p class="req_text"><span>필수입력 항목</span>*</p>지도내용</th>
<th scope="col">비고</th>
<th scope="col">삭제</th>
</tr>
</thead>
<tbody>
<tr>
<th class="calendar_th">
<div class="calendar_wrap">
<duet-date-picker identifier="date" class="startDate" name="eduHopeDt"></duet-date-picker>
</div>
</th>
<td>
<div class="table_time_wrap">
<div class="time_wrap time_select_wrap">
<input type="text" class="time" name="strtTm" title="시작 시간 입력" readonly>
<button type="button" title="팝업 열림" class="time_set_btn"><img src="<c:url value='/visitEdu/usr/publish/images/content/timeIcon.png'/>" alt="시작 시간 선택"></button>
<div class="time_layer">
<div class="time_top">
<p>시간 선택</p>
</div>
<div class="time_cont">
<div class="hours">
<select name="st_hours" class="hours_select" title="시 선택">
<option value="선택">선택</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
</select>
</div>
:
<div class="min">
<select name="st_minute" class="min_select" title="분 선택">
<option value="선택">선택</option>
<option value="00">00</option>
<option value="05">05</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="20">20</option>
<option value="25">25</option>
<option value="30">30</option>
<option value="35">35</option>
<option value="40">40</option>
<option value="45">45</option>
<option value="50">50</option>
<option value="55">55</option>
</select>
</div>
</div>
<button type="button" class="time_close" onclick="timeLayerUtil()" title="팝업 닫기"><i></i>닫기</button>
</div>
</div>
<div class="time_wrap time_select_wrap">
<input type="text" class="time" name="endTm" title="종료 시간 입력" readonly>
<button type="button" title="팝업 열림" class="time_set_btn"><img src="<c:url value='/visitEdu/usr/publish/images/content/timeIcon.png'/>" alt="종료 시간 선택"></button>
<div class="time_layer">
<div class="time_top">
<p>시간 선택</p>
</div>
<div class="time_cont">
<div class="hours">
<select name="en_hours" class="hours_select" title="시 선택">
<option value="선택">선택</option>
<option value="01">01</option>
<option value="02">02</option>
<option value="03">03</option>
<option value="04">04</option>
<option value="05">05</option>
<option value="06">06</option>
<option value="07">07</option>
<option value="08">08</option>
<option value="09">09</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
</select>
</div>
:
<div class="min">
<select name="en_minute" class="min_select" title="분 선택">
<option value="선택">선택</option>
<option value="00">00</option>
<option value="05">05</option>
<option value="10">10</option>
<option value="15">15</option>
<option value="20">20</option>
<option value="25">25</option>
<option value="30">30</option>
<option value="35">35</option>
<option value="40">40</option>
<option value="45">45</option>
<option value="50">50</option>
<option value="55">55</option>
</select>
</div>
</div>
<button type="button" class="time_close" onclick="timeLayerUtil()" title="팝업 닫기"><i></i>닫기</button>
</div>
</div>(<input type="text" readonly="readonly" class="input_time" name="lrnTm" title="교육 시간">분)
</div>
</td>
<td>
<label for="lrnSbjct" class="label">학습주제</label>
<input type="text" id="lrnSbjct" name="lrnSbjct" maxlength="50">
</td>
<td>
<label for="lrnCn" class="label">지도내용</label>
<input type="text"" id="lrnCn" name="lrnCn" maxlength="50">
</td>
<td>
<label for="text" class="label">비고</label>
<input type="text" id="rmrks" name="rmrks" maxlength="50" >
</td>
<td><button type="button" class="table_del" onclick="tableDel(this)" title="해당 교육차시 정보 삭제"><img alt="" src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/del_btn.png"></button></td>
</tr>
</tbody>
</table>
<script src="<c:url value='/visitEdu/usr/publish/script/duetdatepicker2.js' /> "></script>
</div>
</c:if>
<c:if test="${info.aprvlCd > VeConstants.EXPRN_APRVL_CD_40}">
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>운영계획</p>
</div>
</div>
<div class="tb_type01 tb_write">
<table>
<caption>운영계획 (th 명)을 보여주는 표</caption>
<colgroup>
<col style="width: 220px;">
<col style="width: auto;">
<col style="width: 220px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">
<p>대상학년/반</p>
</th>
<td>${info.trgtGrade}</td>
</tr>
<tr>
<th scope="row">
<p>대상학생수</p>
</th>
<td>
${info.trgtPrsnl}
</td>
<th scope="row">
<p>운영시기</p>
</th>
<td>
<fmt:parseDate value="${info.oprtnStrtDt}" var="oprtnStrtDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnStrtDt}" pattern="yyyy.MM.dd"/>
~
<fmt:parseDate value="${info.oprtnEndDt}" var="oprtnEndDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnEndDt}" pattern="yyyy.MM.dd"/>
</td>
</tr>
<tr>
<th scope="row">
<p>필요 교재 수량</p>
</th>
<td>
${info.needTxtbNum}
</td>
</tr>
</tbody>
</table>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left" style="display: block;">
<p>차시별 운영계획</p>
<span class="cf_text2" style="display:block; padding-left:0; padding-top: 6px;">※ 운영지원금 지원을 위한 계획서(계획은 웅영에따 따라 변경 가능)<br/>※ 담당교사의 재량으로 자율 편성하되, 1일 최대 2차시까지만 운영 가능</span>
</div>
</div>
<div class="tb_type02 tb_type02_write">
<table class="addClassRow" rowLimit="1" >
<colgroup>
<col style="width: 10%;">
<col style="width: 15%;">
<col style="width: auto;">
<col style="width: 30%;">
<col style="width: 15%;">
</colgroup>
<thead>
<tr>
<th scope="col">교육희망일</th>
<th scope="col">시간</th>
<th scope="col">학습주제</th>
<th scope="col">지도내용</th>
<th scope="col">비고</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${chasiList}" varStatus="status">
<tr>
<th>
<c:choose>
<c:when test="${not empty list.eduHopeDt}">
${list.eduHopeDt}
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</th>
<td>
<fmt:parseDate value="${list.strtTm}" var="strtTm" pattern="kkmm"/>
<fmt:formatDate value="${strtTm}" pattern="kk:mm"/>
~
<fmt:parseDate value="${list.endTm}" var="endTm" pattern="kkmm"/>
<fmt:formatDate value="${endTm}" pattern="kk:mm"/>
(${list.lrnTm}분)
</td>
<td>${list.lrnSbjct}</td>
<td>${list.lrnCn}</td>
<td>${list.rmrks}</td>
</tr>
</c:forEach>
<c:if test="${fn:length(chasiList) eq 0}">
<tr>
<td colspan="5"><spring:message code="common.nodata.msg" /></td>
</tr>
</c:if>
</tbody>
</table>
</div>
</c:if>
</form:form>
</div>
</div>
<div class="btn_wrap btn_layout01">
@ -130,8 +838,13 @@
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btnType05" onclick="location.href='<c:url value="/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndList.do"/>'">운영 목록으로 이동</button>
<!-- <button type="button" class="btnType05" onclick="nextTab('3');">운영계획으로 이동</button> -->
<%-- <button type="button" class="btnType05" onclick="location.href='<c:url value="/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndList.do"/>'">운영 목록으로 이동</button> --%>
<c:if test="${info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_40}">
<button type="button" class="btnType05" onclick="fncSave('50');">계획서 제출</button>
</c:if>
<c:if test="${info.aprvlCd eq VeConstants.EXPRN_APRVL_CD_50 or rsltAllYn eq 'N'}">
<button type="button" class="btnType05" onclick="fncGoRslt();">결과보고제출</button>
</c:if>
</div>
</div>
</div>

View File

@ -48,15 +48,15 @@
<input type="hidden" name="eduAplctOrd" id="eduAplctOrd" value="${info.eduAplctOrd}" />
</form:form>
<div class="cont_wrap" id="sub">
<div class="cont_wrap" id="sub" >
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>운영계획</p>
</div>
<div class="tb_tit01_right">
<div class="btn_wrap">
<button type="button" class="btnType05" onclick="nextTab('2');">&#8592 이전</button>
<button type="button" class="btnType05" onclick="nextTab('4');">다음 &#8594;</button>
<!-- <button type="button" class="btnType05" onclick="nextTab('2');">&#8592 이전</button>
<button type="button" class="btnType05" onclick="nextTab('4');">다음 &#8594;</button> -->
</div>
</div>
</div>
@ -186,7 +186,6 @@
</div>
<div class="btn_right">
<button type="button" class="btnType05" onclick="location.href='<c:url value="/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndList.do"/>'">운영 목록으로 이동</button>
<!-- <button type="button" class="btnType05" onclick="nextTab('4');">결과보고로 이동</button> -->
</div>
</div>
</div>

View File

@ -305,7 +305,7 @@
if(fn_innorixCmmAjax(sendData, url) == "OK")
{
fncGoList();
fncStatusChange('60');
}
}
@ -365,7 +365,7 @@
}
if(fn_innorixCmmAjax(sendData, url) == "OK")
{
fncGoList();
fncStatusChange('60');
}
}else{
//업로드 경로 설정 -upload.jsp에서 uploader.setDirectory(innoDirPath) 식으로 사용
@ -378,6 +378,25 @@
}
}
function fncStatusChange(statusVal){
$.ajax({
type:"POST",
url:"${pageContext.request.contextPath}/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/eduAplctStatusAjax.do",
data: {
"eduAplctOrd" : $("#eduAplctOrd").val() ,
"aprvlCd" : statusVal,
},
dataType:'json',
success:function(returnData){
location.reload();
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
function fncTmprrSave(){
//첨부파일이 변경됐을시만 업로드. 임시저장으로 인하여 비교 필요
@ -426,15 +445,15 @@
</form:form>
<div class="cont_wrap" id="sub">
<div class="cont_wrap" id="sub" style="margin-top: 20px;">
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>결과보고</p>
</div>
<div class="tb_tit01_right">
<div class="btn_wrap">
<button type="button" class="btnType05" onclick="nextTab('3');">&#8592 이전</button>
<button type="button" class="btnType05" onclick="nextTab('5');">다음 &#8594;</button>
<!-- <button type="button" class="btnType05" onclick="nextTab('3');">&#8592 이전</button>
<button type="button" class="btnType05" onclick="nextTab('5');">다음 &#8594;</button> -->
</div>
</div>
</div>
@ -616,7 +635,6 @@
<div id="fileControl5" style="display:none"></div>
</c:if>
<button type="button" class="btnType05" onclick="location.href='<c:url value="/web/ve/aplct/cpyrgExprnClsrm/exprnClsrmEnd/exprnClsrmEndList.do"/>'">운영 목록으로 이동</button>
<!-- <button type="button" class="btnType05" onclick="nextTab('5');">최종결과로 이동</button> -->
</div>
</div>

View File

@ -6,6 +6,7 @@
<%@ 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"); %>
@ -240,14 +241,14 @@
<div id="beforePrintPopupLoad"></div>
<div id="afterPrintPopupLoad"></div>
<div class="cont_wrap" id="sub">
<div class="cont_wrap" id="sub" style="margin-top: 20px;">
<div class="tb_tit01">
<div class="tb_tit01_left">
<p>운영내역 상세</p>
</div>
<div class="tb_tit01_right">
<div class="btn_wrap">
<button type="button" class="btnType05" onclick="nextTab('4');">&#8592 이전</button>
<!-- <button type="button" class="btnType05" onclick="nextTab('4');">&#8592 이전</button> -->
</div>
</div>
</div>
@ -289,38 +290,10 @@
<p>처리상태</p>
</th>
<td colspan="3">
<c:choose>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_SBMT}">
<span class="app_status1">교육신청</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_CFRM}">
<span class="app_status2">교육승인</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_RJT}">
<span class="app_status4">교육반려</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_CAN}">
<span class="app_status4">교육취소</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_CHI_CMPT}">
<span class="app_status4">선정완료</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_EDT_REQ}">
<span class="app_status3">수정요청</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_EDT_CMPT}">
<span class="app_status3">수정요청완료</span>
</c:when>
<c:when test="${info.aprvlCd eq VeConstants.STATUS_CD_EDU_SELCT}">
<span class="app_status1">교육확정</span>
</c:when>
<c:otherwise>
임시저장
</c:otherwise>
</c:choose>
<ve:code codeId="VEA013" code="${info.aprvlCd}"/>
</td>
</tr>
<c:if test="${info.aprvlCd eq '30'}">
<c:if test="${info.aprvlCd eq '12'}">
<tr>
<th scope="row">
<p>반려사유</p>
@ -430,45 +403,21 @@
</td>
</tr>
<tr>
<!-- <th scope="row"><p>거래선 등록 여부</p></th> -->
<%-- <tr>
<th scope="row"><p>거래선 양식</p></th>
<td>
<!-- 22.03.22 고객사 요청으로 숨김 -->
<%--
<c:choose>
<c:when test="${info.transAtchFileId ne null}">
<c:import url="/cmm/fms/selectSimpleDownInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.transAtchFileId}" />
</c:import>
<button type="button" class="btnType01" onclick="filePopupLayer('TRANS')">거래선 파일 변경</button>
</c:when>
<c:otherwise>
<button type="button" class="btnType01" onclick="filePopupLayer('TRANS')">거래선 업로드</button>
</c:otherwise>
</c:choose>
--%>
<button type="button" class="btnType01" onclick="location.href='${pageContext.request.contextPath}/cmm/fms/FileDown.do?atchFileId=FILE_000000000015299&amp;fileSn=2'" title="거래선 양식 다운로드">거래선 양식 다운로드</button>
<p>
<span class="cf_text">※ 거래선 파일은 개인정보 수집 및 보호를 위해 반드시 메일(entt@copyright.or.kr)로 제출하시기 바랍니다.</span>
</p>
</td>
</tr>
</tr> --%>
<tr>
<th scope="row"><p>서약서 제출</p></th>
<td>
<c:choose>
<c:when test="${info.oathAtchFileId ne null}">
<c:import url="/cmm/fms/selectScholSealInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.oathAtchFileId}" />
</c:import>
<button type="button" class="btnType01" data-tooltip="sub35_pop01" id="OATH" onclick="filePopupLayer('OATH')" title="팝업 열림">서약서 파일 변경</button>
</c:when>
<c:otherwise>
<button type="button" class="btnType01" data-tooltip="sub35_pop01" id="OATH" onclick="filePopupLayer('OATH')" title="팝업 열림">서약서 업로드</button>
</c:otherwise>
</c:choose>
<button type="button" class="btnType01" onclick="location.href='${pageContext.request.contextPath}/cmm/fms/FileDown.do?atchFileId=FILE_000000000015299&amp;fileSn=1'" title="서약서 양식 다운로드">서약서 양식 다운로드</button>
<c:import url="/cmm/fms/selectScholSealInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.oathAtchFileId}" />
</c:import>
</td>
</tr>
</tbody>
@ -517,16 +466,6 @@
<fmt:parseDate value="${info.oprtnEndDt}" var="oprtnEndDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnEndDt}" pattern="yyyy.MM.dd"/>
</td>
<!--
<th scope="row">
<p>보고서 제출일(예정)</p>
</th>
<td>
<fmt:parseDate value="${info.rprtSbmt}" var="rprtSbmt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${rprtSbmt}" pattern="yyyy.MM.dd"/>
</td>
-->
</tr>
<tr>
<th scope="row">
@ -536,42 +475,65 @@
${info.needTxtbNum}
</td>
</tr>
<!--
</tbody>
</table>
</div>
<div class="tb_tit01">
<div class="tb_tit01_left" style="display: block;">
<p>차시별 운영계획</p>
<span class="cf_text2" style="display:block; padding-left:0; padding-top: 6px;">※ 운영지원금 지원을 위한 계획서(계획은 웅영에따 따라 변경 가능)<br/>※ 담당교사의 재량으로 자율 편성하되, 1일 최대 2차시까지만 운영 가능</span>
</div>
</div>
<div class="tb_type02 tb_type02_write">
<table class="addClassRow" rowLimit="1" >
<colgroup>
<col style="width: 10%;">
<col style="width: 15%;">
<col style="width: auto;">
<col style="width: 30%;">
<col style="width: 15%;">
</colgroup>
<thead>
<tr>
<th scope="row">
<p>운영시기</p>
</th>
<td colspan="3">
<fmt:parseDate value="${info.oprtnStrtDt}" var="oprtnStrtDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnStrtDt}" pattern="yyyy.MM.dd"/>
~
<fmt:parseDate value="${info.oprtnEndDt}" var="oprtnEndDt" pattern="yyyyMMdd"/>
<fmt:formatDate value="${oprtnEndDt}" pattern="yyyy.MM.dd"/>
</td>
</tr>
-->
<tr>
<th scope="row">
<p>첨부파일</p>
</th>
<td class="file_download onlyFile" colspan="3">
<c:import url="/cmm/fms/selectScholSealInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.oprtnFileId}" />
</c:import>
</td>
</tr>
<tr>
<th scope="row"><p>차시별 계획서 제출</p></th>
<td colspan="3">
<c:if test="${info.planAtchFileId ne null}">
<c:import url="/cmm/fms/selectScholSealInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${info.planAtchFileId}" />
</c:import>
</c:if>
<button type="button" class="btnType01" data-tooltip="sub35_pop01" id="PLAN" onclick="filePopupLayer('PLAN')" title="팝업 열림">계획서 업로드</button>
<button type="button" class="btnType01" onclick="location.href='${pageContext.request.contextPath}/cmm/fms/FileDown.do?atchFileId=FILE_000000000015299&amp;fileSn=0'" title="계획서 양식 다운로드">계획서 양식 다운로드</button>
</td>
<th scope="col">교육희망일</th>
<th scope="col">시간</th>
<th scope="col">학습주제</th>
<th scope="col">지도내용</th>
<th scope="col">비고</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${chasiList}" varStatus="status">
<tr>
<th>
<c:choose>
<c:when test="${not empty list.eduHopeDt}">
${list.eduHopeDt}
</c:when>
<c:otherwise>
-
</c:otherwise>
</c:choose>
</th>
<td>
<fmt:parseDate value="${list.strtTm}" var="strtTm" pattern="kkmm"/>
<fmt:formatDate value="${strtTm}" pattern="kk:mm"/>
~
<fmt:parseDate value="${list.endTm}" var="endTm" pattern="kkmm"/>
<fmt:formatDate value="${endTm}" pattern="kk:mm"/>
(${list.lrnTm}분)
</td>
<td>${list.lrnSbjct}</td>
<td>${list.lrnCn}</td>
<td>${list.rmrks}</td>
</tr>
</c:forEach>
<c:if test="${fn:length(chasiList) eq 0}">
<tr>
<td colspan="5"><spring:message code="common.nodata.msg" /></td>
</tr>
</c:if>
</tbody>
</table>
</div>
@ -710,7 +672,7 @@
<!-- 231101 요청사항으로 교육콘텐츠 관련 메뉴 삭제 -->
<!-- <button type="button" class="btnType04" onclick="fncGoLctrAplctReg();">교육콘텐츠 신청</button> -->
<c:if test="${info.exprnAprvlCd ne '10'}">
<button type="button" class="btnType05" onclick="nextTab('4');;">결과보고제출</button>
<!-- <button type="button" class="btnType05" onclick="nextTab('4');;">결과보고제출</button> -->
</c:if>
</div>
<div class="btn_right">

View File

@ -66,4 +66,16 @@ var VeConstants = {
ADULT_TM_60 : "60", // 성인 시간
EXPRN_APRVL_CD_10 : "10", // 운영신청
EXPRN_APRVL_CD_11 : "11", // 수정요청
EXPRN_APRVL_CD_12 : "12", // 운영 미확정
EXPRN_APRVL_CD_13 : "13", // 수정완료
EXPRN_APRVL_CD_20 : "20", // 운영확정
EXPRN_APRVL_CD_30 : "30", // 서류제출 요청
EXPRN_APRVL_CD_40 : "40", // 서류제출
EXPRN_APRVL_CD_50 : "50", // 운영 진행중
EXPRN_APRVL_CD_60 : "60", // 결과보고 완료
EXPRN_APRVL_CD_70 : "70", // 검토중
EXPRN_APRVL_CD_80 : "80" // 운영종료
}

View File

@ -362,7 +362,7 @@ select.selType1 {height: 40px; border: 1px solid #d5d5d5; border-radius: 5px; pa
.tb_list02 table .btnType06 {border-radius:5px; padding:5px 10px; font-size:15px;}
/*체험교실대시보드 - 5단계(감리용)*/
.ex_process {display:flex; justify-content:space-between; background:#f5f5f5; border:1px solid #cbcbcb; width:100%; border-radius:10px; margin: 0 0 40px 0; }
/* .ex_process {display:flex; justify-content:space-between; background:#f5f5f5; border:1px solid #cbcbcb; width:100%; border-radius:10px; margin: 0 0 40px 0; }
.ex_process li {position:relative; background-position:25 center; background-repeat: no-repeat; width:20%; color:#666; font-size:22px; font-weight:500; letter-spacing:-0.5; }
.ex_process li a {width:100%; padding:0; box-sizing: border-box; padding:45px 0 45px 125px ;}
.ex_process li.p_1 {background-image: url(../images/content/ex_process1.png); background-position:50px center;}
@ -376,14 +376,14 @@ select.selType1 {height: 40px; border: 1px solid #d5d5d5; border-radius: 5px; pa
.ex_process li.p_4_on {background-image: url(../images/content/ex_process4_on.png); background-position:50px center; background-color:#f37632; border-radius:10px; color:#fff; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.3);}
.ex_process li.p_5_on {background-image: url(../images/content/ex_process5_on.png); background-position:50px center; background-color:#f37632; border-radius:10px; color:#fff; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.3);}
.ex_process li::after {position:absolute; content:""; width:1px; height:60px; background-color: #d5d5d5; right: 0; align-items: center; margin:-85px 0 0 0;}
.ex_process li.p_1_on::after, li.p_2_on::after, li.p_3_on::after, li.p_4_on::after, li.p_5::after, li.p_5_on::after {display:none; }
.ex_process li.p_1_on::after, li.p_2_on::after, li.p_3_on::after, li.p_4_on::after, li.p_5::after, li.p_5_on::after {display:none; } */
/*체험교실대시보드 7단계
/* 체험교실대시보드 7단계 */
.ex_process {display:flex; justify-content:space-between;}
.ex_process li {border-radius: 10px; width:13.5%; text-align: center; color:#fff; padding:15px 0 18px 0; font-size:22px;}
.ex_process li.p {background-color: #a7acb6;}
.ex_process li.p_on {background-color:#f37632;}
*/
/* 첨부파일 */
.tb_type01.attach {margin-bottom: 10px;}
@ -878,7 +878,7 @@ select.selType1 {height: 40px; border: 1px solid #d5d5d5; border-radius: 5px; pa
.sel_tpye {margin: 100px 120px 24px 120px;}
/*체험교실대시보드 5단계 (감리용)*/
.ex_process {background:#f5f5f5; border:1px solid #cbcbcb; width:100%; border-radius:10px; margin: 0; margin:0 0 30px 0; }
/* .ex_process {background:#f5f5f5; border:1px solid #cbcbcb; width:100%; border-radius:10px; margin: 0; margin:0 0 30px 0; }
.ex_process li {position:relative; background-position:25 center; background-repeat: no-repeat; width:20%; color:#666; font-size:17px; letter-spacing: -1px; font-weight:500;}
.ex_process li a { padding:20px 0; text-align:center;}
.ex_process li.p_1_on {background-image: none;}
@ -892,12 +892,12 @@ select.selType1 {height: 40px; border: 1px solid #d5d5d5; border-radius: 5px; pa
.ex_process li.p_4 {background-image: none;}
.ex_process li.p_5 {background-image: none;}
.ex_process li::after {position:absolute; content:""; width:1px; height:30px; background-color: #d5d5d5; right: 0; margin:-45px 0 0 0;}
.ex_process li.p_1_on::after, li.p_2_on::after, li.p_3_on::after, li.p_4_on::after, li.p_5_on::after {display:none; }
.ex_process li.p_1_on::after, li.p_2_on::after, li.p_3_on::after, li.p_4_on::after, li.p_5_on::after {display:none; } */
/*체험교실대시보드 7단계
/* 체험교실대시보드 7단계 */
.ex_process li {font-size:18px; padding:8px 3px 10px 3px; border-radius:5px; width:12%; line-height:20px; display: flex; align-items: center; justify-content: center;}
*/
}
@media all and (max-width: 860px){