2023-07-17 12:04 로그 관리 수정

This commit is contained in:
myname 2023-07-17 12:04:45 +09:00
parent e30afcd91b
commit 3a0222f969
16 changed files with 1542 additions and 35 deletions

View File

@ -67,6 +67,15 @@ public class EgovLoginLogServiceImpl extends EgovAbstractServiceImpl implements
String logId = egovLoginLogIdGnrService.getNextStringId(); String logId = egovLoginLogIdGnrService.getNextStringId();
loinLog.setLogId(logId); loinLog.setLogId(logId);
//method name 설정
//LETTNLOGINLOG_BAK 테이블을 위해서 추가됨
String[] s_arr = loinLog.getUrl().split("/");
loinLog.setMethodNm(s_arr[s_arr.length-2]+"/"+s_arr[s_arr.length-1]);
System.out.println("loinLog.getMethodNm()");
System.out.println(loinLog.getMethodNm());
//loginLogDAO.logInsertLoginLog(loinLog); //loginLogDAO.logInsertLoginLog(loinLog);
int i=loginLogDAO.logInsertWebLoginLogNewStep1(loinLog); //사용자 페이지의 로그만 남김(메뉴에 등록된 페이지만 남김) int i=loginLogDAO.logInsertWebLoginLogNewStep1(loinLog); //사용자 페이지의 로그만 남김(메뉴에 등록된 페이지만 남김)
@ -80,7 +89,17 @@ public class EgovLoginLogServiceImpl extends EgovAbstractServiceImpl implements
loinLog.setUrl(loinLog.getUrl().substring(0,399)); loinLog.setUrl(loinLog.getUrl().substring(0,399));
} }
if (i<=0) i=loginLogDAO.logInsertWebLoginLogNewStep2(loinLog); //사용자 페이지의 로그만 남김(메뉴에 등록된 페이지만 남김) if (i<=0) {
//LETTNADMINMETHOD 테이블에 추가하기
loginLogDAO.logInsertWebLoginLogNewStep3(loinLog);
//다시 남기기
i=loginLogDAO.logInsertWebLoginLogNewStep1(loinLog); //사용자 페이지의 로그만 남김(메뉴에 등록된 페이지만 남김)
//lettnloginlog 남기기
i=loginLogDAO.logInsertWebLoginLogNewStep2(loinLog); //사용자 페이지의 로그만 남김(메뉴에 등록된 페이지만 남김)
}
}catch(Exception ex) { }catch(Exception ex) {
ex.printStackTrace(); ex.printStackTrace();
} }

View File

