This commit is contained in:
myname 2025-10-29 12:44:01 +09:00
commit 517c2195eb
59 changed files with 3823 additions and 8828 deletions

View File

@ -125,8 +125,6 @@ public class LoginVO implements Serializable{
private String mberCi;
private String joinType;
public String getId() {
return id;
}
@ -442,13 +440,6 @@ public class LoginVO implements Serializable{
public void setMberCi(String mberCi) {
this.mberCi = mberCi;
}
public String getJoinType() {
return joinType;
}
public void setJoinType(String joinType) {
this.joinType = joinType;
}

View File

@ -1,9 +1,10 @@
package kcc.let.my.web;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
@ -16,6 +17,7 @@ import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
@ -24,7 +26,14 @@ import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.cop.bbs.service.BoardMasterVO;
import kcc.let.cop.bbs.service.BoardVO;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.uss.notify.service.NotifyManageService;
import kcc.let.uss.notify.service.NotifyManageVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.aplct.fndtnEnhanceTrn.service.FndtnEnhanceTrnService;
import kcc.ve.cmm.VeConstants;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
@ -51,94 +60,277 @@ import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
@Controller
public class MyPageController {
private static final Logger LOGGER = LoggerFactory.getLogger(MyPageController.class);
// 로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
// 교육과정신청
@Resource(name = "vEEduMIXService")
private VEEduMIXService vEEduMIXService;
//암복호화 유틸
@Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil;
//과정차시 관리
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
//과정 관리
@Resource(name = "vEPrcsService")
private VEPrcsService vEPrcsService;
//과정차시 관리
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
//온라인콘텐츠과정 관리
@Resource(name = "fndtnEnhanceTrnService")
private FndtnEnhanceTrnService fndtnEnhanceTrnService;
@Resource(name = "NotifyManageService")
private NotifyManageService notifyManageService;
private String p_lctr_div_cd = "60";
private static final Logger LOGGER = LoggerFactory.getLogger(MyPageController.class);
@RequestMapping(value = { "/web/my/myPageDashBoard.do" })
public String selectFaqListWeb(HttpServletRequest request, @ModelAttribute("vEEduAplctVO") VEPrcsDetailVO vEPrcsDetailVO,
public String selectFaqListWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO,
ModelMap model, BoardVO boardVO, RedirectAttributes redirectAttributes) throws Exception {
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
vEPrcsDetailVO.setUserId(loginVO.getUniqId());
//1.pageing step1
//5개만 select을 위한 설정
vEPrcsDetailVO.setPageUnit(5);
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//로그인 처리====================================
//1.pageing step1
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
//paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(p_lctr_div_cd); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
/*
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsDiv())) {
vEPrcsDetailVO.setPrcsDiv("10");// 과정구분 VE0015 10-산업종사자, 20-대학생, 30-공무원, 40-일반인, 50-청소년, 60-학부모
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); // 권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); // SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
return checkLoginUtil.getUserLoginPage(model, request); // 로그인 정보가 없으면 로그인 페이지로 이동한다.
}
*/
vEPrcsDetailVO.setSiteId(p_lctr_div_cd); //설문정보를 위해서 설문지의 대상값을 넣는다. VE0011 10-청소년, 20-성인,30-체험, 40-외부, 50-기반, 60-기소
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlQustnrAllList(vEPrcsDetailVO);
//List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlList(vEPrcsDetailVO);
// 현재 날짜를 가져옵니다.
LocalDate currentDate = LocalDate.now();
// 날짜비교
vEPrcsDetailVOList.stream().forEach(t->{
t.setDateChk(this.dateChk(t, currentDate));
});
Map<String,Object> countMap = vEPrcsAplctPrdService.findAllSspnldtmtDashboardCnt(vEPrcsDetailVO);
// 리스트 row마다 신청 확인하기
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
model.addAttribute("countMap", countMap);
/*
* 청소년 진행목록
*/
{
/*진행/종료 건수에서 신청/완료 건수로 변경 > 진행/종료는 차시 기준. 신청은 신청 기준이라 조회쿼리 변경*/
/*VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
// 청소년
// Q&A 영역
// vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
// List<VEPrcsDetailVO> vEPrcsDetailQnaVOList = fndtnEnhanceTrnService.selectVeEduQna(vEPrcsDetailVO);
// model.addAttribute("qnaList", vEPrcsDetailQnaVOList);
// return "/web/ve/aplct/sspnIdtmt/main";
// 사용자 교육신청 차시 리스트
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setRecordCountPerPage(1000000);
vEEduChasiVO.setFirstIndex(0);
// List<VEEduChasiVO> vEEduChasiVOList =
// vEEduMIXService.selectChasiList(vEEduChasiVO);
vEEduChasiVO.setPageIndex(vEEduAplctVO.getPageIndex());
vEEduChasiVO.setPageUnit(vEEduAplctVO.getPageUnit());
vEEduChasiVO.setPageSize(vEEduAplctVO.getPageSize());
List<VEEduChasiVO> tngrList = vEEduMIXService.selectChasiListMypage(vEEduChasiVO);
Map<String, String> tngrMap = tngrList.stream()
.collect(Collectors.partitioningBy(vo -> "30".equals(vo.getAsgnmAprvlCd()), Collectors.counting()))
//.collect(Collectors.partitioningBy(vo -> "60".equals(vo.getAprvlCd()), Collectors.counting()))
.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey() ? "tngrEnd" : "tngrIng",
entry -> entry.getValue().toString()
)
);
System.out.println(tngrMap);
System.out.println(tngrMap);
model.addAttribute("tngrMap", tngrMap);
model.addAttribute("tngrList", tngrList);*/
//신청목록
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
vEEduAplctVO.setRecordCountPerPage(10);
vEEduAplctVO.setFirstIndex(0);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingApplyList(vEEduAplctVO);
int tngrAplctCnt = 0;
if(vEEduAplctVOList != null && !vEEduAplctVOList.isEmpty()) {
tngrAplctCnt = vEEduAplctVOList.get(0).getTotCnt();
}
model.addAttribute("tngrAplctCnt", tngrAplctCnt);
//완료목록
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setSearchStartDt(vEEduAplctVO.getSearchStartDt());
vEEduChasiVO.setSearchEndDt(vEEduAplctVO.getSearchEndDt());
vEEduChasiVO.setRecordCountPerPage(10);
vEEduChasiVO.setFirstIndex(0);
List<VEEduChasiVO> vEEduChasiVOList = vEEduMIXService.selectChasiList(vEEduChasiVO);
int tngrEndCnt = 0;
if(vEEduChasiVOList != null && !vEEduChasiVOList.isEmpty()) {
tngrEndCnt = vEEduChasiVOList.get(0).getTotCnt();
}
model.addAttribute("tngrEndCnt", tngrEndCnt);
model.addAttribute("tngrList", vEEduChasiVOList);
}
/*
* 성인 진행목록
*/
{
/*진행/종료 건수에서 신청/완료 건수로 변경 > 진행/종료는 차시 기준. 신청은 신청 기준이라 조회쿼리 변경*/
/*VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
// 청소년
// 사용자 교육신청 차시 리스트
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setRecordCountPerPage(1000000);
vEEduChasiVO.setFirstIndex(0);
// List<VEEduChasiVO> vEEduChasiVOList =
// vEEduMIXService.selectChasiList(vEEduChasiVO);
vEEduChasiVO.setPageIndex(vEEduAplctVO.getPageIndex());
vEEduChasiVO.setPageUnit(vEEduAplctVO.getPageUnit());
vEEduChasiVO.setPageSize(vEEduAplctVO.getPageSize());
List<VEEduChasiVO> adultList = vEEduMIXService.selectChasiListMypage(vEEduChasiVO);
Map<String, String> adultMap = adultList.stream()
.collect(Collectors.partitioningBy(vo -> "30".equals(vo.getAsgnmAprvlCd()), Collectors.counting()))
.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey() ? "adultEnd" : "adultIng",
entry -> entry.getValue().toString()
)
);
model.addAttribute("adultMap", adultMap);
model.addAttribute("adultList", adultList);*/
//신청목록
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
vEEduAplctVO.setRecordCountPerPage(10);
vEEduAplctVO.setFirstIndex(0);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
int adultAplctCnt = 0;
if(vEEduAplctVOList != null && !vEEduAplctVOList.isEmpty()) {
adultAplctCnt = vEEduAplctVOList.get(0).getTotCnt();
}
model.addAttribute("adultAplctCnt", adultAplctCnt);
//완료목록
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setRecordCountPerPage(10);
vEEduChasiVO.setFirstIndex(0);
List<VEEduChasiVO> vEEduChasiVOList = vEEduMIXService.selectChasiList(vEEduChasiVO);
int adultEndCnt = 0;
if(vEEduChasiVOList != null && !vEEduChasiVOList.isEmpty()) {
adultEndCnt = vEEduChasiVOList.get(0).getTotCnt();
}
model.addAttribute("adultEndCnt", adultEndCnt);
model.addAttribute("adultList", vEEduChasiVOList);
}
/*
* 체험교실
* */
{
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
// 저작권
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setRecordCountPerPage(1000000);
vEEduAplctVO.setFirstIndex(0);
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_30);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectExprnPagingList(vEEduAplctVO);
vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList);
System.out.println("vEEduAplctVOList.size() :: "+vEEduAplctVOList.size());
// vEEduAplctVOList에서 10, 11, 12, 13 제거
List<VEEduAplctVO> filteredList = vEEduAplctVOList.stream()
/*
.filter(item -> !item.getAprvlCd().equals("10")
&& !item.getAprvlCd().equals("11")
&& !item.getAprvlCd().equals("12")
&& !item.getAprvlCd().equals("13"))
*/
.filter(item -> item.getAprvlCd().equals("80")
|| item.getAprvlCd().equals("20")
)
.collect(Collectors.toList());
// -- 종료 80
// -- 진행중 20~70
Map<String, String> exprnMap = filteredList.stream()
.collect(Collectors.partitioningBy(vo -> "80".equals(vo.getAprvlCd()), Collectors.counting()))
.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey() ? "exprnEnd" : "exprnIng",
entry -> entry.getValue().toString()
)
);
model.addAttribute("exprnMap", exprnMap);
model.addAttribute("exprnList", filteredList);
}
/*
* 실무역량강화
* */
{
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
vEPrcsDetailVO.setUserId(loginVO.getUniqId());
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_50); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setRecordCountPerPage(1000000);
vEPrcsDetailVO.setFirstIndex(0);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlList(vEPrcsDetailVO);
// 요청
long cont = vEPrcsDetailVOList.stream().filter(t-> "10".equals(t.getAprvlCd())).count();
// 미이수
long aplctStateCd10 = vEPrcsDetailVOList.stream().filter(t-> "10".equals(t.getAplctStateCd())).count();
// 이수완료
long aplctStateCd20 = vEPrcsDetailVOList.stream().filter(t-> "20".equals(t.getAplctStateCd())).count();
Map<String, String> fndtnMap = new HashMap<>();
fndtnMap.put("fndtnEnd", String.valueOf(aplctStateCd20));
fndtnMap.put("fndtnIng", String.valueOf(aplctStateCd10+cont));
model.addAttribute("fndtnMap", fndtnMap);
model.addAttribute("fndtnList", vEPrcsDetailVOList);
//신청중, 수강중, 종료된 수량
Map<String,Object> countMap = vEPrcsAplctPrdService.findAllDashboardCnt(vEPrcsDetailVO);
model.addAttribute("countMap", countMap);
}
// 문의 목록
{
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
vEPrcsDetailVO.setRecordCountPerPage(3);
vEPrcsDetailVO.setFirstIndex(0);
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
List<VEPrcsDetailVO> qnaList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO);
model.addAttribute("qnaList", qnaList);
}
// return "/web/cop/bbs/FaqListAjax";
return "web/my/myPageDashBoard";
}
@ -175,12 +367,140 @@ public class MyPageController {
model.addAttribute("paginationInfo", paginationInfo);
// 사용자 이름 디코딩
// vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "web/my/myQnaMngList";
}
@RequestMapping(value = { "/web/my/myNotifyMngList.do" })
public String myNotifyMngList(
HttpServletRequest request
, @ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO
, ModelMap model
) throws Exception {
// try {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
// return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
notifyManageService.updateM7DaysUseYnN();
//1.pageing step1
PaginationInfo paginationInfo = this.setNotiPagingStep1(notifyManageVO);
//2. pageing step2
notifyManageVO = this.setNotiPagingStep2(notifyManageVO, paginationInfo);
//
notifyManageVO.setToUserId(loginVO.getUniqId());
/*if(StringUtils.isNotEmpty(notifyManageVO.getSearchStatus())) {
String status = "";
if("Y".equals(notifyManageVO.getSearchStatus()))
status = "IS NOT NULL";
if("N".equals(notifyManageVO.getSearchStatus()))
status = "IS NULL";
notifyManageVO.setSearchQuery(" AND qn.QNA_ANSWER_CN "+status);
} */
List<NotifyManageVO> notifyManageVOList = notifyManageService.selectPagingList(notifyManageVO);
//3.pageing step3
paginationInfo = this.setNotiPagingStep3(notifyManageVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 사용자 이름 디코딩
// vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", notifyManageVOList);
// } catch (Exception e) {
// e.printStackTrace();
// // TODO: handle exception
// }
// return "web/my/myQnaMngList";
return "web/my/myNotifyMngList";
}
@RequestMapping(value = { "/web/my/myNotifyMngDetail.do"})
public String myNotifyMngDetail(
@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
//로그인 처리====================================
//과정 조회
NotifyManageVO notifyManageInfo = notifyManageService.findById(notifyManageVO);
model.addAttribute("info", notifyManageInfo);
try {
if ("30".equals(notifyManageInfo.getLctrDivCd())){ //체험교실은 다른게 바로가기를 만든다.
//eduAplctOrd:eduAplct_00000015581
List<NotifyManageVO> notifyParamList = new ArrayList<NotifyManageVO>();
NotifyManageVO tInfo = new NotifyManageVO();
tInfo.setSiteNm("eduAplctOrd");
tInfo.setParams(notifyManageInfo.getEduAplctOrd());
notifyParamList.add(tInfo);
model.addAttribute("notifyParamList", notifyParamList);
}else{
//세부과정 목록 조회
String[] a_params = notifyManageInfo.getParams().split(",");
List<NotifyManageVO> notifyParamList = new ArrayList<NotifyManageVO>();
for (int i=0;i<a_params.length;i++) {
NotifyManageVO tInfo = new NotifyManageVO();
tInfo.setSiteNm(a_params[i].split(":")[0]);
tInfo.setParams(a_params[i].split(":")[1]);
notifyParamList.add(tInfo);
}
model.addAttribute("notifyParamList", notifyParamList);
}
}catch(Exception ex) {
ex.printStackTrace();
}
return "web/my/myNotifyMngDetail";
}
@RequestMapping(value = { "/web/my/myQnaMngDetail.do"})
public String myQnaMngDetail(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
@ -211,9 +531,43 @@ public class MyPageController {
return "web/my/myQnaMngDetail";
}
@RequestMapping(value = { "/web/my/myNotifyMngDeleteAjax.do"})
public ModelAndView myNotifyMngDeleteAjax(
@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
, String[] chk
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
modelAndView.addObject("result", "loginFail");
}
//로그인 처리====================================
try {
notifyManageVO.setCmmNotifyOrdArr(chk);
notifyManageService.updateChkedUseYnN(notifyManageVO);
modelAndView.addObject("result", "success");
}catch(Exception e) {
e.printStackTrace();
modelAndView.addObject("result", "fail");
}
//세부과정 목록 조회
return modelAndView;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
@ -267,28 +621,41 @@ public class MyPageController {
return p_paginationInfo;
}
private String dateChk(VEPrcsDetailVO vEPrcsDetailVO , LocalDate currentDate) {
String returnDate = "";
String targetDateString = vEPrcsDetailVO.getEduStrtPnttm();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd");
// 문자열로부터 LocalDate 객체를 생성합니다.
LocalDate targetDate = LocalDate.parse(targetDateString, formatter);
// 교육종료 날짜와 현재날짜 비교
if (currentDate.isBefore(targetDate)) { //현재날짜가 종료날짜보다 이전이면 0
returnDate = "0";
} else if (currentDate.isAfter(targetDate)) { //현재날짜가 종료날짜 이후면 1
returnDate = "1";
} else { // 종료날짜와 같으면 2
returnDate = "2";
}
return returnDate;
private PaginationInfo setNotiPagingStep1(NotifyManageVO notifyManageVO) {
// pageing step1
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(notifyManageVO.getPageIndex());
paginationInfo.setRecordCountPerPage(notifyManageVO.getPageUnit());
paginationInfo.setPageSize(notifyManageVO.getPageSize());
return paginationInfo;
}
private NotifyManageVO setNotiPagingStep2(NotifyManageVO notifyManageVO, PaginationInfo paginationInfo) {
// pageing step2
notifyManageVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
notifyManageVO.setLastIndex(paginationInfo.getLastRecordIndex());
notifyManageVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(notifyManageVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
notifyManageVO.setSearchSortCnd("prcs_ord");
notifyManageVO.setSearchSortOrd("desc");
}
return notifyManageVO;
}
private PaginationInfo setNotiPagingStep3(List<NotifyManageVO> vEPrcsDetailVOList, PaginationInfo paginationInfo) {
// pageing step3
int totCnt = 0;
if(vEPrcsDetailVOList.size() > 0) totCnt = vEPrcsDetailVOList.get(0).getTotCnt();
paginationInfo.setTotalRecordCount(totCnt);
return paginationInfo;
}
}

View File

@ -1,667 +0,0 @@
package kcc.let.my.web;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.LoginVO;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.cop.bbs.service.BoardMasterVO;
import kcc.let.cop.bbs.service.BoardVO;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.uss.notify.service.NotifyManageService;
import kcc.let.uss.notify.service.NotifyManageVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.ve.aplct.fndtnEnhanceTrn.service.FndtnEnhanceTrnService;
import kcc.ve.cmm.VeConstants;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduChasiVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
/**
* 게시물 관리를 위한 컨트롤러 클래스
*
* @author 공통 서비스 개발팀 이삼섭
* @since 2009.03.19
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2009.03.19 이삼섭 최초 생성
* 2009.06.29 한성곤 2단계 기능 추가 (댓글관리, 만족도조사)
* 2011.08.31 JJY 경량환경 템플릿 커스터마이징버전 생성
*
* </pre>
*/
//@Controller
public class MyPageController_back_251028 {
// 로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
// 교육과정신청
@Resource(name = "vEEduMIXService")
private VEEduMIXService vEEduMIXService;
//암복호화 유틸
@Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil;
//과정차시 관리
@Resource(name = "vEPrcsAplctPrdService")
private VEPrcsAplctPrdService vEPrcsAplctPrdService;
//과정 관리
@Resource(name = "vEPrcsService")
private VEPrcsService vEPrcsService;
//온라인콘텐츠과정 관리
@Resource(name = "fndtnEnhanceTrnService")
private FndtnEnhanceTrnService fndtnEnhanceTrnService;
@Resource(name = "NotifyManageService")
private NotifyManageService notifyManageService;
private static final Logger LOGGER = LoggerFactory.getLogger(MyPageController_back_251028.class);
@RequestMapping(value = { "/web/my/myPageDashBoard.do" })
public String selectFaqListWeb(HttpServletRequest request, @ModelAttribute("searchVO") BoardMasterVO boardMasterVO,
ModelMap model, BoardVO boardVO, RedirectAttributes redirectAttributes) throws Exception {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); // 권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); // SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
return checkLoginUtil.getUserLoginPage(model, request); // 로그인 정보가 없으면 로그인 페이지로 이동한다.
}
/*
* 청소년 진행목록
*/
{
/*진행/종료 건수에서 신청/완료 건수로 변경 > 진행/종료는 차시 기준. 신청은 신청 기준이라 조회쿼리 변경*/
/*VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
// 청소년
// 사용자 교육신청 차시 리스트
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setRecordCountPerPage(1000000);
vEEduChasiVO.setFirstIndex(0);
// List<VEEduChasiVO> vEEduChasiVOList =
// vEEduMIXService.selectChasiList(vEEduChasiVO);
vEEduChasiVO.setPageIndex(vEEduAplctVO.getPageIndex());
vEEduChasiVO.setPageUnit(vEEduAplctVO.getPageUnit());
vEEduChasiVO.setPageSize(vEEduAplctVO.getPageSize());
List<VEEduChasiVO> tngrList = vEEduMIXService.selectChasiListMypage(vEEduChasiVO);
Map<String, String> tngrMap = tngrList.stream()
.collect(Collectors.partitioningBy(vo -> "30".equals(vo.getAsgnmAprvlCd()), Collectors.counting()))
//.collect(Collectors.partitioningBy(vo -> "60".equals(vo.getAprvlCd()), Collectors.counting()))
.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey() ? "tngrEnd" : "tngrIng",
entry -> entry.getValue().toString()
)
);
System.out.println(tngrMap);
System.out.println(tngrMap);
model.addAttribute("tngrMap", tngrMap);
model.addAttribute("tngrList", tngrList);*/
//신청목록
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
vEEduAplctVO.setRecordCountPerPage(10);
vEEduAplctVO.setFirstIndex(0);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingApplyList(vEEduAplctVO);
int tngrAplctCnt = 0;
if(vEEduAplctVOList != null && !vEEduAplctVOList.isEmpty()) {
tngrAplctCnt = vEEduAplctVOList.get(0).getTotCnt();
}
model.addAttribute("tngrAplctCnt", tngrAplctCnt);
//완료목록
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_10);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setSearchStartDt(vEEduAplctVO.getSearchStartDt());
vEEduChasiVO.setSearchEndDt(vEEduAplctVO.getSearchEndDt());
vEEduChasiVO.setRecordCountPerPage(10);
vEEduChasiVO.setFirstIndex(0);
List<VEEduChasiVO> vEEduChasiVOList = vEEduMIXService.selectChasiList(vEEduChasiVO);
int tngrEndCnt = 0;
if(vEEduChasiVOList != null && !vEEduChasiVOList.isEmpty()) {
tngrEndCnt = vEEduChasiVOList.get(0).getTotCnt();
}
model.addAttribute("tngrEndCnt", tngrEndCnt);
model.addAttribute("tngrList", vEEduChasiVOList);
}
/*
* 성인 진행목록
*/
{
/*진행/종료 건수에서 신청/완료 건수로 변경 > 진행/종료는 차시 기준. 신청은 신청 기준이라 조회쿼리 변경*/
/*VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
// 청소년
// 사용자 교육신청 차시 리스트
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setEduAplctOrd(vEEduAplctVO.getEduAplctOrd());
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setRecordCountPerPage(1000000);
vEEduChasiVO.setFirstIndex(0);
// List<VEEduChasiVO> vEEduChasiVOList =
// vEEduMIXService.selectChasiList(vEEduChasiVO);
vEEduChasiVO.setPageIndex(vEEduAplctVO.getPageIndex());
vEEduChasiVO.setPageUnit(vEEduAplctVO.getPageUnit());
vEEduChasiVO.setPageSize(vEEduAplctVO.getPageSize());
List<VEEduChasiVO> adultList = vEEduMIXService.selectChasiListMypage(vEEduChasiVO);
Map<String, String> adultMap = adultList.stream()
.collect(Collectors.partitioningBy(vo -> "30".equals(vo.getAsgnmAprvlCd()), Collectors.counting()))
.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey() ? "adultEnd" : "adultIng",
entry -> entry.getValue().toString()
)
);
model.addAttribute("adultMap", adultMap);
model.addAttribute("adultList", adultList);*/
//신청목록
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
vEEduAplctVO.setRecordCountPerPage(10);
vEEduAplctVO.setFirstIndex(0);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectPagingList(vEEduAplctVO);
int adultAplctCnt = 0;
if(vEEduAplctVOList != null && !vEEduAplctVOList.isEmpty()) {
adultAplctCnt = vEEduAplctVOList.get(0).getTotCnt();
}
model.addAttribute("adultAplctCnt", adultAplctCnt);
//완료목록
VEEduChasiVO vEEduChasiVO = new VEEduChasiVO();
vEEduChasiVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_20);
vEEduChasiVO.setAprvlCd(VeConstants.STATUS_CD_EDU_SELCT);
vEEduChasiVO.setUserId(loginVO.getUniqId());
vEEduChasiVO.setRecordCountPerPage(10);
vEEduChasiVO.setFirstIndex(0);
List<VEEduChasiVO> vEEduChasiVOList = vEEduMIXService.selectChasiList(vEEduChasiVO);
int adultEndCnt = 0;
if(vEEduChasiVOList != null && !vEEduChasiVOList.isEmpty()) {
adultEndCnt = vEEduChasiVOList.get(0).getTotCnt();
}
model.addAttribute("adultEndCnt", adultEndCnt);
model.addAttribute("adultList", vEEduChasiVOList);
}
/*
* 체험교실
* */
{
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
// 저작권
vEEduAplctVO.setUserId(loginVO.getUniqId());
vEEduAplctVO.setRecordCountPerPage(1000000);
vEEduAplctVO.setFirstIndex(0);
vEEduAplctVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_30);
List<VEEduAplctVO> vEEduAplctVOList = vEEduMIXService.selectExprnPagingList(vEEduAplctVO);
vEEduAplctVOList = egovCryptoUtil.decryptVEEduAplctVOList(vEEduAplctVOList);
System.out.println("vEEduAplctVOList.size() :: "+vEEduAplctVOList.size());
// vEEduAplctVOList에서 10, 11, 12, 13 제거
List<VEEduAplctVO> filteredList = vEEduAplctVOList.stream()
/*
.filter(item -> !item.getAprvlCd().equals("10")
&& !item.getAprvlCd().equals("11")
&& !item.getAprvlCd().equals("12")
&& !item.getAprvlCd().equals("13"))
*/
.filter(item -> item.getAprvlCd().equals("80")
|| item.getAprvlCd().equals("20")
)
.collect(Collectors.toList());
// -- 종료 80
// -- 진행중 20~70
Map<String, String> exprnMap = filteredList.stream()
.collect(Collectors.partitioningBy(vo -> "80".equals(vo.getAprvlCd()), Collectors.counting()))
.entrySet().stream()
.collect(Collectors.toMap(
entry -> entry.getKey() ? "exprnEnd" : "exprnIng",
entry -> entry.getValue().toString()
)
);
model.addAttribute("exprnMap", exprnMap);
model.addAttribute("exprnList", filteredList);
}
/*
* 실무역량강화
* */
{
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
vEPrcsDetailVO.setUserId(loginVO.getUniqId());
//기반강화 조회
vEPrcsDetailVO.setLctrDivCd(VeConstants.LCTR_DIV_CD_50); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setRecordCountPerPage(1000000);
vEPrcsDetailVO.setFirstIndex(0);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.findByAprvlList(vEPrcsDetailVO);
// 요청
long cont = vEPrcsDetailVOList.stream().filter(t-> "10".equals(t.getAprvlCd())).count();
// 미이수
long aplctStateCd10 = vEPrcsDetailVOList.stream().filter(t-> "10".equals(t.getAplctStateCd())).count();
// 이수완료
long aplctStateCd20 = vEPrcsDetailVOList.stream().filter(t-> "20".equals(t.getAplctStateCd())).count();
Map<String, String> fndtnMap = new HashMap<>();
fndtnMap.put("fndtnEnd", String.valueOf(aplctStateCd20));
fndtnMap.put("fndtnIng", String.valueOf(aplctStateCd10+cont));
model.addAttribute("fndtnMap", fndtnMap);
model.addAttribute("fndtnList", vEPrcsDetailVOList);
//신청중, 수강중, 종료된 수량
Map<String,Object> countMap = vEPrcsAplctPrdService.findAllDashboardCnt(vEPrcsDetailVO);
model.addAttribute("countMap", countMap);
}
// 문의 목록
{
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
vEPrcsDetailVO.setRecordCountPerPage(3);
vEPrcsDetailVO.setFirstIndex(0);
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
List<VEPrcsDetailVO> qnaList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO);
model.addAttribute("qnaList", qnaList);
}
// return "/web/cop/bbs/FaqListAjax";
return "web/my/myPageDashBoard";
}
@RequestMapping(value = { "/web/my/myQnaMngList.do" })
public String myQnaMngList(
HttpServletRequest request
, @ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); // 권한에 따른 로그인 정보 가져오기
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
if(StringUtils.isNotEmpty(vEPrcsDetailVO.getSearchStatus())) {
String status = "";
if("Y".equals(vEPrcsDetailVO.getSearchStatus()))
status = "IS NOT NULL";
if("N".equals(vEPrcsDetailVO.getSearchStatus()))
status = "IS NULL";
vEPrcsDetailVO.setSearchQuery(" AND qn.QNA_ANSWER_CN "+status);
}
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectQnaPagingList(vEPrcsDetailVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 사용자 이름 디코딩
// vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "web/my/myQnaMngList";
}
@RequestMapping(value = { "/web/my/myNotifyMngList.do" })
public String myNotifyMngList(
HttpServletRequest request
, @ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO
, ModelMap model
) throws Exception {
// try {
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
// return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
notifyManageService.updateM7DaysUseYnN();
//1.pageing step1
PaginationInfo paginationInfo = this.setNotiPagingStep1(notifyManageVO);
//2. pageing step2
notifyManageVO = this.setNotiPagingStep2(notifyManageVO, paginationInfo);
//
notifyManageVO.setToUserId(loginVO.getUniqId());
/*if(StringUtils.isNotEmpty(notifyManageVO.getSearchStatus())) {
String status = "";
if("Y".equals(notifyManageVO.getSearchStatus()))
status = "IS NOT NULL";
if("N".equals(notifyManageVO.getSearchStatus()))
status = "IS NULL";
notifyManageVO.setSearchQuery(" AND qn.QNA_ANSWER_CN "+status);
} */
List<NotifyManageVO> notifyManageVOList = notifyManageService.selectPagingList(notifyManageVO);
//3.pageing step3
paginationInfo = this.setNotiPagingStep3(notifyManageVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
// 사용자 이름 디코딩
// vEPrcsDetailVOList.stream().forEach(t->t.setMberNm(egovCryptoUtil.decrypt(t.getMberNm())));
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", notifyManageVOList);
// } catch (Exception e) {
// e.printStackTrace();
// // TODO: handle exception
// }
// return "web/my/myQnaMngList";
return "web/my/myNotifyMngList";
}
@RequestMapping(value = { "/web/my/myNotifyMngDetail.do"})
public String myNotifyMngDetail(
@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
//로그인 처리====================================
//과정 조회
NotifyManageVO notifyManageInfo = notifyManageService.findById(notifyManageVO);
model.addAttribute("info", notifyManageInfo);
try {
if ("30".equals(notifyManageInfo.getLctrDivCd())){ //체험교실은 다른게 바로가기를 만든다.
//eduAplctOrd:eduAplct_00000015581
List<NotifyManageVO> notifyParamList = new ArrayList<NotifyManageVO>();
NotifyManageVO tInfo = new NotifyManageVO();
tInfo.setSiteNm("eduAplctOrd");
tInfo.setParams(notifyManageInfo.getEduAplctOrd());
notifyParamList.add(tInfo);
model.addAttribute("notifyParamList", notifyParamList);
}else{
//세부과정 목록 조회
String[] a_params = notifyManageInfo.getParams().split(",");
List<NotifyManageVO> notifyParamList = new ArrayList<NotifyManageVO>();
for (int i=0;i<a_params.length;i++) {
NotifyManageVO tInfo = new NotifyManageVO();
tInfo.setSiteNm(a_params[i].split(":")[0]);
tInfo.setParams(a_params[i].split(":")[1]);
notifyParamList.add(tInfo);
}
model.addAttribute("notifyParamList", notifyParamList);
}
}catch(Exception ex) {
ex.printStackTrace();
}
return "web/my/myNotifyMngDetail";
}
@RequestMapping(value = { "/web/my/myQnaMngDetail.do"})
public String myQnaMngDetail(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
//이전 url 처리(beforeSiteUrl)_이준호_220228추가
return checkLoginUtil.getUserLoginPage(model, request); //로그인 정보가 없으면 로그인 페이지로 이동한다.
}
//로그인 처리====================================
//과정 조회
VEPrcsDetailVO vEPrcsQnaDetail = vEPrcsService.selectQnaDetail(vEPrcsDetailVO);
vEPrcsQnaDetail.setMberNm(egovCryptoUtil.decrypt(vEPrcsQnaDetail.getMberNm()));
model.addAttribute("info", vEPrcsQnaDetail);
//세부과정 목록 조회
return "web/my/myQnaMngDetail";
}
@RequestMapping(value = { "/web/my/myNotifyMngDeleteAjax.do"})
public ModelAndView myNotifyMngDeleteAjax(
@ModelAttribute("notifyManageVO") NotifyManageVO notifyManageVO
, ModelMap model
, RedirectAttributes redirectAttributes
, HttpSession session
, HttpServletRequest request
, String[] chk
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
if (loginVO == null || ssoLoginVO == null) {
modelAndView.addObject("result", "loginFail");
}
//로그인 처리====================================
try {
notifyManageVO.setCmmNotifyOrdArr(chk);
notifyManageService.updateChkedUseYnN(notifyManageVO);
modelAndView.addObject("result", "success");
}catch(Exception e) {
e.printStackTrace();
modelAndView.addObject("result", "fail");
}
//세부과정 목록 조회
return modelAndView;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// private function
//
//
//페이징을 위한 처리 step1 - 페이징 기본 정보 설정
private PaginationInfo setPagingStep1(
VEPrcsDetailVO p_vEPrcsDetailVO
)throws Exception{
// pageing step1
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(p_vEPrcsDetailVO.getPageIndex());
paginationInfo.setRecordCountPerPage(p_vEPrcsDetailVO.getPageUnit());
paginationInfo.setPageSize(p_vEPrcsDetailVO.getPageSize());
return paginationInfo;
}
//페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 검색 조건 초기화
private VEPrcsDetailVO setPagingStep2(
VEPrcsDetailVO p_vEPrcsDetailVO
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step2
p_vEPrcsDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex());
p_vEPrcsDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex());
p_vEPrcsDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage());
if("".equals(p_vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
p_vEPrcsDetailVO.setSearchSortCnd("prcs_ord");
p_vEPrcsDetailVO.setSearchSortOrd("desc");
}
return p_vEPrcsDetailVO;
}
//페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기
private PaginationInfo setPagingStep3(
List<VEPrcsDetailVO> p_vEPrcsDetailVOList
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step3
int totCnt = 0;
if(p_vEPrcsDetailVOList.size() > 0) totCnt = p_vEPrcsDetailVOList.get(0).getTotCnt();
p_paginationInfo.setTotalRecordCount(totCnt);
return p_paginationInfo;
}
private PaginationInfo setNotiPagingStep1(NotifyManageVO notifyManageVO) {
// pageing step1
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(notifyManageVO.getPageIndex());
paginationInfo.setRecordCountPerPage(notifyManageVO.getPageUnit());
paginationInfo.setPageSize(notifyManageVO.getPageSize());
return paginationInfo;
}
private NotifyManageVO setNotiPagingStep2(NotifyManageVO notifyManageVO, PaginationInfo paginationInfo) {
// pageing step2
notifyManageVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
notifyManageVO.setLastIndex(paginationInfo.getLastRecordIndex());
notifyManageVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
if("".equals(notifyManageVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
notifyManageVO.setSearchSortCnd("prcs_ord");
notifyManageVO.setSearchSortOrd("desc");
}
return notifyManageVO;
}
private PaginationInfo setNotiPagingStep3(List<NotifyManageVO> vEPrcsDetailVOList, PaginationInfo paginationInfo) {
// pageing step3
int totCnt = 0;
if(vEPrcsDetailVOList.size() > 0) totCnt = vEPrcsDetailVOList.get(0).getTotCnt();
paginationInfo.setTotalRecordCount(totCnt);
return paginationInfo;
}
}

