FAQ 퍼블 적용 작업

This commit is contained in:
KNKIM 2021-11-02 14:56:16 +09:00
parent 4c77981595
commit a5be071b81
14 changed files with 274 additions and 271 deletions

View File

@ -31,6 +31,7 @@ import nlib.cmm.crypto.NlibPasswordEncoder;
import nlib.cmm.service.CodeService;
import nlib.cmm.service.NlibProperty;
import nlib.cmm.service.NotificationVO;
import nlib.cmm.service.PagingVO;
import nlib.restful.service.DataApiReqVO;
import nlib.restful.service.DataApiResVO;
import nlib.user.service.NlibLoginVO;
@ -64,7 +65,7 @@ public class FaqController extends NlibCommonController {
) 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("searchArticle", searchArticleVO);
@ -102,6 +103,14 @@ public class FaqController extends NlibCommonController {
retMap.put("data", list);
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);
}

View File

@ -34,6 +34,7 @@ import nlib.bbs.service.QnaService;
import nlib.cmm.NlibCommonController;
import nlib.cmm.service.CodeService;
import nlib.cmm.service.NlibProperty;
import nlib.cmm.service.PagingVO;
import nlib.user.service.NlibLoginVO;
import nlib.util.StringUtil;
@ -123,6 +124,13 @@ public class QnaController extends NlibCommonController {
retMap.put("itemsCount", totRecordCount);
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);
}

View File