@ -136,13 +136,18 @@ public class LoginLogDAO extends EgovAbstractDAO {
} }
public int logInsertWebLoginLogNewStep1(LoginLog loinLog) throws Exception{ public int logInsertWebLoginLogNewStep1(LoginLog loinLog) throws Exception{
return update("LoginLogDAO.logInsertWebLoginLogNewStep1", loinLog); update("LoginLogDAO.logInsertWebLoginLogNewStep1", loinLog);
return update("LoginLogDAO.logInsertWebLoginLogNewStep1_bak", loinLog);
} }
public int logInsertWebLoginLogNewStep2(LoginLog loinLog) throws Exception{ public int logInsertWebLoginLogNewStep2(LoginLog loinLog) throws Exception{
return update("LoginLogDAO.logInsertWebLoginLogNewStep2", loinLog); return update("LoginLogDAO.logInsertWebLoginLogNewStep2", loinLog);
} }
public int logInsertWebLoginLogNewStep3(LoginLog loinLog) throws Exception{
return update("LoginLogDAO.logInsertWebLoginLogNewStep3_bak", loinLog);
}
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public List<LoginLog> selectWebLogList(LoginLog loginLog) throws Exception{ public List<LoginLog> selectWebLogList(LoginLog loginLog) throws Exception{
return (List<LoginLog>)list("LoginLogDAO.selectWebLogList", loginLog); return (List<LoginLog>)list("LoginLogDAO.selectWebLogList", loginLog);

View File

@ -251,11 +251,16 @@ public class EgovLoginLogController {
* @throws Exception * @throws Exception
*/ */
@RequestMapping(value = "/sym/log/clg/SelectLogMethodList.do") @RequestMapping(value = "/sym/log/clg/SelectLogMethodList.do")
public String selectLogMethodList(@ModelAttribute("searchVO") LoginLog loginLog, @RequestParam Map<String, Object> commandMap ,ModelMap model) throws Exception { public String selectLogMethodList(
@ModelAttribute("searchVO") LoginLog loginLog,
if(loginLog.getPageUnit() != 10) { @RequestParam Map<String, Object> commandMap ,
ModelMap model
) throws Exception {
/*
if(loginLog.getPageUnit() != 100) {
loginLog.setPageUnit(loginLog.getPageUnit()); loginLog.setPageUnit(loginLog.getPageUnit());
} }
*/
PaginationInfo paginationInfo = new PaginationInfo(); PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(loginLog.getPageIndex()); paginationInfo.setCurrentPageNo(loginLog.getPageIndex());
paginationInfo.setRecordCountPerPage(loginLog.getPageUnit()); paginationInfo.setRecordCountPerPage(loginLog.getPageUnit());
@ -438,6 +443,8 @@ public class EgovLoginLogController {
Model model , HttpSession session , Model model , HttpSession session ,
RedirectAttributes redirectAttributes) throws Exception { RedirectAttributes redirectAttributes) throws Exception {
loginLog.setAdmotId(loginLog.getAdmotId().trim());
LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser(); LoginVO user = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();
loginLogService.updateLogMethod(loginLog); loginLogService.updateLogMethod(loginLog);
model.addAttribute("message", egovMessageSource.getMessage("success.common.update")); model.addAttribute("message", egovMessageSource.getMessage("success.common.update"));

View File

@ -98,6 +98,7 @@ public class SysLogDAO extends EgovAbstractDAO {
public int logInsertAdminSysLogNewStep1(SysLog sysLog) throws Exception{ public int logInsertAdminSysLogNewStep1(SysLog sysLog) throws Exception{
return update("SysLogDAO.logInsertAdminSysLogNewStep1", sysLog); return update("SysLogDAO.logInsertAdminSysLogNewStep1", sysLog);
//return update("SysLogDAO.logInsertAdminSysLogNewStep1_bak", sysLog);
} }

View File

@ -0,0 +1,222 @@
package kcc.ve.oprtn.cndtnSspnIdtmt.prcsInfoMng.web;
import java.util.List;
import javax.annotation.Resource;
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 egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
/**
* 기반강화연수(관리자)
* 기반강화연수에 관한 controller 클래스를 정의한다.
* @author 조용준
* @since 2023.07.12
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2021.12.16 조용준 최초 생성
*
* </pre>
*/
@Controller
//@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn")
public class CndtnPrcsInfoMngController {
private static final Logger LOGGER = LoggerFactory.getLogger(CndtnPrcsInfoMngController.class);
//로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
//과정 관리
@Resource(name = "vEPrcsService")
private VEPrcsService vEPrcsService;
//온라인콘텐츠과정 관리
@Resource(name = "vEPrcsOnlnCntntService")
private VEPrcsOnlnCntntService vEPrcsOnlnCntntService;
//교육과정순번
@Resource(name="prcsGnrService")
private EgovIdGnrService prcsGnrService;
//과정온라인콘텐츠순번
@Resource(name="prcsOnlnGnrService")
private EgovIdGnrService prcsOnlnGnrService;
/*
// 교육신청 서비스단
@Resource(name = "AdjReqMgrService")
private AdjReqMgrService adjReqMgrService;
// eGov 공통코드
@Resource(name = "EgovCmmUseService")
private EgovCmmUseService cmmUseService;
@Resource(name = "EgovFileMngService")
private EgovFileMngService fileService;
// global 프로퍼티
@Resource(name="globalSettings")
protected Properties propertiesService;
//첨부파일 경로, realPath 설정
@Resource(name="EgovFileMngUtil")
private EgovFileMngUtil fileUtil;
// 첨부파일 정보
@Resource(name="EgovFileMngService")
private EgovFileMngService fileMngService;
//암복호화 유틸
@Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil;
@Resource(name="KccadrMgrUdtService")
private KccadrMgrUdtService kccadrMgrUdtService;
// 교육신청 서비스단
@Resource(name = "checkAdrProcessUtil")
private CheckAdrProcessUtil checkAdrProcessUtil;
*/
/**
* 조건부기소유예 과정 관리 목록 화면
*/
@RequestMapping("/kccadr/oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngList.do")
public String cndtnEduPrcsMngList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//교육콘텐츠 조회
vEPrcsDetailVO.setLctrDivCd("40");
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
String selectCondition = "AND a.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
}
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getPrcsKind())){
String[] splited = vEPrcsDetailVO.getPrcsKind().split(",");
vEPrcsDetailVO.setSearchStatusArr(splited);
}
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsDiv())) {
vEPrcsDetailVO.setPrcsDiv("10");
}
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "oprtn/cndtnSspnIdtmt/cndtnEduPrcsMngList";
///kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngList.do
//cndtnSspnIdtmt/cndtnEduPrcsMngList
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// private function
//
//
//페이징을 위한 처리 step1 - 페이징 기본 정보 설정
private PaginationInfo setPagingStep1(
VEPrcsDetailVO p_vEPrcsDetailVO
)throws Exception{
// pageing step1
PaginationInfo paginationInfo = new PaginationInfo();
paginationInfo.setCurrentPageNo(p_vEPrcsDetailVO.getPageIndex());
paginationInfo.setRecordCountPerPage(p_vEPrcsDetailVO.getPageUnit());
paginationInfo.setPageSize(p_vEPrcsDetailVO.getPageSize());
return paginationInfo;
}
//페이징을 위한 처리 step2 - 게시물 리스트 수량 설정 검색 조건 초기화
private VEPrcsDetailVO setPagingStep2(
VEPrcsDetailVO p_vEPrcsDetailVO
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step2
p_vEPrcsDetailVO.setFirstIndex(p_paginationInfo.getFirstRecordIndex());
p_vEPrcsDetailVO.setLastIndex(p_paginationInfo.getLastRecordIndex());
p_vEPrcsDetailVO.setRecordCountPerPage(p_paginationInfo.getRecordCountPerPage());
if("".equals(p_vEPrcsDetailVO.getSearchSortCnd())){ //최초조회시 최신것 조회List
p_vEPrcsDetailVO.setSearchSortCnd("prcs_ord");
p_vEPrcsDetailVO.setSearchSortOrd("desc");
}
return p_vEPrcsDetailVO;
}
//페이징을 위한 처리 step3 - 전체 게시물 수량 설정하기
private PaginationInfo setPagingStep3(
List<VEPrcsDetailVO> p_vEPrcsDetailVOList
, PaginationInfo p_paginationInfo
)throws Exception{
// pageing step3
int totCnt = 0;
if(p_vEPrcsDetailVOList.size() > 0) totCnt = p_vEPrcsDetailVOList.get(0).getTotCnt();
p_paginationInfo.setTotalRecordCount(totCnt);
return p_paginationInfo;
}
}

View File

@ -0,0 +1,308 @@
package kcc.ve.oprtn.fndtnEnhanceTrn.prcsInfoMng.web;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import egovframework.rte.fdl.idgnr.EgovIdGnrService;
import egovframework.rte.ptl.mvc.tags.ui.pagination.PaginationInfo;
import kcc.com.cmm.LoginVO;
import kcc.com.cmm.util.StringUtil;
import kcc.com.utl.user.service.CheckLoginUtil;
import kcc.let.uat.uia.service.SsoLoginVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsCntntVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsOnlnCntntService;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsService;
/**
* 기반강화연수(관리자)
* 기반강화연수에 관한 controller 클래스를 정의한다.
* @author 조용준
* @since 2023.07.12
* @version 1.0
* @see
*
* <pre>
* << 개정이력(Modification Information) >>
*
* 수정일 수정자 수정내용
* ------- -------- ---------------------------
* 2021.12.16 조용준 최초 생성
*
* </pre>
*/
@Controller
//@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn")
public class FndthPrcsInfoMngController {
private static final Logger LOGGER = LoggerFactory.getLogger(FndthPrcsInfoMngController.class);
//로그인 체크 util
@Resource(name = "checkLoginUtil")
private CheckLoginUtil checkLoginUtil;
//과정 관리
@Resource(name = "vEPrcsService")
private VEPrcsService vEPrcsService;
//온라인콘텐츠과정 관리
@Resource(name = "vEPrcsOnlnCntntService")
private VEPrcsOnlnCntntService vEPrcsOnlnCntntService;
//교육과정순번
@Resource(name="prcsGnrService")
private EgovIdGnrService prcsGnrService;
//과정온라인콘텐츠순번
@Resource(name="prcsOnlnGnrService")
private EgovIdGnrService prcsOnlnGnrService;
/*
// 교육신청 서비스단
@Resource(name = "AdjReqMgrService")
private AdjReqMgrService adjReqMgrService;
// eGov 공통코드
@Resource(name = "EgovCmmUseService")
private EgovCmmUseService cmmUseService;
@Resource(name = "EgovFileMngService")
private EgovFileMngService fileService;
// global 프로퍼티
@Resource(name="globalSettings")
protected Properties propertiesService;
//첨부파일 경로, realPath 설정
@Resource(name="EgovFileMngUtil")
private EgovFileMngUtil fileUtil;
// 첨부파일 정보
@Resource(name="EgovFileMngService")
private EgovFileMngService fileMngService;
//암복호화 유틸
@Resource(name = "egovCryptoUtil")
EgovCryptoUtil egovCryptoUtil;
@Resource(name="KccadrMgrUdtService")
private KccadrMgrUdtService kccadrMgrUdtService;
// 교육신청 서비스단
@Resource(name = "checkAdrProcessUtil")
private CheckAdrProcessUtil checkAdrProcessUtil;
*/
/**
* 기반강화연수 과정 관리 목록 화면
*/
@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngList.do")
public String fndthEduPrcsMngList(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
//로그인 처리====================================
//1.pageing step1
PaginationInfo paginationInfo = this.setPagingStep1(vEPrcsDetailVO);
//임시로 페이징 처리를 안하기 위해서 RecordCountPerPage 수를 10000 으로 셋팅함
paginationInfo.setRecordCountPerPage(10000);
//2. pageing step2
vEPrcsDetailVO = this.setPagingStep2(vEPrcsDetailVO, paginationInfo);
//교육콘텐츠 조회
vEPrcsDetailVO.setLctrDivCd("40");
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
String selectCondition = "AND a.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
}
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getPrcsKind())){
String[] splited = vEPrcsDetailVO.getPrcsKind().split(",");
vEPrcsDetailVO.setSearchStatusArr(splited);
}
if(StringUtil.isEmpty(vEPrcsDetailVO.getPrcsDiv())) {
vEPrcsDetailVO.setPrcsDiv("10");
}
List<VEPrcsDetailVO> vEPrcsDetailVOList = vEPrcsService.selectPagingList(vEPrcsDetailVO);
//3.pageing step3
paginationInfo = this.setPagingStep3(vEPrcsDetailVOList, paginationInfo);
model.addAttribute("paginationInfo", paginationInfo);
//대상 리스트, 페이징 정보 전달
model.addAttribute("list", vEPrcsDetailVOList);
return "oprtn/fndthEnhanceTrn/fndthEduPrcsMngList";
///kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngList.do
}
/**
* 기반강화연수과정 등록 화면
*/
//@RequestMapping("eduPrcsMngReg.do")
@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngReg.do")
public String fndthEduPrcsMngReg(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
) throws Exception {
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) return s_oprtnLoginCheckNInfo;
//로그인 처리====================================
return "oprtn/fndthEnhanceTrn/fndthEduPrcsMngReg";
}
/**
* 기반강화연수과정 등록
*/
@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngRegAjax.do")
public ModelAndView fndthEduPrcsMngRegAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
//, RedirectAttributes redirectAttributes
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
String prcsOrd = prcsGnrService.getNextStringId(); // 고유ID
vEPrcsDetailVO.setPrcsOrd(prcsOrd);
vEPrcsDetailVO.setLctrDivCd("40");
vEPrcsDetailVO.setUseYn("Y");
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsService.insert(vEPrcsDetailVO);
//세부과정 생성하기
String[] s_detailPrcsNm = request.getParameterValues("detailPrcsNm");
for (int i=0;i<s_detailPrcsNm.length;i++) {
String prcsOnlnOrd = prcsOnlnGnrService.getNextStringId(); // 고유ID
VEPrcsCntntVO vEPrcsCntntVO = new VEPrcsCntntVO();
vEPrcsCntntVO.setPrcsOrd(prcsOrd);
vEPrcsCntntVO.setPrcsOnlnCntntOrd(prcsOnlnOrd);
// vEPrcsCntntVO.setPrcsNm(s_detailPrcsNm[i]);
vEPrcsCntntVO.setDetailPrcsNm(s_detailPrcsNm[i]);
vEPrcsCntntVO.setChasi(String.valueOf(i+1));
vEPrcsCntntVO.setUseYn("Y");
vEPrcsCntntVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsOnlnCntntService.insert(vEPrcsCntntVO);
}
modelAndView.addObject("result", "success");
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;
}
}