View File

@ -552,14 +552,8 @@ public class SspnIdtmtController {
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);
}
@ -807,8 +801,7 @@ public class SspnIdtmtController {
*/
@RequestMapping("/web/ve/aplct/sspnIdtmt/popup/eduCancelPopupAjax.do")
public ModelAndView filePopupAjax(
@ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO,
@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
@ModelAttribute("vEEduRprtVO") VEEduRprtVO vEEduRprtVO
, ModelMap model
//, RedirectAttributes redirectAttributes
, HttpServletRequest request
@ -876,27 +869,16 @@ public class SspnIdtmtController {
System.out.println(vEEduRprtVO.getAprvlCn());
System.out.println(s_atchFileId);
/*
* VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
* vEEduAplctVO.setEduAplctOrd(vEEduRprtVO.getEduAplctOrd());
*
* vEEduAplctVO.setAplctCn(vEEduRprtVO.getAprvlCn());
* vEEduAplctVO.setRsltAtchFileId(s_atchFileId);
* vEEduAplctVO.setAprvlCd("35");
* vEEduAplctVO.setLastUpdusrId(loginVO.getUniqId());
* vEEduAplctService.update(vEEduAplctVO);
*/
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vEEduRprtVO.getEduAplctOrd());
/*
251023
ve_edu_aplct는 확정 상태 유지.
vea_aplct_detail_info에서 취소 관련 처리
*/
vEEduAplctVO.setAplctStateCd(VeConstants.EDU_CD_CANCLE_REQ); //취소요청 코드 35
vEEduAplctVO.setCnclAtchFileId(s_atchFileId);
vEEduAplctVO.setCnclCn(vEEduAplctVO.getAprvlCn()); //취소사유 - 기존에는 aprvlCn 사용
vEEduMIXService.updateCnclStatus(vEEduAplctVO);
vEEduAplctVO.setAplctCn(vEEduRprtVO.getAprvlCn());
vEEduAplctVO.setRsltAtchFileId(s_atchFileId);
vEEduAplctVO.setAprvlCd("35");
vEEduAplctVO.setLastUpdusrId(loginVO.getUniqId());
//취소요청 정보 저장
vEEduAplctService.update(vEEduAplctVO);
}catch(Exception ex) {

View File

@ -268,14 +268,6 @@ public class VeConstants {
public static final String DDLN_CD_APP_ING = "40";
public static final String DDLN_CD_APP_END = "50";
/*
* VEA003 - edu_state_cd(vea_sspn_idmt_trgt), aplct_state_cd(vea_aplct_detail_info)
*/
public static final String EDU_CD_NOTCOMPLETE= "10"; //미이수
public static final String EDU_CD_COMPLETE = "20"; //이수
public static final String EDU_CD_CANCLE_REQ = "35"; //취소요청
public static final String EDU_CD_DELAY = "60"; //연기
}

View File

@ -128,6 +128,4 @@ public interface VEEduMIXService {
List<VEEduAplctVO> selectTngrRsltRprtList(VEEduAplctVO paramVO) throws Exception;
List<VEEduAplctVO> selectExprnRsltFileDownList(VEEduAplctVO paramVO) throws Exception;
void updateCnclStatus(VEEduAplctVO vEEduAplctVO);
}

View File

@ -174,46 +174,10 @@ public interface VEInstrMixService {
//교육실정통계- 3.대상별 교육 의뢰 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_no3(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//조건부기소유예관리 통계
//교육실정통계- 검찰청별 교육 의뢰 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_no4(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 월별 교육 이수 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 대상별 교육 이수 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_no6(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계
List<VELctrDetailVO> selectEduPrfrmInfo_csi_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//예방교육
//교육실정통계- 월별 교육 이수 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_prevent_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//시정명령 통계
//교육실정통계- 검찰청별 교육 의뢰 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no1(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 월별 교육 의뢰 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no2(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 3.대상별 교육 의뢰 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no3(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//조건부기소유예관리 통계
//교육실정통계- 검찰청별 교육 의뢰 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no4(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 월별 교육 이수 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 대상별 교육 이수 현황(그래프 포함)
List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no6(VEInstrDetailVO vEInstrDetailVO) throws Exception;
//교육실정통계- 월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계
List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception;
}

View File

@ -343,68 +343,13 @@ public class VEInstrMixDAO extends EgovAbstractDAO {
return tlist;
}
//통계정보-조건부기소유예관리-검찰청별 교육 의뢰 현황(그래프 포함)
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no4(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no4", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no5", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no6(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no6", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_no7", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_prevent_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_prevent_no5", vEInstrDetailVO);
return tlist;
}
//통계정보-조건부기소유예관리-검찰청별 교육 의뢰 현황(그래프 포함)
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no1(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no1", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no2(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no2", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no3(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no3", vEInstrDetailVO);
return tlist;
}
//통계정보-조건부기소유예관리-검찰청별 교육 의뢰 현황(그래프 포함)
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no4(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no4", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no5(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no5", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no6(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no6", vEInstrDetailVO);
return tlist;
}
public List<VELctrDetailVO> selectEduPrfrmInfo_csi_cmdTrgt_no7(VEInstrDetailVO vEInstrDetailVO) throws Exception {
List<VELctrDetailVO> tlist = (List<VELctrDetailVO>) list("VESttstMixDAO.selectEduPrfrmInfo_csi_cmdTrgt_no7", vEInstrDetailVO);
return tlist;
}
}

View File

@ -92,7 +92,4 @@ public interface VEPrcsAplctPrdService {
//교육확정상태 대상자 리스트 가져오기
List<VEPrcsDetailVO> selectTrgtList4_60(VEPrcsDetailVO vEPrcsDetailVO) throws Exception;
//신청목록-실무역량강화, 기소유예 new -설문조사, 이수증 처리용
List<VEPrcsDetailVO> findByAprvlQustnrAllList(VEPrcsDetailVO vEPrcsDetailVO);
}

View File

@ -200,11 +200,13 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
//ve_prcs_aplct_prd : 처리 없음
//ve_edu_aplct : 삭제
//vea_aplct_detail_info : 삭제
//vea_sspn_idmt_trgt : 처리 없음
//vea_sspn_idmt_trgt : update edu_state_cd=10,edu_aplct_ord is null
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
//vEPrcsAplctPrdDAO.delete(vEPrcsDetailVO);
vEEduAplctDAO.delete(vEEduAplctVO);
vEPrcsMIXDAO.deleteAplctDetailInfo(vEPrcsDetailVO);
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
@ -212,52 +214,9 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
}else if ("4".equals(vEPrcsDetailVO.getReqNo())) {
//대상자 교육신청후 관리자가 반려 처리
//ve_prcs_aplct_prd : 처리 없음
//ve_edu_aplct : aprvl_cd=30
//ve_edu_aplct : update aprvl_cd=35
//vea_aplct_detail_info : 처리 없음
//vea_sspn_idmt_trgt : 처리 없음
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
//vEPrcsAplctPrdDAO.delete(vEPrcsDetailVO);
vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}else if ("6".equals(vEPrcsDetailVO.getReqNo())) {
//교육확정
//ve_prcs_aplct_prd : 처리 없음(앞에서 처리)
//ve_edu_aplct : aprvl_cd=60
//vea_aplct_detail_info : 처리 없음
//vea_sspn_idmt_trgt : 처리 없음
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}else if ("6-1".equals(vEPrcsDetailVO.getReqNo())) {
/* 251027 기준 - 6-1 미사용 중 */
//대상자 교육신청후 교육 취소 요청시 처리
//ve_prcs_aplct_prd : 처리 없음
//ve_edu_aplct : 처리 없음
//vea_aplct_detail_info : aplct_state_cd = 35
//vea_sspn_idmt_trgt : 처리 없음
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
//vEPrcsMIXDAO.deleteAplctDetailInfo(vEPrcsDetailVO);
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}else if ("6-2".equals(vEPrcsDetailVO.getReqNo())) {
//대상자 교육 취소 신청 승인(취소 승인-교육종료)
//ve_prcs_aplct_prd : 처리 없음
//ve_edu_aplct : 처리 없음
//vea_aplct_detail_info : aplct_state_cd 60(연기)
//vea_sspn_idmt_trgt : edu_state_cd=60(연기),req_state_cd=35(미완료)
//vea_sspn_idmt_trgt : update edu_state_cd=30,req_state_cd=20
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
@ -265,21 +224,77 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
//vEPrcsAplctPrdDAO.delete(vEPrcsDetailVO);
//vEEduAplctDAO.delete(vEEduAplctVO);
//vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
vEPrcsMIXDAO.updateAplctDetailInfo(vEPrcsDetailVO);
vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
vEPrcsMIXDAO.updateAplctDetailInfo(vEPrcsDetailVO);
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}else if ("6".equals(vEPrcsDetailVO.getReqNo())) {
//교육확정
//ve_prcs_aplct_prd : 처리 없음(앞에서 처리)
//ve_edu_aplct : update aprvl_cd=60
//vea_aplct_detail_info : 처리 없음
//vea_sspn_idmt_trgt : update edu_state_cd=30,req_state_cd=20
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
//vEPrcsAplctPrdDAO.delete(vEPrcsDetailVO);
//vEEduAplctDAO.delete(vEEduAplctVO);
vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
//vEPrcsMIXDAO.updateAplctDetailInfo(vEPrcsDetailVO);
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}else if ("6-1".equals(vEPrcsDetailVO.getReqNo())) {
//대상자 교육신청후 교육 취소 처리
//ve_prcs_aplct_prd : 처리 없음
//ve_edu_aplct : update aprvl_cd=35
//vea_aplct_detail_info : 처리 없음
//vea_sspn_idmt_trgt : update edu_state_cd=30,req_state_cd=20
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
//vEPrcsAplctPrdDAO.delete(vEPrcsDetailVO);
//vEEduAplctDAO.delete(vEEduAplctVO);
vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
//vEPrcsMIXDAO.deleteAplctDetailInfo(vEPrcsDetailVO);
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}else if ("6-2".equals(vEPrcsDetailVO.getReqNo())) {
//대상자 교육 취소 신청 승인(취소 승인-교육종료)
//ve_prcs_aplct_prd : 처리 없음
//ve_edu_aplct : update aprvl_cd=40
//vea_aplct_detail_info : 처리 없음
//vea_sspn_idmt_trgt : update edu_state_cd=60,req_state_cd=40
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
//vEPrcsAplctPrdDAO.delete(vEPrcsDetailVO);
//vEEduAplctDAO.delete(vEEduAplctVO);
vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
//vEPrcsMIXDAO.deleteAplctDetailInfo(vEPrcsDetailVO);
vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}else if ("6-3".equals(vEPrcsDetailVO.getReqNo())) {
//대상자 교육 취소 신청 반려(취소 반려-교육계속)
//ve_prcs_aplct_prd : 처리 없음
//ve_edu_aplct : 처리 없음
//vea_aplct_detail_info : aplct_state_cd = null
//ve_edu_aplct : update aprvl_cd=60
//vea_aplct_detail_info : 처리 없음
//vea_sspn_idmt_trgt : 처리 없음
VEEduAplctVO vEEduAplctVO = new VEEduAplctVO();
vEEduAplctVO.setEduAplctOrd(vEPrcsDetailVO.getEduAplctOrd());
vEPrcsMIXDAO.updateAplctDetailInfo(vEPrcsDetailVO);
//vEPrcsAplctPrdDAO.delete(vEPrcsDetailVO);
//vEEduAplctDAO.delete(vEEduAplctVO);
vEEduAplctDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
//vEPrcsMIXDAO.deleteAplctDetailInfo(vEPrcsDetailVO);
//vEPrcsMIXDAO.updateSspnIdmtTrgtCancelNew(vEPrcsDetailVO);
}
return 1;
@ -383,10 +398,6 @@ public class VEPrcsAplctPrdServiceImpl implements VEPrcsAplctPrdService {
@Override
public List<VEPrcsDetailVO> selectTrgtList4_60(VEPrcsDetailVO paramVO) throws Exception{
return vEPrcsAplctPrdDAO.selectTrgtList4_60(paramVO);
}
public List<VEPrcsDetailVO> findByAprvlQustnrAllList(VEPrcsDetailVO vEPrcsDetailVO) {
return vEPrcsAplctPrdDAO.findByAprvlQustnrAllList(vEPrcsDetailVO);
}

View File

@ -38,11 +38,8 @@ import kcc.com.cmm.spring.data.util.ExcelUtil;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.com.utl.user.service.QustnrCommonUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.uss.notify.service.NotifyManageService;
import kcc.let.uss.olp.qri.service.EgovQustnrRespondInfoService;
import kcc.let.uss.olp.qri.service.QustnrRespondInfoVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.let.utl.fcc.service.ITNotiUtil;
import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
@ -60,7 +57,6 @@ import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngService;
import kcc.ve.oprtn.cmdTrgt.trgtMng.service.CmdTrgtMngVO;
import kcc.ve.oprtn.fndtnEnhanceTrn.prcsAplctPrdMng.service.ExcelVO;
import kcc.ve.oprtn.qestnr.service.VEALettnQestnrMIXService;
/**
* 기반강화연수(관리자)
@ -178,17 +174,6 @@ public class CmdPrcsInfoMngController {
@Resource(name="eduAplctGnrService")
private EgovIdGnrService eduAplctGnrService;
// 설문 util
@Resource(name = "qustnrCommonUtil")
private QustnrCommonUtil qustnrCommonUtil;
// 설문 복합 VEA_
@Resource(name = "vEALettnQestnrMIXService")
private VEALettnQestnrMIXService vEALettnQestnrMIXService;
@Resource(name = "egovQustnrRespondInfoService")
private EgovQustnrRespondInfoService egovQustnrRespondInfoService;
/**
* 기반강화연수 과정 관리 목록 화면
*/
@ -1343,92 +1328,6 @@ public class CmdPrcsInfoMngController {
model.addAttribute("instrAsgnmList", instrAsgnmList);
}
//설문 문항 정보
try {
model = qustnrCommonUtil._qustnrQesItm(
model
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, "QTMPLA_0000000000001"
, vEALettnQestnrMIXService
, egovQustnrRespondInfoService
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
, ""
//, vEEduAplctVO.getEduAplctOrd()
//, vEEduAplctVO.getEduChasiOrd()
);
}catch(Exception ex) {
ex.printStackTrace();
}
/*
// 설문조사 정보
QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO();
qustnrRespondInfoVO.setSiteId(VeConstants.LCTR_DIV_CD_20);
QustnrRespondInfoVO info = egovQustnrRespondInfoService.selectSiteIdQustnrTmplat(qustnrRespondInfoVO);
// 설문조사 문항리스트 조회
Map <String, Object> commandMap =new HashMap<String, Object>();
commandMap.put("qestnrTmplatId", "QTMPLA_0000000000001");
commandMap.put("qestnrId",info.getQestnrId()); //문제 ID
model.addAttribute("Comtnqustnrqesitm", egovQustnrRespondInfoService.selectQustnrRespondInfoManageComtnqustnrqesitm(commandMap));
*/
try{
model = qustnrCommonUtil._chasiSrvyList(
model
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
, ""
//, vEEduAplctVO.getEduAplctOrd()
//, vEEduAplctVO.getEduChasiOrd()
, vEALettnQestnrMIXService
);
}catch(Exception ex) {
ex.printStackTrace();
}
//개인별 만족도 관리 - chasiSrvyEAList
try{
model = qustnrCommonUtil._chasiSrvyEAList(
model
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
, ""
//, vEEduAplctVO.getEduAplctOrd()
//, vEEduAplctVO.getEduChasiOrd()
, vEALettnQestnrMIXService
);
}catch(Exception ex) {
ex.printStackTrace();
}
//주관식 답변 정보
try {
QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO();
//qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd());
qustnrRespondInfoVO.setEduChasiOrd("");
List<QustnrRespondInfoVO> subjList = egovQustnrRespondInfoService.selectSubjList(qustnrRespondInfoVO);
if (subjList.size()>=0) {
model.addAttribute("subjInfo", subjList.get(0));
}
}catch(Exception ex) {
System.out.println("Exception vEEduAplctOnlnService.updateBulk");
}
System.out.println("=============================================chasiSrvyEAList=============================================");
return "/oprtn/cmdTrgt/cndtnEduPrcsAplctCfnMngDetail";
}

View File

@ -38,23 +38,15 @@ import kcc.com.cmm.spring.data.util.ExcelUtil;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckFileUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.com.utl.user.service.QustnrCommonUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.let.uss.notify.service.NotifyManageService;
import kcc.let.uss.olp.qri.service.EgovQustnrRespondInfoService;
import kcc.let.uss.olp.qri.service.QustnrRespondInfoVO;
import kcc.let.utl.fcc.service.EgovCryptoUtil;
import kcc.let.utl.fcc.service.ITNotiUtil;
import kcc.ve.aplct.sspnIdtmt.service.SspnIdtmtService;
import kcc.ve.cmm.VeConstants;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
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;
import kcc.ve.instr.tngrVisitEdu.lctrInfo.service.VELctrMIXService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEAPrcsAplctPrdInstrAsgnmVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsAplctPrdService;
@ -65,7 +57,6 @@ import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngService;
import kcc.ve.oprtn.cndtnSspnIdtmt.trgtMng.service.CndtnTrgtMngVO;
import kcc.ve.oprtn.fndtnEnhanceTrn.prcsAplctPrdMng.service.ExcelVO;
import kcc.ve.oprtn.qestnr.service.VEALettnQestnrMIXService;
/**
* 기반강화연수(관리자)
@ -170,33 +161,12 @@ public class PreventMngController {
//파일 처리 egov
@Resource(name="EgovFileMngUtil")
private EgovFileMngUtil egovFileMngUtil;
//파일 체크 util
@Resource(name = "checkFileUtil")
private CheckFileUtil checkFileUtil;
// 설문 util
@Resource(name = "qustnrCommonUtil")
private QustnrCommonUtil qustnrCommonUtil;
// 설문 복합 VEA_
@Resource(name = "vEALettnQestnrMIXService")
private VEALettnQestnrMIXService vEALettnQestnrMIXService;
@Resource(name = "egovQustnrRespondInfoService")
private EgovQustnrRespondInfoService egovQustnrRespondInfoService;
//강의설정 MIX
@Resource(name = "vELctrMIXService")
private VELctrMIXService vELctrMIXService;
//rkdtk 관리
@Resource(name = "vEInstrMixService")
private VEInstrMixService vEInstrMixService;
// 첨부파일 정보
@Resource(name="vEInstrDetailActvtHstryService")
private VEInstrDetailActvtHstryService vEInstrDetailActvtHstryService;
/**
* 기반강화연수 과정 관리 목록 화면
@ -681,278 +651,7 @@ public class PreventMngController {
}
/**
* 교육실적통계 화면
*/
@RequestMapping("/kccadr/oprtn/prevent/newEduPrfrmMngList.do")
public String newEduPrfrmMngList(
@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
, @ModelAttribute("vELctrDetailVO") VELctrDetailVO vELctrDetailVO
, @ModelAttribute("vEInstrDetailVODetail") VEInstrDetailVO vEInstrDetailVODetail
, HttpSession session
, ModelMap model
) throws Exception {
//LoginVO user = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
//설정 리스트(과거~올해+1)
List<VELctrDetailVO> selectStngYrList = vELctrMIXService.selectStngYrList(vELctrDetailVO);
model.addAttribute("selectStngYrList", selectStngYrList);
//차시별 정보
VEPrcsDetailVO vEPrcsDetailVO = new VEPrcsDetailVO();
vEPrcsDetailVO.setLctrDivCd(LCTR_DIV_CD);
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsAplctPrdService.selectPagingList4Fndth4Stts(vEPrcsDetailVO);
model.addAttribute("vEPrcsDetailVOList", vEPrcsDetailVOList);
//vEInstrDetailVODetail.setLctrDivCd("10"); //강의구분코드 VE0011 - 10-청소년, 20-성인, 30-체험교실, 50-실무영역, 60-기소유예
/*
//통계- 검찰청별 교육 의뢰 현황(그래프 포함)
{
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no1 = vEInstrMixService.selectEduPrfrmInfo_csi_no1(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List_no1 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no1);
model.addAttribute("list_no1",selectAsgnmInfoT2List_no1);
}
//통계- 월별 교육의뢰현황(그래프 포함)
{
//vEInstrDetailVODetail.setNo3("10"); * 10-횟수, 20-인원 *
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no2 = vEInstrMixService.selectEduPrfrmInfo_csi_no2(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List_no2 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no2);
model.addAttribute("list_no2",selectAsgnmInfoT2List_no2);
}
//통계- 대상별 교육의뢰현황(그래프 포함)
{
// * 10-횟수, 20-인원 *
//vEInstrDetailVODetail.setNo3("20");
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no3 = vEInstrMixService.selectEduPrfrmInfo_csi_no3(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List_no3 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no3);
model.addAttribute("list_no3",selectAsgnmInfoT2List_no3);
}
//통계- 검찰청별 교육 수료 현황(그래프 포함)
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT4List_no4 = vEInstrMixService.selectEduPrfrmInfo_csi_no4(vEInstrDetailVODetail);
model.addAttribute("list_no4",selectAsgnmInfoT4List_no4);
}
*/
// 월별 교육이수현황(그래프 포함) - 대상이 없어서 제공안됨
{
vEInstrDetailVODetail.setLctrDivCd(LCTR_DIV_CD);
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT5List = vEInstrMixService.selectEduPrfrmInfo_csi_prevent_no5(vEInstrDetailVODetail);
model.addAttribute("list_no5",selectAsgnmInfoT5List);
}
/*
// 대상별 교육이수현황(그래프 포함) - 대상이 없어서 제공안됨
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT6List = vEInstrMixService.selectEduPrfrmInfo_csi_no6(vEInstrDetailVODetail);
model.addAttribute("list_no6",selectAsgnmInfoT6List);
}
// 월별 교육차시별 차시명, 이수, 미이수, 연기인원 통계
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
//vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT7List = vEInstrMixService.selectEduPrfrmInfo_csi_no7(vEInstrDetailVODetail);
model.addAttribute("list_no7",selectAsgnmInfoT7List);
}
*/
//통계- 인구감소지역별 교육횟수 교육인원, 교육기관, 교육일자(그래프 포함)) - 대상이 없어서 제공안됨
/*
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no8 = vEInstrMixService.selectEduPrfrmInfo_tngr_no8(vEInstrDetailVODetail);
//복호화
selectAsgnmInfoT2List_no8 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no8);
model.addAttribute("list_no8",selectAsgnmInfoT2List_no8);
}
*/
//통계- 도서벽지별 지역교육횟수, 교육인원, 교육기관, 교육일자(그래프 포함)) - 대상이 없어서 제공안됨
/*
{
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
List<VELctrDetailVO> selectAsgnmInfoT2List_no9 = vEInstrMixService.selectEduPrfrmInfo_tngr_no9(vEInstrDetailVODetail);
//복호화
selectAsgnmInfoT2List_no9 = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List_no9);
model.addAttribute("list_no9",selectAsgnmInfoT2List_no9);
}
*/
return "oprtn/prevent/newEduPrfrmMngList";
}
/**
* 교육실적통계 Excel - 조건부기소유예 - 5검찰청별 교육 이수 현황(그래프 포함)
* @param model
* @return
* @throws Exception
*/
@SuppressWarnings("rawtypes")
@RequestMapping(value = "/kccadr/oprtn/prevent/eduPrfrmMngExcelDownLoad_csi_no5.do")
public ModelAndView eduPrfrmMngExcelDownLoad_csi_no5(
@ModelAttribute("vEEduAplctVO") VEEduAplctVO vEEduAplctVO
, @ModelAttribute("vEInstrDetailVODetail") VEInstrDetailVO vEInstrDetailVODetail
, ModelMap model
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("excelDownloadView");
try {
//통계- 월별 횟수/교육인원(그래프 포함)
//vEInstrDetailVODetail.setInstrNm(vEInstrDetailVODetail.getSearchKeyword());
vEInstrDetailVODetail = egovCryptoUtil.encryptVEInstrDetailVO(vEInstrDetailVODetail);
vEInstrDetailVODetail.setSearchEduStateCd("20"); //이수만 보기
List<VELctrDetailVO> selectAsgnmInfoT2List = vEInstrMixService.selectEduPrfrmInfo_csi_prevent_no5(vEInstrDetailVODetail);
//복호화
//selectAsgnmInfoT2List = egovCryptoUtil.decryptVELctrDetailVOList(selectAsgnmInfoT2List);
System.out.println("out-list-2");
selectAsgnmInfoT2List.get(12).setCodeNm("합계");
List<Object> excelData = new ArrayList<>();
excelData.addAll(selectAsgnmInfoT2List);
// 세팅값
String title = "교육실적통계-월별 교육 이수 현황";
int[] width = {
4000, 4000, 4000
}; // 너비
//33개 항목
String[] header = {
""
, "이수(명)"
, "횟수"
};
String[] order = {
"CodeNm"
, "Cnt"
, "Cnt2"
};
excelDown(
excelData,
title,
width,
header,
order,
model
);
}catch(Exception ep) {
ep.getStackTrace();
}
modelAndView.addObject(model);
return modelAndView;
}
/**
* @methodName : instrActvtHstrySignMngList
* @author : 이호영
* @date : 2023.12.28
* @description : 직인대장관리(이수증) - 기반 기소
* @param vEInstrDetailActvtHstryVO
* @param model
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/kccadr/oprtn/prevent/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/prevent/instrActvtHstrySignAndCmpltCrtfcMngList";
}
/**
* 기소유예 신청기간 등록
@ -1623,93 +1322,6 @@ public class PreventMngController {
model.addAttribute("instrAsgnmList", instrAsgnmList);
}
//설문 문항 정보
try {
model = qustnrCommonUtil._qustnrQesItm(
model
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, "QTMPLA_0000000000001"
, vEALettnQestnrMIXService
, egovQustnrRespondInfoService
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
, ""
//, vEEduAplctVO.getEduAplctOrd()
//, vEEduAplctVO.getEduChasiOrd()
);
}catch(Exception ex) {
ex.printStackTrace();
}
/*
// 설문조사 정보
QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO();
qustnrRespondInfoVO.setSiteId(VeConstants.LCTR_DIV_CD_20);
QustnrRespondInfoVO info = egovQustnrRespondInfoService.selectSiteIdQustnrTmplat(qustnrRespondInfoVO);
// 설문조사 문항리스트 조회
Map <String, Object> commandMap =new HashMap<String, Object>();
commandMap.put("qestnrTmplatId", "QTMPLA_0000000000001");
commandMap.put("qestnrId",info.getQestnrId()); //문제 ID
model.addAttribute("Comtnqustnrqesitm", egovQustnrRespondInfoService.selectQustnrRespondInfoManageComtnqustnrqesitm(commandMap));
*/
try{
model = qustnrCommonUtil._chasiSrvyList(
model
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
, ""
//, vEEduAplctVO.getEduAplctOrd()
//, vEEduAplctVO.getEduChasiOrd()
, vEALettnQestnrMIXService
);
}catch(Exception ex) {
ex.printStackTrace();
}
//개인별 만족도 관리 - chasiSrvyEAList
try{
model = qustnrCommonUtil._chasiSrvyEAList(
model
, LCTR_DIV_CD //청소년 -10, 성인-20, ...VE0012
, "10" //10-기본설문, 20-신청자설문, 30-강사설문 VEA012
, vEPrcsDetailVO.getPrcsAplctPrdOrd()
, ""
//, vEEduAplctVO.getEduAplctOrd()
//, vEEduAplctVO.getEduChasiOrd()
, vEALettnQestnrMIXService
);
}catch(Exception ex) {
ex.printStackTrace();
}
//주관식 답변 정보
try {
QustnrRespondInfoVO qustnrRespondInfoVO = new QustnrRespondInfoVO();
//qustnrRespondInfoVO.setEduChasiOrd(vEEduAplctVO.getEduChasiOrd());
qustnrRespondInfoVO.setEduChasiOrd("");
List<QustnrRespondInfoVO> subjList = egovQustnrRespondInfoService.selectSubjList(qustnrRespondInfoVO);
if (subjList.size()>=0) {
model.addAttribute("subjInfo", subjList.get(0));
}
}catch(Exception ex) {
System.out.println("Exception vEEduAplctOnlnService.updateBulk");
}
System.out.println("=============================================chasiSrvyEAList=============================================");
return "/oprtn/prevent/cndtnEduPrcsAplctCfnMngDetail";
}
@ -3336,72 +2948,4 @@ public class PreventMngController {
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;
}
@SuppressWarnings("unused")
private void excelDown(
List list,
String title,
int[] width,
String[] header,
String[] order,
ModelMap model
){
// 호출
SXSSFWorkbook workbook;
try {
workbook = ExcelUtil.makeSimpleFruitExcelWorkbook(list, header, order, width, title);
model.addAttribute("locale", Locale.KOREA);
model.addAttribute("workbook", workbook);
model.addAttribute("workbookName", title);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

View File

@ -25,7 +25,7 @@
jdbcUsersByUsernameQuery="SELECT USER_ID, ESNTL_ID AS PASSWORD, 1 ENABLED, USER_NM, USER_ZIP,
USER_ADRES, USER_EMAIL, USER_SE, '-' ORGNZT_ID, ESNTL_ID,
'-' ORGNZT_NM, AUTHOR_CODE AS AUTHORITY
, '' AS mber_seq, JOIN_TYPE AS JOIN_TYPE
, '' AS mber_seq
FROM COMVNUSERMASTER A
INNER JOIN LETTNEMPLYRSCRTYESTBS B ON A.ESNTL_ID = B.SCRTY_DTRMN_TRGET_ID
WHERE CONCAT(USER_SE, USER_ID) = ?"

View File

@ -3,10 +3,6 @@
"http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<!-- 강사 --><!-- 기본셋 -->
<sqlMap resource="egovframework/sqlmap/ve/instr/VEInstrDetailActvtHstry_SQL_Postgresql.xml"/><!-- 강사활동내역신청테이블 -->
<sqlMap resource="egovframework/sqlmap/ve/prcs/VEPrcs_SQL_Postgresql.xml"/>
<sqlMap resource="egovframework/sqlmap/ve/prcs/VEPrcsOnlnCntnt_SQL_Postgresql.xml"/>
<sqlMap resource="egovframework/sqlmap/ve/prcs/VEPrcsAplctPrd_SQL_Postgresql.xml"/>
@ -41,8 +37,5 @@
<sqlMap resource="egovframework/sqlmap/ve/tngr/VEAInstrHstryMng_SQL_Postgresql.xml"/> <!-- 강사이력관리 -->
<sqlMap resource="egovframework/sqlmap/ve/qustnr/VEALettnQestnrMIX_SQL_Postgresql.xml"/> <!-- 설문지 MIX 쿼리 -->
<!-- 통계 2024.01.10 -->
<sqlMap resource="egovframework/sqlmap/ve/instr/VESttst_MIX_SQL_Postgresql.xml"/><!-- 통계 쿼리 -->
</sqlMapConfig>

View File

@ -134,9 +134,7 @@
FROM LETTNQUSTNRQESITM A
WHERE 1=1
AND A.QESTNR_ID = #qestnrId#
/*
AND A.QUSTNR_TMPLAT_ID = qestnrTmplatId
*/
AND A.QUSTNR_TMPLAT_ID = #qestnrTmplatId#
ORDER BY A.QESTN_SN
</select>
<!-- 설문조사(설문등록):: 설문등록 /설문 항목정보 -->

View File

@ -218,8 +218,7 @@
]]>
</isEqual>
</isNotEmpty>
CRTFC_DN_VALUE,
JOIN_TYPE )
CRTFC_DN_VALUE )
VALUES (
#uniqId# ,
#emplyrId# ,
@ -257,8 +256,7 @@
#snsId# ,
#snsEmail# ,
</isNotEmpty>
#subDn#,
#joinType# )
#subDn# )
</insert>
<!-- <insert id="userManageDAO.insertUser_GNR">
@ -566,7 +564,6 @@
UPDATE LETTNEMPLYRINFO
SET
PASSWORD = #password#
, JOIN_TYPE = '1'
WHERE ESNTL_ID = #uniqId#
]]>
</update>