@ -18,7 +18,7 @@
</if>
<if test='searchType != null and searchType.equals("C")'>
<if test="searchKeyword != null and !searchKeyword.equals('')">
AND S.CONTENT LIKE CONCAT('%', #{escapeSearchKeyword}, '%')
AND IFNULL(S.CONTENT,'') LIKE CONCAT('%', #{escapeSearchKeyword}, '%')
</if>
</if>
AND IFNULL(S.DELETE_YN, 'N') = 'N'

View File

@ -19,7 +19,7 @@
</if>
<if test='searchType != null and searchType.equals("C")'>
<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 test='searchQuestionType != null and !searchQuestionType.equals("")'>

View File

@ -18,7 +18,7 @@
</if>
<if test='searchType != null and searchType.equals("C")'>
<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 test='searchMbInfoId != null and !searchMbInfoId.equals("")'>

View File

@ -37,12 +37,12 @@
$( document ).ready(function() {
if('${message}' != "null" && '${message}' != "") {
// 메시지 표출
if(!fn_isEmpty('${message}')) {
alert("${message}");
}
// 검색 버튼 클릭
// 검색 수행 이벤트
$("#btnSearch").on("click", function(e) {
fn_searchArticle(1);
});
@ -114,11 +114,13 @@
// 검색결과
if($("#searchKeyword").val() != "") {
$("#searchKeywordPrt").text($("#searchKeyword").val());
$("#searchKeywordPrt").text("'" + $("#searchKeyword").val() + "'");
$("#searchResult").show();
$("#cntResult").hide();
}
else {
$("#searchResult").hide();
$("#cntResult").show();
}
// 기존 데이터 CLEAR
@ -170,18 +172,20 @@
<div class="contents-frame inner-center">
<div class="list-header">
<!-- 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>
<input type="text" name="pageSize" id="pageSize" value="${searchArticle.pageSize }" />
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex }" />
<input type="text" name="articleId" id="articleId" title="게시글번호" value="" />
<input type="text" name="articleNo" id="articleNo" value="" title="선택글번호" />
<input type="hidden" name="pageSize" id="pageSize" value="${searchArticle.pageSize }" />
<input type="hidden" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex }" />
<input type="hidden" name="articleId" id="articleId" title="게시글번호" value="" />
<input type="hidden" name="articleNo" id="articleNo" value="" title="선택글번호" />
<legend>공지 검색</legend>
<div class="left">
<div class="total-count"><span class="count">총 <em><span name="itemsCount" id="itemsCount">0</span></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" 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 class="right">
<div class="list-select type">
@ -219,7 +223,6 @@
</div>
<ul id="paging" class="paging"></ul>
</div>
<!-- //contents-frame -->
</div>

View File

@ -31,127 +31,25 @@
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ 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>
<html lang="ko">
<head>
<title>${pageTitle}</title>
<script type="text/javaScript" language="javascript">
<!-- GRID -->
<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>
$( document ).ready(function() {
<script type="text/javaScript" language="javascript">
$( 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(!fn_isEmpty('${message}')) {
alert("${message}");
}
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) {
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
// 선택한 글 상세 보기로 이동
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 inputData = { "articleId" : articleId };
@ -178,40 +79,101 @@
data: JSON.stringify(inputData),
}).done(function(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'>" +
+ "<br/>" + jsonObj.data.answer;
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>";
$('.list-accordion .answer').html("");
$qObj.next(".answer").html(answerHtml);
$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) {
$("#jsGrid").jsGrid("search"
, {'pageSize' : (pageSize ? pageSize : fn_getIntValue("pageSize", ${searchArticle.pageSize}) ),
'pageIndex' : (pageIndex ? pageIndex : fn_getIntValue("pageIndex", ${searchArticle.pageIndex}))
}
);
}
function fn_searchArticle(pageIndex) {
if(fn_isEmpty(pageIndex)) pageIndex = $("#pageIndex").val();
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) {
@ -235,77 +197,102 @@ function fn_downloadFile(attachFileId, fileSn) {
function fn_changeQuestionType(searchQuestionType) {
$("#searchQuestionType").val(searchQuestionType);
fn_searchArticle($("#pageSize").val(), 1);
$("#searchKeyword").val("");
fn_searchArticle(1);
}
</script>
</head>
<body>
<h1>${pageTitle }</h1>
메시지 : ${message}
<div name="listResult" id="listResult">
총 <span name="itemsCount" id="itemsCount"></span>건<br>
</div>
<div style="display:none;" name="searchResult" id="searchResult">
'<span name="searchKeywordPrt" id="searchKeywordPrt"></span>' 에 대한 검색결과는 총 <span name="searchItemsCount" id="searchItemsCount"></span>건 입니다.<br>
</div>
&nbsp;<br/>
<!-- 유형선택 -->
<table>
<tr>
<td><a href="javascript:void(0);" onclick="fn_changeQuestionType('')">전체</a></td>
<!-- 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 }">
<td><a href="javascript:void(0);" onclick="fn_changeQuestionType('${qTypeItem.sCodeId}')">${qTypeItem.sCodeNm}</a></td>
<li><a href="javascript:void(0);" onclick="fn_changeQuestionType('${qTypeItem.sCodeId}')">${qTypeItem.sCodeNm}</a></li>
</c:forEach>
</tr>
</table>
<br>
</ul>
<form name="articleForm" id="articleForm" method="post" action="${pageContext.request.contextPath}/bbs/selectFaqArticle.do">
<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="선택글번호" />
<!-- 검색조건 -->
<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" />
<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 class="right">
<div class="list-select type">
<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>
<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 />
</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 class="tab_content">
<div class="tabs_item">
<div class="list-accordion">
<ul class="list-faq">
</ul>
</div>
<ul id="paging" class="paging"></ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 첨부파일 다운로드용 폼 -->
<form name="downloadFileForm" id="downloadFileForm"
action="${pageContext.request.contextPath}/fileupload/downloadAttachFile.do"
method="post">
<input type="text" name="bdType" id="bdType" value="FAQ" readonly />
<input type="text" name="attachFileId" id="attachFileId" value="" readonly />
<input type="text" name="streFileNm" id="streFileNm" value="" readonly />
<input type="text" name="fileSn" id="fileSn" value="" readonly />
<input type="text" name="orignlFileNm" id="orignlFileNm" value="" readonly />
<input type="hidden" name="bdType" id="bdType" value="FAQ" readonly />
<input type="hidden" name="attachFileId" id="attachFileId" value="" readonly />
<input type="hidden" name="streFileNm" id="streFileNm" value="" readonly />
<input type="hidden" name="fileSn" id="fileSn" value="" readonly />
<input type="hidden" name="orignlFileNm" id="orignlFileNm" value="" readonly />
</form>
</body>
</html>

View File

@ -47,6 +47,10 @@
$( document ).ready(function() {
if(!fn_isEmpty('${message}')) {
alert("${message}");
}
//=======================================================
// 그리드 생성 환경설정
//=======================================================

View File

@ -37,10 +37,9 @@
$( document ).ready(function() {
if('${message}' != "null" && '${message}' != "") {
if(!fn_isEmpty('${message}')) {
alert("${message}");
}
});
// 목록으로 이동
@ -145,21 +144,21 @@ function fn_downloadFile(attachFileId, fileSn) {
<form name="articleForm" id="articleForm"
action="${pageContext.request.contextPath}/bbs/listAncmnts.do"
method="post">
<input type="text" name="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex}" readonly />
<input type="text" name="pageSize" id="pageSize" title="목록에 보여줄 글개수" value="${searchArticle.pageSize}" readonly />
<input type="text" name="searchType" id="searchType" title="검색구분" value="${searchArticle.searchType}" readonly />
<input type="text" 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="pageIndex" id="pageIndex" title="페이지번호" value="${searchArticle.pageIndex}" readonly />
<input type="hidden" name="pageSize" id="pageSize" title="목록에 보여줄 글개수" value="${searchArticle.pageSize}" readonly />
<input type="hidden" name="searchType" id="searchType" title="검색구분" value="${searchArticle.searchType}" readonly />
<input type="hidden" name="searchKeyword" id="searchKeyword" title="검색어" value="${searchArticle.searchKeyword}" readonly />
<input type="hidden" name="articleId" id="articleId" title="선택글번호" value="${searchArticle.articleId}" readonly />
</form>
<!-- 첨부파일 다운로드용 폼 -->
<form name="downloadFileForm" id="downloadFileForm"
action="${pageContext.request.contextPath}/fileupload/downloadAttachFile.do"
method="post">
<input type="text" name="bdType" id="bdType" value="ANCMNT" readonly />
<input type="text" name="attachFileId" id="attachFileId" value="" readonly />
<input type="text" name="streFileNm" id="streFileNm" value="" readonly />
<input type="text" name="fileSn" id="fileSn" value="" readonly />
<input type="text" name="orignlFileNm" id="orignlFileNm" value="" readonly />
<input type="hidden" name="bdType" id="bdType" value="ANCMNT" readonly />
<input type="hidden" name="attachFileId" id="attachFileId" value="" readonly />
<input type="hidden" name="streFileNm" id="streFileNm" value="" readonly />
<input type="hidden" name="fileSn" id="fileSn" value="" readonly />
<input type="hidden" name="orignlFileNm" id="orignlFileNm" value="" readonly />
</form>

View File

@ -40,6 +40,13 @@
<script type="text/javaScript" language="javascript">
$( document ).ready(function() {
if(!fn_isEmpty('${message}')) {
alert("${message}");
}
});
// 목록으로 이동
function fn_list() {
$("#articleForm").submit();

View File

@ -27,13 +27,7 @@ function goSearch(){
function fn_getMemberCard() {
// 클릭 시, 컨텐츠 로딩되도록 처리 (2021.10.20 DDDDDDDDDD 추가) : 시작
$("#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');
fn_layerPopWithClass("/userInfo/getMemberQrcodeFormPopup.do", "pop-member");
}
</script>

View File

@ -37,31 +37,32 @@
<c:set var="pageTitle">회원증</c:set>
<!-- 회원증 팝업 -->
<div class="inner">
<div class="row Title">
<h3>내 회원증 확인</h3>
<p>QR코드를 리더기에 스캔하세요.</p>
<h3>회원증</h3>
</div>
<div class="row card">
<div class="title">
<p class="name">${loginVO.name}</p>
<p class="date">${dateStr}</p>
</div>
<div class="qr">
<p>QR코드를 리더기에 스캔하세요.</p>
<img src="${pageContext.request.contextPath}/userInfo/getMemberQrcode.do" alt="QR코드 이미지">
</div>
<div class="code">
<div class="num">
<div class="na">회원코드</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 class="qr">
<img src="${pageContext.request.contextPath}/userInfo/getMemberQrcode.do" alt="QR코드 이미지">
</div>
</div>
<div class="rolling">
<p><marquee>※ 캡쳐한 회원증을 통한 자료대출 및 열람을 불허합니다. ※ 캡쳐한 회원증을 통한 자료대출 및 열람을 불허합니다.</marquee></p>
</div>
<div class="text">
<p>※ 캡쳐한 회원증을 통한 자료대출 및 열람을 불허합니다.</p>
</div>
<button type="button" class="login-close"></button>
<button type="button" class="member-close" onclick="fn_closeLayerPopup()"></button>
<div class="innerbg"></div>
</div>
<div class="Bg"></div>

View File

@ -1010,8 +1010,8 @@
<div class="Bg"></div>
</div>
<!-- 회원증 팝업 -->
<div class="pop-member" style="display:none;">
<!-- 회원증 팝업 style="display:none; -->
<div class="pop-member"">
<div class="inner">
<div class="row Title">
<h3>회원증</h3>

View File

@ -188,15 +188,6 @@ $(document).ready(function(){
$('.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($) {
$.fn.responsivenav = function(args) {