q&a 사용자 화면

This commit is contained in:
hylee 2023-11-17 11:30:22 +09:00
parent 01c763a5d4
commit 2ac03528ce
16 changed files with 1871 additions and 1187 deletions

View File

@ -195,6 +195,7 @@ public class EgovBBSAttributeManageServiceImpl extends EgovAbstractServiceImpl i
List<EgovMap> result = attrbMngDAO.selectBBSIdList(searchVO); List<EgovMap> result = attrbMngDAO.selectBBSIdList(searchVO);
int cnt = attrbMngDAO.selectBBSIdListCnt(searchVO); int cnt = attrbMngDAO.selectBBSIdListCnt(searchVO);
System.out.println("22222222222222222222");
Map<String, Object> map = new HashMap<String, Object>(); Map<String, Object> map = new HashMap<String, Object>();
map.put("resultList", result); map.put("resultList", result);

View File

@ -640,6 +640,9 @@ public class EgovBBSAttributeManageController {
searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex()); searchVO.setFirstIndex(paginationInfo.getFirstRecordIndex());
searchVO.setLastIndex(paginationInfo.getLastRecordIndex()); searchVO.setLastIndex(paginationInfo.getLastRecordIndex());
searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage()); searchVO.setRecordCountPerPage(paginationInfo.getRecordCountPerPage());
System.out.println("===========");
/*OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY*/
Map<String, Object> map = bbsAttrbService.selectBBSIdList(searchVO); Map<String, Object> map = bbsAttrbService.selectBBSIdList(searchVO);
int totCnt = Integer.parseInt((String) map.get("resultCnt")); int totCnt = Integer.parseInt((String) map.get("resultCnt"));

View File

@ -1,7 +1,10 @@
package kcc.ve.aplct.fndtnEnhanceTrn.service; package kcc.ve.aplct.fndtnEnhanceTrn.service;
import java.util.List;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
public interface FndtnEnhanceTrnService { public interface FndtnEnhanceTrnService {
@ -9,5 +12,9 @@ public interface FndtnEnhanceTrnService {
VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO); VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO);
void insertVeEduQna(VEPrcsDetailVO vEPrcsDetailVO);
List<VEPrcsDetailVO> selectVeEduQna(VEPrcsDetailVO vEPrcsDetailVO);
} }

View File

@ -48,4 +48,15 @@ public class FndtnEnhanceTrnServiceImpl implements FndtnEnhanceTrnService {
public VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO) { public VEEduAplctVO findByAprvlCd(VEEduAplctVO vEEduAplctReqVO) {
return vEEduAplctDAO.findByAprvlCd(vEEduAplctReqVO); return vEEduAplctDAO.findByAprvlCd(vEEduAplctReqVO);
} }
@Override
public void insertVeEduQna(VEPrcsDetailVO vEPrcsDetailVO) {
vEEduAplctDAO.insertVeEduQna(vEPrcsDetailVO);
}
@Override
public List<VEPrcsDetailVO> selectVeEduQna(VEPrcsDetailVO vEPrcsDetailVO) {
return vEEduAplctDAO.selectVeEduQna(vEPrcsDetailVO);
}
} }

View File