View File

@ -849,7 +849,6 @@
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

@ -808,8 +808,6 @@
qe.QESTNR_ID AS qestnrId , /* 설문했으면 ID가 있음 */
vadi.APLCT_STATE_CD AS aplctStateCd, /* 이수 상태 */
vadi.CNCL_CN AS cnclCn, /* 취소사유 */
vadi.CNCL_ATCH_FILE_ID AS cnclAtchFileId, /* 취소요청파일 */
vsit.edu_state_cd AS eduStateCd,
le.MBER_NM AS userNm,
le.MBER_ID AS mberId,
@ -919,35 +917,24 @@
a.QUSTNR_TMPLAT_ID ,
a.SITE_ID ,
a.QESTNR_ID as QESTNR_ID_10 ,
null as QESTNR_ID_20 ,
null as QESTNR_ID_30 ,
a.qustnr_bgnde ,
a.qustnr_endde
/*
MAX(CASE WHEN a.site_id_cd = '10' THEN a.QESTNR_ID ELSE NULL END) AS QESTNR_ID_10,
MAX(CASE WHEN a.site_id_cd = '20' THEN a.QESTNR_ID ELSE NULL END) AS QESTNR_ID_20,
MAX(CASE WHEN a.site_id_cd = '30' THEN a.QESTNR_ID ELSE NULL END) AS QESTNR_ID_30
*/
MAX(CASE WHEN a.site_id_cd = '30' THEN a.QESTNR_ID ELSE NULL END) AS QESTNR_ID_30
FROM
LETTNQESTNRINFO a
WHERE
a.SITE_ID = #siteId#
AND a.SITE_ID_CD IN ('10', '20', '30')
/*
AND TO_CHAR(NOW(), 'YYYY.MM.DD') BETWEEN COALESCE(a.qustnr_bgnde, '2000.01.01') AND COALESCE(a.qustnr_endde, '9999.12.31')
AND TO_CHAR(NOW(),
'YYYY.MM.DD') BETWEEN COALESCE(a.qustnr_bgnde,
'2000.01.01')
AND COALESCE(a.qustnr_endde,
'9999.12.31')
GROUP BY
a.QUSTNR_TMPLAT_ID ,
a.SITE_ID
*/
) I ON
(vpap.edu_strt_pnttm between coalesce(I.qustnr_bgnde, '20000101') and coalesce(I.qustnr_endde,'99991231'))
a.SITE_ID ) I ON
(1 = 1)

