FAQ 퍼블 적용 작업
This commit is contained in:
parent
4c77981595
commit
a5be071b81
@ -31,6 +31,7 @@ import nlib.cmm.crypto.NlibPasswordEncoder;
|
|||||||
import nlib.cmm.service.CodeService;
|
import nlib.cmm.service.CodeService;
|
||||||
import nlib.cmm.service.NlibProperty;
|
import nlib.cmm.service.NlibProperty;
|
||||||
import nlib.cmm.service.NotificationVO;
|
import nlib.cmm.service.NotificationVO;
|
||||||
|
import nlib.cmm.service.PagingVO;
|
||||||
import nlib.restful.service.DataApiReqVO;
|
import nlib.restful.service.DataApiReqVO;
|
||||||
import nlib.restful.service.DataApiResVO;
|
import nlib.restful.service.DataApiResVO;
|
||||||
import nlib.user.service.NlibLoginVO;
|
import nlib.user.service.NlibLoginVO;
|
||||||
@ -64,7 +65,7 @@ public class FaqController extends NlibCommonController {
|
|||||||
) throws Exception {
|
) throws Exception {
|
||||||
|
|
||||||
|
|
||||||
List<HashMap<String, String>> questionTypeList = codeService.listCodes("FAQ_TYPE_CD");
|
List<Map<String, String>> questionTypeList = codeService.listCodes("NLIB_FAQ_TYPE_CD");
|
||||||
model.addAttribute("questionTypeList", questionTypeList);
|
model.addAttribute("questionTypeList", questionTypeList);
|
||||||
model.addAttribute("searchArticle", searchArticleVO);
|
model.addAttribute("searchArticle", searchArticleVO);
|
||||||
|
|
||||||
@ -102,6 +103,14 @@ public class FaqController extends NlibCommonController {
|
|||||||
retMap.put("data", list);
|
retMap.put("data", list);
|
||||||
retMap.put("itemsCount", totRecordCount);
|
retMap.put("itemsCount", totRecordCount);
|
||||||
|
|
||||||
|
PagingVO pageVO = new PagingVO();
|
||||||
|
pageVO.setPagingVO(totRecordCount, searchArticleVO.getPageIndex(), searchArticleVO.getPageSize());
|
||||||
|
retMap.put("pagingPageIndex" , pageVO.getPageIndex());
|
||||||
|
retMap.put("pagingTotRecordCount", pageVO.getTotRecordCount());
|
||||||
|
retMap.put("pagingStartPage" , pageVO.getStartPage());
|
||||||
|
retMap.put("pagingEndPage" , pageVO.getEndPage());
|
||||||
|
retMap.put("pagingLastPage" , pageVO.getLastPage());
|
||||||
|
|
||||||
return makeResponseEntityJson(retMap);
|
return makeResponseEntityJson(retMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -34,6 +34,7 @@ import nlib.bbs.service.QnaService;
|
|||||||
import nlib.cmm.NlibCommonController;
|
import nlib.cmm.NlibCommonController;
|
||||||
import nlib.cmm.service.CodeService;
|
import nlib.cmm.service.CodeService;
|
||||||
import nlib.cmm.service.NlibProperty;
|
import nlib.cmm.service.NlibProperty;
|
||||||
|
import nlib.cmm.service.PagingVO;
|
||||||
import nlib.user.service.NlibLoginVO;
|
import nlib.user.service.NlibLoginVO;
|
||||||
import nlib.util.StringUtil;
|
import nlib.util.StringUtil;
|
||||||
|
|
||||||
@ -123,6 +124,13 @@ public class QnaController extends NlibCommonController {
|
|||||||
retMap.put("itemsCount", totRecordCount);
|
retMap.put("itemsCount", totRecordCount);
|
||||||
retMap.put("message", message);
|
retMap.put("message", message);
|
||||||
|
|
||||||
|
PagingVO pageVO = new PagingVO();
|
||||||
|
pageVO.setPagingVO(totRecordCount, searchArticleVO.getPageIndex(), searchArticleVO.getPageSize());
|
||||||
|
retMap.put("pagingPageIndex" , pageVO.getPageIndex());
|
||||||
|
retMap.put("pagingTotRecordCount", pageVO.getTotRecordCount());
|
||||||
|
retMap.put("pagingStartPage" , pageVO.getStartPage());
|
||||||
|
retMap.put("pagingEndPage" , pageVO.getEndPage());
|
||||||
|
retMap.put("pagingLastPage" , pageVO.getLastPage());
|
||||||
|
|
||||||
return makeResponseEntityJson(retMap);
|
return makeResponseEntityJson(retMap);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,7 +18,7 @@
|
|||||||
</if>
|
</if>
|
||||||
<if test='searchType != null and searchType.equals("C")'>
|
<if test='searchType != null and searchType.equals("C")'>
|
||||||
<if test="searchKeyword != null and !searchKeyword.equals('')">
|
<if test="searchKeyword != null and !searchKeyword.equals('')">
|
||||||
AND S.CONTENT LIKE CONCAT('%', #{escapeSearchKeyword}, '%')
|
AND IFNULL(S.CONTENT,'') LIKE CONCAT('%', #{escapeSearchKeyword}, '%')
|
||||||
</if>
|
</if>
|
||||||
</if>
|
</if>
|
||||||
AND IFNULL(S.DELETE_YN, 'N') = 'N'
|
AND IFNULL(S.DELETE_YN, 'N') = 'N'
|
||||||
|
|||||||
@ -19,7 +19,7 @@
|
|||||||
</if>
|
</if>
|
||||||
<if test='searchType != null and searchType.equals("C")'>
|
<if test='searchType != null and searchType.equals("C")'>
|
||||||
<if test="searchKeyword != null and !searchKeyword.equals('')">
|
<if test="searchKeyword != null and !searchKeyword.equals('')">
|
||||||
AND CONCAT(S.CONTENT, S.ANSWER) LIKE CONCAT('%', #{escapeSearchKeyword}, '%')
|
AND CONCAT(IFNULL(S.CONTENT,''), IFNULL(S.ANSWER,'')) LIKE CONCAT('%', #{escapeSearchKeyword}, '%')
|
||||||
</if>
|
</if>
|
||||||
</if>
|
</if>
|
||||||
<if test='searchQuestionType != null and !searchQuestionType.equals("")'>
|
<if test='searchQuestionType != null and !searchQuestionType.equals("")'>
|
||||||
|
|||||||
@ -18,7 +18,7 @@
|
|||||||
</if>
|
</if>
|
||||||
<if test='searchType != null and searchType.equals("C")'>
|
<if test='searchType != null and searchType.equals("C")'>
|
||||||
<if test="searchKeyword != null and !searchKeyword.equals('')">
|
<if test="searchKeyword != null and !searchKeyword.equals('')">
|
||||||
AND CONCAT(S.CONTENT, S.ANSWER) LIKE CONCAT('%', #{escapeSearchKeyword}, '%')
|
AND CONCAT(IFNULL(S.CONTENT,''), IFNULL(S.ANSWER,'')) LIKE CONCAT('%', #{escapeSearchKeyword}, '%')
|
||||||
</if>
|
</if>
|
||||||
</if>
|
</if>
|
||||||
<if test='searchMbInfoId != null and !searchMbInfoId.equals("")'>
|
<if test='searchMbInfoId != null and !searchMbInfoId.equals("")'>
|
||||||
|
|||||||
@ -37,12 +37,12 @@
|
|||||||
|
|
||||||
$( document ).ready(function() {
|
$( document ).ready(function() {
|
||||||
|
|
||||||
if('${message}' != "null" && '${message}' != "") {
|
// 메시지 표출
|
||||||
alert("${message}");
|
if(!fn_isEmpty('${message}')) {
|
||||||
}
|
alert("${message}");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 검색 수행 이벤트
|
||||||
// 검색 버튼 클릭
|
|
||||||
$("#btnSearch").on("click", function(e) {
|
$("#btnSearch").on("click", function(e) {
|
||||||
fn_searchArticle(1);
|
fn_searchArticle(1);
|
||||||
});
|
});
|
||||||
@ -114,11 +114,13 @@
|
|||||||
|
|
||||||
// 검색결과
|
// 검색결과
|
||||||
if($("#searchKeyword").val() != "") {
|
if($("#searchKeyword").val() != "") {
|
||||||
$("#searchKeywordPrt").text($("#searchKeyword").val());
|
$("#searchKeywordPrt").text("'" + $("#searchKeyword").val() + "'");
|
||||||
$("#searchResult").show();
|
$("#searchResult").show();
|
||||||
|
$("#cntResult").hide();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$("#searchResult").hide();
|
$("#searchResult").hide();
|
||||||
|
$("#cntResult").show();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 기존 데이터 CLEAR
|
// 기존 데이터 CLEAR
|
||||||
@ -170,18 +172,20 @@
|
|||||||
<div class="contents-frame inner-center">
|
<div class="contents-frame inner-center">
|
||||||
<div class="list-header">
|
<div class="list-header">
|
||||||
<!-- name="listForm" -->
|
<!-- name="listForm" -->
|
||||||
<form name="articleForm" id="articleForm" action="${pageContext.request.contextPath}/bbs/selectAncmntArticle.do" method="post" class="list-search">
|
<form name="articleForm" id="articleForm" method="post" class="list-search" onsubmit="return false;">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
|
|
||||||
<input type="text" name="pageSize" id="pageSize" value="${searchArticle.pageSize }" />
|
<input type="hidden" name="pageSize" id="pageSize" value="${searchArticle.pageSize }" />
|
||||||
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex }" />
|
<input type="hidden" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex }" />
|
||||||
<input type="text" name="articleId" id="articleId" title="게시글번호" value="" />
|
<input type="hidden" name="articleId" id="articleId" title="게시글번호" value="" />
|
||||||
<input type="text" name="articleNo" id="articleNo" value="" title="선택글번호" />
|
<input type="hidden" name="articleNo" id="articleNo" value="" title="선택글번호" />
|
||||||
|
|
||||||
<legend>공지 검색</legend>
|
<legend>공지 검색</legend>
|
||||||
<div class="left">
|
<div class="left">
|
||||||
<div class="total-count"><span class="count">총 <em><span name="itemsCount" id="itemsCount">0</span></em>건</span></div>
|
<div class="total-count" name="cntResult" id="cntResult"><span class="count">총 <em name="itemsCount" id="itemsCount">0</em>건</span></div>
|
||||||
<div name="searchResult" id="searchResult" class="total-count" style="display: none;"><span class="count" name="searchKeywordPrt" id="searchKeywordPrt"><em>'안내'</em>에 대한 겸색결과는 총 <em><span name="searchItemsCount" id="searchItemsCount">0</span></em>건 입니다.</span></div>
|
<div class="total-count" style="display: none;" name="searchResult" id="searchResult">
|
||||||
|
<span class="count"><em name="searchKeywordPrt" id="searchKeywordPrt"></em>에 대한 겸색결과는 총 <em name="searchItemsCount" id="searchItemsCount">4</em>건 입니다.</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="right">
|
<div class="right">
|
||||||
<div class="list-select type">
|
<div class="list-select type">
|
||||||
@ -219,7 +223,6 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<ul id="paging" class="paging"></ul>
|
<ul id="paging" class="paging"></ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- //contents-frame -->
|
<!-- //contents-frame -->
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -31,127 +31,25 @@
|
|||||||
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
|
||||||
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
|
<%@ taglib prefix="validator" uri="http://www.springmodules.org/tags/commons-validator" %>
|
||||||
|
|
||||||
<c:set var="pageTitle">자주하는질문(DB)</c:set>
|
<c:set var="pageTitle">FAQ</c:set>
|
||||||
|
|
||||||
<!DOCTYPE html>
|
<script type="text/javaScript" language="javascript">
|
||||||
<html lang="ko">
|
|
||||||
<head>
|
|
||||||
<title>${pageTitle}</title>
|
|
||||||
|
|
||||||
<!-- GRID -->
|
$( document ).ready(function() {
|
||||||
<link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/js/jsgrid/nlib-jsgrid.css" />
|
|
||||||
<link type="text/css" rel="stylesheet" href="${pageContext.request.contextPath}/js/jsgrid/nlib-jsgrid-theme.css" />
|
|
||||||
<script src="${pageContext.request.contextPath}/js/jsgrid/nlib-jsgrid.js"></script>
|
|
||||||
|
|
||||||
<script type="text/javaScript" language="javascript">
|
// 메시지 표출
|
||||||
|
if(!fn_isEmpty('${message}')) {
|
||||||
|
alert("${message}");
|
||||||
|
}
|
||||||
|
|
||||||
$( document ).ready(function() {
|
// 검색 수행 이벤트
|
||||||
|
|
||||||
//=======================================================
|
|
||||||
// 그리드 생성 환경설정
|
|
||||||
//=======================================================
|
|
||||||
$("#jsGrid").jsGrid({
|
|
||||||
pageSize : $("#pageSize").val(),
|
|
||||||
scrollOffset:0,
|
|
||||||
controller: {
|
|
||||||
loadData: function (filter) { // 그리드에 데이터를 가져올 때 실팽되는 함수
|
|
||||||
var data = $.Deferred();
|
|
||||||
//======================================
|
|
||||||
// 요청 정보 구성 : 시작 (각 요청에 맞게 조정)
|
|
||||||
//======================================
|
|
||||||
var reqUrl = "${pageContext.request.contextPath}/bbs/listFaqsAjax.do";
|
|
||||||
var pageIndex = ( filter && filter.pageIndex ? filter.pageIndex : $("#pageIndex").val());
|
|
||||||
var pageSize = ( filter && filter.pageSize ? filter.pageSize : $("#pageSize").val());
|
|
||||||
|
|
||||||
var searchType = $("#searchType").val();
|
|
||||||
var searchKeyword = $("#searchKeyword").val();
|
|
||||||
var searchQuestionType = $("#searchQuestionType").val();
|
|
||||||
|
|
||||||
|
|
||||||
$("#pageIndex").val(pageIndex);
|
|
||||||
|
|
||||||
|
|
||||||
var inputData = {
|
|
||||||
"pageIndex" : pageIndex
|
|
||||||
, "pageSize" : pageSize
|
|
||||||
, "searchType" : searchType
|
|
||||||
, "searchKeyword" : searchKeyword
|
|
||||||
, "searchQuestionType" : searchQuestionType
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------
|
|
||||||
// 요청 처리
|
|
||||||
//--------------------------------------
|
|
||||||
$.ajax({
|
|
||||||
type: "post",
|
|
||||||
contentType: "application/json; charset=utf-8",
|
|
||||||
url: reqUrl,
|
|
||||||
dataType: "json",
|
|
||||||
data: JSON.stringify(inputData),
|
|
||||||
}).done(function(response){
|
|
||||||
<%
|
|
||||||
// 그리드 데이터 예시 :
|
|
||||||
// (1) 페이징 클라이언트에서 수행하는 경우(pageloading = false) : [{ "articleNo": 1, "articleType": "01" }, { "articleNo": 2, "articleType": "02" }]
|
|
||||||
// (2) 페이징 서버에서 수행하는 경우(pageloading = true) : {data: [{...}], itemsCount: 255}
|
|
||||||
%>
|
|
||||||
var jsonObj = JSON.parse(response);
|
|
||||||
//$("#itemsCount").val(jsonOjb.itemsCount);
|
|
||||||
console.log(jsonObj.itemsCount);
|
|
||||||
|
|
||||||
if(jsonObj.itemsCount == undefined) {
|
|
||||||
$("#itemsCount").text("0");
|
|
||||||
$("#searchItemsCount").text("0");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$("#itemsCount").text(jsonObj.itemsCount);
|
|
||||||
$("#searchItemsCount").text(jsonObj.itemsCount);
|
|
||||||
}
|
|
||||||
|
|
||||||
if($("#searchKeyword").val() != "") {
|
|
||||||
$("#searchKeywordPrt").text($("#searchKeyword").val());
|
|
||||||
$("#listResult").hide();
|
|
||||||
$("#searchResult").show();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$("#listResult").show();
|
|
||||||
$("#searchResult").hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
data.resolve(jsonObj);
|
|
||||||
});
|
|
||||||
return data.promise();
|
|
||||||
} // loadData
|
|
||||||
},
|
|
||||||
|
|
||||||
rowClick: function(args) { // 행 클릭 시, 실행되는 이벤트 함수
|
|
||||||
|
|
||||||
// 클릭된 행의 자료 객체
|
|
||||||
var getData = args.item;
|
|
||||||
|
|
||||||
// 추출할 컬럼의 데이터 가져오기
|
|
||||||
var articleId = getData["articleId"];
|
|
||||||
var selectedRow = $("#jsGrid").find('table tr.jsgrid-selected-row');
|
|
||||||
|
|
||||||
// 상세 내용 보기
|
|
||||||
fn_viewDetail(articleId, selectedRow);
|
|
||||||
},
|
|
||||||
|
|
||||||
//======================================
|
|
||||||
// 그리드 컬럼 정의 (각 요청에 맞게 조정)
|
|
||||||
//======================================
|
|
||||||
fields: [
|
|
||||||
{ title:"TYPE", name: "faqType" , type: "text", width: 30, align: "left", itemTemplate: function(value, item) {return "Q";}},
|
|
||||||
{ title:"ID", name: "articleId" , type: "text", width: 160, align: "left" },
|
|
||||||
{ title:"유형", name: "questionTypeName" , type: "text", width: 100, align: "left" },
|
|
||||||
{ title:"제목", name: "title" , type: "text", width: 200, align: "left" },
|
|
||||||
{ title:"첨부", name: "attachYn" , type: "text", width: 100, align: "center"}
|
|
||||||
]
|
|
||||||
});
|
|
||||||
|
|
||||||
// 검색 버튼 클릭
|
|
||||||
$("#btnSearch").on("click", function(e) {
|
$("#btnSearch").on("click", function(e) {
|
||||||
fn_searchArticle($("#pageSize").val(), 1);
|
fn_searchArticle(1);
|
||||||
|
});
|
||||||
|
$("#searchKeyword").on("keydown", function(e) {
|
||||||
|
if(e.keyCode == 13) {
|
||||||
|
fn_searchArticle(1);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
//초기 자료 조회
|
//초기 자료 조회
|
||||||
@ -159,11 +57,14 @@
|
|||||||
|
|
||||||
}); // document ready
|
}); // document ready
|
||||||
|
|
||||||
|
|
||||||
// 선택한 글 상세 보기로 이동
|
// 선택한 글 상세 보기로 이동
|
||||||
function fn_viewDetail(articleId, selectedRow) {
|
function fn_viewDetail(qObj, articleId) {
|
||||||
|
|
||||||
|
var $qObj = $(qObj);
|
||||||
|
if($qObj.hasClass('on')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var $selectedRow = $(selectedRow);
|
|
||||||
var reqUrl = "${pageContext.request.contextPath}/bbs/selectFaqArticleAjax.do";
|
var reqUrl = "${pageContext.request.contextPath}/bbs/selectFaqArticleAjax.do";
|
||||||
var inputData = { "articleId" : articleId };
|
var inputData = { "articleId" : articleId };
|
||||||
|
|
||||||
@ -178,41 +79,102 @@
|
|||||||
data: JSON.stringify(inputData),
|
data: JSON.stringify(inputData),
|
||||||
}).done(function(response){
|
}).done(function(response){
|
||||||
var jsonObj = JSON.parse(response);
|
var jsonObj = JSON.parse(response);
|
||||||
$("#jsGrid").find('table tr.answer').remove();
|
var answerHtml = jsonObj.data.answer;
|
||||||
|
|
||||||
var answerHtml = "<tr class='answer'><td>A</td><td colspan='4'>" +
|
$('.list-accordion .answer').html("");
|
||||||
+ "<br/>" + jsonObj.data.answer;
|
$qObj.next(".answer").html(answerHtml);
|
||||||
if(jsonObj.data.attachFileCnt > 0) {
|
|
||||||
answerHtml += "<br/>[첨부파일]<br/>";
|
|
||||||
for(var i=0; i<jsonObj.data.attachFileCnt; i++) {
|
|
||||||
answerHtml += "<a href=\"javascript:void(0);\" onclick=\"fn_downloadFile('" +
|
|
||||||
jsonObj.data.attachFiles[i].attachFileId + "', " +
|
|
||||||
jsonObj.data.attachFiles[i].fileSn + ")\">" +
|
|
||||||
jsonObj.data.attachFiles[i].orignlFileNm + " (" +
|
|
||||||
jsonObj.data.attachFiles[i].fileSize + " byte(s))</a><br/>";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
answerHtml += "</td></tr>";
|
|
||||||
|
|
||||||
$selectedRow.after(answerHtml);
|
// 펼치기
|
||||||
|
$('.list-accordion .answer').stop().slideUp(300);
|
||||||
|
$qObj.next('.answer').stop().slideDown(300);
|
||||||
|
|
||||||
|
$('.list-accordion .question').removeClass('on');
|
||||||
|
$qObj.addClass('on');
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#jsGrid").closest('.ui-jqgrid-bdiv').width($("#jsGrid").closest('.ui-jqgrid-bdiv').width() + 1);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 그리드 데이터 조회 호출
|
// 그리드 데이터 조회 호출
|
||||||
function fn_searchArticle(pageSize, pageIndex) {
|
function fn_searchArticle(pageIndex) {
|
||||||
$("#jsGrid").jsGrid("search"
|
|
||||||
, {'pageSize' : (pageSize ? pageSize : fn_getIntValue("pageSize", ${searchArticle.pageSize}) ),
|
if(fn_isEmpty(pageIndex)) pageIndex = $("#pageIndex").val();
|
||||||
'pageIndex' : (pageIndex ? pageIndex : fn_getIntValue("pageIndex", ${searchArticle.pageIndex}))
|
if(fn_isEmpty(pageIndex)) pageIndex = "1";
|
||||||
}
|
$("#pageIndex").val(pageIndex);
|
||||||
);
|
|
||||||
|
var reqUrl = "${pageContext.request.contextPath}/bbs/listFaqsAjax.do";
|
||||||
|
|
||||||
|
var inputData = {
|
||||||
|
"pageIndex" : $("#pageIndex").val()
|
||||||
|
, "pageSize" : $("#pageSize").val()
|
||||||
|
, "searchType" : $("#searchType").val()
|
||||||
|
, "searchKeyword" : $("#searchKeyword").val()
|
||||||
|
, "searchQuestionType" : $("#searchQuestionType").val()
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//--------------------------------------
|
||||||
|
// 요청 처리
|
||||||
|
//--------------------------------------
|
||||||
|
$.ajax({
|
||||||
|
type: "post",
|
||||||
|
contentType: "application/json; charset=utf-8",
|
||||||
|
url: reqUrl,
|
||||||
|
dataType: "json",
|
||||||
|
data: JSON.stringify(inputData),
|
||||||
|
}).done(function(data) {
|
||||||
|
<%
|
||||||
|
// 그리드 데이터 예시 :
|
||||||
|
// (1) 페이징 클라이언트에서 수행하는 경우(pageloading = false) : [{ "articleNo": 1, "articleType": "01" }, { "articleNo": 2, "articleType": "02" }]
|
||||||
|
// (2) 페이징 서버에서 수행하는 경우(pageloading = true) : {data: [{...}], itemsCount: 255}
|
||||||
|
%>
|
||||||
|
|
||||||
|
var jsonObj = JSON.parse(data);
|
||||||
|
console.log(jsonObj.itemsCount);
|
||||||
|
|
||||||
|
// 건수
|
||||||
|
if(jsonObj.itemsCount == undefined) {
|
||||||
|
$("#itemsCount").text("0");
|
||||||
|
$("#searchItemsCount").text("0");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$("#itemsCount").text(jsonObj.itemsCount);
|
||||||
|
$("#searchItemsCount").text(jsonObj.itemsCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 검색결과
|
||||||
|
if($("#searchKeyword").val() != "") {
|
||||||
|
$("#searchKeywordPrt").text("'" + $("#searchKeyword").val() + "'");
|
||||||
|
$("#searchResult").show();
|
||||||
|
$("#cntResult").hide();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$("#searchResult").hide();
|
||||||
|
$("#cntResult").show();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 기존 데이터 CLEAR
|
||||||
|
$( "ul.list-faq li").remove();
|
||||||
|
|
||||||
|
// 출력
|
||||||
|
$.each(jsonObj.data,function(key,obj) {
|
||||||
|
var li = $(document.createElement('li'));
|
||||||
|
li.attr("articleId", obj.articleId);
|
||||||
|
li.append($('<button type="button"></button>').attr('class', 'question').on("click", function() {
|
||||||
|
fn_viewDetail(this, obj.articleId);
|
||||||
|
}));
|
||||||
|
li.find(".question").append($('<span />').attr("class", "type").html("[" + obj.questionTypeName + "]"));
|
||||||
|
li.find(".question").append($('<span />').html(obj.title));
|
||||||
|
li.append($('<div></div>').attr('class', 'answer').attr('style', 'display: none;'));
|
||||||
|
$( "ul.list-faq").append(li);
|
||||||
|
});
|
||||||
|
pageLoad("fn_searchArticle", jsonObj.pagingPageIndex, jsonObj.pagingTotRecordCount, jsonObj.pagingStartPage, jsonObj.pagingEndPage, jsonObj.pagingLastPage);
|
||||||
|
|
||||||
|
}).fail(function (jqXHR, textStatus, errorThrown) {
|
||||||
|
alert("조회에 실패하였습니다. 관리자에게 문의 바랍니다.");
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//파일 다운로드
|
//파일 다운로드
|
||||||
function fn_downloadFile(attachFileId, fileSn) {
|
function fn_downloadFile(attachFileId, fileSn) {
|
||||||
|
|
||||||
@ -235,77 +197,102 @@ function fn_downloadFile(attachFileId, fileSn) {
|
|||||||
|
|
||||||
function fn_changeQuestionType(searchQuestionType) {
|
function fn_changeQuestionType(searchQuestionType) {
|
||||||
$("#searchQuestionType").val(searchQuestionType);
|
$("#searchQuestionType").val(searchQuestionType);
|
||||||
fn_searchArticle($("#pageSize").val(), 1);
|
$("#searchKeyword").val("");
|
||||||
|
fn_searchArticle(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
<!-- FAQ 섹션 -->
|
||||||
|
<div class="location faq">
|
||||||
|
<h2 class="blind">FAQ 섹션영역</h2>
|
||||||
|
<div class="inner">
|
||||||
|
<div class="row-top">
|
||||||
|
<div class="location-box">
|
||||||
|
<ul class="loc">
|
||||||
|
<li>HOME</li>
|
||||||
|
<li>고객지원</li>
|
||||||
|
<li class="on">${pageTitle}</li>
|
||||||
|
</ul>
|
||||||
|
<ul class="tit">
|
||||||
|
<li><span>${pageTitle}</span></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="arr"><img src="/images/icon/icon-join-arr2.png" alt="화살표 아이콘"></div>
|
||||||
|
</div>
|
||||||
|
<div class="contents row-bottom">
|
||||||
|
<div class="list-box faq-box">
|
||||||
|
<div class="tab">
|
||||||
|
<ul class="tabs">
|
||||||
|
<li><a href="javascript:void(0);" onclick="fn_changeQuestionType('')">전체</a></li>
|
||||||
|
<c:forEach var="qTypeItem" items="${questionTypeList }">
|
||||||
|
<li><a href="javascript:void(0);" onclick="fn_changeQuestionType('${qTypeItem.sCodeId}')">${qTypeItem.sCodeNm}</a></li>
|
||||||
|
</c:forEach>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<h1>${pageTitle }</h1>
|
<div class="title">
|
||||||
|
<div class="list-search-wrap list-top">
|
||||||
|
<form name="articleForm" id="articleForm" method="post" onsubmit="return false;">
|
||||||
|
<input type="hidden" name="pageSize" id="pageSize" value="${searchArticle.pageSize }" />
|
||||||
|
<input type="hidden" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex }" size="5" maxlength="5" />
|
||||||
|
<input type="hidden" name="articleId" id="articleId" title="게시글번호" value="" readonly />
|
||||||
|
<input type="hidden" name="searchQuestionType" id="searchQuestionType" value="" title="유형코드" />
|
||||||
|
<input type="hidden" name="articleNo" id="articleNo" value="" title="선택글번호" />
|
||||||
|
|
||||||
메시지 : ${message}
|
<div class="left">
|
||||||
|
<div class="total-count" name="cntResult" id="cntResult"><span class="count">총 <em name="itemsCount" id="itemsCount">0</em>건</span></div>
|
||||||
|
<div class="total-count" style="display: none;" name="searchResult" id="searchResult">
|
||||||
|
<span class="count"><em name="searchKeywordPrt" id="searchKeywordPrt"></em>에 대한 겸색결과는 총 <em name="searchItemsCount" id="searchItemsCount">4</em>건 입니다.</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div name="listResult" id="listResult">
|
<div class="right">
|
||||||
총 <span name="itemsCount" id="itemsCount"></span>건<br>
|
<div class="list-select type">
|
||||||
</div>
|
<label for="searchType">
|
||||||
|
<select name="searchType" id="searchType">
|
||||||
|
<option value="T" <c:if test='${searchArticle.searchType == "T" }'>selected</c:if> >제목</option>
|
||||||
|
<option value="C" <c:if test='${searchArticle.searchType == "C" }'>selected</c:if> >내용</option>
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="list-input">
|
||||||
|
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" placeholder="검색어를 입력하세요" value="${searchArticle.searchKeyword }" maxlength="20" />
|
||||||
|
<label for="btnSearch">
|
||||||
|
<button id="btnSearch" name="btnSearch" type="button">검색</button>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div style="display:none;" name="searchResult" id="searchResult">
|
<div class="tab_content">
|
||||||
'<span name="searchKeywordPrt" id="searchKeywordPrt"></span>' 에 대한 검색결과는 총 <span name="searchItemsCount" id="searchItemsCount"></span>건 입니다.<br>
|
<div class="tabs_item">
|
||||||
</div>
|
|
||||||
|
|
||||||
<br/>
|
<div class="list-accordion">
|
||||||
|
<ul class="list-faq">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ul id="paging" class="paging"></ul>
|
||||||
|
|
||||||
<!-- 유형선택 -->
|
</div>
|
||||||
<table>
|
</div>
|
||||||
<tr>
|
</div>
|
||||||
<td><a href="javascript:void(0);" onclick="fn_changeQuestionType('')">전체</a></td>
|
|
||||||
<c:forEach var="qTypeItem" items="${questionTypeList }">
|
|
||||||
<td><a href="javascript:void(0);" onclick="fn_changeQuestionType('${qTypeItem.sCodeId}')">${qTypeItem.sCodeNm}</a></td>
|
|
||||||
</c:forEach>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
<br>
|
|
||||||
|
|
||||||
<form name="articleForm" id="articleForm" method="post" action="${pageContext.request.contextPath}/bbs/selectFaqArticle.do">
|
|
||||||
|
|
||||||
<!-- 검색조건 -->
|
|
||||||
<input type="text" name="pageSize" id="pageSize" value="${searchArticle.pageSize }" />
|
|
||||||
|
|
||||||
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex }" size="5" maxlength="5" />
|
|
||||||
|
|
||||||
<select name="searchType" id="searchType">
|
|
||||||
<option value="T" <c:if test='${searchArticle.searchType == "T" }'>selected</c:if> >제목</option>
|
|
||||||
<option value="C" <c:if test='${searchArticle.searchType == "C" }'>selected</c:if> >내용</option>
|
|
||||||
</select>
|
|
||||||
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="${searchArticle.searchKeyword }" maxlength="20" />
|
|
||||||
<input type="text" name="articleId" id="articleId" title="게시글번호" value="" readonly />
|
|
||||||
<input type="button" name="btnSearch" id="btnSearch" title="검색" value="검색" />
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
<div id="jsGrid" name="jsGrid" style="height: 100%"></div>
|
|
||||||
|
|
||||||
|
|
||||||
<input type="text" name="searchQuestionType" id="searchQuestionType" value="" title="유형코드" readonly />
|
|
||||||
<input type="text" name="articleNo" id="articleNo" value="" title="선택글번호" readonly />
|
|
||||||
|
|
||||||
</form>
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- 첨부파일 다운로드용 폼 -->
|
<!-- 첨부파일 다운로드용 폼 -->
|
||||||
<form name="downloadFileForm" id="downloadFileForm"
|
<form name="downloadFileForm" id="downloadFileForm"
|
||||||
action="${pageContext.request.contextPath}/fileupload/downloadAttachFile.do"
|
action="${pageContext.request.contextPath}/fileupload/downloadAttachFile.do"
|
||||||
method="post">
|
method="post">
|
||||||
<input type="text" name="bdType" id="bdType" value="FAQ" readonly />
|
<input type="hidden" name="bdType" id="bdType" value="FAQ" readonly />
|
||||||
<input type="text" name="attachFileId" id="attachFileId" value="" readonly />
|
<input type="hidden" name="attachFileId" id="attachFileId" value="" readonly />
|
||||||
<input type="text" name="streFileNm" id="streFileNm" value="" readonly />
|
<input type="hidden" name="streFileNm" id="streFileNm" value="" readonly />
|
||||||
<input type="text" name="fileSn" id="fileSn" value="" readonly />
|
<input type="hidden" name="fileSn" id="fileSn" value="" readonly />
|
||||||
<input type="text" name="orignlFileNm" id="orignlFileNm" value="" readonly />
|
<input type="hidden" name="orignlFileNm" id="orignlFileNm" value="" readonly />
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
|
|||||||
@ -47,6 +47,10 @@
|
|||||||
|
|
||||||
$( document ).ready(function() {
|
$( document ).ready(function() {
|
||||||
|
|
||||||
|
if(!fn_isEmpty('${message}')) {
|
||||||
|
alert("${message}");
|
||||||
|
}
|
||||||
|
|
||||||
//=======================================================
|
//=======================================================
|
||||||
// 그리드 생성 환경설정
|
// 그리드 생성 환경설정
|
||||||
//=======================================================
|
//=======================================================
|
||||||
|
|||||||
@ -37,10 +37,9 @@
|
|||||||
|
|
||||||
$( document ).ready(function() {
|
$( document ).ready(function() {
|
||||||
|
|
||||||
if('${message}' != "null" && '${message}' != "") {
|
if(!fn_isEmpty('${message}')) {
|
||||||
alert("${message}");
|
alert("${message}");
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// 목록으로 이동
|
// 목록으로 이동
|
||||||
@ -145,21 +144,21 @@ function fn_downloadFile(attachFileId, fileSn) {
|
|||||||
<form name="articleForm" id="articleForm"
|
<form name="articleForm" id="articleForm"
|
||||||
action="${pageContext.request.contextPath}/bbs/listAncmnts.do"
|
action="${pageContext.request.contextPath}/bbs/listAncmnts.do"
|
||||||
method="post">
|
method="post">
|
||||||
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex}" readonly />
|
<input type="hidden" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex}" readonly />
|
||||||
<input type="text" name="pageSize" id="pageSize" title="목록에 보여줄 글개수" value="${searchArticle.pageSize}" readonly />
|
<input type="hidden" name="pageSize" id="pageSize" title="목록에 보여줄 글개수" value="${searchArticle.pageSize}" readonly />
|
||||||
<input type="text" name="searchType" id="searchType" title="검색구분" value="${searchArticle.searchType}" readonly />
|
<input type="hidden" name="searchType" id="searchType" title="검색구분" value="${searchArticle.searchType}" readonly />
|
||||||
<input type="text" name="searchKeyword" id="searchKeyword" title="검색어" value="${searchArticle.searchKeyword}" readonly />
|
<input type="hidden" name="searchKeyword" id="searchKeyword" title="검색어" value="${searchArticle.searchKeyword}" readonly />
|
||||||
<input type="text" name="articleId" id="articleId" title="선택글번호" value="${searchArticle.articleId}" readonly />
|
<input type="hidden" name="articleId" id="articleId" title="선택글번호" value="${searchArticle.articleId}" readonly />
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<!-- 첨부파일 다운로드용 폼 -->
|
<!-- 첨부파일 다운로드용 폼 -->
|
||||||
<form name="downloadFileForm" id="downloadFileForm"
|
<form name="downloadFileForm" id="downloadFileForm"
|
||||||
action="${pageContext.request.contextPath}/fileupload/downloadAttachFile.do"
|
action="${pageContext.request.contextPath}/fileupload/downloadAttachFile.do"
|
||||||
method="post">
|
method="post">
|
||||||
<input type="text" name="bdType" id="bdType" value="ANCMNT" readonly />
|
<input type="hidden" name="bdType" id="bdType" value="ANCMNT" readonly />
|
||||||
<input type="text" name="attachFileId" id="attachFileId" value="" readonly />
|
<input type="hidden" name="attachFileId" id="attachFileId" value="" readonly />
|
||||||
<input type="text" name="streFileNm" id="streFileNm" value="" readonly />
|
<input type="hidden" name="streFileNm" id="streFileNm" value="" readonly />
|
||||||
<input type="text" name="fileSn" id="fileSn" value="" readonly />
|
<input type="hidden" name="fileSn" id="fileSn" value="" readonly />
|
||||||
<input type="text" name="orignlFileNm" id="orignlFileNm" value="" readonly />
|
<input type="hidden" name="orignlFileNm" id="orignlFileNm" value="" readonly />
|
||||||
|
|
||||||
</form>
|
</form>
|
||||||
@ -40,6 +40,13 @@
|
|||||||
|
|
||||||
<script type="text/javaScript" language="javascript">
|
<script type="text/javaScript" language="javascript">
|
||||||
|
|
||||||
|
$( document ).ready(function() {
|
||||||
|
|
||||||
|
if(!fn_isEmpty('${message}')) {
|
||||||
|
alert("${message}");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
// 목록으로 이동
|
// 목록으로 이동
|
||||||
function fn_list() {
|
function fn_list() {
|
||||||
$("#articleForm").submit();
|
$("#articleForm").submit();
|
||||||
|
|||||||
@ -27,13 +27,7 @@ function goSearch(){
|
|||||||
|
|
||||||
function fn_getMemberCard() {
|
function fn_getMemberCard() {
|
||||||
|
|
||||||
// 클릭 시, 컨텐츠 로딩되도록 처리 (2021.10.20 DDDDDDDDDD 추가) : 시작
|
fn_layerPopWithClass("/userInfo/getMemberQrcodeFormPopup.do", "pop-member");
|
||||||
$("#NLIB_LAYER_POPUP").addClass("pop-member");
|
|
||||||
$("#NLIB_LAYER_POPUP").load("/userInfo/getMemberQrcode.do");
|
|
||||||
// 클릭 시, 컨텐츠 로딩되도록 처리 (2021.10.20 DDDDDDDDDD 추가) : 종료
|
|
||||||
|
|
||||||
$('.pop-advanced-search').fadeIn();
|
|
||||||
$('html,body').addClass('no-scroll');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@ -37,31 +37,32 @@
|
|||||||
<c:set var="pageTitle">회원증</c:set>
|
<c:set var="pageTitle">회원증</c:set>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 회원증 팝업 -->
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<div class="row Title">
|
<div class="row Title">
|
||||||
<h3>내 회원증 확인</h3>
|
<h3>회원증</h3>
|
||||||
<p>QR코드를 리더기에 스캔하세요.</p>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="row card">
|
<div class="row card">
|
||||||
<div class="title">
|
<div class="title">
|
||||||
<p class="name">${loginVO.name}</p>
|
<p class="name">${loginVO.name}</p>
|
||||||
<p class="date">${dateStr}</p>
|
<p class="date">${dateStr}</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="qr">
|
||||||
|
<p>QR코드를 리더기에 스캔하세요.</p>
|
||||||
|
<img src="${pageContext.request.contextPath}/userInfo/getMemberQrcode.do" alt="QR코드 이미지">
|
||||||
|
</div>
|
||||||
<div class="code">
|
<div class="code">
|
||||||
<div class="num">
|
<div class="num">
|
||||||
<div class="na">회원코드</div>
|
<div class="na">회원코드</div>
|
||||||
<div class="co">${loginVO.mbInfoId}</div>
|
<div class="co">${loginVO.mbInfoId}</div>
|
||||||
<div class="pr"><progress id="bar" value="30" max="60"></progress></div>
|
|
||||||
<div class="ti">남은시간<span class="timer">23초</span></div>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="qr">
|
|
||||||
<img src="${pageContext.request.contextPath}/userInfo/getMemberQrcode.do" alt="QR코드 이미지">
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="rolling">
|
|
||||||
<p><marquee>※ 캡쳐한 회원증을 통한 자료대출 및 열람을 불허합니다. ※ 캡쳐한 회원증을 통한 자료대출 및 열람을 불허합니다.</marquee></p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<button type="button" class="login-close"></button>
|
<div class="text">
|
||||||
|
<p>※ 캡쳐한 회원증을 통한 자료대출 및 열람을 불허합니다.</p>
|
||||||
|
</div>
|
||||||
|
<button type="button" class="member-close" onclick="fn_closeLayerPopup()"></button>
|
||||||
|
<div class="innerbg"></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="Bg"></div>
|
<div class="Bg"></div>
|
||||||
|
|
||||||
@ -1010,8 +1010,8 @@
|
|||||||
<div class="Bg"></div>
|
<div class="Bg"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- 회원증 팝업 -->
|
<!-- 회원증 팝업 style="display:none; -->
|
||||||
<div class="pop-member" style="display:none;">
|
<div class="pop-member"">
|
||||||
<div class="inner">
|
<div class="inner">
|
||||||
<div class="row Title">
|
<div class="row Title">
|
||||||
<h3>회원증</h3>
|
<h3>회원증</h3>
|
||||||
|
|||||||
@ -188,15 +188,6 @@ $(document).ready(function(){
|
|||||||
$('.pop-change').fadeOut();
|
$('.pop-change').fadeOut();
|
||||||
});
|
});
|
||||||
|
|
||||||
// 알림 아코디언
|
|
||||||
$('.list-accordion .question').on('click', function() {
|
|
||||||
$('.list-accordion .answer').stop().slideUp(300);
|
|
||||||
$(this).next('.answer').stop().slideDown(300);
|
|
||||||
|
|
||||||
$('.list-accordion .question').removeClass('on');
|
|
||||||
$(this).addClass('on');
|
|
||||||
});
|
|
||||||
|
|
||||||
/* 메인 메뉴 반응형 */
|
/* 메인 메뉴 반응형 */
|
||||||
jQuery(function($) {
|
jQuery(function($) {
|
||||||
$.fn.responsivenav = function(args) {
|
$.fn.responsivenav = function(args) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user