@ -131,6 +131,10 @@ public class FndtnEnhanceTrnController {
@Resource(name="eduChasiGnrService") @Resource(name="eduChasiGnrService")
private EgovIdGnrService eduChasiGnrService; private EgovIdGnrService eduChasiGnrService;
//qna순번
@Resource(name="prcsAplctPrdQnaOrdGnrService")
private EgovIdGnrService prcsAplctPrdQnaOrdGnrService;
//교육신청온라인 //교육신청온라인
@Resource(name = "vEEduAplctOnlnService") @Resource(name = "vEEduAplctOnlnService")
private VEEduAplctOnlnService vEEduAplctOnlnService; private VEEduAplctOnlnService vEEduAplctOnlnService;
@ -219,6 +223,12 @@ public class FndtnEnhanceTrnController {
model.addAttribute("list", vEPrcsDetailVOList); model.addAttribute("list", vEPrcsDetailVOList);
model.addAttribute("countMap", countMap); model.addAttribute("countMap", countMap);
// Q&A 영역
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
List<VEPrcsDetailVO> vEPrcsDetailQnaVOList = fndtnEnhanceTrnService.selectVeEduQna(vEPrcsDetailVO);
model.addAttribute("qnaList", vEPrcsDetailQnaVOList);
//3.pageing step3 //3.pageing step3
return "/web/ve/aplct/fndtnEnhanceTrn/main"; return "/web/ve/aplct/fndtnEnhanceTrn/main";
} }
@ -501,6 +511,65 @@ public class FndtnEnhanceTrnController {
return modelAndView; return modelAndView;
}
/**
* @methodName : fndthEduPrcsAplctPrdMngRegAjax
* @author : 이호영
* @date : 2023.11.16
* @description :
* @param vEPrcsDetailVO
* @param model
* @param request
* @return
* @throws Exception
*/
@RequestMapping("/web/ve/aplct/fndtnEnhanceTrn/qnaRegAjax.do")
public ModelAndView qnaRegAjax(
@ModelAttribute("vEPrcsDetailVO") VEPrcsDetailVO vEPrcsDetailVO
, ModelMap model
, HttpServletRequest request
) throws Exception {
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("jsonView");
//로그인 처리====================================
//로그인 정보 가져오기
String s_oprtnLoginCheckNInfo = checkLoginUtil.oprtnCheckNInfo(model);
if (!"".equals(s_oprtnLoginCheckNInfo)) {
modelAndView.addObject("result", "loginFail");
return modelAndView;
}
//로그인 처리====================================
LoginVO loginVO = checkLoginUtil.getAuthLoginVO(); //권한에 따른 로그인 정보 가져오기
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); //SSO 로그인 정보 가져오기
vEPrcsDetailVO.setFrstRegisterId(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId()); //esntl_id
vEPrcsDetailVO.setLctrDivCd("50"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
vEPrcsDetailVO.setPrcsAplctPrdQnaOrd(prcsAplctPrdQnaOrdGnrService.getNextStringId());
vEPrcsDetailVO.setQnaRegist(loginVO.getUniqId());
String msg = "등록되었습니다";
try {
fndtnEnhanceTrnService.insertVeEduQna(vEPrcsDetailVO);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
msg = "등록에 실패하였습니다. 관리자에게 문의해주세요";
}
modelAndView.addObject("msg", msg);
modelAndView.addObject("result", "success");
return modelAndView;
} }
/** /**

View File

@ -7,6 +7,7 @@ import org.springframework.stereotype.Repository;
import egovframework.rte.psl.dataaccess.EgovAbstractDAO; import egovframework.rte.psl.dataaccess.EgovAbstractDAO;
import kcc.ve.adv.tngr.stngInfo.service.VEAStngVO; import kcc.ve.adv.tngr.stngInfo.service.VEAStngVO;
import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO; import kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO;
import kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO;
@Repository("vEEduAplctDAO") @Repository("vEEduAplctDAO")
public class VEEduAplctDAO extends EgovAbstractDAO { public class VEEduAplctDAO extends EgovAbstractDAO {
@ -159,4 +160,14 @@ public class VEEduAplctDAO extends EgovAbstractDAO {
public void updateSbmtAtchFileId(VEEduAplctVO paramVO) throws Exception { public void updateSbmtAtchFileId(VEEduAplctVO paramVO) throws Exception {
insert("VEEduAplctDAO.updateSbmtAtchFileId", paramVO); insert("VEEduAplctDAO.updateSbmtAtchFileId", paramVO);
} }
public void insertVeEduQna(VEPrcsDetailVO vEPrcsDetailVO) {
insert("VEEduAplctDAO.insertVeEduQna", vEPrcsDetailVO);
}
public List<VEPrcsDetailVO> selectVeEduQna(VEPrcsDetailVO vEPrcsDetailVO) {
return (List<VEPrcsDetailVO>) list("VEEduAplctDAO.selectVeEduQna", vEPrcsDetailVO);
}
} }

View File

@ -143,6 +143,13 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
private String prcsAplctPrdEtcOrd; private String prcsAplctPrdEtcOrd;
private String prcsAplctPrdQnaOrd;
private String qnaRegist;
private String qnaCn;
private String qnaAnswerCn;
private String qnaAnswerer;
public String getSearchDiv() { public String getSearchDiv() {
@ -686,6 +693,36 @@ public class VEPrcsDetailVO extends ComDefaultVO implements Serializable {
public void setPrcsAplctPrdEtcOrd(String prcsAplctPrdEtcOrd) { public void setPrcsAplctPrdEtcOrd(String prcsAplctPrdEtcOrd) {
this.prcsAplctPrdEtcOrd = prcsAplctPrdEtcOrd; this.prcsAplctPrdEtcOrd = prcsAplctPrdEtcOrd;
} }
public String getPrcsAplctPrdQnaOrd() {
return prcsAplctPrdQnaOrd;
}
public void setPrcsAplctPrdQnaOrd(String prcsAplctPrdQnaOrd) {
this.prcsAplctPrdQnaOrd = prcsAplctPrdQnaOrd;
}
public String getQnaRegist() {
return qnaRegist;
}
public void setQnaRegist(String qnaRegist) {
this.qnaRegist = qnaRegist;
}
public String getQnaCn() {
return qnaCn;
}
public void setQnaCn(String qnaCn) {
this.qnaCn = qnaCn;
}
public String getQnaAnswerCn() {
return qnaAnswerCn;
}
public void setQnaAnswerCn(String qnaAnswerCn) {
this.qnaAnswerCn = qnaAnswerCn;
}
public String getQnaAnswerer() {
return qnaAnswerer;
}
public void setQnaAnswerer(String qnaAnswerer) {
this.qnaAnswerer = qnaAnswerer;
}
} }

View File

@ -208,6 +208,54 @@ public class FndthPrcsInfoMngController {
///kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngList.do ///kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngList.do
} }
@RequestMapping("/kccadr/oprtn/fndthEnhanceTrn/fndthEduQnaMngList.do")
public String fndthEduQnaMngList(
@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("50"); //강의구분코드 VE0011 10-청소년강의, 20-성인강의, 30-체험, 50-기반강화, 60-조건부
if(StringUtil.isNotEmpty(vEPrcsDetailVO.getSearchKeyword())){
String selectCondition = "AND a.PRCS_NM LIKE CONCAT ('%', '" +vEPrcsDetailVO.getSearchKeyword() + "', '%')";
vEPrcsDetailVO.setSelectPagingListQuery(selectCondition);
}
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/fndthEduQnaMngList";
// return "oprtn/fndthEnhanceTrn/fndthEduPrcsMngList";
}
/** /**
* 기반강화연수과정 등록 화면 * 기반강화연수과정 등록 화면
*/ */