View File

@ -147,9 +147,7 @@
lettnqustnrrespondinfo b
WHERE
b.edu_aplct_ord=#eduAplctOrd#
/*
AND b.edu_chasi_ord=eduChasiOrd
*/
AND b.edu_chasi_ord=#eduChasiOrd#
GROUP BY
b.QUSTNR_TMPLAT_ID ,
b.QESTNR_ID
@ -162,22 +160,14 @@
AND a.site_id_cd = #siteIdCd#
)b
on(1=1)
, ve_prcs_aplct_prd c
on(1=1)
WHERE 1 =1
AND A.SITE_ID = #siteId#
AND COALESCE(A.site_id_cd, '10')=#siteIdCd#
AND c.prcs_aplct_prd_ord=#eduAplctOrd#
AND c.edu_strt_pnttm between coalesce(a.qustnr_bgnde, '20000101') and coalesce(a.qustnr_endde, '99991231')
/*
AND to_char(NOW(), 'YYYY.MM.DD') BETWEEN
COALESCE(a.qustnr_bgnde,'2000.01.01') AND COALESCE(a.qustnr_endde,'9999.12.31')
*/
AND A.SITE_ID = #siteId#
AND COALESCE(A.site_id_cd, '10')=#siteIdCd#
ORDER BY A.QESTNR_ID DESC
LIMIT 1
@ -240,42 +230,30 @@
SELECT c02.*
FROM (
SELECT
c00.qestnr_id ,
c00.qustnr_qesitm_id ,
max(c00.qustnr_rslt_id) as qustnr_rslt_id
c00.qustnr_tmplat_id
, c00.qestnr_id
, c00.qustnr_qesitm_id
, max(c00.qustnr_rslt_id) AS qustnr_rslt_id
FROM
LETTNQESTNRRSLTDetail c00
, ve_edu_aplct d00
WHERE
d00.prcs_ord = #eduAplctOrd#
and d00.EDU_APLCT_ORD=c00.edu_aplct_ord
/*
and c00.EDU_CHASI_ORD = ''
*/
c00.EDU_APLCT_ORD = #eduAplctOrd#
AND c00.EDU_CHASI_ORD = #eduChasiOrd#
GROUP BY
c00.qestnr_id ,
c00.qustnr_qesitm_id
c00.qustnr_tmplat_id
, c00.qestnr_id
, c00.qustnr_qesitm_id
)c01
, LETTNQESTNRRSLTDetail c02
WHERE 1=1
/*
c01.qustnr_tmplat_id=c02.qustnr_tmplat_id
*/
WHERE c01.qustnr_tmplat_id=c02.qustnr_tmplat_id
AND c01.qestnr_id=c02.qestnr_id
AND c01.qustnr_qesitm_id=c02.qustnr_qesitm_id
AND c01.qustnr_rslt_id=c02.qustnr_rslt_id
) c
on(
1=1
/*
b.QUSTNR_TMPLAT_ID =c.QUSTNR_TMPLAT_ID
*/
AND b.QESTNR_ID =c.QESTNR_ID
AND b.QUSTNR_QESITM_ID =c.QUSTNR_QESITM_ID
@ -309,10 +287,7 @@
LEFT OUTER JOIN LETTNQUSTNRRESPONDINFO e
on
(
1=1
/*
d.QUSTNR_TMPLAT_ID =e.QUSTNR_TMPLAT_ID
*/
d.QUSTNR_TMPLAT_ID =e.QUSTNR_TMPLAT_ID
AND d.QESTNR_ID =e.QESTNR_ID
AND d.QUSTNR_RESPOND_ID =e.QUSTNR_RESPOND_ID
AND d.EDU_APLCT_ORD = e.EDU_APLCT_ORD
@ -346,10 +321,7 @@
)F
on(
1=1
/*
b.QUSTNR_TMPLAT_ID =f.QUSTNR_TMPLAT_ID
*/
AND b.QESTNR_ID =f.QESTNR_ID
AND b.QUSTNR_QESITM_ID =f.QUSTNR_QESITM_ID
@ -359,9 +331,7 @@
WHERE a.site_id=#siteId#
AND COALESCE(a.SITE_ID_CD,'10') =#siteIdCd#
/*
AND b.QUSTNR_TMPLAT_ID =a.QUSTNR_TMPLAT_ID
*/
AND b.QUSTNR_TMPLAT_ID =a.QUSTNR_TMPLAT_ID
AND b.QESTNR_ID =a.QESTNR_ID
</select>

View File

@ -53,6 +53,7 @@ function fncGoDetail(prcsAplctPrdOrd, url){
<%-- ===========================================
조건부 기소유예 시작
============================================ --%>
<div class="box_title">조건부기소유예</div>
<div class="box">
<div class="box_tit">
<p>조건부기소유예 대상자 목록 현황</p>
@ -148,6 +149,7 @@ function fncGoDetail(prcsAplctPrdOrd, url){
<%-- ===========================================
시정명령 시작
============================================ --%>
<div class="box_title">시정명령</div>
<div class="box">
<div class="box_tit">
<p>시정명령 대상자 정보 현황</p>
@ -243,6 +245,7 @@ function fncGoDetail(prcsAplctPrdOrd, url){
<%-- ===========================================
예방교육 시작
============================================ --%>
<div class="box_title">예방교육</div>
<div class="box">
<div class="box_tit">
<p>과정신청현황</p>

View File

@ -924,37 +924,37 @@
</td>
<td>
<c:choose>
<c:when test="${list.aplctStateCd eq '35'}"><!-- 취소 요청 -->
<ve:code codeId="VEA003" code="${list.aplctStateCd}"/>
<c:when test="${list.aprvlCd eq '35'}"><!-- 취소 요청 -->
<ve:code codeId="VE0003" code="${list.aprvlCd}"/>
<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.cnclCn}
${list.aplctCn}
<br/>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${list.cnclAtchFileId}" />
<c:param name="param_atchFileId" value="${list.rsltAtchFileId}" />
</c:import>
</c:when>
<c:when test="${list.aplctStateCd eq '60' and not empty list.cnclCn}"><!-- 취소 승인 -->
<c:when test="${list.aprvlCd eq '40'}"><!-- 취소 승인 -->
취소승인
<br/>
<br/>
${list.cnclCn}
${list.aplctCn}
<br/>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${list.cnclAtchFileId}" />
<c:param name="param_atchFileId" value="${list.rsltAtchFileId}" />
</c:import>
</c:when>
<c:when test="${list.aplctStateCd ne '60' and not empty list.cnclCn}"><!-- 취소정보가 있는데 60이면 취소 반려 처리 -->
<c:when test="${list.aprvlCd eq '60' and not empty list.aplctCn}"><!-- 취소정보가 있는데 60이면 취소 반려 처리 -->
취소반려
<br/>
<br/>
${list.cnclCn}
${list.aplctCn}
<br/>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${list.cnclAtchFileId}" />
<c:param name="param_atchFileId" value="${list.rsltAtchFileId}" />
</c:import>
</c:when>
<c:otherwise>
@ -1108,51 +1108,51 @@
<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> -->
<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>
@ -1317,7 +1317,7 @@
</c:forEach>
<!-- <button type="button" class="btn_type06" onclick="fn_chasiStatusPop(); return false;">등록</button> -->
<button type="button" class="btn_type06" onclick="fn_chasiStatusPop(); return false;">등록</button>
</div>
</div>
</c:otherwise>

View File

@ -845,37 +845,37 @@
</td>
<td>
<c:choose>
<c:when test="${list.aplctStateCd eq '35'}"><!-- 취소 요청 -->
<ve:code codeId="VEA003" code="${list.aplctStateCd}"/>
<c:when test="${list.aprvlCd eq '35'}"><!-- 취소 요청 -->
<ve:code codeId="VE0003" code="${list.aprvlCd}"/>
<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.cnclCn}
${list.aplctCn}
<br/>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${list.cnclAtchFileId}" />
<c:param name="param_atchFileId" value="${list.rsltAtchFileId}" />
</c:import>
</c:when>
<c:when test="${list.aplctStateCd eq '60' and not empty list.cnclCn}"><!-- 취소 승인 -->
<c:when test="${list.aprvlCd eq '40'}"><!-- 취소 승인 -->
취소승인
<br/>
<br/>
${list.cnclCn}
${list.aplctCn}
<br/>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${list.cnclAtchFileId}" />
<c:param name="param_atchFileId" value="${list.rsltAtchFileId}" />
</c:import>
</c:when>
<c:when test="${list.aplctStateCd ne '60' and not empty list.cnclCn}"><!-- 취소정보가 있는데 60이면 취소 반려 처리 -->
<c:when test="${list.aprvlCd eq '60' and not empty list.aplctCn}"><!-- 취소정보가 있는데 60이면 취소 반려 처리 -->
취소반려
<br/>
<br/>
${list.cnclCn}
${list.aplctCn}
<br/>
<c:import url="/cmm/fms/selectBBSFileInfs.do" charEncoding="utf-8">
<c:param name="param_atchFileId" value="${list.cnclAtchFileId}" />
<c:param name="param_atchFileId" value="${list.rsltAtchFileId}" />
</c:import>
</c:when>
<c:otherwise>
@ -962,8 +962,7 @@
<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>
<br/>
</div>
<div class="tb_tit01">
@ -1017,229 +1016,7 @@
<%-- <button type="button" class="btn_type04" onclick="location.href='<c:url value="/kccadr/oprtn/prevent/cndtnEduPrcsAplctCfnMngList.do" />'; return false;">교육확정목록</button> --%>
</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>
</div>

View File

@ -1,249 +0,0 @@
<!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/prevent/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

@ -91,7 +91,14 @@
</c:forEach>
</ul>
<div class="btn_area">
<button type="button" class="btn_identify mobile" title="전체메뉴 열기"><i></i></button>
<c:choose>
<c:when test="${empty LoginVO}">
<button type="button" class="btn_identify mobile" onclick="location.href='${pageContext.request.contextPath}/web/user/login/ssoLogin.do'" title="본인인증"><i></i></button>
</c:when>
<c:when test="${!empty LoginVO}">
<button type="button" class="btn_logout mobile" onclick="location.href='${pageContext.request.contextPath}/web/uat/uia/actionLogout.do'" title="인증해제"><i></i></button>
</c:when>
</c:choose>
<button type="button" class="btn_sitemap" title="전체메뉴 열기"><i></i></button>
</div>
</div>

View File

@ -76,7 +76,7 @@
<script src="<c:url value='/visitEdu/usr/publish/script/main.js'/>"></script>
<script type="module" src="<c:url value='/visitEdu/usr/datapicker/duet.esm.js'/>"></script>
<script nomodule src="<c:url value='/visitEdu/usr/datapicker/duet.js'/>"></script>
<script src="<c:url value='/visitEdu/usr/datapicker/duet.system.js'/>"></script>
<%-- <script src="<c:url value='/visitEdu/usr/datapicker/duet.system.js'/>"></script> --%>
<script>
sessionStorage.setItem("contextpath", "${pageContext.request.contextPath}");
@ -138,6 +138,7 @@
${resultListTit.menuNm }
</c:if>
</c:forEach>
<!-- 상표권 교육조건부 기소유예 -->
</strong>
<p>지식재산보호교육시스템</p>
</div>

View File

@ -166,8 +166,8 @@ function fn_egov_inqire_data(bbsId, nttId) {
<div class="box">
<p class="title">상표권 교육조건부 기소유예</p>
<div class="link_area">
<a href="${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduInfo.do" class="btn line">교육안내</a>
<a href="${pageContext.request.contextPath}/web/ve/aplct/sspnIdtmt/eduAplctList.do" class="btn fill">교육신청</a>
<a href="#" class="btn line">교육안내</a>
<a href="#" class="btn fill">교육신청</a>
</div>
</div>
</li>
@ -175,8 +175,8 @@ function fn_egov_inqire_data(bbsId, nttId) {
<div class="box">
<p class="title">부정경쟁행위 시정명령</p>
<div class="link_area">
<a href="${pageContext.request.contextPath}/web/ve/aplct/cmdTrgt/eduInfo.do" class="btn line">교육안내</a>
<a href="${pageContext.request.contextPath}/web/ve/aplct/cmdTrgt/eduAplctList.do" class="btn fill">교육신청</a>
<a href="#" class="btn line">교육안내</a>
<a href="#" class="btn fill">교육신청</a>
</div>
</div>
</li>
@ -184,8 +184,8 @@ function fn_egov_inqire_data(bbsId, nttId) {
<div class="box">
<p class="title">상표권 침해·부정경쟁 행위 예방</p>
<div class="link_area">
<a href="${pageContext.request.contextPath}/web/ve/aplct/prevent/eduInfo.do" class="btn line">교육안내</a>
<a href="${pageContext.request.contextPath}/web/ve/aplct/prevent/eduAplctList.do" class="btn fill">교육신청</a>
<a href="#" class="btn line">교육안내</a>
<a href="#" class="btn fill">교육신청</a>
</div>
</div>
</li>
@ -372,15 +372,12 @@ function fn_egov_inqire_data(bbsId, nttId) {
</div>
<ul class="list">
<c:forEach var="notiList" items="${bbsList}" varStatus="sts">
<li>
<a href="#">
<strong class="title">2025 대전지역 도메인이름 분쟁조정(DNDR) 세미나 </strong>
<p class="date">2025.09.12</p>
</a>
</li>
</c:forEach>
<li>
<a href="#">
<strong class="title">2025 대전지역 도메인이름 분쟁조정(DNDR) 세미나 </strong>
<p class="date">2025.09.12</p>
</a>
</li>
<li>
<a href="#">
<strong class="title">특허분쟁 위험경보 시스템 회원가입 이벤트(6/16~6/30) </strong>

File diff suppressed because it is too large Load Diff

View File

@ -24,10 +24,9 @@
}
function fncGoDetail(prcsAplctPrdOrd, eduAplctOrd){
function fncGoDetail(prcsAplctPrdOrd){
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();
}
@ -188,7 +187,6 @@
</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' />"/>
@ -236,7 +234,7 @@
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<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 onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" onkeypress="if(event.keyCode == 13){fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');}" style="cursor:pointer;" tabindex="0">
<!-- <td> -->
<c:choose>
@ -254,12 +252,7 @@
<c:out value="${list.eduStrtPnttm}"/>
</td>
<td>
<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:choose>
<c:when test="${not empty list.aplctStateCd }">
<kc:code codeId="VEA003" code="${list.aplctStateCd}"/>
</c:when>
@ -272,8 +265,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>
@ -362,7 +355,7 @@
<ul onclick="">
<li>
<span>교육과정</span>
<span onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');" >
<span onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" >
<c:choose>
<c:when test="${not empty list.title}">
<c:out value="${list.title}"/>
@ -390,8 +383,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}"/>', '<c:out value="${list.eduAplctOrd}"/>');">취소</button>
<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> --%>

View File

@ -394,16 +394,18 @@ async function makePDF() {
.estimate *{font-family: 'HYgsrB', sans-serif !important; color:#222 !important;}
.est_body{position:relative; padding:50px 0; text-align:left;}
.est_body h2{font-size:44px; -webkit-text-stroke-width:0.05px; -webkit-text-stroke-color:#222; text-align:center;}
.est_body .cont1>div p{width:100%;margin:0 0 0 30px;text-align:left;line-height: 1.5;}
.est_body .cont1>div p{width:100%;margin:0 0 8px 30px;text-align:left;line-height: 1.5;}
.est_body .cont5 div{display:block;}
.est_body .cont5 div span:first-child{font-size:18px; font-weight:700; line-height: 1.5; color:#222; margin:0 0 10px 30px; display:block;text-align:left;}
.estimate_popup .est_body .cont5.user_info{display:block;margin:50px 0 0 30px;}
.estimate_popup .est_body .cont5.user_info div{width:100%;justify-content:flex-start;font-size:18px;font-weight:700;}
.estimate_popup .est_body .cont5.user_info div{width:100%;justify-content:flex-start;font-size:18px;font-weight:700;line-height:1.5;margin:0 0 4px 0;}
.estimate_popup .est_body .cont5.user_info div span:nth-child(1){font-size:18px;font-weight:700;margin:0;}
.est_body .cont5.substance>div{margin:100px 0; text-align:center;}
.est_body .cont5.substance>div p{font-size:20px; font-weight:700; color:#222; margin:0 50px; line-height:1.5; text-align:justify; letter-spacing:1px;}
.est_body .cont5 .date{font-size:18px; font-weight:700; color:#222; display:block; text-align:center; margin-bottom:10px;}
.est_body .cont5 .date+div span{font-size:32px;text-align:center;}`;
.est_body .cont5 .date+div{text-align:center;margin:0 auto;}
.est_body .cont5 .date+div span{display:inline-block;font-size:32px;text-align:center;}
.est_body .cont5 .big_stamp{font-size:22px;margin:0 0 0 -6px;}`;
cloned.prepend(styleEl);
container.style.position = 'absolute';
@ -560,7 +562,7 @@ function loadImage(src) {
<span>한국지식재산보호원장</span>
<span class="big_stamp">
<!-- 직인 변경 예정 -->
<img src="/publish/images/content/big_stamp.png">
<img src="/ipedu/visitEdu/usr/publish/images/content/stamp.png">
</span>
</div>
<!-- <div style="height:1500px;background:skyblue;">여러장 test</div> -->

View File

@ -12,6 +12,7 @@
<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;}
@ -269,8 +270,7 @@ $(document).ready(function(){
ο 개인정보의 수집 이용 목적 : 교육 대상자 및 이수자 관리
ο 수집하는 개인정보 항목 : 성명, 생년월일, 휴대전화, 이메일
ο 개인정보의 보유 및 이용기간 : 사업 종료시까지
ο 동의를 거부할 권리가 있다는 사실 및 동의 거부에 따른 불이익이 있는 경우에는 그 불이익의 내용 :
귀하의 개인정보 제공 및 동의를 거부할 권리가 있으며, 위 항목 동의 거부시 수강신청이 불가할 수 있음
ο 동의를 거부할 권리가 있다는 사실 및 동의 거부에 따른 불이익이 있는 경우에는 그 불이익의 내용 : 귀하의 개인정보 제공 및 동의를 거부할 권리가 있으며, 위 항목 동의 거부시 수강신청이 불가할 수 있음
</pre>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">

View File

@ -11,6 +11,10 @@
<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;
@ -18,6 +22,9 @@
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">
@ -25,6 +32,31 @@
$(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
});
});
@ -92,14 +124,59 @@ $(document).ready(function(){
}
function fncGoDetail(prcsAplctPrdOrd, eduAplctOrd){
function fncGoDetail(prcsAplctPrdOrd){
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();
}
//서류 요청
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){
@ -348,7 +425,6 @@ $(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>
@ -419,7 +495,7 @@ $(document).ready(function(){
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<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 onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" onkeypress="if(event.keyCode == 13){fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');}" style="cursor:pointer;" tabindex="0">
<c:choose>
<c:when test="${not empty list.title}">
<c:out value="${list.title}"/>
@ -483,13 +559,13 @@ $(document).ready(function(){
(취소-반려)
</c:if>
<c:if test="${list.aplctStateCd eq 10 }"> <!--교육 승인된 상태 (미이수)일 때만 취소버튼 노출 -->
<%-- <button type="button" title="신청취소" class="btnType02 btn small fill gray" 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 fill gray" 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>
@ -560,7 +636,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="btn small line red" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">교육취소</button>
<button type="button" class="btn small line red" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">교육취소</button>
</c:if>
</td>
</tr>
@ -590,6 +666,76 @@ $(document).ready(function(){
</div>
<!-- 서류요청 팝업 -->
<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

@ -357,9 +357,15 @@ $(document).ready(function(){
</td>
</tr>
<tr>
<th scope=“row”>생년월일 8자리 (ex.1988.01.01)</th>
<th scope=“row”>생년월일/성별</th>
<td>
<div class="calendar_wrap">
<div class="birth_wrap">
<input type="hidden" value="" id="dBirth"/>
<input type="text" class="birth_input" maxlength="6" placeholder="●●●●●●"/>
- <input type="text" class="jender_input" maxlength="1" placeholder="●"/>
<span>●●●●●●</span>
</div>
<%-- <div class="calendar_wrap">
<input type="hidden" value="" id="dBirth"/>
<select name="" id="year" class="selType1">
@ -544,7 +550,7 @@ $(document).ready(function(){
return v;
}
</script> -->
</div>
</div> --%>
<%-- <script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker2.js"></script> --%>
</td>
</tr>
@ -561,13 +567,13 @@ $(document).ready(function(){
<button type="button" class="btnType06" onclick="fncChkNo();">인증하기</button>
</td>
</tr>
<tr>
<!-- <tr>
<th scope=“row”>성별</th>
<td>
<input type="radio" id="sexM" name="sex" value="M"> <label class="" for="sexM">남성</label>
<input type="radio" id="sexF" name="sex" value="F"> <label class="" for="sexF">여성</label>
</td>
</tr>
</tr> -->
</tbody>
</table>

View File

@ -11,6 +11,10 @@
<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;
@ -19,6 +23,8 @@
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">
@ -26,6 +32,31 @@
$(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
});
});
@ -93,10 +124,9 @@ $(document).ready(function(){
}
function fncGoDetail(prcsAplctPrdOrd, eduAplctOrd){
function fncGoDetail(prcsAplctPrdOrd){
var viewForm = document.viewForm ;
viewForm.prcsAplctPrdOrd.value = prcsAplctPrdOrd ;
viewForm.eduAplctOrd.value = eduAplctOrd ;
viewForm.action = "<c:url value='/web/ve/aplct/sspnIdtmt/eduAplctDetail.do'/>";
viewForm.submit();
}
@ -124,6 +154,30 @@ $(document).ready(function(){
}
}
//서류 요청 양식 업로드 후 콜백
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){
@ -371,7 +425,6 @@ $(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>
@ -442,7 +495,7 @@ $(document).ready(function(){
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr>
<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 onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');" onkeypress="if(event.keyCode == 13){fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');}" style="cursor:pointer;" tabindex="0">
<c:choose>
<c:when test="${not empty list.title}">
<c:out value="${list.title}"/>
@ -506,13 +559,13 @@ $(document).ready(function(){
(취소-반려)
</c:if>
<c:if test="${list.aplctStateCd eq 10 }"> <!--교육 승인된 상태 (미이수)일 때만 취소버튼 노출 -->
<%-- <button type="button" title="신청취소" class="btnType02 btn small fill gray" 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 fill gray" 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>
@ -583,7 +636,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="btn small line red" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>', '<c:out value="${list.eduAplctOrd}"/>');">교육취소</button>
<button type="button" class="btn small line red" onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdOrd}"/>');">교육취소</button>
</c:if>
</td>
</tr>

View File

@ -22,6 +22,7 @@
.est_body .cont5.substance>div p{font-size:20px; font-weight:700; color:#222; margin:0 50px; line-height:1.5; text-align:justify; letter-spacing:1px; padding:0;}
.est_body .cont5 .date{font-size:18px; font-weight:700; color:#222; display:block; text-align:center; margin-bottom:10px;}
.est_body .cont5 .date+div span,.est_body .cont5 .date+div span:nth-child(1){font-size:32px;font-weight:700;text-align:center;}
.est_body .cont5 .big_stamp{font-size:22px;margin:0 0 0 -6px;}
.popup_cont .est_body::after {position: absolute;content: "";width: 100%;height: 100%;background: url(/ipedu/visitEdu/usr/publish/images/content/watermark.png) no-repeat center center;left: 0;top: 0;}

View File

@ -1,6 +1,7 @@
/* 공통 */
.dashboard .box_wrap{display: flex; flex-wrap: wrap; justify-content: space-between; padding: 40px; box-sizing: border-box;}
.dashboard .box{width: calc((100% - 60px)/3); height: 300px;border-radius: 5px; border:5px solid #EFF2F9; background-color: #fff; margin-bottom: 30px;}
.dashboard .box_title{width:100%;font-size:20px;font-weight:700;}
.dashboard .box_wrap{display: flex; flex-wrap: wrap; justify-content: flex-start; padding: 40px; box-sizing: border-box;gap:15px 30px;}
.dashboard .box{width: calc((100%/3) - 30px); height: 300px;border-radius: 5px; border:5px solid #EFF2F9; background-color: #fff; margin:0 0 20px 0;}
.dashboard .box_tit{display: flex; height: 60px; align-items: center; justify-content: space-between; padding: 0 25px; border-bottom: 1px solid #E6E8EB; box-sizing: border-box;}
.dashboard .box_tit p{font-size: 20px; font-weight: bold; letter-spacing: -0.5px; color: #333;}
.dashboard .box_tit .btn_plus{display:flex;font-size: 16px; font-weight: 300; color: #aaa; letter-spacing: -0.5px;align-items:center;gap:8px;}

View File

@ -1 +1 @@
System.register(["/ipedu/visitEdu/usr/datapicker/index-7f002a21.system.js"],(function(e,r){"use strict";var t,n,i,s,a,c;return{setters:[function(e){t=e.p;n=e.w;i=e.d;s=e.N;a=e.a;c=e.b}],execute:function(){var e=function(e){return"__sc_import_"+e.replace(/\s|-/g,"_")};var o=function(){{t.$cssShim$=n.__cssshim}var e=Array.from(i.querySelectorAll("script")).find((function(e){return new RegExp("/"+s+"(\\.esm)?\\.js($|\\?|#)").test(e.src)||e.getAttribute("data-stencil-namespace")===s}));var c=r.meta.url;var o={};if(c!==""){o.resourcesUrl=new URL(".",c).href}else{o.resourcesUrl=new URL(".",new URL(e.getAttribute("data-resources-url")||e.src,n.location.href)).href;{u(o.resourcesUrl,e)}if(!n.customElements){return r.import("./dom-9370655f.system.js").then((function(){return o}))}}return a(o)};var u=function(r,t){var a=e(s);try{n[a]=new Function("w","return import(w);//"+Math.random())}catch(e){var c=new Map;n[a]=function(e){var s=new URL(e,r).href;var o=c.get(s);if(!o){var u=i.createElement("script");u.type="module";u.crossOrigin=t.crossOrigin;u.src=URL.createObjectURL(new Blob(["import * as m from '"+s+"'; window."+a+".m = m;"],{type:"application/javascript"}));o=new Promise((function(e){u.onload=function(){e(n[a].m);u.remove()}}));c.set(s,o);i.head.appendChild(u)}return o}}};o().then((function(e){return c([["duet-date-picker.system",[[0,"duet-date-picker",{name:[1],identifier:[1],disabled:[516],role:[1],direction:[1],required:[4],value:[1537],min:[1],max:[1],firstDayOfWeek:[2,"first-day-of-week"],localization:[16],dateAdapter:[16],isDateDisabled:[16],activeFocus:[32],focusedDay:[32],open:[32],setFocus:[64],show:[64],hide:[64]},[[6,"click","handleDocumentClick"]]]]]],e)}))}}}));
System.register(["./index-7f002a21.system.js"],(function(e,r){"use strict";var t,n,i,s,a,c;return{setters:[function(e){t=e.p;n=e.w;i=e.d;s=e.N;a=e.a;c=e.b}],execute:function(){var e=function(e){return"__sc_import_"+e.replace(/\s|-/g,"_")};var o=function(){{t.$cssShim$=n.__cssshim}var e=Array.from(i.querySelectorAll("script")).find((function(e){return new RegExp("/"+s+"(\\.esm)?\\.js($|\\?|#)").test(e.src)||e.getAttribute("data-stencil-namespace")===s}));var c=r.meta.url;var o={};if(c!==""){o.resourcesUrl=new URL(".",c).href}else{o.resourcesUrl=new URL(".",new URL(e.getAttribute("data-resources-url")||e.src,n.location.href)).href;{u(o.resourcesUrl,e)}if(!n.customElements){return r.import("./dom-9370655f.system.js").then((function(){return o}))}}return a(o)};var u=function(r,t){var a=e(s);try{n[a]=new Function("w","return import(w);//"+Math.random())}catch(e){var c=new Map;n[a]=function(e){var s=new URL(e,r).href;var o=c.get(s);if(!o){var u=i.createElement("script");u.type="module";u.crossOrigin=t.crossOrigin;u.src=URL.createObjectURL(new Blob(["import * as m from '"+s+"'; window."+a+".m = m;"],{type:"application/javascript"}));o=new Promise((function(e){u.onload=function(){e(n[a].m);u.remove()}}));c.set(s,o);i.head.appendChild(u)}return o}}};o().then((function(e){return c([["duet-date-picker.system",[[0,"duet-date-picker",{name:[1],identifier:[1],disabled:[516],role:[1],direction:[1],required:[4],value:[1537],min:[1],max:[1],firstDayOfWeek:[2,"first-day-of-week"],localization:[16],dateAdapter:[16],isDateDisabled:[16],activeFocus:[32],focusedDay:[32],open:[32],setFocus:[64],show:[64],hide:[64]},[[6,"click","handleDocumentClick"]]]]]],e)}))}}}));

View File

@ -50,6 +50,9 @@
<ul class="dep01">
<li><a href="./list.html">리스트</a></li>
<li><a href="./list_view.html">리스트 상세</a></li>
<li><a href="./edu_status.html">교육현황</a></li>
<li><a href="./faq.html">자주받는 질문</a></li>
<li><a href="./inquiry_write.html">교육문의</a></li>
</ul>
<p class="menu_tit">남은내역</p>
<ul class="dep01">

View File

@ -33,6 +33,7 @@
--gray-bg-color:#f3f3f4;
--lightgray-bg-color:#f8f9fa;
}
html,body{min-width:320px;}
body {color: #222;}
@ -71,26 +72,28 @@ header nav.on{background:#fff;max-height:500px;}
header nav .inner{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;}
header nav .logo{display:flex;height:90px;align-items:center;}
header nav .logo img{margin:-20px 0 0 0;}
header nav .menu_area{display:flex;gap:100px;}
header nav .menu{display:flex;gap:60px;}
header nav .depth01{display:flex;height:90px;font-size:2.5rem;font-weight:600;color:#333;border-bottom:3px solid transparent;align-items:center;box-sizing:border-box;}
header nav .menu_area{display:flex;gap:28px;}
header nav .menu{display:flex;gap:16px;}
header nav .menu li{line-height:1.3;}
header nav .depth01{display:flex;height:90px;font-size:2.1rem;font-weight:600;color:#333;letter-spacing:-1px;padding:0 10px;border-bottom:3px solid transparent;align-items:center;box-sizing:border-box;text-align:center;justify-content:center;word-break:keep-all;}
header nav li:hover .depth01{border-bottom:3px solid var(--primary-color);color:var(--primary-color)}
.depth02_wrap{position:absolute;display:flex;width:100%;height:0;left:0;overflow:hidden;transition:height .5s;}
.on .depth02_wrap{height:220px;top:100%;margin:0 auto;}
.depth02_wrap::before{position:absolute;content:"";width:100vw;height:200px;background:#fff;border-top:1px solid #d8d8d8;border-bottom:1px solid #e8e8e8;box-shadow:0 5px 8px rgba(0,0,0,0.05);}
.depth02,.depth02_wrap .menu_title{position:relative;}
.depth02_wrap .menu_title{width:38vw;height:201px;background:#396ac4;box-sizing:border-box;}
.depth02_wrap .menu_title span{position:relative;display:block;font-size:2.7rem;font-weight:500;color:#fff;padding:0 0 0 17px;;margin:64px 0 0 18vw}
.depth02_wrap .menu_title span::before{position:absolute;content:"";width:5px;height:23px;background:#fff;left:0;}
.depth02_wrap .depth02{display:flex;padding:64px 0 0 70px;gap:30px;}
.depth02_wrap .depth02 a{position:relative;font-size:2.3rem;font-weight:400;color:#333;padding:0 0 0 20px;}
.depth02_wrap .menu_title{position:relative;width:38vw;height:201px;background:#396ac4;box-sizing:border-box;}
.depth02_wrap .menu_title span{position:relative;display:inline-block;width:calc(65% - 30px);font-size:2.7rem;font-weight:500;color:#fff;letter-spacing:-.5px;word-break:keep-all;padding:0 0 0 17px;margin:64px 0 0 0;left:65%;transform:translateX(-50%);}
.depth02_wrap .menu_title span::before{position:absolute;content:"";width:5px;height:23px;background:#fff;left:0;top:7px;}
.depth02_wrap .depth02{display:flex;padding:64px 70px 0 70px;gap:15px 30px;}
.depth02_wrap .depth02 a{position:relative;height:30px;font-size:2.3rem;font-weight:400;color:#333;padding:0 0 0 20px;}
.depth02_wrap .depth02 a::before{position:absolute;content:"";width:8px;height:8px;border-radius:100%;background:#dfdfdf;left:0;top:8px;}
nav .btn_wrap{align-items:center;}
nav .btn_sitemap,nav .btn_identify{width:40px;height:90px;padding:0 !important;}
nav .btn_sitemap,nav .btn_identify,nav .btn_logout{width:45px;height:90px;padding:0 !important;}
nav .btn_sitemap i{display:inline-block;width:100%;height:100%;background:url(/ipedu/visitEdu/usr/publish/images/common/icon_menu.png) no-repeat center center;}
nav .btn_identify i{display:inline-block;width:100%;height:100%;background:url(/ipedu/visitEdu/usr/publish/images/common/icon_identify_mobile.png) no-repeat center center;}
nav .btn_logout i{display:inline-block;width:100%;height:100%;background:url(/ipedu/visitEdu/usr/publish/images/common/icon_logout_mobile.png) no-repeat center center;}
.all_menu_wrap{position:fixed;width:100%;padding:45px 0 200px 0;background:#fff;left:0;top:-100%;opacity:0;transition:top .5s;z-index:15;}
.all_menu_wrap.on{top:0;opacity:1;box-shadow:0 3px 10px rgba(0,0,0,0.1);}
@ -126,13 +129,24 @@ footer address p{font-size:2.3rem;line-height:1.5;margin:0 0 8px 0;}
footer address span{font-size:2.3rem;font-weight:600;color:#c4c4c4;}
@media (max-width: 1480px) {
header nav .menu_area{gap:60px;}
.depth02_wrap .menu_title{width:45vw;}
.depth02_wrap .menu_title span{width:auto;left:50%;}
.depth02_wrap .depth02{width:55vw;height:110px;flex-wrap:wrap;}
.depth02_wrap .depth02 li{max-width:calc((100%/2) - 30px);}
}
@media (max-width: 1280px) {
header nav .logo{height:60px;}
header nav .logo h1,header nav .logo h1 img{height:100%;margin:0;}
header nav .menu_area{gap:30px;}
header nav .menu{gap:20px;}
header nav .depth01{font-size:2.2rem;padding:0 15px;}
header nav .menu{gap:4px;}
header nav .menu>li{width:calc(100% / 5);}
header nav .depth01{font-size:2rem;padding:0 8px;justify-content:center;}
.depth02_wrap .menu_title span{font-size:2.3rem;}
.depth02_wrap .menu_title span::before{top:4px;}
.depth02_wrap .depth02 a{font-size:2rem;}
}
@media (max-width: 1023px){
@ -144,8 +158,6 @@ footer address span{font-size:2.3rem;font-weight:600;color:#c4c4c4;}
header nav{height:110px;max-height:110px;}
header nav .inner{height:110px;align-items:center;}
header nav .logo{height:60px;}
header nav .logo img{height:100%;margin:0;}
header nav .menu{display:none;}
header nav .depth01{display:none;}
header nav .btn_area{display:flex;gap:32px;}
@ -194,9 +206,10 @@ footer address span{font-size:2.3rem;font-weight:600;color:#c4c4c4;}
header nav .logo h1{height:80%;}
header nav .logo img{height:100%;}
header nav .btn_area{gap:0;}
nav .btn_sitemap, nav .btn_identify{width:60px;height:60px;}
header nav .btn_area{gap:0;align-items:center;}
nav .btn_sitemap, nav .btn_identify, nav .btn_logout{width:60px;height:60px;}
header nav .btn_sitemap i, header nav .btn_identify i{background-size:50%;}
header nav .btn_logout i{background-size:55%;}
footer .area_top{padding:50px 30px;}
footer .area_top ul:not(.sns){gap:30px;}
@ -225,4 +238,192 @@ footer address span{font-size:2.3rem;font-weight:600;color:#c4c4c4;}
footer .area_bottom .inner{gap:35px;}
footer .area_top ul:not(.sns) a,footer address p, footer address span{font-size:2rem;}
footer .area_top .sns{padding:30px 10px;gap:0;}
}
}
/* 간격 */
.p0 {padding: 0px!important;}
.p5 {padding: 5px!important;}
.pt5 {padding-top: 5px!important;}
.pt10 {padding-top: 10px!important;}
.pt15 {padding-top: 15px!important;}
.pt20 {padding-top: 20px!important;}
.pt25 {padding-top: 25px!important;}
.pt30 {padding-top: 30px!important;}
.pt35 {padding-top: 35px!important;}
.pt40 {padding-top: 40px!important;}
.pt45 {padding-top: 45px!important;}
.pt50 {padding-top: 50px!important;}
.pr0 {padding-right: 0px!important;}
.pr20 {padding-right: 20px!important;}
.pb5 {padding-bottom: 5px!important;}
.pb10 {padding-bottom: 10px!important;}
.pb15 {padding-bottom: 15px!important;}
.pb20 {padding-bottom: 20px!important;}
.pb25 {padding-bottom: 25px!important;}
.pb30 {padding-bottom: 30px!important;}
.pb35 {padding-bottom: 35px!important;}
.pb40 {padding-bottom: 40px!important;}
.pb45 {padding-bottom: 45px!important;}
.pb50 {padding-bottom: 50px!important;}
.pl0 {padding-left: 0px!important;}
.pl15 {padding-left: 15px!important;}
.pl20 {padding-left: 20px!important;}
.m20 {margin: 20px!important;}
.mt-1 {margin-top: -1px!important;}
.mt0 {margin-top: 0px!important;}
.mt5 {margin-top: 5px!important;}
.mt10 {margin-top: 10px!important;}
.mt15 {margin-top: 15px!important;}
.mt20 {margin-top: 20px!important;}
.mt25 {margin-top: 25px!important;}
.mt30 {margin-top: 30px!important;}
.mt35 {margin-top: 35px!important;}
.mt40 {margin-top: 40px!important;}
.mt45 {margin-top: 45px!important;}
.mt50 {margin-top: 50px!important;}
.mt60 {margin-top: 60px!important;}
.mt70 {margin-top: 70px!important;}
.mt80 {margin-top: 80px!important;}
.mt90 {margin-top: 90px!important;}
.mt100 {margin-top: 100px!important;}
.mr0 {margin-right: 0px!important;}
.mr3 {margin-right: 3px!important;}
.mr5 {margin-right: 5px!important;}
.mr10 {margin-right: 10px!important;}
.mr15 {margin-right: 15px!important;}
.mr20 {margin-right: 20px!important;}
.mr25 {margin-right: 25px!important;}
.mr30 {margin-right: 30px!important;}
.mr35 {margin-right: 35px!important;}
.mr40 {margin-right: 40px!important;}
.mr45 {margin-right: 45px!important;}
.mr50 {margin-right: 50px!important;}
.mr60 {margin-right: 60px!important;}
.mr70 {margin-right: 70px!important;}
.mr80 {margin-right: 80px!important;}
.mr90 {margin-right: 90px!important;}
.mr100 {margin-right: 100px!important;}
.mb-4 {margin-bottom: -4px!important;}
.mb0 {margin-bottom: 0px!important;}
.mb1 {margin-bottom: 1px!important;}
.mb5 {margin-bottom: 5px!important;}
.mb10 {margin-bottom: 10px!important;}
.mb15 {margin-bottom: 15px!important;}
.mb18 {margin-bottom: 18px!important;}
.mb20 {margin-bottom: 20px!important;}
.mb25 {margin-bottom: 25px!important;}
.mb30 {margin-bottom: 30px!important;}
.mb35 {margin-bottom: 35px!important;}
.mb40 {margin-bottom: 40px!important;}
.mb45 {margin-bottom: 45px!important;}
.mb50 {margin-bottom: 50px!important;}
.mb60 {margin-bottom: 60px!important;}
.mb70 {margin-bottom: 70px!important;}
.mb80 {margin-bottom: 80px!important;}
.mb90 {margin-bottom: 90px!important;}
.mb100 {margin-bottom: 100px!important;}
.ml0 {margin-left: 0px!important;}
.ml5 {margin-left: 5px!important;}
.ml10 {margin-left: 10px!important;}
.ml15 {margin-left: 15px!important;}
.ml20 {margin-left: 20px!important;}
.ml25 {margin-left: 25px!important;}
.ml30 {margin-left: 30px!important;}
.ml35 {margin-left: 35px!important;}
.ml40 {margin-left: 40px!important;}
.ml45 {margin-left: 45px!important;}
.ml50 {margin-left: 50px!important;}
.ml60 {margin-left: 60px!important;}
.ml70 {margin-left: 70px!important;}
.ml80 {margin-left: 80px!important;}
.ml90 {margin-left: 90px!important;}
.ml100 {margin-left: 100px!important;}
/* 너비, 높이 */
.w100per {width: 100% !important;}
.w99per {width: 99%;}
.w95per {width: 95%;}
.w90per {width: 90%;}
.w85per {width: 85%;}
.w80per {width: 80%;}
.w75per {width: 75%;}
.w70per {width: 70%;}
.w65per {width: 65%;}
.w60per {width: 60%;}
.w50per {width: 50%;}
.w55per {width: 55%;}
.w45per {width: 45%;}
.w40per {width: 40%;}
.w35per {width: 35%;}
.w33per {width: 33.3333333%;}
.w30per {width: 30%;}
.w25per {width: 25%;}
.w20per {width: 20%;}
.w19per {width: 19%;}
.w18per {width: 18%;}
.w17per {width: 17%;}
.w16per {width: 16%;}
.w15per {width: 15%;}
.w14per {width: 14%;}
.w13per {width: 13%;}
.w12per {width: 12%;}
.w11per {width: 11%;}
.w10per {width: 10%;}
.w9per {width: 9%;}
.w8per {width: 8%;}
.w7per {width: 7%;}
.w6per {width: 6%;}
.w5per {width: 5%;}
.w4per {width: 4%;}
.w3per {width: 3%;}
.w2per {width: 2%;}
.w1per {width: 1%;}
.w5 {width: 5px;}
.w10 {width: 10px;}
.w15 {width: 15px;}
.w20 {width: 20px;}
.w25 {width: 25px;}
.w30 {width: 30px;}
.w35 {width: 35px;}
.w40 {width: 40px;}
.w45 {width: 45px;}
.w50 {width: 50px;}
.w55 {width: 55px;}
.w60 {width: 60px;}
.w70 {width: 70px;}
.w80 {width: 80px;}
.w90 {width: 90px;}
.w100 {width: 100px;}
.w110 {width: 110px;}
.w120 {width: 120px;}
.w130 {width: 130px;}
.w140 {width: 140px;}
.w150 {width: 150px;}
.w160 {width: 160px;}
.w170 {width: 170px;}
.w180 {width: 180px;}
.w190 {width: 190px;}
.w200 {width: 200px;}
.w250 {width: 250px;}
.w300 {width: 300px;}
.w325 {width: 325px;}
.w350 {width: 350px;}
.w400 {width: 400px;}
.w500 {width: 500px;}
.mw100 {min-width: 100px;}
.h100 {height: 100px;}
.h100per {height: 100%;}

View File

@ -4,16 +4,16 @@
/* sub layout */
.container {width: 100%; min-height: 650px; position: relative; display: inline-block; box-sizing: border-box; margin: 145px 0 0 0; }
.container .inner{max-width: 1440px; width: 100%; padding: 0 20px; margin: 60px auto 76px auto; box-sizing: border-box; justify-content: space-between;}
.container .inner{max-width: 1440px; width: 100%; padding: 0 20px; margin: 30px auto 76px auto; box-sizing: border-box; justify-content: space-between;}
.sub_visual{position:relative;width:100%;height:140px;background:url(/ipedu/visitEdu/usr/publish/images/main/sec01_bg.jpg) no-repeat center center;background-size:cover;text-align:center;}
.sub_visual .visual_text{position:absolute;width:100%;color:#374c78;top:54%;left:50%;transform:translate(-50%,-50%);}
.sub_visual strong{font-size:2.9rem;font-family:'Gmarket Sans TTF';font-weight:bold;padding:0 20px;}
.sub_visual strong{font-size:2.9rem;font-family:'Gmarket Sans TTF';font-weight:bold;line-height:1.1;padding:0 20px;}
.sub_visual p{font-size:1.9rem;font-weight:400;padding:4px 0 0 0;}
.lnb{display:inline-block;width:100%;max-width:280px;margin:0 47px 0 0;vertical-align:top;}
.lnb_title{height:120px;padding:40px 0 0 0;background:#1e4aa4 url(/ipedu/visitEdu/usr/publish/images/common/lnb_title_obj.png) no-repeat -10px 25px;font-size:2.5rem;color:#fff;text-align:center;border-radius:20px 20px 0 0;box-sizing:border-box;}
.lnb_nav{margin:-25px 0 0 0;padding:0 25px;border:1px solid #e5e5e5;border-radius:20px;background:#fff;}
.lnb{display:inline-block;width:100%;max-width:280px;margin:0 47px 0 0;vertical-align:top;background:#1e4aa4 url(/ipedu/visitEdu/usr/publish/images/common/lnb_title_obj.png) no-repeat -10px 25px;border-radius:20px 20px 25px 25px;}
.lnb_title{display:flex;height:95px;padding:0 20px;font-size:2.2rem;color:#fff;line-height:1.2;word-break:auto-phrase;text-align:center;box-sizing:border-box;align-items:center;justify-content:center;}
.lnb_nav{padding:0 25px;border:1px solid #e5e5e5;border-radius:20px;background:#fff;}
.lnb_nav ul>li{border-bottom:1px solid #e5e5e5;}
.lnb_nav ul>li:last-child{border:0;}
.lnb_nav .depth01{display:flex;height:70px;font-size:1.7rem;font-weight:500;color:#555;align-items:center;justify-content:space-between;}
@ -23,10 +23,10 @@
.lnb_nav .depth01:hover i,.lnb_nav .on .depth01 i{background:url(/ipedu/visitEdu/usr/publish/images/common/lnb_icon.png) no-repeat left bottom;}
.container .inner>.cont_wrap {display:inline-block;width:calc(100% - 336px);max-width:100%;}
.container .cont_tit{display:flex;padding:0 0 20px 0;margin:0 0 50px 0;justify-content:space-between;align-items:flex-end;border-bottom:2px solid #d7d7d7;}
.container .cont_tit{display:flex;padding:48px 0 20px 0;margin:0 0 50px 0;justify-content:space-between;align-items:flex-end;border-bottom:2px solid #d7d7d7;}
.container .cont_tit h2{font-size:2.9rem;font-weight:500;}
.container .cont_tit .path ul{display:flex;align-items:center;gap:8px;}
.container .cont_tit .path li{position:relative;padding:0 8px;font-size:1.5rem;font-weight:400;color:#898989;}
.container .cont_tit .path li{position:relative;padding:0 8px;font-size:1.5rem;font-weight:400;color:#898989;line-height:1.2;}
.container .cont_tit .path li:not(.home)::before{position:absolute;content:"";width:6px;height:12px;background:url(/ipedu/visitEdu/usr/publish/images/content/icon_path_obj.png) no-repeat center center;left:-6px;top:3px;}
.container .cont_tit .path .home i{display:inline-block;width:19px;height:17px;background:url(/ipedu/visitEdu/usr/publish/images/content/icon_home.png) no-repeat center center;}
@ -131,6 +131,12 @@ select.selType1 {height: 40px; border: 1px solid #d5d5d5; border-radius: 5px; pa
select.selType1.read-only{background: url(/ipedu/visitEdu/usr/publish/images/content/icon_select_gray.png) no-repeat calc(100% - 15px) center; color:#888; pointer-events:none;}
.tb_type02.tb_type02_write input[type="text"].input_time {width: 50px;}
.birth_wrap{display:flex;font-size:1.5rem;font-size:700;align-items:center;gap:8px;}
.birth_wrap .birth_input{width:21%;min-width:90px;}
.birth_wrap .jender_input{width:7%;min-width:32px;}
.birth_wrap .birth_input::placeholder,.birth_wrap .jender_input::placeholder{font-size:1rem;color:#b6b6b6;letter-spacing:2px;}
.birth_wrap span{font-size:1.1rem;font-weight:700;margin:0;letter-spacing:3px;color:#666;}
.select_wrap{display:flex;gap:16px;}
.select_wrap li{display:flex;align-items:center;gap:8px;}
.select_wrap label{font-size:1.8rem;color:#666;}
@ -974,10 +980,11 @@ duet-date-picker *:focus{outline: auto !important;}
.container .cont_tit{flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:40px;border:0;}
.container .cont_tit h2{order:2;font-size:6.8rem;}
.container .cont_tit .path li{font-size:4.8rem;}
.container .cont_tit .path ul{gap:20px;}
.container .cont_tit .path li{font-size:4.8rem;letter-spacing:-1.5px;}
.container .cont_tit .path li:not(.home){padding:0 20px;}
.container .cont_tit .path .home i{width:48px;height:44px;background:url(/ipedu/visitEdu/usr/publish/images/content/icon_home_mobile.png) no-repeat center center;}
.container .cont_tit .path li:not(.home)::before{width:20px;height:32px;background:url(/ipedu/visitEdu/usr/publish/images/content/icon_path_obj_mobile.png) no-repeat center center;top:10.5px}
.container .cont_tit .path li:not(.home)::before{width:20px;height:32px;background:url(/ipedu/visitEdu/usr/publish/images/content/icon_path_obj_mobile.png) no-repeat center center;top:50%;transform:translateY(-50%);}
/* icon */
.icon.file{width:34px;height:32px;background:url(/ipedu/visitEdu/usr/publish/images/content/icon_file_mobile.png) no-repeat center center;}
@ -1222,9 +1229,10 @@ duet-date-picker *:focus{outline: auto !important;}
.container .cont_tit{gap:20px;}
.container .cont_tit h2{font-size:3.4rem;}
.container .cont_tit .path ul{gap:10px;}
.container .cont_tit .path li{font-size:2.4rem;}
.container .cont_tit .path li:not(.home){padding:0 10px;}
.container .cont_tit .path li:not(.home)::before{top:4px;}
.container .cont_tit .path li:not(.home)::before{top:7px;left:-10px;transform:none;}
.container .cont_tit .path .home i{width:24px;height:22px;background-size:100% auto;}
.container .cont_tit .path li:not(.home)::before{width:10px;height:16px;background-size:100% auto;}
@ -1248,7 +1256,7 @@ duet-date-picker *:focus{outline: auto !important;}
.btn.small{height:35px;font-size:1.5rem;}
.btn.regular{height:40px;}
.btn.large{height:45px;padding:0 30px;}
.btn.large{height:45px;font-size:1.8rem;padding:0 30px;}
.list_top .search_area{flex-wrap:wrap;}
.list_top .search_area>*:not(button){width:100%;}
@ -1360,7 +1368,7 @@ duet-date-picker *:focus{outline: auto !important;}
/* sub latout */
.container {margin-top:60px;}
.container .inner {padding: 0 20px;}
.cont_wrap .cont_tit {padding-bottom: 10px; margin-bottom: 20px;}
.cont_wrap .cont_tit {padding:24px 0 10px 0; margin-bottom: 20px;}
.cont_wrap h2 {font-size: 26px; padding-top: 10px;}
.cont_wrap .tit_box {display: block; text-align: center; padding: 15px 20px;}
.cont_wrap .tit_box i {display: block; margin: 0 auto;}
@ -1392,7 +1400,7 @@ duet-date-picker *:focus{outline: auto !important;}
.list_top .calendar_wrap {width: calc(100%/2 - 13px);}
.list_top .btn_wrap input[type="text"].calendar {width: 100%; height: 36px;margin:0;box-sizing:border-box;}
.list_top button {width: 100%; height: 36px; margin-top: 10px;}
.list_top .btn_wrap button {height: 36px;margin-left:0;}
.list_top .btn_wrap button {height:36px;margin-left:0;font-size:1.7rem;}
.list_top.type2 .list_top_left {text-align: center; margin-bottom: 20px;}
.list_top.type2 .search_wrap {margin-top: 0;}
/* list_top 내용 많을 때 틀어지는 것 수정 */

View File

@ -0,0 +1,42 @@
.header_wrap{position:fixed;display:flex;width:100%;height:100px;font-size:1.6rem;font-weight:500;color:#6e6e6e;padding:0 60px;border-bottom:1px solid #e5e5e5;justify-content:space-between;align-items:center;box-sizing:border-box;left:0;top:0;background:#fff;z-index:9;}
.header_wrap .logo{height:60px;}
.header_wrap .logo img{width:auto;height:60px;}
.tabs{position:fixed;display:flex;width:300px;height:calc(100vh - 100px);color:#fff;padding:40px 20px;background:#2557B4;box-sizing:border-box;left:0;top:100px;flex-direction:column;gap:10px;}
.tab:not(.guide_list){width:100%;height:50px;font-size:2rem;color:#fff;text-align:left;padding:0 20px;border-radius:12px;box-sizing:border-box;transition:all 0.3s;}
.tab:not(.guide_list):hover,.tab.on:not(.guide_list){background:#1e4690;}
article{width:calc(100% - 300px);margin:100px 0 0 300px;padding:80px;box-sizing:border-box;}
h2{font-size:3.6rem;font-weight:bold;color:#222;}
b.title{position:Relative;display:block;font-size:2.0rem;font-weight:bold;color:#333;padding:0 0 0 15px;margin:60px 0 40px 0;}
b.title::before{position:absolute;content:"";width:5px;height:20px;background:#1e4690;left:0;top:1px;}
.cont{display:none;}
.cont.on{display:block;}
.list_wrap{display:flex;flex-wrap:wrap;}
.guide_list{display:flex;gap:40px;}
.guide_list.button{width:calc(100%/3);margin:0 0 20px 0;align-items:center;}
.guide_list.tab{gap:0;}
.guide_list.input{align-items:flex-start;flex-direction:column;gap:20px;}
.color_box{width:100px;height:100px;border-radius:12px;}
.color_code{font-size:1.8rem;color:#6e6e6e;margin:15px 0 0 0;text-align:center;}
.blue:not(.btn){background:var(--primary-color);}
.darkblue:not(.btn){background:var(--primary-color-dark);}
.mint:not(.btn){background:var(--secondary-color);}
.title1{background:#333;}
.body1{background:#555;}
.body2{background:#7c7c7c;}
.text_blue_color{background:#2e4677;}
.text_red_color{background:#dc1818;}
.c_858686{background:#858686;}
.c_e5e5e5{background:#e5e5e5;}
.c_eeeeee{background:#eeeeee;}
.c_f3f3f4{background:#f3f3f4;}
.c_f8f9fa{background:#f8f9fa;}
.guide_list.input .list_top{margin:0;}

View File

@ -32,7 +32,7 @@ form, fieldset {border: none; margin: 0; padding: 0; line-height: 1; }
.inner>form{display:inline-block;}
input[type="submit"] {-webkit-appearance: none; -moz-appearance: none; appearance: none;}
header, footer, article, section, aside, nav, main {display: block;}
textarea{color: #666;font-size: 20px;font-weight: 300; font-family: 'Noto Sans KR', sans-serif;; resize: none;}
textarea{color: #555555;font-size: 1.7rem;font-weight: 300; font-family: 'Noto Sans KR', sans-serif; resize: none;}
input[type="text"]:disabled,input[type="password"]:disabled{background-color: #f5f5f5;}

View File

@ -0,0 +1,134 @@
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>교육문의 > 고객지원 > 한국지식재산보호원 지식재산보호교육시스템</title>
<!-- css -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/reset.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/common.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/content.css">
<!-- script -->
<script src="/ipedu/visitEdu/usr/publish/script/jquery-3.5.0.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/common.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/content.js"></script>
<!-- 달력 -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.date.css">
<script src="/ipedu/visitEdu/usr/datapicker/duet.esm.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.system.js"></script>
</head>
<body>
<div data-include-path="/ipedu/visitEdu/usr/publish/layout/_header.html"></div>
<!-- content -->
<div class="container">
<div class="sub_visual">
<div class="visual_text">
<strong>상표권 교육조건부 기소유예</strong>
<p>지식재산보호교육시스템</p>
</div>
</div>
<div class="inner">
<div class="lnb">
<p class="lnb_title">기소유예교육</p>
<nav class="lnb_nav">
<ul>
<li>
<a href="#" class="depth01">교육안내<i></i></a>
</li>
<li>
<a href="#" class="depth01">교육신청<i></i></a>
</li>
</ul>
</nav>
</div>
<div class="cont_wrap">
<div class="cont_tit">
<h2>교육문의</h2>
<div class="path">
<ul>
<li class="home"><a href="#" title="메인으로 가기"><i></i></a></li>
<li><a href="#">기소유예교육</a></li>
<li>교육문의</li>
</ul>
</div>
</div>
<div class="info_box">
<i class="icon inquiry"></i>
<ul class="info">
<li>궁금한 점이 있으시면 문의 남겨주시기 바랍니다.</li>
<li>답변은 <span>‘메일’</span>이나 <span>‘마이페이지 > 나의 교육문의’</span>에서 확인하실 수 있습니다.</li>
</ul>
</div>
<div class="list_view">
<table>
<colgroup>
<col style="width:162px;">
<col style="width:auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">제목</th>
<td><input type="text" class="w100per" placeholder="제목을 입력해주세요."></td>
</tr>
<tr>
<th scope="row">이메일</th>
<td>
<div class="email_wrap">
<input type="text" class="email">@<input type="text" class="email">
<select name="" id="" class="selType1">
<option value="">직접입력</option>
<option value="">naver.com</option>
</select>
</div>
</td>
</tr>
<tr>
<th scope="row">문의내용</th>
<td>
<textarea name="" id="" class="textarea w100per">
올해 남은 교육은 몇개인가요?
2026년 첫번째 교육은 언제인가요?
</textarea>
</td>
</tr>
</tbody>
</table>
</div>
<div class="btn_wrap">
<div class="left">
<button type="button" class="btn fill gray large">취소</button>
</div>
<div class="center"></div>
<div class="right">
<button type="button" class="btn fill blue large">등록</button>
</div>
</div>
</div>
</div>
</div>
<!--// content -->
<div data-include-path="/ipedu/visitEdu/usr/publish/layout/_footer.html"></div>
</body>

View File

@ -0,0 +1,189 @@
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>교육현황 > 마이페이지 > 한국지식재산보호원 지식재산보호교육시스템</title>
<!-- css -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/reset.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/common.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/content.css">
<!-- script -->
<script src="/ipedu/visitEdu/usr/publish/script/jquery-3.5.0.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/common.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/content.js"></script>
<!-- 달력 -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.date.css">
<script src="/ipedu/visitEdu/usr/datapicker/duet.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.system.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.esm.js"></script>
</head>
<body>
<div data-include-path="/ipedu/visitEdu/usr/publish/layout/_header.html"></div>
<!-- content -->
<div class="container">
<div class="sub_visual">
<div class="visual_text">
<strong>마이페이지</strong>
<p>지식재산보호교육시스템</p>
</div>
</div>
<div class="inner">
<div class="lnb">
<p class="lnb_title">마이페이지</p>
<nav class="lnb_nav">
<ul>
<li>
<a href="#" class="depth01">교육현황<i></i></a>
</li>
<li>
<a href="#" class="depth01">나의 교육문의의<i></i></a>
</li>
</ul>
</nav>
</div>
<div class="cont_wrap">
<div class="cont_tit">
<h2>교육현황</h2>
</div>
<ul class="tab fill tab_03">
<li class="tab_li on">
<button type="button" class="tab_button">상표권 조건부 기소유예</button>
</li>
<li class="tab_li">
<button type="button" class="tab_button">부정경쟁행위 시정명령</button>
</li>
<li class="tab_li">
<button type="button" class="tab_button">상표권 침해·부정경쟁행위 예방</button>
</li>
</ul>
<div class="tab_content on">
<ul class="edu_progress">
<li>
<a href="#">
<i class="icon progress01"></i>
<p class="text">
<strong>신청중 교육</strong>
<span class="number"><b>12</b></span>
</p>
</a>
</li>
<li>
<a href="#">
<i class="icon progress02"></i>
<p class="text">
<strong>진행중 교육</strong>
<span class="number"><b>0</b></span>
</p>
</a>
</li>
<li>
<a href="#">
<i class="icon progress03"></i>
<p class="text">
<strong>완료된 교육</strong>
<span class="number"><b>0</b></span>
</p>
</a>
</li>
</ul>
<div class="table_title">
<h3>최근 교육 목록</h3>
<a href="./edu_status_list.html" class="btn text btn_more">더보기 <i class="icon arrow"></i></a>
</div>
<div class="list edu_status_list">
<table>
<colgroup>
<col style="width:auto;">
<col style="width:10%;">
<col style="width:16%;">
<col style="width:15%;">
<col style="width:15%;">
</colgroup>
<thead>
<tr>
<th scope="col">교육과정</th>
<th scope="col">교육일자</th>
<th scope="col">신청결과</th>
<th scope="col">만족도조사</th>
<th scope="col">수료증</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="#">[2025-57] 상표권 교육조건부 기소유예교육</a></td>
<td><p><span class="mobile">교육일자</span> 2025.08.21</p></td>
<td><p><span class="mobile">신청결과</span>신청완료</p></td>
<td><button type="button" class="btn fill small lightblue">강의만족도</button></td>
<td><button type="button" class="btn fill small lightblue">수료증 출력</button></td>
</tr>
<tr>
<td><a href="#">[2025-57] 상표권 교육조건부 기소유예교육</a></td>
<td><p><span class="mobile">교육일자</span>2025.08.21</p></td>
<td><p><span class="mobile">신청결과</span> 신청완료</p><button type="button" class="btn fill small lightgray">취소</button></td>
<td><button type="button" class="btn line small blue">만족도 보기</button></td>
<td><button type="button" class="btn fill small lightblue">수료증 출력</button></td>
</tr>
<tr>
<td><a href="#">[2025-57] 상표권 교육조건부 기소유예교육</a></td>
<td><p><span class="mobile">교육일자</span>2025.08.21</p></td>
<td><p><span class="mobile">신청결과</span> 신청완료</p><button type="button" class="btn fill small lightgray">취소</button></td>
<td><p><span class="mobile">만족도조사</span>-</p></td>
<td><p><span class="mobile">수료증</span>-</p></td>
</tr>
<tr>
<td><a href="#">[2025-57] 상표권 교육조건부 기소유예교육</a></td>
<td><p><span class="mobile">교육일자</span>2025.08.21</p></td>
<td><p><span class="mobile">신청결과</span> 신청완료</p><button type="button" class="btn fill small lightgray">취소</button></td>
<td><p><span class="mobile">만족도조사</span>-</p></td>
<td><p><span class="mobile">수료증</span>-</p></td>
</tr>
<tr>
<td><a href="#">[2025-57] 상표권 교육조건부 기소유예교육</a></td>
<td><p><span class="mobile">교육일자</span>2025.08.21</p></td>
<td><p><span class="mobile">신청결과</span> 신청완료</p><button type="button" class="btn fill small lightgray">취소</button></td>
<td><p><span class="mobile">만족도조사</span>-</p></td>
<td><p><span class="mobile">수료증</span>-</p></td>
</tr>
<tr>
<td><a href="#">[2025-57] 상표권 교육조건부 기소유예교육</a></td>
<td><p><span class="mobile">교육일자</span>2025.08.21</p></td>
<td><p><span class="mobile">신청결과</span> 신청완료</p><button type="button" class="btn fill small lightgray">취소</button></td>
<td><p><span class="mobile">만족도조사</span>-</p></td>
<td><p><span class="mobile">수료증</span>-</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<!--// content -->
<div data-include-path="/ipedu/visitEdu/usr/publish/layout/_footer.html"></div>
</body>

View File

@ -0,0 +1,171 @@
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>교육현황 > 마이페이지 > 한국지식재산보호원 지식재산보호교육시스템</title>
<!-- css -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/reset.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/common.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/content.css">
<!-- script -->
<script src="/ipedu/visitEdu/usr/publish/script/jquery-3.5.0.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/common.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/content.js"></script>
<!-- 달력 -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.date.css">
<script src="/ipedu/visitEdu/usr/datapicker/duet.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.system.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.esm.js"></script>
</head>
<body>
<div data-include-path="/ipedu/visitEdu/usr/publish/layout/_header.html"></div>
<!-- content -->
<div class="container">
<div class="sub_visual">
<div class="visual_text">
<strong>마이페이지</strong>
<p>지식재산보호교육시스템</p>
</div>
</div>
<div class="inner">
<div class="lnb">
<p class="lnb_title">마이페이지</p>
<nav class="lnb_nav">
<ul>
<li>
<a href="#" class="depth01">교육현황<i></i></a>
</li>
<li>
<a href="#" class="depth01">나의 교육문의의<i></i></a>
</li>
</ul>
</nav>
</div>
<div class="cont_wrap">
<div class="cont_tit">
<h2>교육현황</h2>
</div>
<ul class="tab fill tab_03">
<li class="tab_li on">
<button type="button" class="tab_button">상표권 조건부 기소유예</button>
</li>
<li class="tab_li">
<button type="button" class="tab_button">부정경쟁행위 시정명령</button>
</li>
<li class="tab_li">
<button type="button" class="tab_button">상표권 침해·부정경쟁행위 예방</button>
</li>
</ul>
<div class="tab_content on">
<div class="table_title">
<h3>최근 교육 목록</h3>
</div>
<div class="list_top right">
<div class="search_area">
<select class="selType1" title="신청상태 선택">
<option for="">전체</option>
<option for="">작성중</option>
<option for="">교육신청</option>
<option for="">교육확정</option>
<option for="">교육반려</option>
<option for="">신청취소</option>
</select>
<div class="calendar_wrap">
<duet-date-picker identifier="startDate" class="startDate"></duet-date-picker>
<!-- <input type="text" class="calendar startDate" title="시작일 선택" placeholder="시작일 선택"> -->
~
<duet-date-picker identifier="endDate" class="endDate"></duet-date-picker>
<!-- <input type="text" class="calendar endDate" title="종료일 선택" placeholder="종료일 선택"> -->
<script src="/ipedu/visitEdu/usr/publish/script/duetdatepicker.js"></script>
</div>
<button type="button" class="btnType01 btn_search" onclick="fncGoList();"><i></i></button>
</div>
</div>
<div class="list edu_status_list">
<table>
<colgroup>
<col style="width:auto;">
<col style="width:10%;">
<col style="width:16%;">
<col style="width:15%;">
<col style="width:15%;">
</colgroup>
<thead>
<tr>
<th scope="col">교육과정</th>
<th scope="col">교육일자</th>
<th scope="col">신청결과</th>
<th scope="col">만족도조사</th>
<th scope="col">수료증</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="#">[2025-57] 상표권 교육조건부 기소유예교육</a></td>
<td><p><span class="mobile">교육일자</span> 2025.08.21</p></td>
<td><p><span class="mobile">신청결과</span>신청완료</p></td>
<td><button type="button" class="btn fill small lightblue">강의만족도</button></td>
<td><button type="button" class="btn fill small lightblue">수료증 출력</button></td>
</tr>
<tr>
<td><a href="#">[2025-57] 상표권 교육조건부 기소유예교육</a></td>
<td><p><span class="mobile">교육일자</span>2025.08.21</p></td>
<td><p><span class="mobile">신청결과</span> 신청완료</p><button type="button" class="btn fill small lightgray">취소</button></td>
<td><button type="button" class="btn line small blue">만족도 보기</button></td>
<td><button type="button" class="btn fill small lightblue">수료증 출력</button></td>
</tr>
</tbody>
</table>
</div>
<div class="pagination">
<button type="button" class="btn_page_first" title="첫 페이지 이동"><i></i></button>
<button type="button" class="btn_page_prev" title="이전 페이지 이동"><i></i></button>
<button type="button" class="page_num on" title="1 페이지 이동">1</button>
<button type="button" class="page_num" title="2 페이지 이동">2</button>
<button type="button" class="page_num" title="3 페이지 이동">3</button>
<button type="button" class="page_num" title="4 페이지 이동">4</button>
<button type="button" class="page_num" title="5 페이지 이동">5</button>
<button type="button" class="page_num" title="6 페이지 이동">6</button>
<button type="button" class="page_num" title="7 페이지 이동">7</button>
<button type="button" class="page_num" title="8 페이지 이동">8</button>
<button type="button" class="page_num" title="9 페이지 이동">9</button>
<button type="button" class="page_num" title="10 페이지 이동">10</button>
<button type="button" class="btn_page_next" title="다음 페이지 이동"><i></i></button>
<button type="button" class="btn_page_last" title="마지막 페이지 이동"><i></i></button>
</div>
</div>
</div>
</div>
</div>
<!--// content -->
<div data-include-path="/ipedu/visitEdu/usr/publish/layout/_footer.html"></div>
</body>

View File

@ -0,0 +1,158 @@
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>자주 받는 질문 > 고객지원 > 한국지식재산보호원 지식재산보호교육시스템</title>
<!-- css -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/reset.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/common.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/content.css">
<!-- script -->
<script src="/ipedu/visitEdu/usr/publish/script/jquery-3.5.0.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/common.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/content.js"></script>
<!-- 달력 -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.date.css">
<script src="/ipedu/visitEdu/usr/datapicker/duet.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.system.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.esm.js"></script>
</head>
<body>
<div data-include-path="/ipedu/visitEdu/usr/publish/layout/_header.html"></div>
<!-- content -->
<div class="container">
<div class="sub_visual">
<div class="visual_text">
<strong>고객지원</strong>
<p>지식재산보호교육시스템</p>
</div>
</div>
<div class="inner">
<div class="lnb">
<p class="lnb_title">고객지원</p>
<nav class="lnb_nav">
<ul>
<li>
<a href="#" class="depth01">공지사항<i></i></a>
</li>
<li>
<a href="#" class="depth01">교육자료실<i></i></a>
</li>
<li>
<a href="#" class="depth01 active">자주 받는 질문<i></i></a>
</li>
<li>
<a href="#" class="depth01">교육문의<i></i></a>
</li>
</ul>
</nav>
</div>
<div class="cont_wrap">
<div class="cont_tit">
<h2>자주 받는 질문</h2>
</div>
<div class="info_box">
<i class="icon faq"></i>
<ul class="info">
<li>자주하는 질문들을 모았습니다. </li>
<li>원하시는 내용이 없는 경우 <span>‘교육문의’</span> 게시판을 이용해 주시기바랍니다. </li>
</ul>
</div>
<ul class="faq_list">
<li>
<button type="button" class="question">
<span>Q</span>
<p>국제특허정보박람회(PATINEX2025) 컨퍼런스는 매년 개최하나요?</p>
</button>
<div class="answer">
<span>A</span>
<p>특허청과 한국특허정보원에서 개최하는 PATINEX2025 컨퍼런스 등록이 시작되었습니다. <br>
여러분의 많은 관심과 신청부탁드립니다.<br>
<br>
ㅇ 행사명 : 제 21회 국제특허정보박람회<br>
ㅇ 주 제 : 지식재산정보, 더 나은 미래를 향한 새로운 물결<br>
ㅇ 기 간 : 2025년 9월 18일(목)~9월 19일(금)<br>
ㅇ 장 소 : 롯데호텔 월드 크리스탈볼룸, 3F
</p>
</div>
</li>
<li>
<button type="button" class="question">
<span>Q</span>
<p>국제특허정보박람회(PATINEX2025) 컨퍼런스는 매년 개최하나요?</p>
</button>
<div class="answer">
<span>A</span>
<p>특허청과 한국특허정보원에서 개최하는 PATINEX2025 컨퍼런스 등록이 시작되었습니다. <br>
여러분의 많은 관심과 신청부탁드립니다.<br>
<br>
ㅇ 행사명 : 제 21회 국제특허정보박람회<br>
ㅇ 주 제 : 지식재산정보, 더 나은 미래를 향한 새로운 물결<br>
ㅇ 기 간 : 2025년 9월 18일(목)~9월 19일(금)<br>
ㅇ 장 소 : 롯데호텔 월드 크리스탈볼룸, 3F
</p>
</div>
</li>
<li>
<button type="button" class="question">
<span>Q</span>
<p>국제특허정보박람회(PATINEX2025) 컨퍼런스는 매년 개최하나요?</p>
</button>
<div class="answer">
<span>A</span>
<p>특허청과 한국특허정보원에서 개최하는 PATINEX2025 컨퍼런스 등록이 시작되었습니다. <br>
여러분의 많은 관심과 신청부탁드립니다.<br>
<br>
ㅇ 행사명 : 제 21회 국제특허정보박람회<br>
ㅇ 주 제 : 지식재산정보, 더 나은 미래를 향한 새로운 물결<br>
ㅇ 기 간 : 2025년 9월 18일(목)~9월 19일(금)<br>
ㅇ 장 소 : 롯데호텔 월드 크리스탈볼룸, 3F
</p>
</div>
</li>
<li>
<button type="button" class="question">
<span>Q</span>
<p>국제특허정보박람회(PATINEX2025) 컨퍼런스는 매년 개최하나요?</p>
</button>
<div class="answer">
<span>A</span>
<p>특허청과 한국특허정보원에서 개최하는 PATINEX2025 컨퍼런스 등록이 시작되었습니다. <br>
여러분의 많은 관심과 신청부탁드립니다.<br>
<br>
ㅇ 행사명 : 제 21회 국제특허정보박람회<br>
ㅇ 주 제 : 지식재산정보, 더 나은 미래를 향한 새로운 물결<br>
ㅇ 기 간 : 2025년 9월 18일(목)~9월 19일(금)<br>
ㅇ 장 소 : 롯데호텔 월드 크리스탈볼룸, 3F
</p>
</div>
</li>
</ul>
</div>
</div>
</div>
<!--// content -->
<div data-include-path="/ipedu/visitEdu/usr/publish/layout/_footer.html"></div>
</body>

Binary file not shown.

After

Width:  |  Height:  |  Size: 776 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -13,6 +13,8 @@
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/main.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/swiper.min.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/content.css">
<!-- script -->
<script src="/ipedu/visitEdu/usr/publish/script/jquery-3.5.0.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/swiper.min.js"></script>

View File

@ -0,0 +1,122 @@
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>교육문의 > 고객지원 > 한국지식재산보호원 지식재산보호교육시스템</title>
<!-- css -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/reset.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/common.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/content.css">
<!-- script -->
<script src="/ipedu/visitEdu/usr/publish/script/jquery-3.5.0.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/common.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/content.js"></script>
<!-- 달력 -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.date.css">
<script src="/ipedu/visitEdu/usr/datapicker/duet.esm.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.system.js"></script>
</head>
<body>
<div data-include-path="/ipedu/visitEdu/usr/publish/layout/_header.html"></div>
<!-- content -->
<div class="container">
<div class="sub_visual">
<div class="visual_text">
<strong>상표권 교육조건부 기소유예</strong>
<p>지식재산보호교육시스템</p>
</div>
</div>
<div class="inner">
<div class="lnb">
<p class="lnb_title">기소유예교육</p>
<nav class="lnb_nav">
<ul>
<li>
<a href="#" class="depth01">교육안내<i></i></a>
</li>
<li>
<a href="#" class="depth01">교육신청<i></i></a>
</li>
</ul>
</nav>
</div>
<div class="cont_wrap">
<div class="cont_tit">
<h2>교육문의</h2>
</div>
<div class="info_box">
<i class="icon inquiry"></i>
<ul class="info">
<li>교육에 대해 궁금한 점이 있으시면 문의 남겨주시기 바랍니다.</li>
<li>답변은 <span>‘마이페이지 > 나의 교육문의’</span>에서 확인하실 수 있습니다.</li>
</ul>
</div>
<div class="list_view">
<table>
<colgroup>
<col style="width:162px;">
<col style="width:auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">강의구분</th>
<td>
<select name="" id="" class="selType1">
<option value="">선택</option>
<option value="">상표권 침해·부정경쟁행위 예방</option>
</select>
</td>
</tr>
<tr>
<th scope="row">문의내용</th>
<td>
<textarea name="" id="" class="textarea w100per">
올해 남은 교육은 몇개인가요?
2026년 첫번째 교육은 언제인가요?
</textarea>
</td>
</tr>
</tbody>
</table>
</div>
<div class="btn_wrap">
<div class="left">
</div>
<div class="center"></div>
<div class="right">
<button type="button" class="btn fill blue large">등록</button>
<button type="button" class="btn fill gray large">취소</button>
</div>
</div>
</div>
</div>
</div>
<!--// content -->
<div data-include-path="/ipedu/visitEdu/usr/publish/layout/_footer.html"></div>
</body>
</html>

View File

@ -74,7 +74,8 @@
</li>
</ul>
<div class="btn_wrap">
<button type="button" class="btn_identify mobile" title="전체메뉴 열기"><i></i></button>
<button type="button" class="btn_identify mobile" title="본인인증"><i></i></button>
<button type="button" class="btn_logout mobile" title="인증해제"><i></i></button>
<button type="button" class="btn_sitemap" title="전체메뉴 열기"><i></i></button>
</div>
</div>

View File

@ -57,18 +57,11 @@
<div class="cont_wrap">
<div class="cont_tit">
<h2>교육신청</h2>
<div class="path">
<ul>
<li class="home"><a href="#" title="메인으로 가기"><i></i></a></li>
<li><a href="#">기소유예교육</a></li>
<li>교육신청</li>
</ul>
</div>
</div>
<ul class="tab tab_02">
<li class="tab_li on con_li"><button type="button" class="tab_button" data-info="list" title="선택됨">리스트형</button></li>
<li class="tab_li cal_li"><button type="button" class="tab_button" data-info="cal">캘린더형</button></li>
</ul>
<ul class="tab line tab_02">
<li class="tab_li on con_li"><button type="button" class="tab_button" data-info="list" title="선택됨">리스트형</button></li>
<li class="tab_li cal_li"><button type="button" class="tab_button" data-info="cal">캘린더형</button></li>
</ul>
<div class="tab_content on">
<div class="list_top right">
@ -163,7 +156,7 @@
<div class="pagination">
<div class="pagination page">
<button type="button" class="btn_page_first" title="첫 페이지 이동"><i></i></button>
<button type="button" class="btn_page_prev" title="이전 페이지 이동"><i></i></button>
<button type="button" class="page_num on" title="1 페이지 이동">1</button>

View File

@ -0,0 +1,184 @@
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>공지사항 > 고객지원 > 한국지식재산보호원 지식재산보호교육시스템</title>
<!-- css -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/reset.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/common.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/content.css">
<!-- script -->
<script src="/ipedu/visitEdu/usr/publish/script/jquery-3.5.0.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/common.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/content.js"></script>
<!-- 달력 -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.date.css">
<script src="/ipedu/visitEdu/usr/datapicker/duet.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.system.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.esm.js"></script>
</head>
<body>
<div data-include-path="/ipedu/visitEdu/usr/publish/layout/_header.html"></div>
<!-- content -->
<div class="container">
<div class="sub_visual">
<div class="visual_text">
<strong>고객지원</strong>
<p>지식재산보호교육시스템</p>
</div>
</div>
<div class="inner">
<div class="lnb">
<p class="lnb_title">기소유예교육</p>
<nav class="lnb_nav">
<ul>
<li>
<a href="#" class="depth01">공지사항<i></i></a>
</li>
<li>
<a href="#" class="depth01">교육자료실<i></i></a>
</li>
<li>
<a href="#" class="depth01">자주 받는 질문<i></i></a>
</li>
<li>
<a href="#" class="depth01">교육문의<i></i></a>
</li>
</ul>
</nav>
</div>
<div class="cont_wrap">
<div class="cont_tit">
<h2>공지사항</h2>
<div class="path">
<ul>
<li class="home"><a href="#" title="메인으로 가기"><i></i></a></li>
<li><a href="#">고객지원</a></li>
<li>공지사항</li>
</ul>
</div>
</div>
<div class="list_top right">
<div class="search_area">
<select class="selType1" title="검색항목 선택">
<option for="">전체</option>
<option for="">작성중</option>
<option for="">교육신청</option>
<option for="">교육확정</option>
<option for="">교육반려</option>
<option for="">신청취소</option>
</select>
<input type="text">
<button type="button" class="btnType01 btn_search" onclick="fncGoList();"><i></i></button>
<button type="button" class="btnType02 btn_reset" onclick="fncReset(this);">초기화</button>
</div>
</div>
<div class="list">
<table>
<colgroup>
<col style="width: 70px;">
<col style="width: auto;">
<col style="width: 5%;">
<col style="width: 12%">
<col style="width: 12%;">
<col style="width: 8%;">
</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>
<tr>
<th scope="row">
<span class="notice">공지</span>
</th>
<td class="t_left">
<a href="#">[특허청/한국특허정보원] 제21회 국제특허정보박람회(PATINEX2025) 컨퍼런스 개최</a>
</td>
<td>
<p><span class="mobile">첨부</span><i class="icon file"></i></p>
</td>
<td>
<p><span class="mobile">작성일</span>2025.08.25</p>
</td>
<td>
<p><span class="mobile">작성자</span>관리자</p>
</td>
<td>
<p><span class="mobile">조회수</span>150</p>
</td>
</tr>
<tr>
<th scope="row">
<p class="num">9</p>
</th>
<td class="t_left">
<a href="#">2025년 베트남 공무원 초청 현지 진출기업 지식재산 보호 세미나</a>
</td>
<td>
<p><span class="mobile">첨부</span><i class="icon file"></i></p>
</td>
<td>
<p><span class="mobile">작성일</span>2025.08.25</p>
</td>
<td>
<p><span class="mobile">작성자</span>기소유예관리자</p>
</td>
<td>
<p><span class="mobile">조회수</span>150</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="pagination">
<button type="button" class="btn_page_first" title="첫 페이지 이동"><i></i></button>
<button type="button" class="btn_page_prev" title="이전 페이지 이동"><i></i></button>
<button type="button" class="page_num on" title="1 페이지 이동">1</button>
<button type="button" class="page_num" title="2 페이지 이동">2</button>
<button type="button" class="page_num" title="3 페이지 이동">3</button>
<button type="button" class="page_num" title="4 페이지 이동">4</button>
<button type="button" class="page_num" title="5 페이지 이동">5</button>
<button type="button" class="page_num" title="6 페이지 이동">6</button>
<button type="button" class="page_num" title="7 페이지 이동">7</button>
<button type="button" class="page_num" title="8 페이지 이동">8</button>
<button type="button" class="page_num" title="9 페이지 이동">9</button>
<button type="button" class="page_num" title="10 페이지 이동">10</button>
<button type="button" class="btn_page_next" title="다음 페이지 이동"><i></i></button>
<button type="button" class="btn_page_last" title="마지막 페이지 이동"><i></i></button>
</div>
</div>
</div>
</div>
<!--// content -->
<div data-include-path="/ipedu/visitEdu/usr/publish/layout/_footer.html"></div>
</body>

View File

@ -0,0 +1,121 @@
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>공지사항 > 고객지원 > 한국지식재산보호원 지식재산보호교육시스템</title>
<!-- css -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/reset.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/common.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/content.css">
<!-- script -->
<script src="/ipedu/visitEdu/usr/publish/script/jquery-3.5.0.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/common.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/content.js"></script>
<!-- 달력 -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.date.css">
<script src="/ipedu/visitEdu/usr/datapicker/duet.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.system.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.esm.js"></script>
</head>
<body>
<div data-include-path="/ipedu/visitEdu/usr/publish/layout/_header.html"></div>
<!-- content -->
<div class="container">
<div class="sub_visual">
<div class="visual_text">
<strong>고객지원</strong>
<p>지식재산보호교육시스템</p>
</div>
</div>
<div class="inner">
<div class="lnb">
<p class="lnb_title">기소유예교육</p>
<nav class="lnb_nav">
<ul>
<li>
<a href="#" class="depth01">공지사항<i></i></a>
</li>
<li>
<a href="#" class="depth01">교육자료실<i></i></a>
</li>
<li>
<a href="#" class="depth01">자주 받는 질문<i></i></a>
</li>
<li>
<a href="#" class="depth01">교육문의<i></i></a>
</li>
</ul>
</nav>
</div>
<div class="cont_wrap">
<div class="cont_tit">
<h2>공지사항</h2>
<div class="path">
<ul>
<li class="home"><a href="#" title="메인으로 가기"><i></i></a></li>
<li><a href="#">고객지원</a></li>
<li>공지사항</li>
</ul>
</div>
</div>
<div class="board_view">
<strong class="title">2025년 베트남 공무원 초청 현지 진출기업 지식재산 보호 세미나</strong>
<ul class="board_util">
<li>작성자 : 관리자</li>
<li>작성일 : 2025.08.21</li>
<li>조회수 : 580</li>
</ul>
<div class="board_view_content">
<p>
한국과 일본에 진출한 기업의 지재권 역량을 강화하고 협력 기반을 마련하기 위해 <br>
각국 진출 기업 관계자를 대상으로 지식재산권 교육과정을 운영합니다. <br>
<br>
ㅇ 교육 주제 : 일본진출 한국기업 지식재산권 교육과정<br>
ㅇ 교육 일시 : 2025년 9월 4일(목), 13:30~16:30<br>
ㅇ 교육 장소 : 일본 도쿄 JETRO 5A회의실 (대면강의+온라인 송출)<br>
ㅇ 신청 기간 : 2025년 8월 26일 까지<br>
<br>
많은 관심과 신청 부탁드립니다.
</p>
</div>
<ul class="file_wrap">
<li><a href="#" class="file" download="상표권 교육조건부 기소유예 교육"><i class="icon file"></i>상표권 교육조건부 기소유예 교육.hwp</a></li>
</ul>
</div>
<div class="btn_wrap">
<div class="left">
</div>
<div class="center"></div>
<div class="right">
<button type="button" class="btn fill gray large">목록</button>
</div>
</div>
</div>
</div>
</div>
<!--// content -->
<div data-include-path="/ipedu/visitEdu/usr/publish/layout/_footer.html"></div>
</body>

View File

@ -31,8 +31,15 @@ $(function(){
var titleText = "";
titleText += '<div class="path">';
titleText += '<ul><li class="home"><a href="#" title="메인으로 가기"><i></i></a></li>';
titleText += '<li><a href="#">'+menuTitle+'</a></li><li>';
titleText += contTitle+'</li></ul></div>'
if(contTitle !== "로그인"){
titleText += '<li><a href="#">'+menuTitle+'</a></li><li>';
titleText += contTitle+'</li></ul></div>'
}else{
titleText += '<li>'+contTitle+'</li></ul></div>'
}
$(".cont_tit").append(titleText);

View File

@ -449,103 +449,110 @@ var startDateNum = [];
setTimeout(function(){
for (var i = 2; i<duetdateleng; i++){
startDateNum[i] = document.querySelector(".startDate"+i);
startDateNum[i].dateAdapter = {
parse: function parse() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""
var createDate = arguments.length > 1 ? arguments[1] : undefined
var matches = value.match(DATE_FORMAT)
if (startDateNum[i]){
startDateNum[i].dateAdapter = {
parse: function parse() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""
var createDate = arguments.length > 1 ? arguments[1] : undefined
var matches = value.match(DATE_FORMAT)
if (matches) {
return createDate(matches[3], matches[2], matches[1])
if (matches) {
return createDate(matches[3], matches[2], matches[1])
}
},
format: function format(date) {
if (date.getMonth() < 9) {
if (date.getDate() < 10) {
return ""
.concat(date.getFullYear(), ".")
.concat('0', date.getMonth() + 1, ".")
.concat('0', date.getDate())
} else {
return ""
.concat(date.getFullYear(), ".")
.concat('0', date.getMonth() + 1, ".")
.concat(date.getDate())
}
} else {
if (date.getDate() < 10) {
return ""
.concat(date.getFullYear(), ".")
.concat(date.getMonth() + 1, ".")
.concat('0', date.getDate())
} else {
return ""
.concat(date.getFullYear(), ".")
.concat(date.getMonth() + 1, ".")
.concat(date.getDate())
}
}
},
}
},
format: function format(date) {
if (date.getMonth() < 9) {
if (date.getDate() < 10) {
return ""
.concat(date.getFullYear(), ".")
.concat('0', date.getMonth() + 1, ".")
.concat('0', date.getDate())
} else {
return ""
.concat(date.getFullYear(), ".")
.concat('0', date.getMonth() + 1, ".")
.concat(date.getDate())
}
} else {
if (date.getDate() < 10) {
return ""
.concat(date.getFullYear(), ".")
.concat(date.getMonth() + 1, ".")
.concat('0', date.getDate())
} else {
return ""
.concat(date.getFullYear(), ".")
.concat(date.getMonth() + 1, ".")
.concat(date.getDate())
}
}
},
}
// 달력 플러그인 실행
startDateNum[i].localization = {
placeholder: '시작날짜를 입력하세요',
selectedDateMessage: 'Selected date is',
prevMonthLabel: '이전 달 보기',
nextMonthLabel: '다음 달 보기',
monthSelectLabel: '달 선택',
yearSelectLabel: '년도 선택',
closeLabel: '달력 닫기',
dayNames: ['일', '월', '화', '수', '목', '금', '토'],
monthNames: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
monthNamesShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
identifier: "searchStartDt",
name: "searchStartDt"
}
// 달력 닫았을 때 input, input[type=hidden]에 value 값 넣어주기
startDateNum[i].addEventListener("duetClose", function (e) {
startDt = e.target;
startDtVal = e.target.value;
startSub = startDtVal.replace(/\-/g, '');
var inputName = $(this).attr("name");
$(".startDate").each(function(idx,itm){
$(this).find(".duet-date__input").attr("id", inputName+idx);
$(this).find(".duet-date__input").attr("name", inputName);
$(this).find(".duet-date__input").attr("value", startSub);
$(this).find(".duet-date__input").next().attr("name", inputName+i+"_submit");
$(this).find(".duet-date__input").next().attr("value", startSub);
// 달력 플러그인 실행
startDateNum[i].localization = {
placeholder: '시작날짜를 입력하세요',
selectedDateMessage: 'Selected date is',
prevMonthLabel: '이전 달 보기',
nextMonthLabel: '다음 달 보기',
monthSelectLabel: '달 선택',
yearSelectLabel: '년도 선택',
closeLabel: '달력 닫기',
dayNames: ['일', '월', '화', '수', '목', '금', '토'],
monthNames: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
monthNamesShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
identifier: "searchStartDt",
name: "searchStartDt"
}
// 달력 닫았을 때 input, input[type=hidden]에 value 값 넣어주기
startDateNum[i].addEventListener("duetClose", function (e) {
startDt = e.target;
startDtVal = e.target.value;
startSub = startDtVal.replace(/\-/g, '');
var inputName = $(this).attr("name");
$(".startDate").each(function(idx,itm){
$(this).find(".duet-date__input").attr("id", inputName+idx);
$(this).find(".duet-date__input").attr("name", inputName);
$(this).find(".duet-date__input").attr("value", startSub);
$(this).find(".duet-date__input").next().attr("name", inputName+i+"_submit");
$(this).find(".duet-date__input").next().attr("value", startSub);
});
});
});
//날짜 값 바꼈을 때 시작일, 종료일 찾아 alert 띄우기
startDateNum[i].addEventListener("duetChange", function (e) {
startDt = e.target;
startDtVal = e.target.value;
var n = i-1;
var endDtVal = $(".endDate"+n).find(".duet-date__input").val();
endDtVal = endDtVal.replace(/[.]/gi, '');
startDtVal = startDtVal.replace(/[.]/gi, '');
if(startDtVal > endDtVal && endDtVal != ""){
e.target.value = "";
alert("시작일이 종료일보다 클 수 없습니다.");
}else{}
});
setTimeout(function(){
//$("duet-date-picker .duet-date__input").attr("title","교육희망일을 YYYY.MM.DD 형식으로 입력해주세요11111");
$("duet-date-picker .duet-date__input").each(function(idx,itm){
idx+=1;
$(itm).attr("name","searchStartDt"+idx);
$(itm).attr("id","searchStartDt"+idx);
//날짜 값 바꼈을 때 시작일, 종료일 찾아 alert 띄우기
startDateNum[i].addEventListener("duetChange", function (e) {
startDt = e.target;
startDtVal = e.target.value;
var n = i-1;
var endDtVal = $(".endDate"+n).find(".duet-date__input").val();
endDtVal = endDtVal.replace(/[.]/gi, '');
startDtVal = startDtVal.replace(/[.]/gi, '');
if(startDtVal > endDtVal && endDtVal != ""){
e.target.value = "";
alert("시작일이 종료일보다 클 수 없습니다.");
}else{}
});
$("duet-date-picker .duet-date__input").attr('onkeydown','this.value=dateSetting(this.value);');
},100)
setTimeout(function(){
//$("duet-date-picker .duet-date__input").attr("title","교육희망일을 YYYY.MM.DD 형식으로 입력해주세요11111");
$("duet-date-picker .duet-date__input").each(function(idx,itm){
idx+=1;
$(itm).attr("name","searchStartDt"+idx);
$(itm).attr("id","searchStartDt"+idx);
});
$("duet-date-picker .duet-date__input").attr('onkeydown','this.value=dateSetting(this.value);');
},100)
startDateNum[i].addEventListener("duetFocus", function (e) {
calendarSetting();
});
startDateNum[i].addEventListener("duetFocus", function (e) {
calendarSetting();
});
}
}
},1000)
@ -554,103 +561,106 @@ var endDateNum = [];
setTimeout(function(){
for (var i = 2; i<duetdateleng; i++){
endDateNum[i] = document.querySelector(".endDate"+i);
endDateNum[i].dateAdapter = {
parse: function parse() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""
var createDate = arguments.length > 1 ? arguments[1] : undefined
var matches = value.match(DATE_FORMAT)
if (endDateNum[i]){
endDateNum[i].dateAdapter = {
parse: function parse() {
var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ""
var createDate = arguments.length > 1 ? arguments[1] : undefined
var matches = value.match(DATE_FORMAT)
if (matches) {
return createDate(matches[3], matches[2], matches[1])
if (matches) {
return createDate(matches[3], matches[2], matches[1])
}
},
format: function format(date) {
if (date.getMonth() < 9) {
if (date.getDate() < 10) {
return ""
.concat(date.getFullYear(), ".")
.concat('0', date.getMonth() + 1, ".")
.concat('0', date.getDate())
} else {
return ""
.concat(date.getFullYear(), ".")
.concat('0', date.getMonth() + 1, ".")
.concat(date.getDate())
}
} else {
if (date.getDate() < 10) {
return ""
.concat(date.getFullYear(), ".")
.concat(date.getMonth() + 1, ".")
.concat('0', date.getDate())
} else {
return ""
.concat(date.getFullYear(), ".")
.concat(date.getMonth() + 1, ".")
.concat(date.getDate())
}
}
},
}
},
format: function format(date) {
if (date.getMonth() < 9) {
if (date.getDate() < 10) {
return ""
.concat(date.getFullYear(), ".")
.concat('0', date.getMonth() + 1, ".")
.concat('0', date.getDate())
} else {
return ""
.concat(date.getFullYear(), ".")
.concat('0', date.getMonth() + 1, ".")
.concat(date.getDate())
}
} else {
if (date.getDate() < 10) {
return ""
.concat(date.getFullYear(), ".")
.concat(date.getMonth() + 1, ".")
.concat('0', date.getDate())
} else {
return ""
.concat(date.getFullYear(), ".")
.concat(date.getMonth() + 1, ".")
.concat(date.getDate())
}
// 달력 플러그인 실행
endDateNum[i].localization = {
placeholder: '종료날짜를 입력하세요',
selectedDateMessage: 'Selected date is',
prevMonthLabel: '이전 달 보기',
nextMonthLabel: '다음 달 보기',
monthSelectLabel: '달 선택',
yearSelectLabel: '년도 선택',
closeLabel: '달력 닫기',
dayNames: ['일', '월', '화', '수', '목', '금', '토'],
monthNames: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
monthNamesShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
identifier: "searchEndDt",
name: "searchEndDt"
}
},
// 달력 닫았을 때 input, input[type=hidden]에 value 값 넣어주기
endDateNum[i].addEventListener("duetClose", function (e) {
endDt = e.target;
endDtVal = e.target.value;
endSub = endDtVal.replace(/\-/g, '');
var inputName = $(this).attr("name");
$(".endDate").each(function(idx,itm){
$(this).find(".duet-date__input").attr("id", inputName+idx);
$(this).find(".duet-date__input").attr("name", inputName);
$(this).find(".duet-date__input").attr("value", endSub);
$(this).find(".duet-date__input").next().attr("name", inputName+i+"_submit");
$(this).find(".duet-date__input").next().attr("value", endSub);
});
});
//날짜 값 바꼈을 때 시작일, 종료일 찾아 alert 띄우기
endDateNum[i].addEventListener("duetChange", function (e) {
endDt = e.target;
endDtVal = e.target.value;
var n = i-1
var startDtVal = $(".startDate"+n).find(".duet-date__input").val();
startDtVal = startDtVal.replace(/[.]/gi, '');
endDtVal = endDtVal.replace(/[.]/gi, '');
//console.log("2",startDtVal,endDtVal);
if(endDtVal < startDtVal){
e.target.value = "";
alert("종료일이 시작일보다 작을 수 없습니다.");
}else{}
});
setTimeout(function(){
$("duet-date-picker .duet-date__input").each(function(idx,itm){
idx+=1;
$(itm).attr("name","searchEndDt"+idx);
$(itm).attr("id","searchEndDt"+idx);
});
$("duet-date-picker .duet-date__input").attr('onkeydown','this.value=dateSetting(this.value);');
},100)
endDateNum[i].addEventListener("duetFocus", function (e) {
calendarSetting();
});
}
// 달력 플러그인 실행
endDateNum[i].localization = {
placeholder: '종료날짜를 입력하세요',
selectedDateMessage: 'Selected date is',
prevMonthLabel: '이전 달 보기',
nextMonthLabel: '다음 달 보기',
monthSelectLabel: '달 선택',
yearSelectLabel: '년도 선택',
closeLabel: '달력 닫기',
dayNames: ['일', '월', '화', '수', '목', '금', '토'],
monthNames: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
monthNamesShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
identifier: "searchEndDt",
name: "searchEndDt"
}
// 달력 닫았을 때 input, input[type=hidden]에 value 값 넣어주기
endDateNum[i].addEventListener("duetClose", function (e) {
endDt = e.target;
endDtVal = e.target.value;
endSub = endDtVal.replace(/\-/g, '');
var inputName = $(this).attr("name");
$(".endDate").each(function(idx,itm){
$(this).find(".duet-date__input").attr("id", inputName+idx);
$(this).find(".duet-date__input").attr("name", inputName);
$(this).find(".duet-date__input").attr("value", endSub);
$(this).find(".duet-date__input").next().attr("name", inputName+i+"_submit");
$(this).find(".duet-date__input").next().attr("value", endSub);
});
});
//날짜 값 바꼈을 때 시작일, 종료일 찾아 alert 띄우기
endDateNum[i].addEventListener("duetChange", function (e) {
endDt = e.target;
endDtVal = e.target.value;
var n = i-1
var startDtVal = $(".startDate"+n).find(".duet-date__input").val();
startDtVal = startDtVal.replace(/[.]/gi, '');
endDtVal = endDtVal.replace(/[.]/gi, '');
//console.log("2",startDtVal,endDtVal);
if(endDtVal < startDtVal){
e.target.value = "";
alert("종료일이 시작일보다 작을 수 없습니다.");
}else{}
});
setTimeout(function(){
$("duet-date-picker .duet-date__input").each(function(idx,itm){
idx+=1;
$(itm).attr("name","searchEndDt"+idx);
$(itm).attr("id","searchEndDt"+idx);
});
$("duet-date-picker .duet-date__input").attr('onkeydown','this.value=dateSetting(this.value);');
},100)
endDateNum[i].addEventListener("duetFocus", function (e) {
calendarSetting();
});
}
},1000)

View File

@ -0,0 +1,535 @@
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- css -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/reset.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/common.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/css/content.css">
<!-- script -->
<script src="/ipedu/visitEdu/usr/publish/script/jquery-3.5.0.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/common.js"></script>
<script src="/ipedu/visitEdu/usr/publish/script/content.js"></script>
<!-- 달력 -->
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.css">
<link rel="stylesheet" href="/ipedu/visitEdu/usr/publish/datepicker/classic.date.css">
<script src="/ipedu/visitEdu/usr/datapicker/duet.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.system.js"></script>
<script src="/ipedu/visitEdu/usr/datapicker/duet.esm.js"></script>
<link rel="stylesheet" href="./css/guide.css">
<script>
$(function () {
$(".tabs>li .tab").click(function () {
var title = $(this).text();
$(".cont_title").text(title);
$(this).addClass("on");
$(this).closest("li").siblings().find(".tab").removeClass("on");
var tabIndex = $(this).closest("li").index();
tabIndex += 1;
$("#cont" + tabIndex).addClass("on").siblings().removeClass("on");
})
$(".tab_li.on .tab_button").attr("title", "선택됨");
// tab 클릭시
$('.tab_button').on('click', function () {
var tabNum = $(this).closest(".tab_li").index();
$(this).closest(".tab_li").addClass("on").siblings(".tab_li").removeClass("on");
$(this).attr("title", "선택됨");
$('.tab_content').eq(tabNum).addClass("on").siblings('.tab_content').removeClass('on');
$(this).closest(".tab_li").siblings(".tab_li").find(".tab_button").removeAttr("title");
});
})
</script>
</head>
<body>
<div class="header_wrap">
<h1 class="logo"><img src="./images/common/logo.png" alt=""></h1>
<p>최종 수정일 : 2025.09.25</p>
</div>
<section>
<ul class="tabs">
<li><button type="button" class="tab on">컬러</button></li>
<li><button type="button" class="tab">버튼</button></li>
<li><button type="button" class="tab"></button></li>
<li><button type="button" class="tab">테이블</button></li>
<li><button type="button" class="tab">Input</button></li>
</ul>
<article>
<h2 class="cont_title">컬러</h2>
<!-- 컬러 -->
<div class="cont" id="cont1">
<b class="title">Color</b>
<ul class="guide_list">
<li>
<div class="color_box blue"></div>
<p class="color_code">#396ac4</p>
</li>
<li>
<div class="color_box darkblue"></div>
<p class="color_code">#1e4aa4</p>
</li>
<li>
<div class="color_box mint"></div>
<p class="color_code">#01a3cc</p>
</li>
</ul>
<b class="title">Text Color</b>
<ul class="guide_list">
<li>
<div class="color_box title1"></div>
<p class="color_code">#333333</p>
</li>
<li>
<div class="color_box body1"></div>
<p class="color_code">#555555</p>
</li>
<li>
<div class="color_box body2"></div>
<p class="color_code">#7c7c7c</p>
</li>
<li>
<div class="color_box text_blue_color"></div>
<p class="color_code">#2e4677</p>
</li>
<li>
<div class="color_box text_red_color"></div>
<p class="color_code">#dc1818</p>
</li>
</ul>
<b class="title">Line Color</b>
<ul class="guide_list">
<li>
<div class="color_box c_858686"></div>
<p class="color_code">#858686</p>
</li>
<li>
<div class="color_box c_e5e5e5"></div>
<p class="color_code">#e5e5e5</p>
</li>
<li>
<div class="color_box c_eeeeee"></div>
<p class="color_code">#eeeeee</p>
</li>
</ul>
<b class="title">Background Color</b>
<ul class="guide_list">
<li>
<div class="color_box c_f3f3f4"></div>
<p class="color_code">#f3f3f4</p>
</li>
<li>
<div class="color_box c_f8f9fa"></div>
<p class="color_code">#f8f9fa</p>
</li>
</ul>
</div>
<!-- 버튼 -->
<div class="cont " id="cont2">
<b class="title">Button</b>
<div class="list_wrap">
<ul class="guide_list button">
<li>
<button type="button" class="btn small fill blue">버튼</button>
</li>
<li>
<button type="button" class="btn regular fill blue">버튼</button>
</li>
<li>
<button type="button" class="btn large fill blue">버튼</button>
</li>
</ul>
<ul class="guide_list button">
<li>
<button type="button" class="btn small line blue">버튼</button>
</li>
<li>
<button type="button" class="btn regular line blue">버튼</button>
</li>
<li>
<button type="button" class="btn large line blue">버튼</button>
</li>
</ul>
<ul class="guide_list button">
<li>
<button type="button" class="btn small fill lightblue">버튼</button>
</li>
<li>
<button type="button" class="btn regular fill lightblue">버튼</button>
</li>
<li>
<button type="button" class="btn large fill lightblue">버튼</button>
</li>
</ul>
<ul class="guide_list button">
<li>
<button type="button" class="btn small fill mint">버튼</button>
</li>
<li>
<button type="button" class="btn regular fill mint">버튼</button>
</li>
<li>
<button type="button" class="btn large fill mint">버튼</button>
</li>
</ul>
<ul class="guide_list button">
<li>
<button type="button" class="btn small line mint">버튼</button>
</li>
<li>
<button type="button" class="btn regular line mint">버튼</button>
</li>
<li>
<button type="button" class="btn large line mint">버튼</button>
</li>
</ul>
<ul class="guide_list button">
<li>
<button type="button" class="btn small fill lightmint">버튼</button>
</li>
<li>
<button type="button" class="btn regular fill lightmint">버튼</button>
</li>
<li>
<button type="button" class="btn large fill lightmint">버튼</button>
</li>
</ul>
<ul class="guide_list button">
<li>
<button type="button" class="btn small fill gray">버튼</button>
</li>
<li>
<button type="button" class="btn regular fill gray">버튼</button>
</li>
<li>
<button type="button" class="btn large fill gray">버튼</button>
</li>
</ul>
<ul class="guide_list button">
<li>
<button type="button" class="btn small line gray">버튼</button>
</li>
<li>
<button type="button" class="btn regular line gray">버튼</button>
</li>
<li>
<button type="button" class="btn large line gray">버튼</button>
</li>
</ul>
<ul class="guide_list button">
<li>
<button type="button" class="btn small fill lightgray">버튼</button>
</li>
<li>
<button type="button" class="btn regular fill lightgray">버튼</button>
</li>
<li>
<button type="button" class="btn large fill lightgray">버튼</button>
</li>
</ul>
<ul class="guide_list button">
<li>
<button type="button" class="btn small fill red">버튼</button>
</li>
<li>
<button type="button" class="btn regular fill red">버튼</button>
</li>
<li>
<button type="button" class="btn large fill red">버튼</button>
</li>
</ul>
<ul class="guide_list button">
<li>
<button type="button" class="btn small line red">버튼</button>
</li>
<li>
<button type="button" class="btn regular line red">버튼</button>
</li>
<li>
<button type="button" class="btn large line red">버튼</button>
</li>
</ul>
</div>
</div>
<!---->
<div class="cont" id="cont3">
<b class="title">Line tab</b>
<ul class="guide_list tab line">
<li class="tab_li on con_li"><button type="button" class="tab_button" data-info="list" title="선택됨">리스트형</button></li>
<li class="tab_li cal_li"><button type="button" class="tab_button" data-info="cal">캘린더형</button></li>
</ul>
<b class="title">Fill tab</b>
<ul class="guide_list tab fill tab_02">
<li class="tab_li on con_li"><button type="button" class="tab_button" data-info="list" title="선택됨">리스트형</button></li>
<li class="tab_li cal_li"><button type="button" class="tab_button" data-info="cal">캘린더형</button></li>
</ul>
</div>
<!-- 테이블 -->
<div class="cont" id="cont4">
<b class="title">리스트형</b>
<div class="list">
<table>
<colgroup>
<col style="width: 8%;">
<col style="width: auto;">
<col style="width: 18%;">
<col style="width: 10%">
<col style="width: 10%;">
<col style="width: 8%;">
<col style="width: 100px;">
</colgroup>
<thead>
<tr>
<th scope="col">교육구분</th>
<th scope="col">과정명</th>
<th scope="col">신청기간</th>
<th scope="col">교육일자</th>
<th scope="col">신청자/정원</th>
<th scope="col">상태</th>
<th scope="col">교육신청</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">
<p>비대면</p>
</th>
<td>
<a href="#">[2025-57] 상표권 교육조건부 기소유예 교육</a>
</td>
<td>
<p><span class="mobile">신청기간</span>2025.07.25~2025.07.31</p>
</td>
<td>
<p><span class="mobile">교육일자</span>2025.08.21</p>
</td>
<td>
<p><span class="mobile">신청자/정원</span>5/40</p>
</td>
<td>
<p><span class="mobile">상태</span>접수중</p>
</td>
<td><button type="button" class="btn blue fill regular">신청</button></td>
</tr>
<tr>
<th scope="row">
<p>비대면</p>
</th>
<td>
<a href="#">[2025-57] 상표권 교육조건부 기소유예 교육</a>
</td>
<td>
<p><span class="mobile">신청기간</span>2025.07.25~2025.07.31</p>
</td>
<td>
<p><span class="mobile">교육일자</span>2025.08.21</p>
</td>
<td>
<p><span class="mobile">신청자/정원</span>5/40</p>
</td>
<td>
<p><span class="mobile">상태</span>접수중</p>
</td>
<td><button type="button" class="btn gray fill regular disabled" disabled>마감</button></td>
</tr>
</tbody>
</table>
</div>
<b class="title">리스트 상세</b>
<div class="list_view">
<table>
<colgroup>
<col style="width:162px;">
<col style="width:auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">교육구분</th>
<td>비대면</td>
</tr>
<tr>
<th scope="row">과정</th>
<td>비대면 교육</td>
</tr>
<tr>
<th scope="row">과정명</th>
<td>[2025-57] 상표권 교육조건부 기소유예 교육</td>
</tr>
<tr>
<th scope="row">신청기간</th>
<td>2025.07.21~2025.07.25</td>
</tr>
<tr>
<th scope="row">교육장소</th>
<td>서울특별시 강남구 테헤란로131 (역삼동, 한국지식재산센터 6층)</td>
</tr>
<tr>
<th scope="row">교육일자</th>
<td>2025.08.02</td>
</tr>
<tr>
<th scope="row">상세교육과정</th>
<td>
한국과 일본에 진출한 기업의 지재권 역량을 강화하고 협력 기반을 마련하기 위해
각국 진출 기업 관계자를 대상으로 지식재산권 교육과정을 운영합니다.
ㅇ 교육 주제 : 일본진출 한국기업 지식재산권 교육과정
ㅇ 교육 일시 : 2025년 9월 4일(목), 13:30~16:30
ㅇ 교육 장소 : 일본 도쿄 JETRO 5A회의실 (대면강의+온라인 송출)
ㅇ 신청 기간 : 2025년 8월 26일 까지
많은 관심과 신청 부탁드립니다.
</td>
</tr>
<tr>
<th scope="row">정원</th>
<td>40</td>
</tr>
<tr>
<th scope="row">상태</th>
<td>접수중</td>
</tr>
<tr>
<th scope="row">첨부파일</th>
<td><a href="#" class="file" download="상표권 교육조건부 기소유예 교육"><i class="icon file"></i>상표권 교육조건부 기소유예 교육.hwp</a></td>
</tr>
</tbody>
</table>
</div>
</div>
<ul class="cont on" id="cont5">
<b class="title">Input</b>
<ul class="guide_list input">
<li><input type="text" placeholder="검색어 입력"></li>
<li><input type="text" placeholder="검색어 입력" readonly></li>
<li>
<div class="list_top">
<div class="search_area">
<select name="" id="" class="selType1">
<option value="">선택</option>
<option value="">선택</option>
</select>
<input type="text" placeholder="검색어 입력"><button type="button" class="btn fill mint btnType01">검색</button>
</div>
</div>
</li>
<li>
<div class="list_top">
<div class="search_area">
<select name="" id="" class="selType1 read-only">
<option value="">선택</option>
</select>
<input type="text" placeholder="검색어 입력" readonly><button type="button" class="btn fill mint btnType01 read-only">검색</button>
</div>
</div>
</li>
<li>
<div class="list_top right">
<div class="search_area">
<select class="selType1" title="신청상태 선택">
<option for="">전체</option>
<option for="">작성중</option>
<option for="">교육신청</option>
<option for="">교육확정</option>
<option for="">교육반려</option>
<option for="">신청취소</option>
</select>
<div class="calendar_wrap">
<duet-date-picker identifier="startDate" class="startDate"></duet-date-picker>
<!-- <input type="text" class="calendar startDate" title="시작일 선택" placeholder="시작일 선택"> -->
~
<duet-date-picker identifier="endDate" class="endDate"></duet-date-picker>
<!-- <input type="text" class="calendar endDate" title="종료일 선택" placeholder="종료일 선택"> -->
<script src="/ipedu/visitEdu/usr/publish/script/duetdatepicker.js"></script>
</div>
<button type="button" class="btnType01 btn_search"><i></i></button>
<button type="button" class="btnType02 btn_reset">초기화</button>
</div>
</div>
</li>
<li>
<div class="list_top right">
<div class="search_area">
<select class="selType1 read-only" title="신청상태 선택">
<option for="">전체</option>
<option for="">작성중</option>
<option for="">교육신청</option>
<option for="">교육확정</option>
<option for="">교육반려</option>
<option for="">신청취소</option>
</select>
<div class="calendar_wrap">
<duet-date-picker identifier="startDate" class="startDate" disabled></duet-date-picker>
<!-- <input type="text" class="calendar startDate" title="시작일 선택" placeholder="시작일 선택"> -->
~
<duet-date-picker identifier="endDate" class="endDate" disabled></duet-date-picker>
<!-- <input type="text" class="calendar endDate" title="종료일 선택" placeholder="종료일 선택"> -->
<script src="/ipedu/visitEdu/usr/publish/script/duetdatepicker.js"></script>
</div>
<button type="button" class="btnType01 btn_search read-only"><i></i></button>
<button type="button" class="btnType02 btn_reset read-only">초기화</button>
</div>
</div>
</li>
</ul>
<b class="title">Select</b>
<ul class="guide_list input">
<li>
<ul class="select_wrap">
<li><input type="radio" name="gender" id="f" checked><label for="f">여성</label></li>
<li><input type="radio" name="gender" id="m"><label for="m">남성</label></li>
<li><input type="radio" name="gender" id="m" checked><label for="m">기타</label><input type="text"></li>
</ul>
</li>
<li>
<ul class="select_wrap">
<li><input type="radio" name="gender1" id="f" class="read-only"><label for="f">여성</label></li>
<li><input type="radio" name="gender1" id="m" class="read-only" checked><label for="m">남성</label></li>
<li><input type="radio" name="gender1" id="m" class="read-only" checked><label for="m">기타</label><input type="text" readonly></li>
</ul>
</li>
</ul>
</div>
<div class="cont" id="cont6"></div>
<div class="cont" id="cont7"></div>
<div class="cont" id="cont8"></div>
</article>
</section>
</body>
</html>