마이페이지 > 내 문의내용 리스트, 상세 완료
This commit is contained in:
parent
26f12c173a
commit
6f1a89e7de
@ -21,6 +21,7 @@ import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.CellStyle;
|
||||
import org.apache.poi.ss.usermodel.Font;
|
||||
@ -89,6 +90,7 @@ import kcc.let.sym.site.service.SiteManagerVO;
|
||||
import kcc.let.uat.uia.service.SsoLoginVO;
|
||||
import kcc.let.utl.fcc.service.EgovCryptoUtil;
|
||||
import kcc.let.utl.sim.service.EgovClntInfo;
|
||||
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;
|
||||
@ -139,6 +141,11 @@ public class MyPageController {
|
||||
@Resource(name = "vEPrcsService")
|
||||
private VEPrcsService vEPrcsService;
|
||||
|
||||
//온라인콘텐츠과정 관리
|
||||
@Resource(name = "fndtnEnhanceTrnService")
|
||||
private FndtnEnhanceTrnService fndtnEnhanceTrnService;
|
||||
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(MyPageController.class);
|
||||
|
||||
@RequestMapping(value = { "/web/my/myPageDashBoard.do" })
|
||||
@ -149,9 +156,7 @@ public class MyPageController {
|
||||
SsoLoginVO ssoLoginVO = checkLoginUtil.getSSOLoginVO(request); // SSO 로그인 정보 가져오기
|
||||
|
||||
if (loginVO == null || ssoLoginVO == null) {
|
||||
// 이전 url 처리(beforeSiteUrl)_이준호_220228추가
|
||||
return checkLoginUtil.getUserLoginPage(model, request); // 로그인 정보가 없으면 로그인 페이지로 이동한다.
|
||||
// return checkLoginUtil.getUserLoginPage(model); //로그인 정보가 없으면 로그인 페이지로 이동한다.
|
||||
}
|
||||
|
||||
/*
|
||||
@ -308,23 +313,35 @@ public class MyPageController {
|
||||
, 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);
|
||||
|
||||
@ -332,6 +349,38 @@ public class MyPageController {
|
||||
}
|
||||
|
||||
|
||||
@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";
|
||||
}
|
||||
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
//
|
||||
|
||||
@ -395,7 +395,13 @@
|
||||
<isNotEmpty property="searchSmbtEndDt">
|
||||
AND TO_CHAR(qn.FRST_REGIST_PNTTM, 'YYYYMMDD') <![CDATA[ <= ]]> REPLACE(#searchSmbtEndDt#, '.' , '')
|
||||
</isNotEmpty>
|
||||
|
||||
<isNotEmpty property="qnaRegist">
|
||||
AND QNA_REGIST = #qnaRegist#
|
||||
</isNotEmpty>
|
||||
<isNotEmpty property="searchQuery">
|
||||
$searchQuery$
|
||||
</isNotEmpty>
|
||||
OFFSET #firstIndex# ROWS FETCH NEXT #recordCountPerPage# ROWS ONLY;
|
||||
</select>
|
||||
|
||||
|
||||
|
||||
129
src/main/webapp/WEB-INF/jsp/web/my/myQnaMngDetail.jsp
Normal file
129
src/main/webapp/WEB-INF/jsp/web/my/myQnaMngDetail.jsp
Normal file
@ -0,0 +1,129 @@
|
||||
<%@ page contentType="text/html; charset=utf-8"%>
|
||||
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
|
||||
<%@ taglib prefix="ui" uri="http://egovframework.gov/ctl/ui"%>
|
||||
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
|
||||
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
|
||||
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||||
<%@ taglib prefix="kc" uri="/WEB-INF/tlds/kcc_tld.tld"%>
|
||||
<%@ taglib prefix="ve" uri="/WEB-INF/tlds/kcc_tld.tld"%>
|
||||
<%@ taglib prefix="un" uri="http://jakarta.apache.org/taglibs/unstandard-1.0" %>
|
||||
<un:useConstants var="VeConstants" className="kcc.ve.cmm.VeConstants" />
|
||||
|
||||
<% pageContext.setAttribute("replaceChar", "\n"); %>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
|
||||
<style>
|
||||
input:disabled {
|
||||
background-color: #f9f9f9 !important;
|
||||
}
|
||||
input:read-only {
|
||||
background-color: #f9f9f9 !important;
|
||||
}
|
||||
</style>
|
||||
<script type="text/javaScript" language="javascript">
|
||||
|
||||
$(document).ready(function(){
|
||||
|
||||
});
|
||||
|
||||
function linkPage(pageNo){
|
||||
var listForm = document.listForm ;
|
||||
listForm.pageIndex.value = pageNo ;
|
||||
listForm.action = "<c:url value='/web/my/myQnaMngList.do'/>";
|
||||
listForm.submit();
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<form name="listForm">
|
||||
<input type="hidden" name="pageIndex" value="1"/>
|
||||
</form>
|
||||
<div class="cont_wrap" id="sub">
|
||||
<div class="cont_tit">
|
||||
<h2>내 교육문의 상세</h2>
|
||||
<div class="sns_go">
|
||||
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/facebook_icon.png" alt="페이스북 바로가기"></button>
|
||||
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="tb_type01 tb_write">
|
||||
<table>
|
||||
<colgroup>
|
||||
<col style="width: 210px;">
|
||||
<col style="width: auto;">
|
||||
<col style="width: 210px;">
|
||||
<col style="width: auto;">
|
||||
</colgroup>
|
||||
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">질문자ID</th>
|
||||
<td>
|
||||
<c:out value='${info.qnaRegist}' />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">질문자 이름</th>
|
||||
<td>
|
||||
<c:out value='${info.mberNm}' />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">질문내용</th>
|
||||
<td>
|
||||
<c:out value='${info.qnaCn}' />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">답변상태</th>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${empty info.qnaAnswerCn }">
|
||||
미완료
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
완료
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">답변일시</th>
|
||||
<td>
|
||||
<c:choose>
|
||||
<c:when test="${empty info.lastUpdtPnttm }">
|
||||
-
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<c:out value='${info.lastUpdtPnttm }'/>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">답변내용</th>
|
||||
<td colspan="5">
|
||||
<c:out value="${empty info.qnaAnswerCn? '-' : info.qnaAnswerCn}" />
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
<!-- //list_상세 -->
|
||||
<!-- 비공개 메보 정보 -->
|
||||
</div>
|
||||
<div class="btn_wrap btn_layout01">
|
||||
<div class="btn_left">
|
||||
</div>
|
||||
<div class="btn_center">
|
||||
</div>
|
||||
<div class="btn_right">
|
||||
<button type="button" id="regBtn" class="btnType04" onclick="linkPage(1)">목록</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
@ -16,27 +16,45 @@
|
||||
|
||||
|
||||
$(document).ready(function(){
|
||||
|
||||
$('#searchStatus').change(function(){
|
||||
fncGoList();
|
||||
});
|
||||
});
|
||||
|
||||
function fncGoList(){
|
||||
linkPage(1);
|
||||
}
|
||||
|
||||
function linkPage(pageNo){
|
||||
var listForm = document.listForm ;
|
||||
listForm.pageIndex.value = pageNo ;
|
||||
listForm.action = "<c:url value='/web/my/myQnaMngList.do'/>";
|
||||
listForm.submit();
|
||||
}
|
||||
|
||||
function fncGoDetail(p_pk){
|
||||
console.log('p_pk: ', p_pk);
|
||||
var form = document.deatilForm ;
|
||||
form.prcsAplctPrdQnaOrd.value = p_pk ;
|
||||
form.action = "<c:url value='/web/my/myQnaMngDetail.do'/>";
|
||||
form.submit();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
<!-- content -->
|
||||
<div class="cont_wrap" id="sub">
|
||||
|
||||
<form name="regForm" id="regForm">
|
||||
<input type="hidden" name="prcsAplctPrdOrd">
|
||||
<form id="deatilForm" name="deatilForm" >
|
||||
<input type="hidden" id="prcsAplctPrdQnaOrd" name="prcsAplctPrdQnaOrd" value=""/>
|
||||
|
||||
</form>
|
||||
<form name="viewForm" id="viewForm">
|
||||
<input type="hidden" name="prcsAplctPrdOrd">
|
||||
</form>
|
||||
<form name="goEduAplctListForm" id="goEduAplctListForm">
|
||||
</form>
|
||||
|
||||
<form:form id="listForm" name="listForm" commandName="vEPrcsDetailVO">
|
||||
<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}" />" />
|
||||
|
||||
<div class="cont_tit">
|
||||
<h2>내 교육문의</h2>
|
||||
@ -45,32 +63,17 @@ $(document).ready(function(){
|
||||
<button type="button" title="새창열림"><img src="${pageContext.request.contextPath}/visitEdu/usr/publish/images/content/twitter_icon.png" alt="트위터 바로가기"></button>
|
||||
</div>
|
||||
</div>
|
||||
<%-- <div class="list_top">
|
||||
<div class="list_top_left">
|
||||
<label for="searchStatus" class="label">신청상태 선택</label>
|
||||
<select class="selType1" id="searchStatus" name="searchStatus">
|
||||
<option ${vEPrcsDetailVO.searchStatus eq '' ? 'selected' : ''} value="">전체</option>
|
||||
<option ${vEPrcsDetailVO.searchStatus eq 10 ? 'selected' : ''} value="10">교육신청</option>
|
||||
<option ${vEPrcsDetailVO.searchStatus eq 5 ? 'selected' : ''} value="5">미이수</option>
|
||||
<option ${vEPrcsDetailVO.searchStatus eq 20 ? 'selected' : ''} value="20">이수완료</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="btn_wrap">
|
||||
<div class="calendar_wrap">
|
||||
<input type="text" class="calendar" id="searchStartDt" name="searchStartDt" title="시작일 선택" value="${vEPrcsDetailVO.searchStartDt}">
|
||||
<duet-date-picker identifier="date" name="searchStartDt" class="startDate" value="${vEPrcsDetailVO.searchStartDt}"></duet-date-picker>
|
||||
|
||||
<div class="list_top">
|
||||
<div class="list_top_left">
|
||||
<label for="searchStatus2" class="label">신청상태 선택</label>
|
||||
<select class="selType1" id="searchStatus" name="searchStatus">
|
||||
<option value="">답변여부</option>
|
||||
<option ${vEPrcsDetailVO.searchStatus eq 'Y' ? 'selected' : ''} value="Y">완료</option>
|
||||
<option ${vEPrcsDetailVO.searchStatus eq 'N' ? 'selected' : ''} value="N">미완료</option>
|
||||
</select>
|
||||
</div>
|
||||
~
|
||||
<div class="calendar_wrap">
|
||||
<input type="text" class="calendar" id="searchEndDt" name="searchEndDt" title="종료일 선택" value="${vEPrcsDetailVO.searchEndDt}">
|
||||
<duet-date-picker identifier="date" name="searchEndDt" class="endDate" value="${vEPrcsDetailVO.searchEndDt}"></duet-date-picker>
|
||||
</div>
|
||||
<script src="${pageContext.request.contextPath}/visitEdu/usr/publish/script/duetdatepicker.js"></script>
|
||||
<button type="button" class="btnType01" onclick="fncGoList();">검색</button>
|
||||
<button type="button" class="btnType02" onclick="fncReset(this);">초기화</button>
|
||||
</div>
|
||||
</div> --%>
|
||||
|
||||
|
||||
<!-- list -->
|
||||
<div class="tb_list01">
|
||||
@ -93,10 +96,10 @@ $(document).ready(function(){
|
||||
<tbody>
|
||||
<c:forEach var="list" items="${list}">
|
||||
<tr>
|
||||
<td onclick="fncGoDetail('prcsAplctPrd_0000286');" style="cursor:pointer;">
|
||||
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdQnaOrd }" />');" style="cursor:pointer;">
|
||||
<ve:code codeId="VE0011" code="${list.lctrDivCd }" />
|
||||
</td>
|
||||
<td>
|
||||
<td onclick="fncGoDetail('<c:out value="${list.prcsAplctPrdQnaOrd }" />');" style="cursor:pointer;">
|
||||
<c:out value="${list.qnaCn }" />
|
||||
</td>
|
||||
<td>
|
||||
@ -116,7 +119,7 @@ $(document).ready(function(){
|
||||
</tr>
|
||||
</c:forEach>
|
||||
<c:if test="${empty list}">
|
||||
<tr><td colspan="6"><spring:message code="common.nodata.msg" /></td></tr>
|
||||
<tr><td colspan="4"><spring:message code="common.nodata.msg" /></td></tr>
|
||||
</c:if>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user