View File

@ -3014,4 +3014,19 @@
<property name="fillChar" value="0" /> <property name="fillChar" value="0" />
</bean> </bean>
<!-- Q&A -->
<bean name="prcsAplctPrdQnaOrdGnrService" class="egovframework.rte.fdl.idgnr.impl.EgovTableIdGnrServiceImpl" destroy-method="destroy">
<property name="dataSource" ref="dataSource" />
<property name="strategy" ref="prcsAplctPrdQnaOrdStrategy" /><!-- strategy 값 수정 -->
<property name="blockSize" value="10"/>
<property name="table" value="IDS"/>
<property name="tableName" value="PRCS_APLCT_QNA_ORD"/><!-- tableName 값 수정 -->
</bean>
<!-- 과정신청기간 ID Generation Strategy Config -->
<bean name="prcsAplctPrdQnaOrdStrategy" class="egovframework.rte.fdl.idgnr.impl.strategy.EgovIdGnrStrategyImpl"><!-- bean name 값에 strategy 값 입력 -->
<property name="prefix" value="prcsAplctQna_" /><!-- prefix 값 수정 -->
<property name="cipers" value="7" /><!-- 일련번호(순번) 전체 길이(prefix길이 미포함) -->
<property name="fillChar" value="0" />
</bean>
</beans> </beans>

View File