View File

@ -21,7 +21,7 @@
<!-- 로그인 로그 등록 --> <!-- 로그인 로그 등록 -->
<insert id="LoginLogDAO.logInsertLoginLog" parameterClass="loginLog"> <insert id="LoginLogDAO.logInsertLoginLog" parameterClass="loginLog">
/* LoginLogDAO.logInsertLoginLog */
INSERT INTO LETTNLOGINLOG INSERT INTO LETTNLOGINLOG
( LOG_ID ( LOG_ID
, CONECT_MTHD , CONECT_MTHD
@ -191,6 +191,7 @@
<!-- 관리자 로그 등록 --> <!-- 관리자 로그 등록 -->
<insert id="LoginLogDAO.logInsertAdminLoginLog" parameterClass="loginLog"> <insert id="LoginLogDAO.logInsertAdminLoginLog" parameterClass="loginLog">
/* 임시.*NOT_SQL_LOG.* */ /* 임시.*NOT_SQL_LOG.* */
/* LoginLogDAO.logInsertAdminLoginLog */
INSERT INTO LETTNLOGINLOG INSERT INTO LETTNLOGINLOG
( LOG_ID ( LOG_ID
, CONECT_MTHD , CONECT_MTHD
@ -311,7 +312,8 @@
A.APPRO_NM AS approNm, A.APPRO_NM AS approNm,
A.PARAM AS param, A.PARAM AS param,
A.CREAT_DT AS tempSortNum, A.CREAT_DT AS tempSortNum,
A.PRIVACY AS privacy A.PRIVACY AS privacy,
A.method_cd as dateType
FROM LETTNADMINMETHOD A FROM LETTNADMINMETHOD A
WHERE 1=1 WHERE 1=1
<isNotEmpty property="searchKeyword"> <isNotEmpty property="searchKeyword">
@ -346,7 +348,8 @@
A.MENU_NM AS menuNm, A.MENU_NM AS menuNm,
A.APPRO_NM AS approNm, A.APPRO_NM AS approNm,
A.PARAM AS param, A.PARAM AS param,
A.PRIVACY AS privacy A.PRIVACY AS privacy,
A.method_cd AS dateType
FROM LETTNADMINMETHOD A FROM LETTNADMINMETHOD A
WHERE 1=1 WHERE 1=1
<isNotEmpty property="admotId"> <isNotEmpty property="admotId">
@ -413,6 +416,7 @@
<!-- 사용자 접속 로그 등록(매뉴에 등록된 페이지만 )--> <!-- 사용자 접속 로그 등록(매뉴에 등록된 페이지만 )-->
<insert id="LoginLogDAO.logInsertWebLoginLog" parameterClass="loginLog"> <insert id="LoginLogDAO.logInsertWebLoginLog" parameterClass="loginLog">
/* 임시.*NOT_SQL_LOG.* */ /* 임시.*NOT_SQL_LOG.* */
/* LoginLogDAO.logInsertWebLoginLog */
INSERT INTO LETTNLOGINLOG INSERT INTO LETTNLOGINLOG
( LOG_ID ( LOG_ID
, CONECT_ID , CONECT_ID
@ -446,6 +450,7 @@
<update id="LoginLogDAO.logInsertWebLoginLogNewStep1" parameterClass="loginLog"> <update id="LoginLogDAO.logInsertWebLoginLogNewStep1" parameterClass="loginLog">
/* 임시.*NOT_SQL_LOG.* */ /* 임시.*NOT_SQL_LOG.* */
/* 2023-06-20일 저장확인을 위해 update 추가함*/ /* 2023-06-20일 저장확인을 위해 update 추가함*/
/* LoginLogDAO.logInsertWebLoginLogNewStep1 */
INSERT INTO LETTNLOGINLOG INSERT INTO LETTNLOGINLOG
( LOG_ID ( LOG_ID
, CONECT_ID , CONECT_ID
@ -479,6 +484,7 @@
<update id="LoginLogDAO.logInsertWebLoginLogNewStep2" parameterClass="loginLog"> <update id="LoginLogDAO.logInsertWebLoginLogNewStep2" parameterClass="loginLog">
/* 임시.*NOT_SQL_LOG.* */ /* 임시.*NOT_SQL_LOG.* */
/* 2023-06-20일 저장확인을 위해 update 추가함*/ /* 2023-06-20일 저장확인을 위해 update 추가함*/
/* LoginLogDAO.logInsertWebLoginLogNewStep2 */
INSERT INTO LETTNLOGINLOG INSERT INTO LETTNLOGINLOG
( LOG_ID ( LOG_ID
, CONECT_ID , CONECT_ID
@ -503,6 +509,92 @@
, NOW() , NOW()
</update> </update>
<!-- 사용자 접속 로그 등록(매뉴에 등록된 페이지만 )-->
<update id="LoginLogDAO.logInsertWebLoginLogNewStep1_bak" parameterClass="loginLog">
/* 임시.*NOT_SQL_LOG.* */
/* 2023-06-20일 저장확인을 위해 update 추가함*/
/* LoginLogDAO.logInsertWebLoginLogNewStep1_bak */
INSERT INTO LETTNLOGINLOG_BAK
( LOG_ID
, CONECT_ID
, CONECT_IP
, USER_AT
, DEVICE_TYPE /**인테넛,모바일 */
, PROGRM_FILE_NM
, MENU_NM
, URL
, CREAT_DT )
SELECT
#logId#
, #loginId#
, #loginIp#
, #userAt# /**A:관리자, U:홈페이지 */
, #deviceType#
, method_nm
, menu_nm
, #url#
, NOW()
FROM LETTNADMINMETHOD
WHERE METHOD_NM = #methodNm#
LIMIT 1
</update>
<!-- 사용자 접속 로그 등록(매뉴에 없는 페이지 등록용 )-->
<update id="LoginLogDAO.logInsertWebLoginLogNewStep2_bak" parameterClass="loginLog">
/* 임시.*NOT_SQL_LOG.* */
/* 2023-06-20일 저장확인을 위해 update 추가함*/
/* LoginLogDAO.logInsertWebLoginLogNewStep2 */
INSERT INTO LETTNLOGINLOG_BAK
( LOG_ID
, CONECT_ID
, CONECT_IP
, USER_AT
, DEVICE_TYPE /**인테넛,모바일 */
, PROGRM_FILE_NM
, MENU_NO
, MENU_NM
, URL
, CREAT_DT )
SELECT
#logId#
, #loginId#
, #loginIp#
, #userAt# /**A:관리자, U:홈페이지 */
, #deviceType#
, 'PROGRM_FILE_NM'
, '999999999'
, 'MENU_NM'
, #url#
, NOW()
</update>
<!-- 시스템 관리자 로그 등록(LETTNADMINMETHOD 테이블에 등록하기) -->
<update id="LoginLogDAO.logInsertWebLoginLogNewStep3_bak" parameterClass="loginLog">
/* LoginLogDAO.logInsertWebLoginLogNewStep3_bak */
INSERT INTO lettnadminmethod (
admot_id,
method_nm,
param,
creat_dt,
menu_nm,
appro_nm,
privacy,
method_cd /* A or U */
)
SELECT
MAX(REPLACE(admot_id,'ADMOTID_','')*1)+1
, #methodNm#
, 'N'
, NOW()
, #methodNm#
, #url#
, 'N'
, 'U'
FROM LETTNADMINMETHOD
</update>
<!-- 사용자 메뉴별 접속 리스트 --> <!-- 사용자 메뉴별 접속 리스트 -->
<select id="LoginLogDAO.selectWebLogList" parameterClass="loginLog" resultClass="loginLog"> <select id="LoginLogDAO.selectWebLogList" parameterClass="loginLog" resultClass="loginLog">
/* 임시.*NOT_SQL_LOG.* */ /* 임시.*NOT_SQL_LOG.* */

View File

@ -259,7 +259,8 @@
creat_dt, creat_dt,
menu_nm, menu_nm,
appro_nm, appro_nm,
privacy privacy,
method_cd /* A or U */
) )
SELECT SELECT
@ -270,7 +271,40 @@
, #trgetMenuNm# , #trgetMenuNm#
, #url# , #url#
, 'N' , 'N'
, 'A'
FROM LETTNADMINMETHOD FROM LETTNADMINMETHOD
</update> </update>
<!-- 시스템 관리자 로그 등록(LETTNADMINMETHOD 테이블에 등록된 것만 insert) 2023-07-11이후 -->
<update id="SysLogDAO.logInsertAdminSysLogNewStep1_bak" parameterClass="sysLog">
/* SysLogDAO.logInsertAdminSysLogNewStep1_bak */
INSERT INTO LETTNADMINLOG_BAK
( ADMINLOG_ID
, CONECT_ID
, CONECT_IP
, CREAT_DT
, PROGRM_FILE_NM
, MENU_NM
, APPRO_NM
, URL
)
SELECT #requstId# ,
#rqesterId# ,
#rqesterIp# ,
now(),
#methodNm#,
MENU_NM ,
APPRO_NM ,
#url#
FROM LETTNADMINMETHOD
WHERE METHOD_NM = #methodNm#
<isNotEmpty prepend="AND" property="param">
PARAM = #param#
</isNotEmpty>
<isEmpty prepend="AND" property="param">
PARAM = 'N'
</isEmpty>
LIMIT 1
</update>
</sqlMap> </sqlMap>

View File

@ -51,6 +51,8 @@
<pattern>*/oprtn/cpyrgExprnClsrm/*</pattern> <!-- 저작권 체험교실 화면 --> <pattern>*/oprtn/cpyrgExprnClsrm/*</pattern> <!-- 저작권 체험교실 화면 -->
<pattern>*/oprtn/otsdCprtnPrcs/*</pattern> <!-- 교육콘텐츠 화면 --> <pattern>*/oprtn/otsdCprtnPrcs/*</pattern> <!-- 교육콘텐츠 화면 -->
<pattern>*/oprtn/fndthEnhanceTrn/*</pattern> <!-- 기반강화연수 화면 -->
<pattern>*/oprtn/cndtnSspnIdtmt/*</pattern> <!-- 조건부기소유예 화면 -->
<pattern>*/oprtn/stts/sttsEduCnt.jsp </pattern> <!-- 체험교실, 콘텐츠 통계 화면 --> <pattern>*/oprtn/stts/sttsEduCnt.jsp </pattern> <!-- 체험교실, 콘텐츠 통계 화면 -->
<pattern>*/oprtn/stts/sttsEduContentCnt.jsp </pattern> <!-- 교육콘텐츠, 월별 교육과정 통계 화면 --> <pattern>*/oprtn/stts/sttsEduContentCnt.jsp </pattern> <!-- 교육콘텐츠, 월별 교육과정 통계 화면 -->

View File

@ -0,0 +1,288 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<un:useConstants var="KccadrStatus" className="kcc.kccadr.cmm.KccadrConstants" />
<%
/**
* @Class Name : cndtnEduPrcsMngList.jsp
* @Description : 조건부 기소유예 과정관리 목록
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.14 조용준 최초 생성
* @author 조용준
* @since 2021.12.14
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
input:read-only{
background-color: #ededed;
}
</style>
<script type="text/javascript">
function fncGoList(){
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.searchKeyword.value = $('#searchKeyword').val();
listForm.action = "<c:url value='/kccadr/oprtn/otsdCprtnPrcs/eduPrcsMngList.do'/>";
listForm.submit();
}
function fncGoDetail(prcsOrd){
var listForm = document.listForm ;
listForm.prcsOrd.value = prcsOrd ;
listForm.action = "<c:url value='/kccadr/oprtn/otsdCprtnPrcs/eduPrcsMngDetail.do'/>";
listForm.submit();
}
function fncCreate() {
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/otsdCprtnPrcs/eduPrcsMngReg.do'/>";
listForm.submit();
}
function fncDelete(prcsOrd){
document.listForm.prcsOrd.value = prcsOrd ;
var pageIndex = document.listForm.pageIndex.value;
if($(".listCount").length == '1'){
pageIndex = pageIndex -1;
}
var data = new FormData(document.getElementById("listForm"));
if(confirm("삭제하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/otsdCprtnPrcs/eduPrcsMngDeleteAjax.do'/>";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("삭제되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
linkPage(pageIndex);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
event.stopImmediatePropagation();
}
function fncSaveSort(prcsOrd, count){
var sortNo = $('#prcsSortNo'+count).val();
if(sortNo == ''){
alert("표시순서를 입력해 주세요.");
return false;
}
$('#prcsOrd').val(prcsOrd);
$('#prcsSortNo').val(sortNo);
var data = new FormData(document.getElementById("listForm"));
var url = "<c:url value='/kccadr/oprtn/otsdCprtnPrcs/eduPrcsSortUpdateAjax.do'/>";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
<title>교육과정관리</title>
</head>
<body>
<form:form id="listForm" name="listForm" method="post" commandName="vEPrcsDetailVO" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEPrcsDetailVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEPrcsDetailVO.searchSortOrd}" />" />
<input type="hidden" id="prcsOrd" name="prcsOrd" value="" />
<input type="hidden" id="prcsSortNo" name="prcsSortNo" value="" />
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>과정관리목록</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>조건부기소유예관리</p>
</li>
<li><span class="cur_nav">과정관리목록</span></li>
</ul>
</div>
<!-- //cont_tit -->
<div class="cont">
<div class="tb_tit01">
<p>교육 과정 관리</p>
</div>
<!-- list_top -->
<div class="list_top">
<div class="list_top_1">
<div class="util_left">
<p>이름</p>
</div>
<div class="util_right">
<kc:select codeId="VE0015" name="prcsDiv" id="prcsDiv" css="class='sel_type1'" selectedValue="${vEPrcsDetailVO.prcsDiv}"/>
<input type="checkbox" id="prcsKind01" name="prcsKind" value="01" <c:if test="${fn:contains(vEPrcsDetailVO.prcsKind, '01')}">checked="checked"</c:if>>
<label class="" for="prcsKind01">신규</label>
<input type="checkbox" id="prcsKind012" name="prcsKind" value="02" <c:if test="${fn:contains(vEPrcsDetailVO.prcsKind, '02')}">checked="checked"</c:if>>
<label class="" for="prcsKind012">갱신</label>
<input type="checkbox" id="prcsKind0123" name="prcsKind" value="03" <c:if test="${fn:contains(vEPrcsDetailVO.prcsKind, '03')}">checked="checked"</c:if>>
<label class="" for="prcsKind0123">의무</label>
<input type="text" id="searchKeyword" name="searchKeyword" placeholder="검색어를 입력하세요." title="검색어 입력" class="search_input" value="<c:out value='${vEPrcsDetailVO.searchKeyword}'/>">
<button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button>
</div>
</div>
</div>
<!-- //list_top -->
<!-- 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="${vEPrcsDetailVO.pageUnit == '10' or vEEduAplctVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEPrcsDetailVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEPrcsDetailVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEPrcsDetailVO.pageUnit == '100'}">selected</c:if>>100줄</option>
</select>
</div> --%>
</div>
<!-- //list_top -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 10%">
<col style="width: 10%">
<col style="width: auto">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th>구분</th>
<th>구분</th>
<th>과정명</th>
<th>표시순서</th>
<th>차시수</th>
<th>삭제</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr class="listCount">
<td onclick="fncGoDetail('<c:out value="${list.prcsOrd}"/>');" style="cursor:pointer;">
<kc:code codeId="VE0015" code="${list.prcsDiv}"/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsOrd}"/>');" style="cursor:pointer;">
<c:if test="${fn:contains(list.prcsKind, '01')}">신규</c:if>
<c:if test="${fn:contains(list.prcsKind, '02')}">갱신</c:if>
<c:if test="${fn:contains(list.prcsKind, '03')}">의무</c:if>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsOrd}"/>');" style="cursor:pointer;">
<c:out value='${list.prcsNm}'/>
</td>
<td>
<input type="text" id="prcsSortNo${status.count}" name="prcsSortNo${status.count}" value="<c:out value='${list.prcsSortNo}'/>" style="width:50px;" maxLength="3"/>
&nbsp; <button type="button" class="btn_type01" onclick="fncSaveSort('<c:out value="${list.prcsOrd}"/>', '<c:out value="${status.count}"/>'); return false;">저장</button>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsOrd}"/>');" style="cursor:pointer;">
<c:out value='${list.cnt}'/>
</td>
<td>
<button class="btnType02" onclick="fncDelete('<c:out value='${list.prcsOrd}'/>'); return false;" >삭제</button>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="4"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- page -->
<%-- <div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div> --%>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btn_type01" onclick="fncCreate(); return false;">등록</button>
</div>
</div>
<!-- //page -->
</div>
</div>
</div>
<!-- //cont -->
<!-- //cont -->
</form:form>
</body>
</html>

View File

@ -0,0 +1,288 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<un:useConstants var="KccadrStatus" className="kcc.kccadr.cmm.KccadrConstants" />
<%
/**
* @Class Name : fndthEduPrcsMngList.jsp
* @Description : 기반강화연수 과정관리 목록
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.14 조용준 최초 생성
* @author 조용준
* @since 2021.12.14
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style>
input:read-only{
background-color: #ededed;
}
</style>
<script type="text/javascript">
function fncGoList(){
linkPage(1);
}
function linkPage(pageNo){
var listForm = document.listForm ;
listForm.pageIndex.value = pageNo ;
listForm.searchKeyword.value = $('#searchKeyword').val();
listForm.action = "<c:url value='/kccadr/oprtn/otsdCprtnPrcs/eduPrcsMngList.do'/>";
listForm.submit();
}
function fncGoDetail(prcsOrd){
var listForm = document.listForm ;
listForm.prcsOrd.value = prcsOrd ;
listForm.action = "<c:url value='/kccadr/oprtn/otsdCprtnPrcs/eduPrcsMngDetail.do'/>";
listForm.submit();
}
function fncCreate() {
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngReg.do'/>";
listForm.submit();
}
function fncDelete(prcsOrd){
document.listForm.prcsOrd.value = prcsOrd ;
var pageIndex = document.listForm.pageIndex.value;
if($(".listCount").length == '1'){
pageIndex = pageIndex -1;
}
var data = new FormData(document.getElementById("listForm"));
if(confirm("삭제하시겠습니까?")){
var url = "<c:url value='/kccadr/oprtn/otsdCprtnPrcs/eduPrcsMngDeleteAjax.do'/>";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("삭제되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
linkPage(pageIndex);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
event.stopImmediatePropagation();
}
function fncSaveSort(prcsOrd, count){
var sortNo = $('#prcsSortNo'+count).val();
if(sortNo == ''){
alert("표시순서를 입력해 주세요.");
return false;
}
$('#prcsOrd').val(prcsOrd);
$('#prcsSortNo').val(sortNo);
var data = new FormData(document.getElementById("listForm"));
var url = "<c:url value='/kccadr/oprtn/otsdCprtnPrcs/eduPrcsSortUpdateAjax.do'/>";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
<title>교육과정관리</title>
</head>
<body>
<form:form id="listForm" name="listForm" method="post" commandName="vEPrcsDetailVO" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEPrcsDetailVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEPrcsDetailVO.searchSortOrd}" />" />
<input type="hidden" id="prcsOrd" name="prcsOrd" value="" />
<input type="hidden" id="prcsSortNo" name="prcsSortNo" value="" />
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>과정관리목록</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>기반강화연수관리</p>
</li>
<li><span class="cur_nav">과정관리목록</span></li>
</ul>
</div>
<!-- //cont_tit -->
<div class="cont">
<div class="tb_tit01">
<p>교육 과정 관리</p>
</div>
<!-- list_top -->
<div class="list_top">
<div class="list_top_1">
<div class="util_left">
<p>이름</p>
</div>
<div class="util_right">
<kc:select codeId="VE0015" name="prcsDiv" id="prcsDiv" css="class='sel_type1'" selectedValue="${vEPrcsDetailVO.prcsDiv}"/>
<input type="checkbox" id="prcsKind01" name="prcsKind" value="01" <c:if test="${fn:contains(vEPrcsDetailVO.prcsKind, '01')}">checked="checked"</c:if>>
<label class="" for="prcsKind01">신규</label>
<input type="checkbox" id="prcsKind012" name="prcsKind" value="02" <c:if test="${fn:contains(vEPrcsDetailVO.prcsKind, '02')}">checked="checked"</c:if>>
<label class="" for="prcsKind012">갱신</label>
<input type="checkbox" id="prcsKind0123" name="prcsKind" value="03" <c:if test="${fn:contains(vEPrcsDetailVO.prcsKind, '03')}">checked="checked"</c:if>>
<label class="" for="prcsKind0123">의무</label>
<input type="text" id="searchKeyword" name="searchKeyword" placeholder="검색어를 입력하세요." title="검색어 입력" class="search_input" value="<c:out value='${vEPrcsDetailVO.searchKeyword}'/>">
<button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button>
</div>
</div>
</div>
<!-- //list_top -->
<!-- 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="${vEPrcsDetailVO.pageUnit == '10' or vEEduAplctVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEPrcsDetailVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEPrcsDetailVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEPrcsDetailVO.pageUnit == '100'}">selected</c:if>>100줄</option>
</select>
</div> --%>
</div>
<!-- //list_top -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 10%">
<col style="width: 10%">
<col style="width: auto">
<col style="width: 10%">
<col style="width: 10%">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th>구분</th>
<th>구분</th>
<th>과정명</th>
<th>표시순서</th>
<th>차시수</th>
<th>삭제</th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr class="listCount">
<td onclick="fncGoDetail('<c:out value="${list.prcsOrd}"/>');" style="cursor:pointer;">
<kc:code codeId="VE0015" code="${list.prcsDiv}"/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsOrd}"/>');" style="cursor:pointer;">
<c:if test="${fn:contains(list.prcsKind, '01')}">신규</c:if>
<c:if test="${fn:contains(list.prcsKind, '02')}">갱신</c:if>
<c:if test="${fn:contains(list.prcsKind, '03')}">의무</c:if>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsOrd}"/>');" style="cursor:pointer;">
<c:out value='${list.prcsNm}'/>
</td>
<td>
<input type="text" id="prcsSortNo${status.count}" name="prcsSortNo${status.count}" value="<c:out value='${list.prcsSortNo}'/>" style="width:50px;" maxLength="3"/>
&nbsp; <button type="button" class="btn_type01" onclick="fncSaveSort('<c:out value="${list.prcsOrd}"/>', '<c:out value="${status.count}"/>'); return false;">저장</button>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsOrd}"/>');" style="cursor:pointer;">
<c:out value='${list.cnt}'/>
</td>
<td>
<button class="btnType02" onclick="fncDelete('<c:out value='${list.prcsOrd}'/>'); return false;" >삭제</button>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="4"><spring:message code="common.nodata.msg" /></td></tr>
</c:if>
</tbody>
</table>
</div>
<!-- //list -->
<!-- page -->
<%-- <div class="page">
<ui:pagination paginationInfo = "${paginationInfo}" type="image" jsFunction="linkPage" />
</div> --%>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btn_type01" onclick="fncCreate(); return false;">등록</button>
</div>
</div>
<!-- //page -->
</div>
</div>
</div>
<!-- //cont -->
<!-- //cont -->
</form:form>
</body>
</html>

View File

@ -0,0 +1,240 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%
/**
* @Class Name : fndthEduPrcsMngReg.jsp
* @Description : 기반강화연수 과정 등록
* @Modification Information
* @
* @ 수정일 수정자 수정내용
* @ ------- -------- ---------------------------
* @ 2021.12.16 조용준 최초 생성
* @author 조용주
* @since 2021.12.16
* @version 1.0
* @see
*
*/
%>
<html lang="ko">
<head>
<title>교육과정관리</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
//세부과정 추가 버튼 클릭 시 세부과정 추가
function addPro() {
var addQuest = $(".addPro_wrap");
var questLen = addQuest.children("div").length;
questLen = Number(questLen+1);
var trHtml="";
trHtml += '<div class="tbody_one">';
trHtml += '<span><span class="span_num3">'+ questLen +'</span>.</span>';
trHtml += '<div>';
trHtml += '<input type="text" name="detailPrcsNm" id="detailPrcsNm"> ';
trHtml += '<button type="button" class="table_del3" onclick="delPro(this)"><img src="${pageContext.request.contextPath}/visitEdu/adm/publish/image/content/btn_del.png"></button>';
trHtml += '</div>';
trHtml += '</div>';
addQuest.append(trHtml);
}
//삭제 버튼 클릭 시 현재 div 삭제 후 지문 숫자 재선언
function delPro(item) {
var bodyThis = $(item).closest('.tbody_one');
var tb = $(item).closest('.addPro_wrap').find('.tbody_one');
var len = $(item).closest('.addPro_wrap').children('.tbody_one').length;
var idx = bodyThis.index();
if(len == 1){
alert("세부과정은 최소1개가 존재해야합니다.");
return false;
}else{
bodyThis.remove();
for(var i=0;i<len;i++){
if(idx>i){
tb.eq(i).find('.span_num3').text(i+1);
}else{
tb.eq(i).find('.span_num3').text(i);
}
}
}
}
function fncAddUser(){
var obj = $(".memList:first").clone(true);
obj.children('input').val('')
/*
var len = $(".memList").length;
$.each(obj.find("input"), function(idx, objInput){
objInput.name = objInput.name.replace(/\[.*\]/,'['+(len+1)+']');
console.log(objInput.name);
if(objInput.name.indexOf("memGrade") < 0){
objInput.value = '';
}
});
obj.find("button").attr("id", obj.find("button").attr("id").replace(/[0-9]/gi, len+2));
obj.find("tr:last > td").text("");
*/
$(".memList:last").after(obj);
}
function fncDelUser(obj){
if($(".memList").length <= 1){
alert("담당자은 최소1개가 존재해야합니다.");
}else{
$(obj).closest("td").remove();
}
}
function fncSave(){
var data = new FormData(document.getElementById("createForm"));
if(confirm("저장하시겠습니까?")){
var url = "${pageContext.request.contextPath}/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngRegAjax.do";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장되었습니다.");
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
}
function fncGoList(){
var listForm = document.listForm ;
listForm.action = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngList.do'/>";
listForm.submit();
}
</script>
</head>
<body>
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO" method="post">
</form:form>
<form:form id="createForm" name="createForm" commandName="adjustDeptManageVO" method="post">
<!-- cont -->
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>교육 과정 등록</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>교육콘텐츠</p>
</li>
<li><span class="cur_nav">교육 과정 관리</span></li>
<li><span class="cur_nav">교육 과정 등록</span></li>
</ul>
</div>
<!-- //cont_tit -->
<div class="cont">
<!-- list_상세 -->
<div class="tb_tit01">
<p>교육과정관리</p>
</div>
<div class="tb_type02">
<table>
<colgroup>
<col style="width: 210px;">
<col style="width: auto;">
<col style="width: 210px;">
<col style="width: auto;">
</colgroup>
<tbody>
<tr>
<th scope="row">구분</th>
<td>
<ve:select codeId="VE0015" name="prcsDiv" id="prcsDiv" css="class='sel_type1'" selectedValue="<c:out value='${info.prcsDiv}'/>" defaultValue='10'/>
</td>
</tr>
<tr>
<th scope="row">종류</th>
<td>
<input type="checkbox" id="prcsKind01" name="prcsKind" value="01" <c:if test="${fn:contains(info.prcsKind, '01')}">checked="checked"</c:if>>
<label class="" for="prcsKind01">신규</label>
<input type="checkbox" id="prcsKind012" name="prcsKind" value="02" <c:if test="${fn:contains(info.prcsKind, '02')}">checked="checked"</c:if>>
<label class="" for="prcsKind012">갱신</label>
<input type="checkbox" id="prcsKind0123" name="prcsKind" value="03" <c:if test="${fn:contains(info.prcsKind, '03')}">checked="checked"</c:if>>
<label class="" for="prcsKind0123">의무</label>
</td>
</tr>
<tr>
<th scope="row">과정명</th>
<td>
<input type="text" placeholder="과정명을 입력해주세요." name="prcsNm" id="prcsNm" value="<c:out value='${info.prcsNm}'/>" style="width: 56%;">
<button type="button" class="btn_type06" onclick="addPro(); return false;">세부과정 추가</button>
</td>
</tr>
<tr>
<th scope="row">세부과정</th>
<td class="addPro_wrap">
<div class="tbody_one">
<span><span class="span_num3">1</span>.</span>
<div>
<input type="text" name="detailPrcsNm" id="detailPrcsNm" value="${info.detailPrcsNm}">
<button type="button" class="table_del3" onclick="delPro(this)"><img src="${pageContext.request.contextPath}/visitEdu/adm/publish/image/content/btn_del.png"></button>
</div>
</div>
</td>
</tr>
<tr>
<th scope="row">표시순서</th>
<td class="addPro_wrap">
<input type="text" name="prcsSortNo" id="prcsSortNo" value="${info.prcsSortNo}" style="width:50px;" maxLength="3">
</td>
</tr>
</tbody>
</table>
</div>
<!-- //list_상세 -->
<!-- btn_wrap -->
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btn_type02" onclick="fncSave(); return false;">저장</button>
<button type="button" class="btn_type03" onclick="fncGoList(); return false;">목록</button>
</div>
</div>
</div>
</div>
</div>
</form:form>
<!-- //cont -->
</body>
</html>

View File

@ -199,10 +199,10 @@ function fnCheckAll(){
<p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p> <p class="list_util_p">총 건수 : <span><c:out value="${paginationInfo.totalRecordCount}" /></span>건</p>
<div> <div>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px"> <select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px">
<option value='10' <c:if test="${searchVO.pageUnit == '10' or searchVO.pageUnit == ''}">selected</c:if>>10줄</option> <option value='10' <c:if test="${searchVO.pageUnit == '10'}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option> <option value='20' <c:if test="${searchVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${searchVO.pageUnit == '30'}">selected</c:if>>30줄</option> <option value='30' <c:if test="${searchVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${searchVO.pageUnit == '100'}">selected</c:if>>100줄</option> <option value='100' <c:if test="${searchVO.pageUnit == '100' or searchVO.pageUnit == ''}">selected</c:if>>100줄</option>
</select> </select>
<!-- <!--
@ -232,7 +232,7 @@ function fnCheckAll(){
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
<th><input type="checkbox" id="checkAll" onclick="javascript:fnCheckAll();"><label for="checkAll"></label></th> <!-- <th><input type="checkbox" id="checkAll" onclick="javascript:fnCheckAll();"><label for="checkAll"></label></th> -->
<th>번호 <input type="button" class="sortBtn sort" id="sort_tempSortNum"></th> <th>번호 <input type="button" class="sortBtn sort" id="sort_tempSortNum"></th>
<th>메뉴명 <input type="button" class="sortBtn sort" id="sort_menuNm"></th> <th>메뉴명 <input type="button" class="sortBtn sort" id="sort_menuNm"></th>
<th>메소드명 <input type="button" class="sortBtn sort" id="sort_methodNm"></th> <th>메소드명 <input type="button" class="sortBtn sort" id="sort_methodNm"></th>
@ -240,15 +240,18 @@ function fnCheckAll(){
<th>파라미터 <input type="button" class="sortBtn sort" id="sort_param"></th> <th>파라미터 <input type="button" class="sortBtn sort" id="sort_param"></th>
<th>개인정보여부 <input type="button" class="sortBtn sort" id="sort_privacy"></th> <th>개인정보여부 <input type="button" class="sortBtn sort" id="sort_privacy"></th>
<th>등록일자 <input type="button" class="sortBtn sort" id="sort_creatDt"></th> <th>등록일자 <input type="button" class="sortBtn sort" id="sort_creatDt"></th>
<th>사용자구분<input type="button" class="sortBtn sort" id="sort_method_cd"></th>
<th>관리</th> <th>관리</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<c:forEach var="result" items="${logMethodList}" varStatus="status"> <c:forEach var="result" items="${logMethodList}" varStatus="status">
<tr> <tr>
<!--
<td> <td>
<input name="del" id="del" type="checkbox" value="${result.admotId}" /> <input name="del" id="del" type="checkbox" value="${result.admotId}" />
</td> </td>
-->
<td> <td>
<c:if test="${searchVO.searchSortOrd eq 'desc' }"> <c:if test="${searchVO.searchSortOrd eq 'desc' }">
<c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/> <c:out value="${ ( paginationInfo.totalRecordCount - ((paginationInfo.currentPageNo -1)*paginationInfo.recordCountPerPage) ) - status.index }"/>
@ -263,6 +266,7 @@ function fnCheckAll(){
<td><c:out value="${result.param}"/></td> <td><c:out value="${result.param}"/></td>
<td><c:out value="${result.privacy}"/></td> <td><c:out value="${result.privacy}"/></td>
<td><c:out value="${result.creatDt}"/></td> <td><c:out value="${result.creatDt}"/></td>
<td><c:out value="${result.dateType}"/></td>
<td> <td>
<input type="button" value="수정" class="btnType1" onclick="fn_modify('${result.admotId}'); return false;"> <input type="button" value="수정" class="btnType1" onclick="fn_modify('${result.admotId}'); return false;">
</td> </td>
@ -282,6 +286,7 @@ function fnCheckAll(){
<!-- btn_wrap --> <!-- btn_wrap -->
<!-- btn_wrap --> <!-- btn_wrap -->
<!--
<div class="btn_wrap btn_layout01"> <div class="btn_wrap btn_layout01">
<div class="area_right"> <div class="area_right">
<button type="button" class="btnType02" onclick="fncDeleteGroupPolicy(); return false;">삭제</button> <button type="button" class="btnType02" onclick="fncDeleteGroupPolicy(); return false;">삭제</button>
@ -290,6 +295,7 @@ function fnCheckAll(){
<button type="button" class="btnType02" onclick="fncInsertLoginGroupPolicy(); return false;">등록</button> <button type="button" class="btnType02" onclick="fncInsertLoginGroupPolicy(); return false;">등록</button>
</div> </div>
</div> </div>
-->
<!-- //btn_wrap --> <!-- //btn_wrap -->
<!-- 페이지 네비게이션 시작 --> <!-- 페이지 네비게이션 시작 -->

View File

@ -268,11 +268,17 @@ function fn_delete() {
<br><span class="cfText c_ed4555">N / Y *개인정보 포함 여부를 표시합니다.</span> <br><span class="cfText c_ed4555">N / Y *개인정보 포함 여부를 표시합니다.</span>
</td> </td>
</tr> </tr>
<tr>
<th><span class="reqArea">사용자구분</span></th>
<td colspan="3">${loginLog.dateType}
<br><span class="cfText c_ed4555">U(사용자) / A(관리자)</span>
</td>
</tr>
<c:if test="${!empty loginLog.admotId }"> <c:if test="${!empty loginLog.admotId }">
<tr> <tr>
<th><span class="reqArea">등록일자</span></th> <th><span class="reqArea">등록일자</span></th>
<td colspan="3"> <td colspan="3">${loginLog.creatDt}
<input name="creatDt" value="${loginLog.creatDt}" title="creatDt" maxlength="100" readonly /> <%-- <input name="creatDt" value="${loginLog.creatDt}" title="creatDt" maxlength="100" readonly /> --%>
</td> </td>
</tr> </tr>
</c:if> </c:if>
@ -298,6 +304,7 @@ function fn_delete() {
<!-- btn_wrap --> <!-- btn_wrap -->
<!-- btn_wrap --> <!-- btn_wrap -->
<!--
<div class="btn_wrap btn_layout01"> <div class="btn_wrap btn_layout01">
<div class="area_right"> <div class="area_right">
<button type="button" class="btnType02" onclick="fncDeleteGroupPolicy(); return false;">삭제</button> <button type="button" class="btnType02" onclick="fncDeleteGroupPolicy(); return false;">삭제</button>
@ -306,6 +313,7 @@ function fn_delete() {
<button type="button" class="btnType02" onclick="fncInsertLoginGroupPolicy(); return false;">등록</button> <button type="button" class="btnType02" onclick="fncInsertLoginGroupPolicy(); return false;">등록</button>
</div> </div>
</div> </div>
-->
<!-- //btn_wrap --> <!-- //btn_wrap -->
<!-- 페이지 네비게이션 시작 --> <!-- 페이지 네비게이션 시작 -->

View File

@ -895,7 +895,7 @@ function set_bbs(){
<span id="BBSNameSpan" style="color: blue"></span> <span id="BBSNameSpan" style="color: blue"></span>
<span id="showUrl" style="display: none;" > <span id="showUrl" style="display: none;" >
<br> <br>
URL <input type="text" name="url" id="url"/> URL <input type="text" name="url" id="url" size="90"/>
<input type="hidden" id="url_tmp" name="url_tmp"/> <input type="hidden" id="url_tmp" name="url_tmp"/>
</span> </span>
</td> </td>

View File

@ -34,7 +34,7 @@
<!-- css --> <!-- css -->
<link rel="stylesheet" href="${pageContext.request.contextPath}/visitEdu/usr/publish/css/reset.css"> <link rel="stylesheet" href="${pageContext.request.contextPath}/visitEdu/usr/publish/css/reset.css">
<link rel="stylesheet" href="${pageContext.request.contextPath}/visitEdu/usr/publish/css/font.css"> <link rel="stylesheet" href="${pageContext.request.contextPath}/visitEdu/usr/publish/css/font.css">
<link rel="stylesheet" href="${pageContext.request.contextPath}/visitEdu/usr/datapicker/default.css"> <link rel="stylesheet" href="/offedu/visitEdu/usr/datapicker/default.css">
<link rel="stylesheet" href="${pageContext.request.contextPath}/visitEdu/usr/publish/css/common.css"> <link rel="stylesheet" href="${pageContext.request.contextPath}/visitEdu/usr/publish/css/common.css">
<link rel="stylesheet" href="${pageContext.request.contextPath}/visitEdu/usr/publish/css/content.css"> <link rel="stylesheet" href="${pageContext.request.contextPath}/visitEdu/usr/publish/css/content.css">
<link rel="stylesheet" href="${pageContext.request.contextPath}/visitEdu/usr/publish/css/popup.css"> <link rel="stylesheet" href="${pageContext.request.contextPath}/visitEdu/usr/publish/css/popup.css">
@ -60,25 +60,12 @@
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/jquery.bxslider.js"></script> <script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/jquery.bxslider.js"></script>
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/swiper.min.js"></script> <script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/swiper.min.js"></script>
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/main.js"></script> <script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/main.js"></script>
<script type="module" src="${pageContext.request.contextPath}/visitEdu/usr/datapicker/duet.esm.js"></script> <script type="module" src="/offedu/visitEdu/usr/datapicker/duet.esm.js"></script>
<script nomodule src="${pageContext.request.contextPath}/visitEdu/usr/datapicker/duet.js"></script> <script nomodule src="/offedu/visitEdu/usr/datapicker/duet.js"></script>
<script src="${pageContext.request.contextPath}/visitEdu/usr/datapicker/duet.system.js"></script> <script src="/offedu/visitEdu/usr/datapicker/duet.system.js"></script>
<!--
contextpath sessionStorage에 저장
20230705 이호영
-->
<script type="text/javascript" charset="utf-8">
sessionStorage.setItem("contextpath", "${pageContext.request.contextPath}");
</script>
<!-- 찾교 공통 종료--> <!-- 찾교 공통 종료-->
<!-- 찾교 기존 공통 시작--> <!-- 찾교 기존 공통 시작-->
<!-- <link rel="stylesheet" href="/kccadrPb/usr/css/reset.css"> <!-- <link rel="stylesheet" href="/kccadrPb/usr/css/reset.css">
<link rel="stylesheet" href="/kccadrPb/usr/css/font.css"> <link rel="stylesheet" href="/kccadrPb/usr/css/font.css">