마이페이지 > 내 문의내용 리스트, 상세 완료

This commit is contained in:
hylee 2023-12-13 10:39:08 +09:00
parent 26f12c173a
commit 6f1a89e7de
4 changed files with 230 additions and 43 deletions

View File

@ -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";
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
//

View File

@ -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>

View 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>

View File

@ -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>