@ -606,20 +606,23 @@
</delete> </delete>
<select id="BBSAttributeManageDAO.selectBBSIdList" parameterClass="ComDefaultVO" resultClass="egovMap" > <select id="BBSAttributeManageDAO.selectBBSIdList" parameterClass="ComDefaultVO" resultClass="egovMap" >
SELECT BBS_ID SELECT A.BBS_ID
,BBS_NM , IF(B.MENU_NM='root' , '', B.MENU_NM) AS MENU_NM , A.BBS_NM
FROM LETTNBBSMASTER A LEFT OUTER JOIN LETTNMENUINFO B ON A.MENU_NO = B.MENU_NO , CASE WHEN B.MENU_NM = 'root' THEN '' ELSE B.MENU_NM END AS MENU_NM
FROM LETTNBBSMASTER A
LEFT OUTER JOIN LETTNMENUINFO B
ON A.MENU_NO = B.MENU_NO
WHERE USE_AT = 'Y' WHERE USE_AT = 'Y'
AND BBS_NM LIKE CONCAT('%', #searchKeyword#, '%') AND BBS_NM LIKE '%'|| #searchKeyword# ||'%'
ORDER BY BBS_NM ORDER BY BBS_NM
LIMIT #recordCountPerPage# OFFSET #firstIndex# OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY
</select> </select>
<select id="BBSAttributeManageDAO.selectBBSIdListCnt" parameterClass="ComDefaultVO" resultClass="java.lang.Integer" > <select id="BBSAttributeManageDAO.selectBBSIdListCnt" parameterClass="ComDefaultVO" resultClass="java.lang.Integer" >
SELECT COUNT(1) SELECT COUNT(1)
FROM LETTNBBSMASTER A FROM LETTNBBSMASTER A
WHERE USE_AT = 'Y' WHERE USE_AT = 'Y'
AND BBS_NM LIKE CONCAT('%', #searchKeyword#, '%') AND BBS_NM LIKE '%'|| #searchKeyword# ||'%'
<isNotEmpty property="siteId"> <isNotEmpty property="siteId">
AND SITE_ID = #siteId# AND SITE_ID = #siteId#
</isNotEmpty> </isNotEmpty>

View File

@ -5,6 +5,7 @@
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/> <typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="VEEduAplctVO" type="kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO"/> <typeAlias alias="VEEduAplctVO" type="kcc.ve.instr.tngrVisitEdu.eduInfo.service.VEEduAplctVO"/>
<typeAlias alias="VEAStngVO" type="kcc.ve.adv.tngr.stngInfo.service.VEAStngVO"/> <typeAlias alias="VEAStngVO" type="kcc.ve.adv.tngr.stngInfo.service.VEAStngVO"/>
<typeAlias alias="VEPrcsDetailVO" type="kcc.ve.instr.tngrVisitEdu.prcsInfo.service.VEPrcsDetailVO"/>
<!-- 공통 테이블 명 --> <!-- 공통 테이블 명 -->
@ -1317,4 +1318,44 @@
WHERE WHERE
EDU_DOC_REQ_ORD = #eduDocReqOrd# EDU_DOC_REQ_ORD = #eduDocReqOrd#
</update> </update>
<insert id="VEEduAplctDAO.insertVeEduQna" parameterClass="VEPrcsDetailVO">
INSERT INTO VEA_PRCS_APLCT_PRD_QNA
(
PRCS_APLCT_PRD_QNA_ORD
, LCTR_DIV_CD
, QNA_REGIST
, QNA_CN
, FRST_REGIST_PNTTM
, FRST_REGISTER_ID
)VALUES(
#prcsAplctPrdQnaOrd#
, #lctrDivCd#
, #qnaRegist#
, #qnaCn#
, SYSDATE
, #frstRegisterId#
)
</insert>
<select id="VEEduAplctDAO.selectVeEduQna" parameterClass="VEPrcsDetailVO" resultClass="VEPrcsDetailVO">
SELECT
PRCS_APLCT_PRD_QNA_ORD as prcsAplctPrdQnaOrd
, LCTR_DIV_CD as lctrDivCd
, QNA_REGIST as qnaRegist
, QNA_CN as qnaCn
, QNA_ANSWER_CN as qnaAnswerCn
, QNA_ANSWERER as qnaAnswerer
, FRST_REGIST_PNTTM as frstRegistPnttm
, FRST_REGISTER_ID as frstRegisterId
, LAST_UPDT_PNTTM as lastUpdtPnttm
, LAST_UPDUSR_ID as lastUpdusrId
FROM
VEA_PRCS_APLCT_PRD_QNA
WHERE
QNA_REGIST = #qnaRegist#
</select>
</sqlMap> </sqlMap>

View File

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

View File

@ -36,7 +36,6 @@
} }
</style> </style>
<script type="text/javascript"> <script type="text/javascript">
function fncGoList(){ function fncGoList(){
linkPage(1); linkPage(1);
} }

