Merge branch 'master' into sub

임시 커밋 - 정수빈
This commit is contained in:
subsub 2025-10-29 10:33:43 +09:00
commit 1a67655492
37 changed files with 3621 additions and 250 deletions

View File

@ -68,6 +68,7 @@ public class EgovSessionMapping extends EgovUsersByUsernameMapping {
String strOrgnztNm = rs.getString("orgnzt_nm");
String strAuthority = rs.getString("authority");
String strMberSeq = rs.getString("mber_seq");
String strJoinType = rs.getString("join_type");
HttpServletRequest request = ((ServletRequestAttributes)
@ -88,6 +89,7 @@ public class EgovSessionMapping extends EgovUsersByUsernameMapping {
loginVO.setOrgnztNm(strOrgnztNm);
loginVO.setAuthority(strAuthority);
loginVO.setMembSeq(strMberSeq);
loginVO.setJoinType(strJoinType);
request.getSession().setAttribute("LoginVO", loginVO); // LoginVO세션 생성

View File

@ -1849,11 +1849,18 @@ public class EgovLoginController {
// 관리자 로그인
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
System.out.println("===========actionMain===========2");
System.out.println(loginService.getUserAuth(user).getAuthority());
System.out.println(user.getAuthority());
if ("ROLE_ADMIN".equals(loginService.getUserAuth(user).getAuthority())) { // 수퍼관리자 경우
String authStr = user.getAuthority();
if(
"0".equals(user.getJoinType())
&& ("ROLE_ADMIN".equals(authStr)
|| "ROLE_VISIT".equals(authStr)
|| "ROLE_ADR_JRSDC".equals(authStr)
|| "ROLE_ADR_KIPO".equals(authStr)
|| "ROLE_ADR_PREV".equals(authStr))
) { //관리자 계정 생성 비밀번호를 한번도 변경하지 않은경우 비밀번호 변경 페이지로 이동
return "redirect:/uss/umt/user/EgovUserSelectUpdtView4Self.do";
} else if ("ROLE_ADMIN".equals(loginService.getUserAuth(user).getAuthority())) { // 수퍼관리자 경우
return "redirect:/cmm/main/mainPage.do";
} else if ("ROLE_USER_MANAGER".equals(user.getAuthority())) {
return "redirect:/web/main/mainPage.do";

View File

@ -180,6 +180,8 @@ public class UserManageVO extends UserDefaultVO{
private String mberCi;
private String joinType;
public String getAuthorCode() {
return authorCode;
}
@ -723,6 +725,13 @@ public class UserManageVO extends UserDefaultVO{
public void setMberCi(String mberCi) {
this.mberCi = mberCi;
}
public String getJoinType() {
return joinType;
}
public void setJoinType(String joinType) {
this.joinType = joinType;
}

View File

@ -131,6 +131,8 @@ public class EgovUserManageServiceImpl extends EgovAbstractServiceImpl implement
//pass = EgovFileScrty.encryptPassword(userManageVO.getPassword(), userManageVO.getEmplyrId());
pass = EgovNewPasswordUtil.hashPassword(userManageVO.getPassword());
userManageVO.setPassword(pass);
//사용자가 비밀번호 변경해야함
userManageVO.setJoinType("0");
}else {
//관리자 이외
userManageVO.setPassword(pass);

View File

@ -57,6 +57,7 @@ import kcc.com.cmm.service.EgovFileMngService;
import kcc.com.cmm.service.EgovFileMngUtil;
import kcc.com.cmm.util.EgovDoubleSubmitHelper;
import kcc.com.cmm.util.RedirectUrlMaker;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.fcc.service.EgovStringUtil;
import kcc.let.org.service.LocVO;
import kcc.let.org.service.OrgChartManageService;
@ -2482,6 +2483,14 @@ public class EgovUserManageController {
p_model.addAttribute("userOneDepth", userOneDepth);
p_model.addAttribute("userTwoDepth", userTwoDepth);
p_model.addAttribute("orgHiddenList", orgHiddenList);
// 계정 생성 비밀번호를 한번도 변경하지 않았으면 관련 메시지 노출
if(
StringUtil.isNotEmpty(p_loginVO.getJoinType())
&& "0".equals(p_loginVO.getJoinType())
){
p_model.addAttribute("message", "계정 생성 후 비밀번호를 변경하지 않았습니다. \\n비밀번호를 변경 해주시기 바랍니다.");
}
}catch(Exception ex) {
ex.printStackTrace();
}

View File

@ -561,7 +561,14 @@ public class CmdTrgtController {
try {
if (vEEduAplctVO !=null) {
vEPrcsAplctVO.setPrcsAplctPrdOrd(vEPrcsDetailVODetail.getPrcsAplctPrdOrd());
vEPrcsAplctVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
//나의 강의실, 신청목록에서 접근 해당 교육 정보 노출
//교육 신청목록에서 접근 가장 최근 정보 노출
if(StringUtils.isNotEmpty(vEPrcsDetailVO.getEduAplctOrd())) {
vEPrcsAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
}else {
vEPrcsAplctVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
}
vEPrcsAplctVO = vEPrcsAplctPrdService.selectAplctInfo(vEPrcsAplctVO);
}

View File

@ -560,7 +560,14 @@ public class PreventController {
try {
if (vEEduAplctVO !=null) {
vEPrcsAplctVO.setPrcsAplctPrdOrd(vEPrcsDetailVODetail.getPrcsAplctPrdOrd());
vEPrcsAplctVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
//나의 강의실, 신청목록에서 접근 해당 교육 정보 노출
//교육 신청목록에서 접근 가장 최근 정보 노출
if(StringUtils.isNotEmpty(vEPrcsDetailVO.getEduAplctOrd())) {
vEPrcsAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
}else {
vEPrcsAplctVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
}
vEPrcsAplctVO = vEPrcsAplctPrdService.selectAplctInfo(vEPrcsAplctVO);
}

View File

@ -277,4 +277,10 @@ public class VEEduMIXServiceImpl implements VEEduMIXService {
public List<VEEduAplctVO> selectExprnRsltFileDownList(VEEduAplctVO paramVO) throws Exception{
return vEEduMIXDAO.selectExprnRsltFileDownList(paramVO);
}
@Override
public void updateCnclStatus(VEEduAplctVO paramVO) {
vEEduMIXDAO.updateCnclStatus(paramVO);
}
}

View File

@ -275,11 +275,53 @@ public class VEInstrMixServiceImpl implements VEInstrMixService {
return vEInstrMixDAO.selectEduPrfrmInfo_csi_no3(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no4(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_no4(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_no5(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no6(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_no6(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_no7(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_prevent_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_prevent_no5(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no1(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no1(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no2(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no2(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no3(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no3(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no4(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no4(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no5(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no6(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no6(vEInstrDetailVO);
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception{
return vEInstrMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no7(vEInstrDetailVO);
}
}

View File

@ -170,4 +170,8 @@ public class VEPrcsAplctPrdDAO extends EgovAbstractDAO {
return (List<VEPrcsDetailVO>) list("VEPrcsAplctPrdDAO.selectTrgtList4_60", vEPrcsDetailVO);
}
public List<VEPrcsDetailVO> findByAprvlQustnrAllList(VEPrcsDetailVO vEPrcsDetailVO) {
return (List<VEPrcsDetailVO>) list("VEPrcsAplctPrdDAO.findByAprvlQustnrAllList", vEPrcsDetailVO);
}
}

View File

@ -5,6 +5,7 @@ import java.util.List;
import java.util.Locale;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
@ -32,6 +33,8 @@ import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiService;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryService;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailVO;
import kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrMixService;
import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrDetailVO;
@ -69,6 +72,8 @@ public class CndtnInstrMngController {
private static final Logger LOGGER = LoggerFactory.getLogger(CndtnInstrMngController.class);
private final String LCTR_DIV_CD = "60";
//로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
@ -152,6 +157,10 @@ public class CndtnInstrMngController {
@Resource(name = "vELctrMIXService")
private VELctrMIXService vELctrMIXService;
// 첨부파일 정보
@Resource(name="vEInstrDetailActvtHstryService")
private VEInstrDetailActvtHstryService vEInstrDetailActvtHstryService;
/*
// 교육신청 서비스단
@ -216,7 +225,7 @@ public class CndtnInstrMngController {
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
//교육확정 목록 조회
vEPrcsDetailVO.setDdlnCd("20");
@ -306,7 +315,7 @@ public class CndtnInstrMngController {
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
//교육확정 목록 조회
vEPrcsDetailVO.setDdlnCd("20");
@ -419,7 +428,7 @@ public class CndtnInstrMngController {
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd("60"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
//교육확정 목록 조회
vEPrcsDetailVO.setDdlnCd("20");
@ -533,6 +542,7 @@ public class CndtnInstrMngController {
//차시별 정보
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth4Stts(vEPrcsDetailVO);
model.addAttribute("vEPrcsDetailVOList", vEPrcsDetailVOList);
@ -585,7 +595,7 @@ public class CndtnInstrMngController {
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT4List_no4 = vEInstrMixService.selectEduPrfrmInfo_csi_no1(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT4List_no4 = vEInstrMixService.selectEduPrfrmInfo_csi_no4(vEInstrDetailVODetail);
model.addAttribute("list_no4",selectAsgnmInfoT4List_no4);
}
@ -601,7 +611,7 @@ public class CndtnInstrMngController {
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT6List = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT6List = vEInstrMixService.selectEduPrfrmInfo_csi_no6(vEInstrDetailVODetail);
model.addAttribute("list_no6",selectAsgnmInfoT6List);
}
// 월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계
@ -642,6 +652,59 @@ public class CndtnInstrMngController {
}
/**
* @methodName : instrActvtHstrySignMngList
* @author : 이호영
* @date : 2023.12.28
* @description : 직인대장관리(이수증) - 기반 기소
* @param vEInstrDetailActvtHstryVO
* @param model
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/instrActvtHstrySignAndCmpltCrtfcMngList.do")
public String instrActvtHstrySignAndCmpltCrtfcMngList(
@ModelAttribute("vEInstrActvtHstryVO") VEInstrDetailActvtHstryVO vEInstrDetailActvtHstryVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
//LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
//SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
// if (loginVO == null || ssoLoginVO == null) {
// return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
// }
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVO);
//2. pageing step2
vEInstrDetailActvtHstryVO = this.setPagingStep2_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVO, paginationInfo);
vEInstrDetailActvtHstryVO.setSearchKeyword(egovCryptoUtil.encrypt(vEInstrDetailActvtHstryVO.getSearchKeyword()));
// List<VEInstrDetailActvtHstryVO> vEInstrDetailActvtHstryVOList = vEInstrDetailActvtHstryService.selectSignPagingList(vEInstrDetailActvtHstryVO);
List<VEInstrDetailActvtHstryVO> vEInstrDetailActvtHstryVOList = vEInstrDetailActvtHstryService.selectSignAndCmpltCrtfcPagingList(vEInstrDetailActvtHstryVO);
vEInstrDetailActvtHstryVOList.stream().forEach(t-> t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//3.pageing step3
paginationInfo = this.setPagingStep3_VEInstrDetailActvtHstryVO(vEInstrDetailActvtHstryVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 검색어 복호화
vEInstrDetailActvtHstryVO.setSearchKeyword(egovCryptoUtil.decrypt(vEInstrDetailActvtHstryVO.getSearchKeyword()));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEInstrDetailActvtHstryVOList);
// return "oprtn/cmm/instrActvtHstrySignMngList";
return "oprtn/cndtnSspnIdtmt/instrActvtHstrySignAndCmpltCrtfcMngList";
}
/**
* 교육실적통계 화면-개별
*/
@ -1022,7 +1085,7 @@ public class CndtnInstrMngController {
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no1(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_no4(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
@ -1265,7 +1328,7 @@ public class CndtnInstrMngController {
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT3List = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT3List = vEInstrMixService.selectEduPrfrmInfo_csi_no6(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
@ -1376,7 +1439,52 @@ public class CndtnInstrMngController {
return p_paginationInfo;
}
//페이징을 위한 처리 step1 - 페이징 기본 정보 설정
private PaginationInfo setPagingStep1_VEInstrDetailActvtHstryVO(
VEInstrDetailActvtHstryVO p_vEEduAplctVO
)throws Exception{
// pageing step1
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(p_vEEduAplctVO.getPageIndex());
paginationInfo.setRecordCountPerPage(p_vEEduAplctVO.getPageUnit());
paginationInfo.setPageSize(p_vEEduAplctVO.getPageSize());
return paginationInfo;
}
//페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 검색 조건 초기화
private VEInstrDetailActvtHstryVO setPagingStep2_VEInstrDetailActvtHstryVO(
VEInstrDetailActvtHstryVO p_vEEduAplctVO
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step2
p_vEEduAplctVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex());
p_vEEduAplctVO.setLastIndex(p_paginationInfo.getLastRecordIndex());
p_vEEduAplctVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage());
if("".equals(p_vEEduAplctVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
p_vEEduAplctVO.setSearchSortCnd("prcs_ord");
p_vEEduAplctVO.setSearchSortOrd("desc");
}
return p_vEEduAplctVO;
}
//페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기
private PaginationInfo setPagingStep3_VEInstrDetailActvtHstryVO(
List<VEInstrDetailActvtHstryVO> p_vEEduAplctVOList
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step3
int totCnt = 0;
if(p_vEEduAplctVOList.size() > 0) totCnt = p_vEEduAplctVOList.get(0).getTotCnt();
p_paginationInfo.setTotalRecordCount(totCnt);
return p_paginationInfo;
}
//페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기

View File

@ -448,7 +448,7 @@ public class MainController {
BoardVO boardVO = new BoardVO();
boardVO.setRecordCountPerPage(5); //게시글
boardVO.setFirstIndex(0); //
boardVO.setBbsId("BBSMSTR_000000000653");
boardVO.setBbsId("BBSMSTR_000000000010");
List<BoardVO> vo = bbsMngService.selectMainBoardRecent(boardVO);
//게시글 내용 html 태그 삭제
for(int i=0; i<vo.size(); i++) {
@ -968,7 +968,7 @@ public class MainController {
/*최초 사이트 체크와 동시에 session 설정, 점검중 페이지 적용 */
@RequestMapping(value="/com/firstSiteCheck.do")
public String firstSiteCheck(HttpServletRequest request, @RequestParam Map<String, Object> commandMap,
ModelMap model)
ModelMap model, MenuManageJTreeVO menuManageVO)
throws Exception {
try {
SiteManagerVO siteManagerVO = new SiteManagerVO();
@ -978,6 +978,31 @@ public class MainController {
return "web/com/insp";
}
model.addAttribute("siteManagerVO", siteManagerVO);
//로그인 권한 정보 불러오기
LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
String auth = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getAuthority());
//권한별 메뉴표시
if(!auth.equals("ROLE_ADMIN") && auth != "") {
menuManageVO.setAuthorCode(auth);
}else if(auth.equals("ROLE_ADMIN")) {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
}
else {
menuManageVO.setAuthorCode("ROLE_ANONYMOUS");
}
MenuManageVO resultVO = new MenuManageVO();
MenuManageVO tempMenuManageVO = new MenuManageVO();
tempMenuManageVO.setSearchCondition("Y");
setViewMenu(request , commandMap , tempMenuManageVO , resultVO , menuManageVO );
List<MenuManageJTreeVO> menuResultList = menuCreateManageService.selectMenuLeftListJtreeWeb(menuManageVO) ;
model.addAttribute("menuResultList", menuResultList);
String pageUrl = request.getRequestURI().replaceAll(request.getContextPath(), "");
String pageUri = pageUrl.substring(0, pageUrl.lastIndexOf("/"));
model.addAttribute("pageUri", pageUri);
}catch(Exception ex) {
ex.printStackTrace();
}

View File

@ -848,6 +848,7 @@
AND b.sex = #sex#
and c.edu_strt_pnttm >= TO_CHAR(NOW(),'YYYY.MM.DD')
AND a.aprvl_cd in ('10','20','60')
</select>
<!-- 기소유예 대상자 확인 STEP00 -->

View File

@ -0,0 +1,311 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<!-- 찾교 강사, 강사상세 테이블 -->
<sqlMap namespace="VEInstrDetailApptHchkHstry">
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="VEInstrDetailActvtHstryVO" type="kcc.ve.instr.tngrVisitEdu.instrInfo.service.VEInstrDetailActvtHstryVO"/>
<!-- 공통 테이블 명 -->
<sql id="VEInstrDetailActvtHstryDAO.table_name">
ve_instr_detail_actvt_hstry
</sql>
<!-- 저장용 공통 컬럼 명 -->
<sql id="VEInstrDetailActvtHstryDAO.column_name">
instr_detail_actvt_hstry_ord
, user_id
, instr_detail_ord
, aplct_pnttm
, state_cd
, state_pnttm
, aplct_atch_file_id
, cmpnn_cn
, frst_regist_pnttm
, frst_register_id
, last_updt_pnttm
, last_updusr_id
, docu_nmbr
, sex
, purpose
, bsns_nmbr
, bsns_nm
</sql>
<!-- 조회용 공통 컬럼 명 -->
<sql id="VEInstrDetailActvtHstryDAO.select_column_name">
a.instr_detail_actvt_hstry_ord as instrDetailActvtHstryOrd
, a.user_id as userId
, a.instr_detail_ord as instrDetailOrd
, TO_CHAR(a.aplct_pnttm,'YYYY-MM-DD') AS aplctPnttm
, a.state_cd as stateCd
, TO_CHAR(a.state_pnttm,'YYYY-MM-DD') AS statePnttm
, a.aplct_atch_file_id as aplctAtchFileId
, a.cmpnn_cn as cmpnnCn
, TO_CHAR(a.frst_regist_pnttm,'YYYY-MM-DD') AS frstRegistPnttm
, a.frst_register_id as frstRegisterId
, TO_CHAR(a.last_updt_pnttm,'YYYY-MM-DD') AS frstRegistPnttm
, a.last_updusr_id as lastUpdusrId
, a.docu_nmbr AS docuNmbr
, a.sex
, a.purpose
, a.bsns_nmbr AS bsnsNmbr
, a.bsns_nm AS bsnsNm
, a.actvt_period AS actvtPeriod
</sql>
<insert id="VEInstrDetailActvtHstryDAO.insert" parameterClass="VEInstrDetailActvtHstryVO">
/* VEInstrDetailActvtHstryDAO.insert */
INSERT INTO <include refid="VEInstrDetailActvtHstryDAO.table_name"/> (
<include refid="VEInstrDetailActvtHstryDAO.column_name"/>
)VALUES(
#instrDetailActvtHstryOrd#
, #userId#
, #instrDetailOrd#
, SYSDATE
, #stateCd#
, SYSDATE
, #aplctAtchFileId#
, #cmpnnCn#
, SYSDATE
, #frstRegisterId#
, ''
, #lastUpdusrId#
, #docuNmbr#
, #sex#
, #purpose#
, #bsnsNmbr#
, #bsnsNm#
)
</insert>
<select id="VEInstrDetailActvtHstryDAO.selectList" parameterClass="VEInstrDetailActvtHstryVO" resultClass="VEInstrDetailActvtHstryVO">
/* VEInstrDetailActvtHstryDAO.selectList */
SELECT
<include refid="VEInstrDetailActvtHstryDAO.select_column_name"/>
FROM
<include refid="VEInstrDetailActvtHstryDAO.table_name"/> a
WHERE
user_id = #userId#
</select>
<select id="VEInstrDetailActvtHstryDAO.selectPagingList" parameterClass="VEInstrDetailActvtHstryVO" resultClass="VEInstrDetailActvtHstryVO">
/* VEInstrDetailActvtHstryDAO.selectPagingList */
SELECT
COUNT(1) OVER() AS totCnt ,
TO_CHAR(a.state_pnttm, 'YYYY') ||'-'||a.docu_nmbr||'호' AS docuNmbrDp ,
b.INSTR_NM AS instrNm ,
<include refid="VEInstrDetailActvtHstryDAO.select_column_name"/>
FROM
<include refid="VEInstrDetailActvtHstryDAO.table_name"/> a
JOIN ve_instr_detail b
ON a.user_id = b.user_id
AND a.instr_detail_ord = b.instr_detail_ord
AND b.INSTR_DIV = #instrDiv#
WHERE
1=1
<isNotEmpty prepend="AND" property="searchKeyword">
b.INSTR_NM = #searchKeyword#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchSelStatus">
a.state_cd = #searchSelStatus#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchStartDt">
TO_CHAR(a.aplct_pnttm,'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchEndDt">
TO_CHAR(a.aplct_pnttm,'YYYYMMDD')<![CDATA[ <= ]]> REPLACE(#searchEndDt#, '.' , '')
</isNotEmpty>
ORDER BY a.aplct_pnttm desc
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
<select id="VEInstrDetailActvtHstryDAO.selectSignPagingList" parameterClass="VEInstrDetailActvtHstryVO" resultClass="VEInstrDetailActvtHstryVO">
/* VEInstrDetailActvtHstryDAO.selectSignPagingList */
SELECT
COUNT(1) OVER() AS totCnt ,
TO_CHAR(a.state_pnttm, 'YYYY') ||'-'||a.docu_nmbr||'호' AS docuNmbrDp ,
b.INSTR_NM AS instrNm ,
<include refid="VEInstrDetailActvtHstryDAO.select_column_name"/>
, c.cnt
, c.chasiSum
FROM
<include refid="VEInstrDetailActvtHstryDAO.table_name"/> a
JOIN ve_instr_detail b
ON a.user_id = b.user_id
AND a.instr_detail_ord = b.instr_detail_ord
left outer join
(
SELECT c.USER_ID AS userId
, count(*) AS cnt
, sum(b.chasi) AS chasiSum
FROM ve_edu_aplct a
, ve_edu_chasi b
, ve_edu_chasi_instr_asgnm c
WHERE a.EDU_APLCT_ORD =b.EDU_APLCT_ORD
AND b.EDU_APLCT_ORD =c.EDU_APLCT_ORD
AND b.EDU_CHASI_ORD =c.EDU_CHASI_ORD
AND a.aprvl_cd='60'
AND c.asgnm_aprvl_Cd='30'
GROUP BY c.USER_ID
)c
on(
a.user_id=c.userId
)
WHERE
1=1
AND a.docu_nmbr IS not null
<isNotEmpty prepend="AND" property="searchKeyword">
b.INSTR_NM = #searchKeyword#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchSelStatus">
a.state_cd = #searchSelStatus#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchStartDt">
TO_CHAR(a.aplct_pnttm,'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchEndDt">
TO_CHAR(a.aplct_pnttm,'YYYYMMDD')<![CDATA[ <= ]]> REPLACE(#searchEndDt#, '.' , '')
</isNotEmpty>
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
<select id="VEInstrDetailActvtHstryDAO.selectSignAndCmpltCrtfcPagingList" parameterClass="VEInstrDetailActvtHstryVO" resultClass="VEInstrDetailActvtHstryVO">
/* VEInstrDetailActvtHstryDAO.selectSignAndCmpltCrtfcPagingList */
SELECT
COUNT(1) OVER() AS totCnt
, a.PRCS_APLCT_PRD_ORD as prcsAplctPrdOrd
, b.LCTR_DIV_CD AS lctrDivCd
, b.EDU_STRT_PNTTM AS eduStrtPnttm
, a.EDU_APLCT_ORD as eduAplctOrd
, a.APLCT_STATE_CD as aplctStateCd
, a.EDU_CMPLT_CRTFC_NMBR as eduCmpltCrtfcNmbr
, c.PRCS_NM as prcsNm
, c.PRCS_DIV as prcsDiv
, d.USER_ID as userId
, e.MBER_NM as mberNm
, to_char( a.LAST_UPDT_PNTTM ,'YYYY.MM.DD' ) AS lastUpdtPnttm
FROM
vea_aplct_detail_info a
LEFT JOIN ve_prcs_aplct_prd b
ON a.PRCS_APLCT_PRD_ORD = b.PRCS_APLCT_PRD_ORD
LEFT JOIN ve_prcs c
ON b.PRCS_ORD = c.PRCS_ORD
LEFT JOIN VE_EDU_APLCT d
ON a.EDU_APLCT_ORD = d.EDU_APLCT_ORD
LEFT JOIN LETTNGNRLMBER e
ON e.MBER_ID = d.USER_ID
WHERE
a.APLCT_STATE_CD ='20'
AND
b.LCTR_DIV_CD !='60'
AND
a.EDU_CMPLT_CRTFC_NMBR IS NOT null
<isNotEmpty prepend="AND" property="searchKeyword">
e.MBER_NM = #searchKeyword#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchSelStatus">
a.state_cd = #searchSelStatus#
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchStartDt">
TO_CHAR(a.LAST_UPDT_PNTTM,'YYYYMMDD') <![CDATA[ >= ]]> REPLACE(#searchStartDt#, '.' , '')
</isNotEmpty>
<isNotEmpty prepend="AND" property="searchEndDt">
TO_CHAR(a.LAST_UPDT_PNTTM,'YYYYMMDD')<![CDATA[ <= ]]> REPLACE(#searchEndDt#, '.' , '')
</isNotEmpty>
ORDER BY a.EDU_CMPLT_CRTFC_NMBR desc
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
</select>
<select id="VEInstrDetailActvtHstryDAO.findById" parameterClass="VEInstrDetailActvtHstryVO" resultClass="VEInstrDetailActvtHstryVO">
/*VEInstrDetailActvtHstryDAO.findById */
SELECT
TO_CHAR(a.state_pnttm, 'YYYY') ||'-'||a.docu_nmbr||'호' AS docuNmbrDp ,
b.user_id AS userId ,
b.instr_nm as instrNm ,
b.phone ,
b.post ,
b.addr ,
b.addr_detail as addrDetail ,
<include refid="VEInstrDetailActvtHstryDAO.select_column_name"/>
FROM
<include refid="VEInstrDetailActvtHstryDAO.table_name"/> a
JOIN ve_instr_detail b
ON a.user_id = b.user_id
AND a.instr_detail_ord = b.instr_detail_ord
WHERE
a.instr_detail_actvt_hstry_ord = #instrDetailActvtHstryOrd#
</select>
<update id="VEInstrDetailActvtHstryDAO.updateStateCd" parameterClass="VEInstrDetailActvtHstryVO">
UPDATE
<include refid="VEInstrDetailActvtHstryDAO.table_name" />
SET
state_cd = #stateCd#
<isEqual property="stateCd" compareValue="30">
, docu_nmbr = NVL(
(
SELECT nvl(max(docu_nmbr),0) AS docuNmbr
FROM ve_instr_detail_actvt_hstry a
WHERE state_cd='30'
AND to_char(a.state_pnttm,'YYYY')=(
SELECT to_char(sysdate,'YYYY')
FROM dual
)
GROUP BY to_char(a.state_pnttm,'YYYY')
),0
)+1
</isEqual>
<isNotEmpty property="cmpnnCn">
, cmpnn_cn = #cmpnnCn#
</isNotEmpty>
, state_pnttm = SYSDATE
, LAST_UPDT_PNTTM = SYSDATE
, LAST_UPDUSR_ID = #lastUpdusrId#
WHERE
instr_detail_actvt_hstry_ord = #instrDetailActvtHstryOrd#
</update>
<update id="VEInstrDetailActvtHstryDAO.updateActvtPeriod" parameterClass="VEInstrDetailActvtHstryVO">
UPDATE
<include refid="VEInstrDetailActvtHstryDAO.table_name" />
SET
actvt_period = #actvtPeriod#
WHERE
instr_detail_actvt_hstry_ord = #instrDetailActvtHstryOrd#
</update>
</sqlMap>

View File

@ -632,12 +632,11 @@
<isNotEmpty property="lctrDivCd">
AND a.lctr_div_cd=#lctrDivCd#
AND b.lctr_div_cd=#lctrDivCd#
</isNotEmpty>
<isEqual property="lctrDivCd" compareValue="60">
AND COALESCE(a.use_yn,'Y')='Y'
</isEqual>
AND COALESCE(a.use_yn,'Y')!='D'
ORDER BY 1, b.prcs_nm ASC
@ -1702,6 +1701,241 @@
AND aprvl_cd='20'
</select>
</select>
<!-- 교육 확정 목록 (설문조사, 이수증 수정)-->
<select id="findByAprvlQustnrAllList" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
/* VEPrcsAplctPrdDAO.findByAprvlQustnrAllList */
select
COUNT(1) OVER() AS totCnt ,
a.edu_aplct_ord AS eduAplctOrd ,
vpap.PRCS_APLCT_PRD_ORD AS prcsAplctPrdOrd ,
vp.prcs_nm AS prcsNm ,
vp.prcs_cn AS prcsCn ,
vp.prcs_div AS prcsDiv ,
vpap.title AS title ,
vpap.strt_pnttm AS strtPnttm ,
vpap.end_pnttm AS endPnttm ,
vpap.edu_strt_pnttm AS eduStrtPnttm ,
vpap.edu_ddln_pnttm AS eduDdlnPnttm ,
case
when to_char(now(),'YYYY.MM.DD HH24') >= concat(vpap.qustnr_strt_pnttm, ' ', vpap.qustnr_tm) and vpap.qustnr_tm>'' then 1
else 0
end as qustnrTm,
CASE
WHEN to_char(now(), 'YYYY.MM.DD') > COALESCE(vpap.edu_ddln_pnttm,vpap.edu_strt_pnttm) THEN 1
ELSE 0
END AS qestRsltExists,
a.APRVL_CD AS aprvlCd,
vpap.ddln_cd AS ddlnCd,
vadi.APLCT_STATE_CD AS aplctStateCd,
vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId,
vadi.CNCL_CN AS cnclCn,
/* 설문지 정보 */
I10.qustnr_tmplat_id AS qustnrTmplatId ,
COALESCE(qustnr01.QESTNR_ID_10, I10.qestnr_id_10) AS qestnrId10 ,
COALESCE(qustnr01.QESTNR_ID_20, I20.qestnr_id_20) AS qestnrId20 ,
COALESCE(qustnr01.QESTNR_ID_30, I30.qestnr_id_30) AS qestnrId30 ,
/* 답변 정보 */
COALESCE(qustnr01.QESTNR_ID_10_CNT,0) AS qestnrId10Cnt ,
COALESCE(qustnr01.QESTNR_ID_20_CNT,0) AS qestnrId20Cnt ,
COALESCE(qustnr01.QESTNR_ID_30_CNT,0) AS qestnrId30Cnt ,
a.lctr_div_cd AS lctrDivCd
from
VE_EDU_APLCT a
join ve_prcs_aplct_prd vpap
on a.prcs_ord = vpap.prcs_aplct_prd_ord
join ve_prcs vp /* 과정 */
on vpap.prcs_ord = vp.prcs_ord
left join vea_aplct_detail_info vadi /* 신청상세정보 */
on a.edu_aplct_ord = vadi.edu_aplct_ord
and vpap.prcs_aplct_prd_ord = vadi.prcs_aplct_prd_ord
LEFT OUTER JOIN (
SELECT
aa.EDU_APLCT_ORD ,
aa.prcs_ord,
aa.QUSTNR_TMPLAT_ID ,
aa.user_id
, max(CASE WHEN bb.site_id_cd = '10' THEN aa.QESTNR_ID END) AS QESTNR_ID_10
, max(CASE WHEN bb.site_id_cd = '20' THEN aa.QESTNR_ID END) AS QESTNR_ID_20
, max(CASE WHEN bb.site_id_cd = '30' THEN aa.QESTNR_ID END) AS QESTNR_ID_30
, SUM(CASE WHEN bb.site_id_cd = '10' THEN 1 ELSE 0 END) AS QESTNR_ID_10_CNT
, SUM(CASE WHEN bb.site_id_cd = '20' THEN 1 ELSE 0 END) AS QESTNR_ID_20_CNT
, SUM(CASE WHEN bb.site_id_cd = '30' THEN 1 ELSE 0 END) AS QESTNR_ID_30_CNT
FROM (
SELECT
a.EDU_APLCT_ORD ,
a.prcs_ord,
b.QUSTNR_TMPLAT_ID ,
b.QESTNR_ID
, a.user_id
FROM
ve_edu_aplct a ,
LETTNQESTNRRSLTDETAIL b
WHERE
1 = 1
AND a.edu_aplct_ord = b.edu_aplct_ord
AND (b.EDU_CHASI_ORD IS NULL or b.EDU_CHASI_ORD = '')
AND a.user_id=#userId#
)aa
, lettnqestnrinfo bb
WHERE aa.qustnr_tmplat_id=bb.qustnr_tmplat_id
AND aa.qestnr_id=bb.qestnr_id
GROUP BY
aa.EDU_APLCT_ORD ,
aa.prcs_ord,
aa.QUSTNR_TMPLAT_ID ,
aa.user_id
) qustnr01
on(
a.edu_aplct_ord = qustnr01.edu_Aplct_Ord
AND a.PRCS_ORD = qustnr01.prcs_Ord
)
LEFT OUTER JOIN (
/* 현재 진행가능한 설문 정보(기본, 선생님, 강사) 여러개가 있는 경우는 최근 등록된 설문 정보를 가져온다.*/
SELECT
a.QUSTNR_TMPLAT_ID ,
a.SITE_ID ,
/*
(CASE WHEN a.STTUS = '1' THEN a.QESTNR_ID END) AS QESTNR_ID_10
*/
(CASE WHEN a.STTUS = '1' THEN a.QESTNR_ID ELSE a.QESTNR_ID END) AS QESTNR_ID_10
FROM
LETTNQESTNRINFO a
WHERE
a.SITE_ID = #siteId#
/*
AND a.SITE_ID_CD IN ('10')
*/
/*
AND a.STTUS IN ('1')
*/
AND TO_CHAR(NOW(),
'YYYY.MM.DD') BETWEEN COALESCE(a.qustnr_bgnde,
'2000.01.01')
AND COALESCE(a.qustnr_endde,
'9999.12.31')
ORDER BY coalesce(a.qustnr_bgnde,'9999.12.31')
LIMIT 1
) I10 ON
(1 = 1)
LEFT OUTER JOIN (
/* 현재 진행가능한 설문 정보(기본, 선생님, 강사) 여러개가 있는 경우는 최근 등록된 설문 정보를 가져온다.*/
SELECT
a.QUSTNR_TMPLAT_ID ,
a.SITE_ID ,
/*
(CASE WHEN a.STTUS = '1' THEN a.QESTNR_ID END) AS QESTNR_ID_20
*/
(CASE WHEN a.STTUS = '1' THEN a.QESTNR_ID ELSE a.QESTNR_ID END) AS QESTNR_ID_20
FROM
LETTNQESTNRINFO a
WHERE
a.SITE_ID = #siteId#
/*
AND a.SITE_ID_CD IN ('20')
*/
/*
AND a.STTUS IN ('1')
*/
AND TO_CHAR(NOW(),
'YYYY.MM.DD') BETWEEN COALESCE(a.qustnr_bgnde,
'2000.01.01')
AND COALESCE(a.qustnr_endde,
'9999.12.31')
ORDER BY coalesce(a.qustnr_bgnde,'9999.12.31')
LIMIT 1
) I20 ON
(1 = 1)
LEFT OUTER JOIN (
/* 현재 진행가능한 설문 정보(기본, 선생님, 강사) 여러개가 있는 경우는 최근 등록된 설문 정보를 가져온다.*/
SELECT
a.QUSTNR_TMPLAT_ID ,
a.SITE_ID ,
/*
(CASE WHEN a.STTUS = '1' THEN a.QESTNR_ID END) AS QESTNR_ID_30
*/
(CASE WHEN a.STTUS = '1' THEN a.QESTNR_ID ELSE a.QESTNR_ID END) AS QESTNR_ID_30
FROM
LETTNQESTNRINFO a
WHERE
a.SITE_ID = #siteId#
/*
AND a.SITE_ID_CD IN ('30')
*/
/*
AND a.STTUS IN ('1')
*/
AND TO_CHAR(NOW(),
'YYYY.MM.DD') BETWEEN COALESCE(a.qustnr_bgnde,
'2000.01.01')
AND COALESCE(a.qustnr_endde,
'9999.12.31')
ORDER BY coalesce(a.qustnr_bgnde,'9999.12.31')
LIMIT 1
) I30 ON
(1 = 1)
where
a.user_id = #userId#
<isNotEmpty property="searchStartDt">
AND vpap.edu_strt_pnttm <![CDATA[ >= ]]> #searchStartDt#
</isNotEmpty>
<isNotEmpty property="searchEndDt">
AND vpap.edu_strt_pnttm <![CDATA[ <= ]]> #searchEndDt#
</isNotEmpty>
<isEqual property="searchStatus" compareValue="5"> /*VEA003 미이수 : 수강중 강의*/
AND vadi.aplct_state_cd = '10'
</isEqual>
<isEqual property="searchStatus" compareValue="30"> /*취소 : 취소*/
AND vadi.aplct_state_cd = #searchStatus#
</isEqual>
<isEqual property="searchStatus" compareValue="20"> /*이수완료 : 종료 강의*/
AND vadi.aplct_state_cd is not null
AND a.aprvl_cd = #searchStatus#
</isEqual>
<isEqual property="searchStatus" compareValue="15"> /*수강중 강의*/
AND vadi.aplct_state_cd is null
AND a.aprvl_cd = '20'
</isEqual>
<isEqual property="searchStatus" compareValue="10"> /*요청 : 요청 강의*/
AND a.aprvl_cd = #searchStatus#
</isEqual>
ORDER BY vpap.edu_strt_pnttm desc
LIMIT #recordCountPerPage# OFFSET #firstIndex#
</select>
</sqlMap>

View File

@ -595,7 +595,6 @@
/* 신청 후 취소 */
, user_id = NULL
, edu_aplct_ord = NULL
, edu_state_cd = '10'
, prcs_aplct_prd_ord_cmplt = NULL
</isEqual>
@ -603,7 +602,6 @@
/* 신청 후 반려 */
, user_id = NULL
, edu_aplct_ord = NULL
, edu_state_cd = '10'
, prcs_aplct_prd_ord_cmplt = NULL
</isEqual>
@ -622,6 +620,7 @@
<isEqual property="reqNo" compareValue="6-2">
/* 취소 신청 승은(교육중단) edu_state_cd=60,req_state_cd=40 */
, edu_state_cd = '60'
, req_state_cd = '35'
/* , req_state_cd = '40' 의뢰상태는 교육의 취소, 확정과 관계없이 대상자의 의뢰 상태를 변경 하는것 이므로 여기서는 제외한다. */
</isEqual>
WHERE
@ -642,12 +641,18 @@
</isEqual>
<isEqual property="reqNo" compareValue="4">
<isEqual property="reqNo" compareValue="6-2">
/* 신청 후 관리자 반려 aplct_state_cd=50 */
, aplct_state_cd = '50'
, aplct_state_cd = '60'
</isEqual>
<isEqual property="reqNo" compareValue="6-3">
/* 취소 신청 후 관리자 반려 aplct_state_cd=null */
, aplct_state_cd = null
</isEqual>
WHERE
edu_aplct_ord = #eduAplctOrd#
</update>

View File

@ -85,6 +85,10 @@ $( document ).ready(function(){
$('#userWork_case2').hide();
}
*/
<c:if test="${message != null}">
alert("<c:out value='${message}' />");
</c:if>
});
function setOrgDepth_01(){

View File

@ -174,11 +174,11 @@ function bbsMasterExcelDownload(){
<input type="text" id="searchWrd" name="searchWrd" value="<c:out value='${searchVO.searchWrd}'/>" class="search_input" placeholder="검색어를 입력하세요" onkeyDown="press(event);">
<button class="btn_search" onclick="javascript:linkPage('1'); return false;">검색</button>
<c:if test="${bbsAttrMngAuth}">
<%-- <c:if test="${bbsAttrMngAuth}">
<input type="checkbox" name="useAt" id="useAt" value="N" onclick="javascript:linkPage('1'); return false;"
<c:if test="${'N' eq searchVO.useAt}"> checked='checked' </c:if> >
<label for="useAt"></label>미사용
</c:if>
</c:if> --%>
<select class="sel2 sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px">
<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>

View File

@ -845,37 +845,37 @@
</td>
<td>
<c:choose>
<c:when test="${list.aprvlCd eq '35'}"><!-- 취소 요청 -->
<ve:code codeId="VE0003" code="${list.aprvlCd}"/>
<c:when test="${list.aplctStateCd eq '35'}"><!-- 취소 요청 -->
<ve:code codeId="VEA003" code="${list.aplctStateCd}"/>
<button type="button" class="btn_type04" onclick="fncCancelUser('${list.eduAplctOrd}', '${info.prcsAplctPrdOrd}', '6-2')">취소승인</button>
<button type="button" class="btn_type05" onclick="fncCancelUser('${list.eduAplctOrd}', '${info.prcsAplctPrdOrd}', '6-3')">취소반려</button>
<br/>
<br/>
${list.aplctCn}
${list.cnclCn}
<br/>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${list.rsltAtchFileId}" />
<c:param name="param_atchFileId" value="${list.cnclAtchFileId}" />
</c:import>
</c:when>
<c:when test="${list.aprvlCd eq '40'}"><!-- 취소 승인 -->
<c:when test="${list.aplctStateCd eq '60' and not empty list.cnclCn}"><!-- 취소 승인 -->
취소승인
<br/>
<br/>
${list.aplctCn}
${list.cnclCn}
<br/>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${list.rsltAtchFileId}" />
<c:param name="param_atchFileId" value="${list.cnclAtchFileId}" />
</c:import>
</c:when>
<c:when test="${list.aprvlCd eq '60' and not empty list.aplctCn}"><!-- 취소정보가 있는데 60이면 취소 반려 처리 -->
<c:when test="${list.aplctStateCd ne '60' and not empty list.cnclCn}"><!-- 취소정보가 있는데 60이면 취소 반려 처리 -->
취소반려
<br/>
<br/>
${list.aplctCn}
${list.cnclCn}
<br/>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${list.rsltAtchFileId}" />
<c:param name="param_atchFileId" value="${list.cnclAtchFileId}" />
</c:import>
</c:when>
<c:otherwise>
@ -961,7 +961,8 @@
<button type="button" class="btn_type04" onclick="fn_statusChgList('20', '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">이수</button>
<button type="button" class="btn_type04" onclick="fn_statusChgList('10', '<c:out value="${info.prcsAplctPrdOrd }" />'); return false;">미이수</button>
</div>
</div>
</div>
<br/>
<div class="tb_tit01">
@ -1015,6 +1016,227 @@
</div>
</div>
<!-- 문항리스트_상세 -->
<div class="tb_tit01">
<p>교육 내용에 대한 전반적 만족도 평가</p>
</div>
<!-- <div class="tb_type01"> -->
<!-- <table> -->
<%-- <c:if test="${!empty chasiSrvyList}"> --%>
<%-- <colgroup> --%>
<%-- <col style="width: 120px;"> --%>
<%-- <col style="width: auto;"> --%>
<%-- <col style="width: 120px;"> --%>
<%-- <col style="width: auto;"> --%>
<%-- </colgroup> --%>
<!-- <tbody class="ta_con"> -->
<!-- <tr> -->
<!-- <th scope="row"> -->
<!-- <p>참석자</p> -->
<!-- </th> -->
<!-- <td> -->
<%-- <input type="hidden" class="popupInput" id="qestnrParticipant" name="qestnrParticipant" value="<c:out value="${qestnrParticipant}"/>"> --%>
<%-- <c:out value="${qestnrParticipant}"/> --%>
<!-- </td> -->
<!-- <th scope="row"> -->
<!-- <p>응답율</p> -->
<!-- </th> -->
<!-- <td id="responseRate">-</td> -->
<!-- </tr> -->
<!-- <tr> -->
<!-- <th scope="row"> -->
<!-- <p>응답자</p> -->
<!-- </th> -->
<!-- <td> -->
<%-- <input type="hidden" class="popupInput" id="qestnrRespondent" name="qestnrRespondent" value="<c:out value="${qestnrRespondent}"/>"> --%>
<%-- <c:out value="${qestnrRespondent}"/> --%>
<!-- </td> -->
<!-- <th scope="row"> -->
<!-- <p>무응답</p> -->
<!-- </th> -->
<!-- <td id="noResponse">-</td> -->
<!-- </tr> -->
<!-- </tbody> -->
<%-- </c:if> --%>
<%-- <c:if test="${empty chasiSrvyList}"> --%>
<!-- <tr> -->
<!-- <td colspan="2">등록된 평가문항이 없습니다.</td> -->
<!-- </tr> -->
<%-- </c:if> --%>
<!-- </table> -->
<!-- </div> -->
<c:if test="${!empty chasiSrvyList}">
<div class="tb_type01 list2">
<table>
<colgroup>
<col style="width: auto;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 12%;">
<col style="width: 12%;">
</colgroup>
<thead>
<tr>
<th scope="col">평가문항</th>
<th scope="col">매우만족</th>
<th scope="col">만족</th>
<th scope="col">보통</th>
<th scope="col">불만족</th>
<th scope="col">매우불만족</th>
</tr>
</thead>
<tbody>
<c:forEach items="${Comtnqustnrqesitm}" var="QestmInfo" varStatus="status1">
<c:forEach items="${chasiSrvyList}" var="chasiSrvyInfo" varStatus="">
<c:if test="${QestmInfo.qestnrQesitmId eq chasiSrvyInfo.qestnrQesitmId}">
<tr>
<th scope="row" class="t_left">
${status1.count}) <c:out value="${QestmInfo.qestnCn}" escapeXml="true" />
</th>
<td>
<c:out value="${chasiSrvyInfo.verySatisfied}"/>
</td>
<td>
<c:out value="${chasiSrvyInfo.satisfied}"/>
</td>
<td>
<c:out value="${chasiSrvyInfo.neither}"/>
</td>
<td>
<c:out value="${chasiSrvyInfo.dissatisfied}"/>
</td>
<td>
<c:out value="${chasiSrvyInfo.veryDissatisfied}"/>
</td>
</tr>
</c:if>
</c:forEach>
</c:forEach>
</tbody>
</table>
</div>
</c:if>
<!-- 기타의견이 있으면 보여준다. -->
<c:if test="${not empty subjInfo}">
<div class="tb_type01 list2">
<table>
<caption>기타의견</caption>
<colgroup>
<col style="auto;">
</colgroup>
<thead>
<tr>
<th scope="col">기타의견</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">
<br/>
<c:out value="${fn:replace(subjInfo.qustnrCn , crlf , '<br/>')}" escapeXml="false" />
<br/>
<br/>
</th>
</tr>
</tbody>
</table>
<br/>
<br/>
<br/>
</div>
</c:if>
<!-- btn_wrap -->
<!--
<div class="btn_wrap btn_layout01">
<div class="btn_left">
<c:if test="${!empty chasiSrvyList}">
<button class="btn_type02" onclick="fncExcelDown(); return false;">엑셀 다운로드</button>
</c:if>
</div>
<div class="btn_center">
</div>
<div class="btn_right">
</div>
</div>
<br/>
<br/>
-->
<c:choose>
<%-- <c:when test="${chasiSrvyList[0].neither ne '' and chasiSrvyList[0].neither ne null}"> --%>
<c:when test="${qestnrParticipant ne '' and qestnrParticipant ne null}">
<div class="btn_wrap">
<div class="btn_right">
<c:forEach var="list" items="${chasiQr}" varStatus="status">
<c:choose>
<c:when test="${not empty list.qestnrId10}">
<button type="button" class="btn_type04" data-info="${list.eduChasiOrd}" data-tooltip="sub37_pop20"
onclick="fn_chasiQRPop('${list.eduAplctOrd}','${list.eduChasiOrd}','10','print'
,'${list.qustnrTmplatId}','${list.qestnrId10}','${list.qustnrRespondId10}'
)" title="팝업 열림">설문QR</button>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
</c:forEach>
<button type="button" class="btn_type06" onclick="fn_chasiStatusPop(); return false;">수정</button>
<button type="button" class="btn_type01" onclick="fn_delete(); return false;">삭제</button>
</div>
</div>
</c:when>
<c:otherwise>
<!-- 등록버튼 추가 필요 -->
<div class="btn_wrap">
<div class="btn_right">
<c:forEach var="list" items="${chasiQr}" varStatus="status">
<c:choose>
<c:when test="${not empty list.qestnrId10}">
<button type="button" class="btn_type04" data-info="${list.eduChasiOrd}" data-tooltip="sub37_pop20"
onclick="fn_chasiQRPop('${list.eduAplctOrd}','${list.eduChasiOrd}','10','print'
,'${list.qustnrTmplatId}','${list.qestnrId10}','${list.qustnrRespondId10}'
)" title="팝업 열림">설문QR</button>
</c:when>
<c:otherwise>
</c:otherwise>
</c:choose>
</c:forEach>
<!-- <button type="button" class="btn_type06" onclick="fn_chasiStatusPop(); return false;">등록</button> -->
</div>
</div>
</c:otherwise>
</c:choose>
</div>
</div>

View File

@ -0,0 +1,249 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="KccadrStatus" className="kcc.kccadr.cmm.KccadrConstants" />
<%
/**
* @Class Name : instrActvtHstrySignMngList.jsp
* @Description : 운영관리 > 직인대장관리
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2022.12.7 안주영 최초 생성
* @author 안주영
* @since 2022.2.7
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
input:read-only{
background-color: #ededed;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
});
function press(event) {
if (event.keyCode==13) {
fncGoList();
}
}
function fncGoList(){
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/kccadr/oprtn/cmdTrgt/instrActvtHstrySignAndCmpltCrtfcMngList.do'/>";
listForm.submit();
}
// function fn_goDetail(instrDetailActvtHstryOrd){
// var form = document.detailForm;
// form.instrDetailActvtHstryOrd.value = instrDetailActvtHstryOrd ;
// form.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/instrActvtHstryMngDetail.do'/>";
// form.submit();
// }
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
if($(this).prop('tagName') == 'SELECT'){
if($(this).attr('name').indexOf('Month') != -1){
$(this).val(new Date().getMonth()+1);
}else if($(this).attr('name').indexOf('Year') != -1){
$(this).val(new Date().getFullYear());
}else{
$(this).prop("selectedIndex", 0);
}
}else{
$(this).val('');
}
});
}
</script>
<title>직인대장관리(이수증)</title>
</head>
<body>
<form id="detailForm" name="detailForm" method="post">
<input type="hidden" name="instrDetailActvtHstryOrd" id="instrDetailActvtHstryOrd" value=""/>
</form>
<form id="listForm" name="listForm" method="post">
<input type="hidden" name="pageIndex" value="<c:out value='${vEInstrActvtHstryVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEInstrActvtHstryVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEInstrActvtHstryVO.searchSortOrd}" />" />
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>직인대장관리(이수증) 목록</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>운영관리</p>
</li>
<li><span class="cur_nav">직인대장관리(이수증)</span></li>
</ul>
</div>
<!-- //cont_tit -->
<div class="cont">
<!-- list_top -->
<div class="list_top">
<!--
<div class="list_top_1">
<div class="util_left">
<p>구분</p>
</div>
<div class="util_right">
<ve:select codeId="VEA011" name="searchSelStatus" id="searchSelStatus" css="class='sel_type1'"
selectedValue="${vEInstrActvtHstryVO.searchSelStatus}" defaultValue=''
defaultText='전체'
/>
</div>
</div>
-->
<div class="list_top_2">
<div class="util_left">
<p>발급일자</p>
</div>
<div class="util_right">
<div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="searchStartDt" name="searchStartDt" value="<c:out value='${vEInstrActvtHstryVO.searchStartDt}'/>">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="searchEndDt" name="searchEndDt" value="<c:out value='${vEInstrActvtHstryVO.searchEndDt}'/>">
</div>
</div>
</div>
<div class="list_top_2">
<div class="util_left">
<p>성명</p>
</div>
<div class="util_right">
<input type="text" id=searchKeyword name="searchKeyword" class="search_input" placeholder="검색어를 입력하세요" value="<c:out value='${vEInstrActvtHstryVO.searchKeyword}'/>" onkeyDown="press(event);">
<button class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
</div>
</div>
</div>
<!-- //list_top -->
<!-- list util -->
<div class="list_util">
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
<div>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px">
<option value='10' <c:if test="${vEInstrActvtHstryVO.pageUnit == '10' or vEInstrActvtHstryVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEInstrActvtHstryVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEInstrActvtHstryVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEInstrActvtHstryVO.pageUnit == '100'}">selected</c:if>>100줄</option>
</select>
</div>
</div>
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 60px;">
<col style="width: 150px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
</colgroup>
<thead>
<tr>
<th>번호</th>
<th>항목</th>
<th>문서번호</th>
<th>과정명</th>
<th>교육일시</th>
<th>성명</th>
<th>발급일자</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<%-- <tr onclick="fn_goDetail('${list.instrDetailActvtHstryOrd}')" style="cursor:pointer;"> --%>
<!-- VE0011 -->
<tr>
<td>
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</td>
<td>
<ve:code codeId="VE0011" code="${list.lctrDivCd }"/>
</td>
<td>
<c:if test="${list.lctrDivCd eq '50'}">실무역량-</c:if>
<c:if test="${list.lctrDivCd eq '60'}">기소유예-</c:if>
<c:out value="${list.eduCmpltCrtfcNmbr }" />
</td>
<td>
<c:out value="${list.prcsNm }" />
</td>
<td>
<c:out value="${list.eduStrtPnttm }" />
</td>
<td>
<c:out value="${list.mberNm }" />
</td>
<td>
<c:out value="${list.lastUpdtPnttm }" />
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
<!-- //page -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
<!-- //cont -->
</form>
</body>
</html>

View File

@ -0,0 +1,249 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="KccadrStatus" className="kcc.kccadr.cmm.KccadrConstants" />
<%
/**
* @Class Name : instrActvtHstrySignMngList.jsp
* @Description : 운영관리 > 직인대장관리
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2022.12.7 안주영 최초 생성
* @author 안주영
* @since 2022.2.7
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
input:read-only{
background-color: #ededed;
}
</style>
<script type="text/javascript">
$(document).ready(function(){
});
function press(event) {
if (event.keyCode==13) {
fncGoList();
}
}
function fncGoList(){
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.action = "<c:url value='/kccadr/oprtn/cndtnSspnIdtmt/instrActvtHstrySignAndCmpltCrtfcMngList.do'/>";
listForm.submit();
}
// function fn_goDetail(instrDetailActvtHstryOrd){
// var form = document.detailForm;
// form.instrDetailActvtHstryOrd.value = instrDetailActvtHstryOrd ;
// form.action = "<c:url value='/kccadr/oprtn/tngrVisitEdu/instrActvtHstryMngDetail.do'/>";
// form.submit();
// }
function fncReset(thisObj){
var targetObj = $(thisObj).closest('.list_top').find('select,input');
$.each(targetObj, function(){
if($(this).prop('tagName') == 'SELECT'){
if($(this).attr('name').indexOf('Month') != -1){
$(this).val(new Date().getMonth()+1);
}else if($(this).attr('name').indexOf('Year') != -1){
$(this).val(new Date().getFullYear());
}else{
$(this).prop("selectedIndex", 0);
}
}else{
$(this).val('');
}
});
}
</script>
<title>직인대장관리(이수증)</title>
</head>
<body>
<form id="detailForm" name="detailForm" method="post">
<input type="hidden" name="instrDetailActvtHstryOrd" id="instrDetailActvtHstryOrd" value=""/>
</form>
<form id="listForm" name="listForm" method="post">
<input type="hidden" name="pageIndex" value="<c:out value='${vEInstrActvtHstryVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEInstrActvtHstryVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEInstrActvtHstryVO.searchSortOrd}" />" />
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>직인대장관리(이수증) 목록</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>운영관리</p>
</li>
<li><span class="cur_nav">직인대장관리(이수증)</span></li>
</ul>
</div>
<!-- //cont_tit -->
<div class="cont">
<!-- list_top -->
<div class="list_top">
<!--
<div class="list_top_1">
<div class="util_left">
<p>구분</p>
</div>
<div class="util_right">
<ve:select codeId="VEA011" name="searchSelStatus" id="searchSelStatus" css="class='sel_type1'"
selectedValue="${vEInstrActvtHstryVO.searchSelStatus}" defaultValue=''
defaultText='전체'
/>
</div>
</div>
-->
<div class="list_top_2">
<div class="util_left">
<p>발급일자</p>
</div>
<div class="util_right">
<div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="searchStartDt" name="searchStartDt" value="<c:out value='${vEInstrActvtHstryVO.searchStartDt}'/>">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="searchEndDt" name="searchEndDt" value="<c:out value='${vEInstrActvtHstryVO.searchEndDt}'/>">
</div>
</div>
</div>
<div class="list_top_2">
<div class="util_left">
<p>성명</p>
</div>
<div class="util_right">
<input type="text" id=searchKeyword name="searchKeyword" class="search_input" placeholder="검색어를 입력하세요" value="<c:out value='${vEInstrActvtHstryVO.searchKeyword}'/>" onkeyDown="press(event);">
<button class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
</div>
</div>
</div>
<!-- //list_top -->
<!-- list util -->
<div class="list_util">
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
<div>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px">
<option value='10' <c:if test="${vEInstrActvtHstryVO.pageUnit == '10' or vEInstrActvtHstryVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEInstrActvtHstryVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEInstrActvtHstryVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEInstrActvtHstryVO.pageUnit == '100'}">selected</c:if>>100줄</option>
</select>
</div>
</div>
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 60px;">
<col style="width: 150px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
<col style="width: 120px;">
</colgroup>
<thead>
<tr>
<th>번호</th>
<th>항목</th>
<th>문서번호</th>
<th>과정명</th>
<th>교육일시</th>
<th>성명</th>
<th>발급일자</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<%-- <tr onclick="fn_goDetail('${list.instrDetailActvtHstryOrd}')" style="cursor:pointer;"> --%>
<!-- VE0011 -->
<tr>
<td>
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
</td>
<td>
<ve:code codeId="VE0011" code="${list.lctrDivCd }"/>
</td>
<td>
<c:if test="${list.lctrDivCd eq '50'}">실무역량-</c:if>
<c:if test="${list.lctrDivCd eq '60'}">기소유예-</c:if>
<c:out value="${list.eduCmpltCrtfcNmbr }" />
</td>
<td>
<c:out value="${list.prcsNm }" />
</td>
<td>
<c:out value="${list.eduStrtPnttm }" />
</td>
<td>
<c:out value="${list.mberNm }" />
</td>
<td>
<c:out value="${list.lastUpdtPnttm }" />
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="7"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- page -->
<div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div>
<!-- //page -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
<!-- //cont -->
</form>
</body>
</html>

View File

@ -1220,21 +1220,20 @@
<!-- list util -->
<div class="list_util">
<!--
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
-->
<div class="list_util">
<p class="list_util_p">
⑦월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계
</p>
<div>
<!-- <button type="button" class="btn_down_excel" onclick="excelDownLoadArea();">엑셀 다운로드(강의지역)</button> -->
<div>
<button type="button" class="btn_down_excel" onclick="excelDownLoad_no7();">엑셀 다운로드</button>
</div>
</div>
-->
<!-- list -->
<!--
<div class="tb_type01">
<table>
<colgroup>
@ -1248,7 +1247,6 @@
</colgroup>
<thead>
<tr>
<!-- <th>대상</th> -->
<th></th>
<th>차시</th>
<th>이수인원</th>
@ -1260,18 +1258,6 @@
<tbody>
<c:forEach var="list" items="${list_no7}" varStatus="status">
<tr>
<!--
<td>
<c:choose>
<c:when test="${list.divCd eq title1}">
</c:when>
<c:otherwise>
<c:out value="${list.divCd}"/>
</c:otherwise>
</c:choose>
</td>
-->
<c:choose>
<c:when test="${list.codeNm eq '13'}">
<td>합계</td>
@ -1305,9 +1291,9 @@
</tbody>
</table>
</div>
-->
<!-- //list -->
</c:if>
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@ -563,8 +563,11 @@
<th scope="row">상태</th>
<td class="ddlnCdStts">
<c:choose>
<c:when test="${not empty info.aprvlCd}">
<kc:code codeId="VE0003" code="${info.aprvlCd}"/>
<c:when test="${not empty prcsAplctVO.aprvlCd}">
<kc:code codeId="VE0003" code="${prcsAplctVO.aprvlCd}"/>
<c:if test="${prcsAplctVO.aprvlCd eq '60' and not empty prcsAplctVO.aplctStateCd}">
- <kc:code codeId="VEA003" code="${prcsAplctVO.aplctStateCd}"/>
</c:if>
</c:when>
<c:otherwise>
<kc:code codeId="VEA004" code="${info.ddlnCd}"/>
@ -608,8 +611,8 @@
<button type="button" class="btn line red large" onclick="fncCancelUser('${infoAplctOrd.eduAplctOrd}', '${infoAplctOrd.prcsOrd}', '2-1')">교육취소</button>
</c:if>
<c:if test="${prcsAplctVO.aprvlCd eq '60' and prcsAplctVO.ddlnCd eq '20'}">
<%-- <button type="button" class="btnType05" onclick="fncCancelStatusChange('${infoAplctOrd.eduAplctOrd}', '${infoAplctOrd.prcsOrd}', '6-1')">취소요청</button> --%>
<c:if test="${prcsAplctVO.aprvlCd eq '60' and prcsAplctVO.ddlnCd eq '20' and empty prcsAplctVO.aplctStateCd}">
<button type="button" class="btnType05" onclick="fncCancelStatusChange('${infoAplctOrd.eduAplctOrd}', '${infoAplctOrd.prcsOrd}', '6-1')">취소요청</button>
</c:if>
</div>

View File

@ -12,7 +12,6 @@
<title>교육신청 목록 > 기소유예 찾아가는 저작권 교육 > 한국지식재산보호원 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="/ipedu/visitEdu/adm/publish/css/reset.css">
<style>
.duet-date__dialog-content,.duet-date__dialog{max-width:400px;width:364px;}
@ -270,7 +269,8 @@ $(document).ready(function(){
ο 개인정보의 수집 이용 목적 : 교육 대상자 및 이수자 관리
ο 수집하는 개인정보 항목 : 성명, 생년월일, 휴대전화, 이메일
ο 개인정보의 보유 및 이용기간 : 사업 종료시까지
ο 동의를 거부할 권리가 있다는 사실 및 동의 거부에 따른 불이익이 있는 경우에는 그 불이익의 내용 : 귀하의 개인정보 제공 및 동의를 거부할 권리가 있으며, 위 항목 동의 거부시 수강신청이 불가할 수 있음
ο 동의를 거부할 권리가 있다는 사실 및 동의 거부에 따른 불이익이 있는 경우에는 그 불이익의 내용 :
귀하의 개인정보 제공 및 동의를 거부할 권리가 있으며, 위 항목 동의 거부시 수강신청이 불가할 수 있음
</pre>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">

View File

@ -0,0 +1,347 @@
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%
/**
* @Class Name : eduCancelPop.jsp
* @Description : 교육취소요청 팝업
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.08.09 김봉호 최초 생성
* @author 김봉호
* @since 2021.08.21
* @version 1.0
* @see
*
*/
%>
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
//파일첨부관련 설정들===============================================
$(".btn_add_file").on('click', function(){
$("#file_temp").click();
});
$("#limitcount").val("1");
//파일첨부관련 설정들===============================================
// 레이어팝업 포커싱 이동 수정
$(".tooltip-close").click(function(){
var activeTarget = $('[data-tooltip-con="sub35_pop03"]');
activeTarget.hide();
$('[data-tooltip="sub35_pop03"]').focus();
});
$('#file_temp').change(function(e){
var objUpload = $(".upload_area");
var files = $('#file_temp')[0].files;
handleFileUpload(files,objUpload); //파일업로드
if($("#file_temp").length > 0){
$("#file_temp").val(""); //파일지우기
}
});
});
function fncPopClose(){
self.close();
}
function fncSave(flag){
/*
<!-- for validator #3 -->
*/
//if (!validateVEEduAplctVO(document.createForm)) return;
/*
<!-- for validator #3 -->
*/
//저장
if ($("#aprvlCn").val().length>300){
alert("취소사유는 300자까지만 가능합니다.");
return;
}
if ($("#aprvlCn").val().length<=0){
alert("취소사유는 반드시 넣어주세요.");
return;
}
//첨부파일 등록 처리
$('#file_temp').val(""); //첨부파일 중복 등록 방지를 위해 추가
$("#sbmtYn").val(flag);
//var data = new FormData(form);
var data = new FormData(document.getElementById("createForm"));
//첨부파일 등록 처리-step1
//if(!data.get("fileSize")){
/*
if($('#tbody_fiielist tr').length*1<=0){
alert("첨부파일을 등록해 주세요");
return false;
}
*/
//첨부파일 등록 처리-step2
_fileForm2.forEach(function(obj, idx) {
if (obj) data.append("file"+idx, obj.fileObj);
});
// $("#mode").val(type);
/*
var data = new FormData(document.getElementById("createForm"));
_fileForm2.forEach(function(obj, idx) {
if (obj) data.append("file"+idx, obj.fileObj);
});
*/
if(confirm("취소요청 제출 하시겠습니까?\n관리자 승인 후 취소처리가됩니다.")){
$.ajax({
type: "POST",
enctype: 'multipart/form-data',
url: "${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/popup/eduCancelPopupAjax.do",
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (returnData, status) {
if(status == 'success'){
alert("등록 되었습니다.");
location.reload();
} else if(status== 'fail'){
alert("등록에 실패하였습니다.");
}
},
error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
</script>
<form:form id="createForm" name="createForm" method="post" commandName="vEEduRprtVO" onsubmit="return false;">
<input type="hidden" name="eduAplctOrd" value="<c:out value="${vEInstrAsgnmVO.eduAplctOrd}" />" />
<input type="hidden" name="eduChasiOrd" value="<c:out value="${vEInstrAsgnmVO.eduChasiOrd}" />" />
<input type="hidden" name="prcsAplctPrdOrd" value="<c:out value="${vEInstrAsgnmVO.prcsAplctPrdOrd}" />" />
<input type="hidden" id="userId" name="userId" value="<c:out value="${vEInstrAsgnmVO.userId}" />" />
<input type="hidden" name="sbmtYn" id="sbmtYn" value="" />
<input type="hidden" name="limitcount" id="limitcount" value="1" /><!-- 최대 업로드 파일갯수 -->
<input type="hidden" name="allrowFileExtsn" value="JPG,PNG,JPEG" /><!-- 확장자 제한-->
<div class="popup_wrap popType03" tabindex="0" data-tooltip-con="sub35_pop03" data-focus="sub35_pop03" data-focus-prev="sub35_pop03_close">
<div class="popup_tit">
<p>취소요청</p><button class="btn_popup_close tooltip-close" data-focus="sub35_pop03_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="pop_tb_type01">
<table>
<caption>첨부파일, 취소사유를 입력하는 표</caption>
<colgroup>
<col style="width: 120px;">
<col style="width: auto">
</colgroup>
<tbody>
<%-- <tr>
<th scope="row">
<p>첨부파일</p>
</th>
<td class="upload_area">
<div class="btn_wrap">
<button type="button" class="btnType01 btn_add_file">파일 찾기</button>
<!-- <p style="color:grey;padding:5px;">파일명은 <span style="color:red;font-weight:500">1기 홍길동 결과보고서(0328-0401)</span> 형태로 등록해주세요.</p> -->
<input type="file" id="file_temp" name="file_temp" class="uploadFile" style="display:none"/>
</div>
<div class="file_wrap file_upload_box no_img_box">
<table>
<caption>첨부파일 리스트 : 파일명, 종류, 크기</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 15%;">
</colgroup>
<thead>
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
</thead>
<tbody class="tb_file_before">
<tr>
<td colspan="3">
<p>첨부하실 파일을 <span>마우스끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap fileAfter file_list_div" style="display: none;">
<table>
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 60px;">
</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>
</td>
</tr> --%>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>취소사유</p>
</th>
<td>
<textarea name="aprvlCn" id="aprvlCn" title="특이사항"></textarea>
</td>
</tr>
</tbody>
</table>
</div>
<dl class="filewrap_div filewrap_eduRsltRprtRegPop">
<dt>첨부파일</dt>
<dd class="upload_area">
<div class="btn_wrap">
<button type="button" class="btnType01 btn_add_file">파일 찾기</button>
<!-- <p style="color:grey;padding:5px;">파일명은 <span style="color:red;font-weight:500">1기 홍길동 결과보고서(0328-0401)</span> 형태로 등록해주세요.</p> -->
<input type="file" id="file_temp" name="file_temp" class="uploadFile" style="display:none"/>
</div>
<div class="file_wrap file_upload_box no_img_box">
<table>
<caption>첨부파일 리스트 : 파일명, 종류, 크기</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 15%;">
</colgroup>
<thead>
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
</thead>
<tbody class="tb_file_before">
<tr>
<td colspan="3">
<p>첨부하실 파일을 <span>마우스끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap fileAfter file_list_div" style="display: none;">
<table>
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 60px;">
</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>1</span>개</p>
<p><span>50MB</span>제한</p>
</div>
</div>
</dd>
</dl>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" onclick="fncSave('Y'); return false;" class="btnType05">제출</button>
</div>
<div class="btn_right">
<button type="button" class="btnType02 tooltip-close" data-focus="sub35_pop03_close" data-focus-next="sub35_pop03">취소</button>
</div>
</div>
</div>
</div>
</form:form>

View File

@ -11,10 +11,6 @@
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
<title>교육신청 목록 > 성인 찾아가는 저작권 교육 > 한국지식재산보호원 저작권 교육 시스템</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<spring:eval expression="@property['Globals.Innorix.License']" var="license"/>
<script src="<c:url value='/innorix/innorix_${license}.js' />"></script>
<script src="<c:url value='/js/kccadr/innorixCommon.js' />"></script>
<link rel="stylesheet" href="<c:url value='/innorix/innorix.css'/>" type="text/css">
<style>
input:disabled {
background-color: #f9f9f9 !important;
@ -22,9 +18,6 @@
input:read-only {
background-color: #f9f9f9 !important;
}
#fileControl{margin: 8px 0 0 0; border: 1px solid #d5d5d5; border-radius: 5px; height: 150px !important; background-color: #fafafa;}
.innorix_basic div.irx_filetree.empty-uploader{background: url(/ipedu/visitEdu/usr/publish/images/content/dropzone_file_before.png) no-repeat center; height: 150px !important;}
.irx_filetree,.innorix_basic div.irx_infoBox{height: 150px !important;}
</style>
<script type="text/javaScript" language="javascript">
@ -32,31 +25,6 @@
$(document).ready(function(){
//대용량 업로드 세팅
/*
* ==================================================================
* INNORIX
* 파일전송 컨트롤 생성
* ==================================================================
*/
control = innorix.create({
el: '#fileControl' // 컨트롤 출력 HTML 객체 ID
, transferMode: 'both' // 업로드, 다운로드 혼합사용
, installUrl: '<c:url value="/innorix/install/install.html" />' // Agent 설치 페이지
, uploadUrl: '<c:url value="/innorix/exam/upload.jsp" />' // 업로드 URL
, height:40
, width: 650
, maxFileCount : 1 // 첨부파일 최대 갯수
, allowExtension : ["txt","xls","xlsx","png","jpg","jpeg","doc","ppt","hwp","pdf","zip"]
// 가능한 확장자 txt|xls|xlsx|png|jpg|jpeg|doc|ppt|hwp|pdf|zip
});
// 업로드 완료 후 이벤트
control.on('uploadComplete', function (p) {
console.log('uploadComplete : ', p);
fn_callBackInnorix(p.files); // 파일 정보 DB isnert function
});
});
@ -124,59 +92,14 @@ $(document).ready(function(){
}
function fncGoDetail(prcsAplctPrdOrd){
function fncGoDetail(prcsAplctPrdOrd, eduAplctOrd){
var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.eduAplctOrd.value = eduAplctOrd ;
viewForm.action = "<c:url value='/web/ve/aplct/cmdTrgt/eduAplctDetail.do'/>";
viewForm.submit();
}
//서류 요청
function insetDocReq(){
//서류명 체크
if($("input[name=cnclCn]").val() == ''){
alert("취소사유를 입력해 주세요");
return false;
}
//첨부파일 체크 및 요청
if(confirm("제출 하시겠습니까?")){
if(control.getUploadFiles().length > 0){
var postObj = new Object();
postObj.innoDirPath = $('#innoDirPath').val();
control.setPostData(postObj); // 업로드시 함께 전달될 POST Param 추가
control.upload(); // 업로드 시작
}else{
alert("등록된 첨부파일이 없습니다.");
return false;
}
}
}
//서류 요청 양식 업로드 후 콜백
function fn_callBackInnorix(data){
var url = "<c:url value='/web/common/insertInnorixSspnCnClAjax.do' />";
//선택된 강사 ID
var sendData = {
"fileType": "sspnForm"
, "eduAplctOrd": $('#cnclForm #eduAplctOrd').val()
, "prcsAplctPrdOrd": $('#cnclForm #prcsAplctPrdOrd').val()
, "innorixFileListVO": data
, "cnclCn" : $('#cnclCn').val()
, "successMsg" : "등록이 완료되었습니다."
}
console.log('sendData : ', sendData);
/*
* 공통 : innorixCommon.js
* fn_innorixCmmAjax() 호출 후 status가 성공(OK)이면 실행
*/
if(fn_innorixCmmAjax(sendData, url) == "OK")
{
location.reload(true);
}
}
// 설문조사 버튼 클릭 이벤트
function selectQestnInfo(id, action){
@ -425,6 +348,7 @@ $(document).ready(function(){
</form>
<form name="viewForm" id="viewForm">
<input type="hidden" name="prcsAplctPrdOrd">
<input type="hidden" name="eduAplctOrd">
</form>
<form name="goEduAplctListForm" id="goEduAplctListForm">
</form>
@ -495,7 +419,7 @@ $(document).ready(function(){
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" onkeypress="if(event.keyCode == 13){fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');}" style="cursor:pointer;" tabindex="0">
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');" onkeypress="if(event.keyCode == 13){fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');}" style="cursor:pointer;" tabindex="0">
<c:choose>
<c:when test="${not empty list.title}">
<c:out value="${list.title}"/>
@ -559,13 +483,13 @@ $(document).ready(function(){
(취소-반려)
</c:if>
<c:if test="${list.aplctStateCd eq 10 }"> <!--교육 승인된 상태 (미이수)일 때만 취소버튼 노출 -->
<button type="button" title="신청취소" class="btnType02 btn small gray fill" data-tooltip="sub37_pop02" onclick="fn_cnclUpdate('${list.eduAplctOrd }','${list.prcsAplctPrdOrd }')">취소</button>
<%-- <button type="button" title="신청취소" class="btnType02 btn small fill gray" data-tooltip="sub37_pop02" onclick="fn_cnclUpdate('${list.eduAplctOrd }','${list.prcsAplctPrdOrd }')">취소</button> --%>
</c:if>
</c:when>
<c:otherwise>
<kc:code codeId="VE0003" code="${list.aprvlCd}"/>
<c:if test="${list.aprvlCd eq 10 }">
<button type="button" title="신청취소" class="btnType02 btn small gray fill" onclick="fn_veEduAplctCnclUpdate('${list.eduAplctOrd }')">취소</button>
<%-- <button type="button" title="신청취소" class="btnType02 btn small fill gray" onclick="fn_veEduAplctCnclUpdate('${list.eduAplctOrd }')">취소</button> --%>
</c:if>
</c:otherwise>
</c:choose>
@ -639,7 +563,7 @@ $(document).ready(function(){
</td>
<td>
<c:if test="${(list.aprvlCd eq '10' or list.aprvlCd eq '20') and list.ddlnCd ne '20'}">
<button type="button" class="btnType05 small line red" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">교육취소</button>
<button type="button" class="btnType05 small line red" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">교육취소</button>
</c:if>
</td>
</tr>
@ -670,75 +594,6 @@ $(document).ready(function(){
<!-- 서류요청 팝업 -->
<div class="tooltip-wrap">
<div class="popup_wrap popType05" tabindex="0" data-tooltip-con="sub37_pop02" data-focus="sub37_pop02" data-focus-prev="sub37_pop02_close">
<div class="popup_tit">
<p>취소 사용 제출</p>
<button class="btn_popup_close tooltip-close" data-focus="sub37_pop02_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="popup_table_top">
<button type="button" class="btnType06">취소양식 다운로드</button>
</div>
<div class="pop_tb_type01">
<table>
<caption>취소사유 작성표</caption>
<colgroup>
<col style="width: 22%;">
<col style="">
</colgroup>
<tr>
<th scope="col">취소사유</th>
<td><label for="cnclCn" class="label">취소사유 작성</label>
<textarea id="cnclCn" name="cnclCn" title="취소사유 작성하기"></textarea></td>
</tr>
</table>
</div>
<div class="popup_cont upload_area">
<div>
<div class="pop_search_wrap">
<label for="fileNm" class="label">첨부파일 선택</label>
<button type="button" onclick="control.openFileDialogSingle();" class="btnType01 btn_add_file">파일찾기</button>
</div>
<div id="fileControl"></div><br/>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<!-- <button type="button" class="btnType05">제출</button> -->
<button type="button" class="btnType05" id="popupSubmin" onclick="insetDocReq();">요청</button>
<button type="button" class="btnType02 tooltip-close" data-focus="sub37_pop02_close" data-focus-next="sub37_pop02">닫기</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
</div>
<!--// 서류요청 팝업-->
<!-- 강의만족도 결과 등록 팝업 -->
<form id="srvyPopupForm" name="srvyPopupForm" method="post" >

View File

@ -508,7 +508,7 @@ function loadImage(src) {
<input type="hidden" name="qestmInfoSize" id="qestmInfoSize" value="${fn:length(chasiSrvyList)}">
<div class="popup_wrap popType01 estimate_popup" data-info="${vEEduChasiVO.eduAplctOrd}" data-tooltip-con="sub36_pop02" data-focus="sub36_pop02" data-focus-prev="sub36_pop02_close">
<div class="popup_wrap popType01 estimate_popup" data-info="${vEEduChasiVO.eduAplctOrd}" data-tooltip-con="sub36_pop02" data-focus="sub36_pop02" data-focus-prev="sub36_pop02_close" id="popup_cont">
<div class="popup_tit">
<p>이수증 출력</p>

View File

@ -563,8 +563,11 @@
<th scope="row">상태</th>
<td class="ddlnCdStts">
<c:choose>
<c:when test="${not empty info.aprvlCd}">
<kc:code codeId="VE0003" code="${info.aprvlCd}"/>
<c:when test="${not empty prcsAplctVO.aprvlCd}">
<kc:code codeId="VE0003" code="${prcsAplctVO.aprvlCd}"/>
<c:if test="${prcsAplctVO.aprvlCd eq '60' and not empty prcsAplctVO.aplctStateCd}">
- <kc:code codeId="VEA003" code="${prcsAplctVO.aplctStateCd}"/>
</c:if>
</c:when>
<c:otherwise>
<kc:code codeId="VEA004" code="${info.ddlnCd}"/>
@ -608,8 +611,8 @@
<button type="button" class="btn line red large" onclick="fncCancelUser('${infoAplctOrd.eduAplctOrd}', '${infoAplctOrd.prcsOrd}', '2-1')">교육취소</button>
</c:if>
<c:if test="${prcsAplctVO.aprvlCd eq '60' and prcsAplctVO.ddlnCd eq '20'}">
<%-- <button type="button" class="btnType05" onclick="fncCancelStatusChange('${infoAplctOrd.eduAplctOrd}', '${infoAplctOrd.prcsOrd}', '6-1')">취소요청</button> --%>
<c:if test="${prcsAplctVO.aprvlCd eq '60' and prcsAplctVO.ddlnCd eq '20' and empty prcsAplctVO.aplctStateCd}">
<button type="button" class="btnType05" onclick="fncCancelStatusChange('${infoAplctOrd.eduAplctOrd}', '${infoAplctOrd.prcsOrd}', '6-1')">취소요청</button>
</c:if>
</div>

View File

@ -24,9 +24,10 @@
}
function fncGoDetail(prcsAplctPrdOrd){
function fncGoDetail(prcsAplctPrdOrd, eduAplctOrd){
var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.eduAplctOrd.value = eduAplctOrd;
viewForm.action = "<c:url value='/web/ve/aplct/prevent/eduAplctDetail.do'/>";
viewForm.submit();
}
@ -187,6 +188,7 @@
</form>
<form name="viewForm" id="viewForm">
<input type="hidden" name="prcsAplctPrdOrd">
<input type="hidden" name="eduAplctOrd">
</form>
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
@ -234,7 +236,7 @@
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" onkeypress="if(event.keyCode == 13){fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');}" style="cursor:pointer;" tabindex="0">
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');" onkeypress="if(event.keyCode == 13){fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');}" style="cursor:pointer;" tabindex="0">
<!-- <td> -->
<c:choose>
@ -252,7 +254,12 @@
<c:out value="${list.eduStrtPnttm}"/>
</td>
<td>
<c:choose>
<kc:code codeId="VE0003" code="${list.aprvlCd}"/>
<c:if test="${list.aprvlCd eq '60' and not empty list.aplctStateCd}">
- <kc:code codeId="VEA003" code="${list.aplctStateCd}"/>
</c:if>
<%-- <c:choose>
<c:when test="${not empty list.aplctStateCd }">
<kc:code codeId="VEA003" code="${list.aplctStateCd}"/>
</c:when>
@ -265,8 +272,8 @@
<button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">취소</button>
</c:if>
<c:if test="${list.aprvlCd eq '60' and list.ddlnCd eq '20'}">
<%-- <button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">취소</button> --%>
</c:if>
<button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">취소</button>
</c:if> --%>
</td>
<td>
@ -355,7 +362,7 @@
<ul onclick="">
<li>
<span>교육과정</span>
<span onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" >
<span onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');" >
<c:choose>
<c:when test="${not empty list.title}">
<c:out value="${list.title}"/>
@ -383,7 +390,7 @@
</c:choose>
<c:if test="${(list.aprvlCd eq '10' or list.aprvlCd eq '20') and list.ddlnCd ne '20'}">
<button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">취소</button>
<button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">취소</button>
</c:if>
<c:if test="${list.aprvlCd eq '60' and list.ddlnCd eq '20'}">
<%-- <button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">취소</button> --%>

View File

@ -0,0 +1,347 @@
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%
/**
* @Class Name : eduCancelPop.jsp
* @Description : 교육취소요청 팝업
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.08.09 김봉호 최초 생성
* @author 김봉호
* @since 2021.08.21
* @version 1.0
* @see
*
*/
%>
<script type="text/javaScript" language="javascript">
$(document).ready(function(){
//파일첨부관련 설정들===============================================
$(".btn_add_file").on('click', function(){
$("#file_temp").click();
});
$("#limitcount").val("1");
//파일첨부관련 설정들===============================================
// 레이어팝업 포커싱 이동 수정
$(".tooltip-close").click(function(){
var activeTarget = $('[data-tooltip-con="sub35_pop03"]');
activeTarget.hide();
$('[data-tooltip="sub35_pop03"]').focus();
});
$('#file_temp').change(function(e){
var objUpload = $(".upload_area");
var files = $('#file_temp')[0].files;
handleFileUpload(files,objUpload); //파일업로드
if($("#file_temp").length > 0){
$("#file_temp").val(""); //파일지우기
}
});
});
function fncPopClose(){
self.close();
}
function fncSave(flag){
/*
<!-- for validator #3 -->
*/
//if (!validateVEEduAplctVO(document.createForm)) return;
/*
<!-- for validator #3 -->
*/
//저장
if ($("#aprvlCn").val().length>300){
alert("취소사유는 300자까지만 가능합니다.");
return;
}
if ($("#aprvlCn").val().length<=0){
alert("취소사유는 반드시 넣어주세요.");
return;
}
//첨부파일 등록 처리
$('#file_temp').val(""); //첨부파일 중복 등록 방지를 위해 추가
$("#sbmtYn").val(flag);
//var data = new FormData(form);
var data = new FormData(document.getElementById("createForm"));
//첨부파일 등록 처리-step1
//if(!data.get("fileSize")){
/*
if($('#tbody_fiielist tr').length*1<=0){
alert("첨부파일을 등록해 주세요");
return false;
}
*/
//첨부파일 등록 처리-step2
_fileForm2.forEach(function(obj, idx) {
if (obj) data.append("file"+idx, obj.fileObj);
});
// $("#mode").val(type);
/*
var data = new FormData(document.getElementById("createForm"));
_fileForm2.forEach(function(obj, idx) {
if (obj) data.append("file"+idx, obj.fileObj);
});
*/
if(confirm("취소요청 제출 하시겠습니까?\n관리자 승인 후 취소처리가됩니다.")){
$.ajax({
type: "POST",
enctype: 'multipart/form-data',
url: "${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/popup/eduCancelPopupAjax.do",
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success: function (returnData, status) {
if(status == 'success'){
alert("등록 되었습니다.");
location.reload();
} else if(status== 'fail'){
alert("등록에 실패하였습니다.");
}
},
error: function (e) { alert("저장에 실패하였습니다."); console.log("ERROR : ", e); }
});
}
}
</script>
<form:form id="createForm" name="createForm" method="post" commandName="vEEduRprtVO" onsubmit="return false;">
<input type="hidden" name="eduAplctOrd" value="<c:out value="${vEInstrAsgnmVO.eduAplctOrd}" />" />
<input type="hidden" name="eduChasiOrd" value="<c:out value="${vEInstrAsgnmVO.eduChasiOrd}" />" />
<input type="hidden" name="prcsAplctPrdOrd" value="<c:out value="${vEInstrAsgnmVO.prcsAplctPrdOrd}" />" />
<input type="hidden" id="userId" name="userId" value="<c:out value="${vEInstrAsgnmVO.userId}" />" />
<input type="hidden" name="sbmtYn" id="sbmtYn" value="" />
<input type="hidden" name="limitcount" id="limitcount" value="1" /><!-- 최대 업로드 파일갯수 -->
<input type="hidden" name="allrowFileExtsn" value="JPG,PNG,JPEG" /><!-- 확장자 제한-->
<div class="popup_wrap popType03" tabindex="0" data-tooltip-con="sub35_pop03" data-focus="sub35_pop03" data-focus-prev="sub35_pop03_close">
<div class="popup_tit">
<p>취소요청</p><button class="btn_popup_close tooltip-close" data-focus="sub35_pop03_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="pop_tb_type01">
<table>
<caption>첨부파일, 취소사유를 입력하는 표</caption>
<colgroup>
<col style="width: 120px;">
<col style="width: auto">
</colgroup>
<tbody>
<%-- <tr>
<th scope="row">
<p>첨부파일</p>
</th>
<td class="upload_area">
<div class="btn_wrap">
<button type="button" class="btnType01 btn_add_file">파일 찾기</button>
<!-- <p style="color:grey;padding:5px;">파일명은 <span style="color:red;font-weight:500">1기 홍길동 결과보고서(0328-0401)</span> 형태로 등록해주세요.</p> -->
<input type="file" id="file_temp" name="file_temp" class="uploadFile" style="display:none"/>
</div>
<div class="file_wrap file_upload_box no_img_box">
<table>
<caption>첨부파일 리스트 : 파일명, 종류, 크기</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 15%;">
</colgroup>
<thead>
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
</thead>
<tbody class="tb_file_before">
<tr>
<td colspan="3">
<p>첨부하실 파일을 <span>마우스끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap fileAfter file_list_div" style="display: none;">
<table>
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 60px;">
</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>
</td>
</tr> --%>
<tr>
<th scope="row">
<p class="req_text"><span>필수입력 항목</span>*</p>
<p>취소사유</p>
</th>
<td>
<textarea name="aprvlCn" id="aprvlCn" title="특이사항"></textarea>
</td>
</tr>
</tbody>
</table>
</div>
<dl class="filewrap_div filewrap_eduRsltRprtRegPop">
<dt>첨부파일</dt>
<dd class="upload_area">
<div class="btn_wrap">
<button type="button" class="btnType01 btn_add_file">파일 찾기</button>
<!-- <p style="color:grey;padding:5px;">파일명은 <span style="color:red;font-weight:500">1기 홍길동 결과보고서(0328-0401)</span> 형태로 등록해주세요.</p> -->
<input type="file" id="file_temp" name="file_temp" class="uploadFile" style="display:none"/>
</div>
<div class="file_wrap file_upload_box no_img_box">
<table>
<caption>첨부파일 리스트 : 파일명, 종류, 크기</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 15%;">
<col style="width: 15%;">
</colgroup>
<thead>
<th scope="col">파일 명</th>
<th scope="col">종류</th>
<th scope="col">크기</th>
</thead>
<tbody class="tb_file_before">
<tr>
<td colspan="3">
<p>첨부하실 파일을 <span>마우스끌어서</span> 넣어주세요.</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="file_wrap fileAfter file_list_div" style="display: none;">
<table>
<caption>첨부파일 리스트 : 파일명, 종류, 크기, 삭제</caption>
<colgroup>
<col style="width: auto;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 60px;">
</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>1</span>개</p>
<p><span>50MB</span>제한</p>
</div>
</div>
</dd>
</dl>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" onclick="fncSave('Y'); return false;" class="btnType05">제출</button>
</div>
<div class="btn_right">
<button type="button" class="btnType02 tooltip-close" data-focus="sub35_pop03_close" data-focus-next="sub35_pop03">취소</button>
</div>
</div>
</div>
</div>
</form:form>

View File

@ -563,8 +563,11 @@
<th scope="row">상태</th>
<td class="ddlnCdStts">
<c:choose>
<c:when test="${not empty info.aprvlCd}">
<kc:code codeId="VE0003" code="${info.aprvlCd}"/>
<c:when test="${not empty prcsAplctVO.aprvlCd}">
<kc:code codeId="VE0003" code="${prcsAplctVO.aprvlCd}"/>
<c:if test="${prcsAplctVO.aprvlCd eq '60' and not empty prcsAplctVO.aplctStateCd}">
- <kc:code codeId="VEA003" code="${prcsAplctVO.aplctStateCd}"/>
</c:if>
</c:when>
<c:otherwise>
<kc:code codeId="VEA004" code="${info.ddlnCd}"/>
@ -608,8 +611,8 @@
<button type="button" class="btn line red large" onclick="fncCancelUser('${infoAplctOrd.eduAplctOrd}', '${infoAplctOrd.prcsOrd}', '2-1')">교육취소</button>
</c:if>
<c:if test="${prcsAplctVO.aprvlCd eq '60' and prcsAplctVO.ddlnCd eq '20'}">
<%-- <button type="button" class="btnType05" onclick="fncCancelStatusChange('${infoAplctOrd.eduAplctOrd}', '${infoAplctOrd.prcsOrd}', '6-1')">취소요청</button> --%>
<c:if test="${prcsAplctVO.aprvlCd eq '60' and prcsAplctVO.ddlnCd eq '20' and empty prcsAplctVO.aplctStateCd}">
<button type="button" class="btnType05" onclick="fncCancelStatusChange('${infoAplctOrd.eduAplctOrd}', '${infoAplctOrd.prcsOrd}', '6-1')">취소요청</button>
</c:if>
</div>

View File

@ -24,9 +24,10 @@
}
function fncGoDetail(prcsAplctPrdOrd){
function fncGoDetail(prcsAplctPrdOrd, eduAplctOrd){
var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.eduAplctOrd.value = eduAplctOrd ;
//viewForm.action = "<c:url value='/web/ve/aplct/sspnIdtmt/eduAplctDetail.do'/>";
viewForm.action = "<c:url value='/web/ve/aplct/sspnIdtmt/eduAplctDetail.do'/>";
viewForm.submit();
@ -188,6 +189,7 @@
</form>
<form name="viewForm" id="viewForm">
<input type="hidden" name="prcsAplctPrdOrd">
<input type="hidden" name="eduAplctOrd">
</form>
<form:form id="listForm" name="listForm" commandName="vEEduAplctVO">
<input type="hidden" name="pageIndex" value="<c:out value='${vEEduAplctVO.pageIndex}' default='1' />"/>
@ -235,7 +237,7 @@
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" onkeypress="if(event.keyCode == 13){fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');}" style="cursor:pointer;" tabindex="0">
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');" onkeypress="if(event.keyCode == 13){fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');}" style="cursor:pointer;" tabindex="0">
<!-- <td> -->
<c:choose>
@ -254,7 +256,7 @@
</td>
<td>
<kc:code codeId="VE0003" code="${list.aprvlCd}"/>
<c:if test="${list.aprvlCd eq '60'}">
<c:if test="${list.aprvlCd eq '60' and not empty list.aplctStateCd}">
- <kc:code codeId="VEA003" code="${list.aplctStateCd}"/>
</c:if>
@ -295,13 +297,12 @@
<c:choose>
<%-- <c:when test="${list.aprvlCd eq 60 and list.qestRsltExists and list.aplctStateCd ne 10 and list.aplctStateCd ne 30}"> --%>
<c:when test="${list.aprvlCd eq 60 and list.qestRsltExists}">
<!-- 설문노출대상(확정처리를 받았음(60) && 교육기간이 지났음 list.qestRsltExists=true && 미이수가 아닌것(10) ) -->
<c:when test="${list.aprvlCd eq 60 and list.qestRsltExists and list.aplctStateCd ne 10 and list.aplctStateCd ne 30}">
<!-- 설문노출대상(승인처리를 받았음(20) && 교육기간이 지났음 list.qestRsltExists=true && 미이수가 아닌것(10) ) -->
<c:choose>
<c:when test="${list.qestnrId10Cnt gt 0}">
<c:when test="${list.aplctStateCd eq 20 and list.qestnrId10Cnt gt 0}">
<!-- 작성된 설문이 있다 -->
<button type="button" class="btnType02" data-info="${list.eduAplctOrd}" data-tooltip="sub36_pop02"
onclick="fncQustnrList('${list.eduAplctOrd}','${list.eduChasiOrd}','10','select'
@ -309,13 +310,21 @@
)" title="팝업 열림">설문완료</button>
</c:when>
<c:when test="${empty list.qestnrId10}">
<c:when test="${empty list.qestnrId10 and list.aprvlCd eq 20}">
<!-- 대상 설문이 없다 -->
대상설문없음
</c:when>
</c:when>
<c:when test="${not empty list.qestnrId10 and list.qestnrId10Cnt eq 0 and list.qustnrTm eq '1'}">
<!-- 설문 키값이 있고, 답변이 없고, 설문 오픈 시간이 지났다(1), (0-지나기전)면 설문 등록을 연다 -->
<c:when test="${(empty list.qestnrId10Cnt or list.qestnrId10Cnt eq 0) and list.qustnrTm eq '0'}">
<!-- 작성된 설문이 없다 -->
<button type="button" class="btn small mint line sur_bt" data-info="${list.eduAplctOrd}" data-tooltip="sub36_pop02"
onclick="fncQustnrList('${list.eduAplctOrd}','${list.eduChasiOrd}','10','insert'
,'${list.qustnrTmplatId}','${list.qestnrId10}',''
)" title="팝업 열림">설문등록</button>
</c:when>
<c:when test="${list.qustnrTm eq '1'}">
<!-- 작성된 설문이 없다 -->
<button type="button" class="btn small mint line sur_bt" data-info="${list.eduAplctOrd}" data-tooltip="sub36_pop02"
onclick="fncQustnrList('${list.eduAplctOrd}','${list.eduChasiOrd}','10','insert'
,'${list.qustnrTmplatId}','${list.qestnrId10}',''
@ -337,13 +346,15 @@
</td>
<td>
<c:choose>
<c:when test="${list.qestRsltExists and list.aprvlCd eq '60' and list.aplctStateCd eq '20'}">
<!-- 교육 기간 종료 & 교육신청은 확정(60) & 교육상태는 이슈(20) & 수료증 출력 가능 -->
<c:when test="${list.qestRsltExists }">
<button type="button" class="btn small mint line sur_bt" data-info="${list.eduAplctOrd}" data-tooltip="sub36_pop02"
onclick="fncPrintCert('${list.eduAplctOrd}','${list.eduChasiOrd}','10','insert'
,'${list.qustnrTmplatId}','${list.qestnrId10}',''
)" title="출력">출력</button>
</c:when>
<c:when test="${list.dateChk eq 1 and not list.qestRsltExists}">
교육완료
</c:when>
<c:otherwise>
-
</c:otherwise>
@ -364,7 +375,7 @@
<ul onclick="">
<li>
<span>교육과정</span>
<span onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" >
<span onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');" >
<c:choose>
<c:when test="${not empty list.title}">
<c:out value="${list.title}"/>
@ -392,7 +403,7 @@
</c:choose>
<c:if test="${(list.aprvlCd eq '10' or list.aprvlCd eq '20') and list.ddlnCd ne '20'}">
<button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">취소</button>
<button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">취소</button>
</c:if>
<c:if test="${list.aprvlCd eq '60' and list.ddlnCd eq '20'}">
<%-- <button type="button" class="btnType02" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">취소</button> --%>

View File

@ -141,6 +141,7 @@
<form:form id="createForm" name="createForm" method="post" commandName="vEEduRprtVO" onsubmit="return false;">
<input type="hidden" name="eduAplctOrd" value="<c:out value="${vEInstrAsgnmVO.eduAplctOrd}" />" />
<input type="hidden" name="eduChasiOrd" value="<c:out value="${vEInstrAsgnmVO.eduChasiOrd}" />" />
<input type="hidden" name="prcsAplctPrdOrd" value="<c:out value="${vEInstrAsgnmVO.prcsAplctPrdOrd}" />" />
<input type="hidden" id="userId" name="userId" value="<c:out value="${vEInstrAsgnmVO.userId}" />" />
<input type="hidden" name="sbmtYn" id="sbmtYn" value="" />
<input type="hidden" name="limitcount" id="limitcount" value="1" /><!-- 최대 업로드 파일갯수 -->

View File

@ -47,7 +47,7 @@
//강의계획서 컨트롤 생성
control1 = innorix.create({
el : '#lctrPlan', // 컨트롤 출력 객체 ID
installUrl: '<c:url value="/innorix/install/install.html" />', // Agent 설치 페이지
/* installUrl: '<c:url value="/innorix/install/install.html" />', // Agent 설치 페이지 */
uploadUrl: '<c:url value="/innorix/exam/upload.jsp?el=lctrPlan" />', // 업로드 URL
maxFileCount : 1, // 첨부가능 파일 전체 개수
width : 870, // 컨트롤 출력 너비(pixel)

View File

@ -47,7 +47,7 @@
//강의계획서 컨트롤 생성
control1 = innorix.create({
el : '#docAtch', // 컨트롤 출력 객체 ID
installUrl: '<c:url value="/innorix/install/install.html" />', // Agent 설치 페이지
/* installUrl: '<c:url value="/innorix/install/install.html" />', // Agent 설치 페이지 */
uploadUrl: '<c:url value="/innorix/exam/upload.jsp?el=docAtch" />', // 업로드 URL
maxFileCount : 1, // 첨부가능 파일 전체 개수
width : 870, // 컨트롤 출력 너비(pixel)

View File

@ -69,7 +69,7 @@
control = innorix.create({
el: '#fileControl' // 컨트롤 출력 HTML 객체 ID
, transferMode: 'both' // 업로드, 다운로드 혼합사용
, installUrl: '<c:url value="/innorix/install/install.html" />' // Agent 설치 페이지
/* , installUrl: '<c:url value="/innorix/install/install.html" />' // Agent 설치 페이지 */
, uploadUrl: '<c:url value="/innorix/exam/upload.jsp" />' // 업로드 URL
, height:40
, width: 650