View File

@ -0,0 +1,287 @@
<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
<un:useConstants var="KccadrStatus" className="kcc.kccadr.cmm.KccadrConstants" />
<%
/**
* @Class Name : 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/fndthEnhanceTrn/fndthEduPrcsMngList.do'/>";
listForm.submit();
}
function fncGoDetail(prcsOrd){
var listForm = document.listForm ;
listForm.prcsOrd.value = prcsOrd ;
listForm.action = "<c:url value='/kccadr/oprtn/fndthEnhanceTrn/fndthEduPrcsMngDetail.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/cndtnSspnIdtmt/cndtnEduPrcsMngDeleteAjax.do'/>";
console.log(data);
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("삭제되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
linkPage(pageIndex);
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
event.stopImmediatePropagation();
}
function fncSaveSort(prcsOrd, count){
var sortNo = $('#prcsSortNo'+count).val();
if(sortNo == ''){
alert("표시순서를 입력해 주세요.");
return false;
}
$('#prcsOrd').val(prcsOrd);
$('#prcsSortNo').val(sortNo);
var data = new FormData(document.getElementById("listForm"));
var url = "<c:url value='/kccadr/oprtn/otsdCprtnPrcs/eduPrcsSortUpdateAjax.do'/>";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
if(returnData.result == "success"){
alert("저장되었습니다.");
document.listForm.prcsOrd.value = ""; //리스트 이동시 prcsOrd 초기화
fncGoList();
}
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
}
</script>
<title>교육과정관리</title>
</head>
<body>
<form:form id="listForm" name="listForm" method="post" commandName="vEPrcsDetailVO" onsubmit="return false;">
<input type="hidden" name="pageIndex" value="<c:out value='${vEPrcsDetailVO.pageIndex}' default='1' />"/>
<input type="hidden" name="searchSortCnd" value="<c:out value="${vEPrcsDetailVO.searchSortCnd}" />" />
<input type="hidden" name="searchSortOrd" value="<c:out value="${vEPrcsDetailVO.searchSortOrd}" />" />
<input type="hidden" id="prcsOrd" name="prcsOrd" value="" />
<input type="hidden" id="prcsSortNo" name="prcsSortNo" value="" />
<div class="cont_wrap">
<div class="box">
<!-- cont_tit -->
<div class="cont_tit">
<h2>과정관리목록</h2>
<ul class="cont_nav">
<li class="home"><a href="/"><i></i></a></li>
<li>
<p>실무자역량강화(기반강화연수관리)</p>
</li>
<li><span class="cur_nav">과정관리목록</span></li>
</ul>
</div>
<!-- //cont_tit -->
<div class="cont">
<div class="tb_tit01">
<p>교육 과정 관리</p>
</div>
<!-- list_top -->
<div class="list_top search-only">
<div class="list_top_1">
<div class="util_right">
<ve:select codeId="VEA001" name="searchStatus" id="searchStatus" css="class='sel_type1'"
selectedValue="${vEPrcsDetailVO.searchStatus }" defaultValue=""
defaultText="전체"
/>
<div class="calendar_wrap">
<input type="text" class="calendar" title="시작일 선택" id="searchSmbtStartDt" name="searchSmbtStartDt" value="${vEPrcsDetailVO.searchSmbtStartDt}">
</div>
~
<div class="calendar_wrap">
<input type="text" class="calendar" title="종료일 선택" id="searchSmbtEndDt" name="searchSmbtEndDt" value="${vEPrcsDetailVO.searchSmbtEndDt}">
</div>
<input type="text" id="searchKeyword" name="searchKeyword" placeholder="과정명를 입력하세요." title="검색어 입력" class="search_input" value="<c:out value='${vEEduAplctVO.searchFullName}'/>">
<button type="button" class="btn_type08" onclick="fncGoList(); return false;">검색</button>
<button class="btn_type03" onclick="fncReset(this); return false;">초기화</button>
</div>
</div>
</div>
<div class="list_util">
<p class="list_util_p"><span><c:out value="${paginationInfo.totalRecordCount}" /></span>건의 접수가 검색되었습니다.</p>
<div>
<select class="sel_type1" name="pageUnit" id="pageUnit" onchange="linkPage(1);" title="줄 선택" style="width: 140px" class="sel_type1">
<option value='10' <c:if test="${vEPrcsDetailVO.pageUnit == '10' or vEPrcsDetailVO.pageUnit == ''}">selected</c:if>>10줄</option>
<option value='20' <c:if test="${vEPrcsDetailVO.pageUnit == '20'}">selected</c:if>>20줄</option>
<option value='30' <c:if test="${vEPrcsDetailVO.pageUnit == '30'}">selected</c:if>>30줄</option>
<option value='100' <c:if test="${vEPrcsDetailVO.pageUnit == '100'}">selected</c:if>>100줄</option>
</select>
<%--<button type="button" class="btn_down_excel">엑셀 다운로드</button>--%>
</div>
</div>
<!-- //list_top -->
<!-- list -->
<div class="tb_type01">
<table>
<colgroup>
<col style="width: 10%">
<col style="width: 20%">
<col style="width: auto">
<col style="width: 10%">
<col style="width: 10%">
</colgroup>
<thead>
<tr>
<th>교육부문</th>
<th>과정명</th>
<th>설명</th>
<th>등록일시</th>
<th>사용여부 </th>
</tr>
</thead>
<tbody>
<c:forEach var="list" items="${list}" varStatus="status">
<tr class="listCount">
<td>
<kc:code codeId="VEA001" code="${list.prcsDiv}"/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsOrd}"/>');" style="cursor:pointer;">
<c:out value='${list.prcsNm}'/>
</td>
<td onclick="fncGoDetail('<c:out value="${list.prcsOrd}"/>');" style="cursor:pointer;">
<c:out value='${list.prcsCn}'/>
</td>
<td>
<c:out value='${list.frstRegistPnttm}'/>
</td>
<td>
<c:if test="${list.useYn eq 'Y'}">
사용
</c:if>
<c:if test="${list.useYn ne 'Y'}">
미사용
</c:if>
</td>
</tr>
</c:forEach>
<c:if test="${empty list}">
<tr><td colspan="5"><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

@ -39,6 +39,62 @@
$(this).val(''); $(this).val('');
}); });
} }
//FAQ 답변 open&close
function faqOpen(item) {
if($(item).is(".slide_open") == true) {
$(item).removeClass("slide_open");
$(item).next(".answer").slideUp(300);
$(item).attr("title","답변 열기");
} else {
$(item).addClass("slide_open");
$(item).next(".answer").slideDown(300);
$(item).attr("title","답변 닫기");
$(item).closest("li").siblings("li").children(".question").removeClass("slide_open");
$(item).closest("li").siblings("li").children(".answer").slideUp(300);
$(item).closest("li").siblings("li").children(".question").attr("title","답변 열기");
}
}
function fn_qnaReg(){
var data = new FormData(document.getElementById("qnaForm"));
var url = "${pageContext.request.contextPath}/web/ve/aplct/fndtnEnhanceTrn/qnaRegAjax.do";
$.ajax({
type:"POST",
url: url,
data: data,
dataType:'json',
async: false,
processData: false,
contentType: false,
cache: false,
success:function(returnData){
console.log('returnData : ', returnData);
if(returnData.result == "success"){
// 대상자 테이블 pk 값
var sspnIdtmtTrgtOrd = returnData.id;
alert(returnData.msg);
}else{
alert(returnData.msg);
}
// fn_target_confirm_clean();
location.reload();
},
error:function(request , status, error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
$('#target_confirm_popup-close').click();
}
</script> </script>
<!-- content --> <!-- content -->
@ -71,7 +127,7 @@
</div> </div>
</div> </div>
<div class="tb_list02"> <div class="tb_list02" style="padding: 0 0 40px 0;">
<table> <table>
<caption>최근 교육 목록표</caption> <caption>최근 교육 목록표</caption>
<colgroup> <colgroup>
@ -137,5 +193,100 @@
</table> </table>
</div> </div>
<div class="btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
</div>
<div class="btn_right">
<button type="button" class="btnType04" data-info="prcsAplctPrd_0000220" data-tooltip="target_confirm_popup">교육문의</button>
</div>
</div>
<div class="tb_tit02">
<div class="tb_tit02_left">
<div class="t_best">Q&A</div>
</div>
<div class="btn_wrap1">
<%-- <button type="button" title="최근 교육 목록 더보기" class="con_more" onclick="location.href='<c:url value="/web/ve/aplct/fndtnEnhanceTrn/fndtnEduAplctList.do" />'">더보기</button> --%>
</div>
</div>
<div class="tb_list02">
<div class="faq_Wrap">
<ul class="faq">
<c:forEach var="list" items="${qnaList}" varStatus="status">
<li>
<button type="button" title="답변 열기" class="question" onclick="faqOpen(this);">
<p class="qst_text"><span>질문</span>Q</p>
<p class="qst_cont">${list.qnaCn }</p>
</button>
<div class="answer">
<div class="answer_in">
<p class="qst_text"><span>답변</span>A</p>
<p class="awr_cont">
<c:choose>
<c:when test="${not empty list.qnaAnswerCn }">
${list.qnaAnswerCn }
</c:when>
<c:otherwise>
내용이 없습니다.
</c:otherwise>
</c:choose>
</p>
</div>
</div>
</li>
</c:forEach>
<c:if test="${empty list}">
<li><spring:message code="common.nodata.msg" /></li>
</c:if>
</ul>
</div>
</div>
</form:form> </form:form>
</div> </div>
<form id="qnaForm" name="qnaForm" method="post">
<!-- 교육대상자 확인 -->
<div class="tooltip-wrap">
<div class="popup_wrap popType01" tabindex="0" data-tooltip-con="target_confirm_popup" data-focus="target_confirm_popup" data-focus-prev="target_confirm_popup_close">
<div class="popup_tit">
<p>교육문의하기</p>
<button class="btn_popup_close tooltip-close" data-focus="target_confirm_popup_close" title="팝업 닫기"><i></i></button>
</div>
<div class="popup_cont">
<div class="cont_body">
<div class="pop_tb_type01" style="overflow:visible;">
<table>
<colgroup>
<col style="width:27%;">
<col style="width:auto;">
</colgroup>
<tr>
<th>문의내용</th>
<td>
<textarea type="text" id="qnaCn" name="qnaCn" style="height: 220px;width: 100%;"></textarea>
</td>
</tr>
</table>
</div>
<div class="pop_btn_wrap btn_layout01">
<div class="btn_left">
</div>
<div class="btn_center">
<button type="button" class="btnType05" onclick="fn_qnaReg()">문의</button>
<button type="button" class="btnType02 tooltip-close" id="target_confirm_popup-close" data-focus="target_confirm_popup-close" data-focus-next="target_confirm_popup">취소</button>
</div>
<div class="btn_right">
</div>
</div>
</div>
</div>
</div>
</div>
<!--// 신청 클릭 > 기소유예 대상자 확인 팝업 -->
</form>

View File

@ -454,7 +454,7 @@ $(document).ready(function(){
<div class="btn_center"> <div class="btn_center">
</div> </div>
<div class="btn_right"> <div class="btn_right">
<button type="button" class="btnType01" onclick="fn_eduInquiry()">교육문의(미개발)</button> <!-- <button type="button" class="btnType01" onclick="fn_eduInquiry()">교육문의(미개발)</button> -->
</div> </div>
</div> </div>