FaqFormWeb.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. <!DOCTYPE html>
  2. <html lang="ko"
  3. xmlns:th="http://www.thymeleaf.org"
  4. xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
  5. layout:decorator="web/common/layout/CallcenterLayoutWeb">
  6. <!--
  7. *******************************************************************************
  8. * @source : FaqFormWeb.html
  9. * @desc : FAQ Page
  10. *============================================================================
  11. * STYLE24
  12. * Copyright(C) 2020 TSIT, All rights reserved.
  13. *============================================================================
  14. * VER DATE AUTHOR DESCRIPTION
  15. * === =========== ========== =============================================
  16. * 1.0 2021.01.29 gagamel 최초 작성
  17. *******************************************************************************
  18. -->
  19. <body>
  20. <th:block layout:fragment="content">
  21. <div id="container" class="container cs">
  22. <div class="breadcrumb">
  23. <ul>
  24. <li class="bread_home"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_MAIN);">홈</a></li>
  25. <li class="bread_2depth"><a href="javascript:void(0);" onclick="cfnGoToPage(_PAGE_FAQ);">고객센터</a></li>
  26. <li class="bread_3depth">FAQ</li>
  27. </ul>
  28. </div>
  29. <div class="wrap">
  30. <div class="content faq">
  31. <div class="cont_body">
  32. <!-- CONT-BODY -->
  33. <div class="lnb" id="callcenterLnb">
  34. </div>
  35. <div class="cont">
  36. <div>
  37. <div class="sec_head">
  38. <h3>FAQ</h3>
  39. </div>
  40. <div class="sec_body">
  41. <div class="quick_list mb50" th:if="${faqTop10List != null and !faqTop10List.empty}">
  42. <h4 class="subH3_eng mb20 c_black">자주 묻는 질문 TOP 10</h4>
  43. <ul>
  44. <li th:each="faqInfo, status : ${faqTop10List}">
  45. <a href="#quick_pop" rel="modal:open" th:text="${faqInfo.question}" th:attr="data-answer=${faqInfo.faqTypeNm + '|'+ #strings.replace(#strings.replace(faqInfo.answer,'&amplt;','<'),'&ampgt;','>')}" onclick="fnOpenFaqDetailPopup(this);">제품을 받았는데<br>반품을 하고 싶습니다.</a>
  46. </li>
  47. </ul>
  48. </div>
  49. <div class="search_wrap mb60" id="scrollInit">
  50. <h4 class="subH3_eng mb20 c_black">FAQ SEARCH</h4>
  51. <div class="faq_search t_c">
  52. <form id="faqForm" name="faqForm" class="search_box" action="#" th:action="@{'/callcenter/faq/list'}" th:method="post" onsubmit="fnSearchFaq(); return false;">
  53. <input type="hidden" name="faqType"/>
  54. <input type="hidden" name="pageNo" value ="1"/>
  55. <input type="hidden" name="pageSize" value ="10"/>
  56. <fieldset>
  57. <legend>FAQ 검색</legend>
  58. <input type="text" name="searchTxt" placeholder="검색어를 입력해 주세요" class="search_input" title="검색어 입력" maxlength="50"/>
  59. <button class="btn_search" onclick="fnSearchFaq(); return false;">찾기</button>
  60. </fieldset>
  61. </form>
  62. <p class="t_info">
  63. 찾으시는 문의 내용이 없으시면 '1:1 문의'를 이용해 주세요.
  64. </p>
  65. </div>
  66. </div>
  67. <div class="fold_nav">
  68. <ul id="ulFaqType">
  69. <li><a href="#none;" onclick="fnGetList(this, '', true);" class="on">전체</a></li>
  70. <li th:if="${faqTypeList != null and !faqTypeList.empty}" th:each="oneData, status : ${faqTypeList}">
  71. <a href="javascript:void(0);" th:onclick='fnGetList(this, [[${oneData.cd}]], true);' th:text="${oneData.cdNm}">상품문의</a>
  72. </li>
  73. </ul>
  74. </div>
  75. <div class="ui_row" id="divFaq"> <!-- 데이터 없을시 클래스 nodata 추가 -->
  76. <div class="foldGroup case1 mt50">
  77. <ul id="ulFaq">
  78. </ul>
  79. </div>
  80. </div>
  81. <div class="ui_foot">
  82. <div class="ui_row">
  83. <ul class="pageNav" id="pageNav">
  84. </ul>
  85. </div>
  86. </div>
  87. </div>
  88. </div>
  89. </div>
  90. <!-- // CONT-BODY -->
  91. </div>
  92. </div>
  93. </div>
  94. </div>
  95. <!-- // container -->
  96. <div class="modal fade faq_pop" id="quick_pop" tabindex="-1" role="dialog" aria-labelledby="modalScrollLabel" aria-hidden="true">
  97. <div class="modal-dialog" role="document">
  98. <div class="modal-content">
  99. <div class="modal-header">
  100. <p id="faqTypeNm">[취소/반품/교환]</p>
  101. <h5 class="modal-title" id="faqQuestion">제품을 받았는데 반품을 하고 싶습니다.</h5>
  102. </div>
  103. <div class="modal-body">
  104. <span>A</span>
  105. <div class="pop_cont" id="faqAnswer">
  106. <span>답변 내용은 아래와 같습니다.</span>
  107. 배송상태"상품준비중"은 당사 물류 센터 및 입점사에서 주문서 확인 후 상품 출고 작업중인 상태를 나타내며 <br>
  108. 택배 출고 송장번호는 일괄 등록이 되므로 실제 상품이 출고된 시간과 상이할 수 있습니다. <br><br>
  109. 고객님께 취소를 요청하신 시점이 이미 출고가 된 이후인 경우 <br>
  110. 제품 반품 시 부과되는 배송료는 고객님께서 부담 해주셔야 합니다. <br><br>
  111. 상품 수령 후 7일 이내 당사 고객센터(1544-5336) 또는 1:1 상담으로 접수해 주시면 처리가 가능합니다. <br>
  112. 보내주신 상품은 반품 담당자의 검수 후 환불 처리되며, 상품 훼손/세탁/택 제거/외부 착용 시 반품 처리가 불가합니다. <br><br>
  113. 더불어 상품 하자가 아닌 고객님의 단순 변심 및 착오 구매일 경우 반품 배송비는 고객님께서 부담해 주셔야 합니다. <br>
  114. (반품에 따라 무료배송 조건 불충족 시에는 왕복 배송료 부담) <br>
  115. 반품이 불가한 경우는 다음과 같습니다. <br><br>
  116. - 고객의 부주의로 상품이 회손된 경우 <br>
  117. - 포장을 개봉하였거나 포장이 훼손되어 상품가치가 현저히 상실된 경우 <br>
  118. - 고객의 사용 또는 일부 소비에 의하여 상품의 가치가 현저히 감소한 경우
  119. 배송상태"상품준비중"은 당사 물류 센터 및 입점사에서 주문서 확인 후 상품 출고 작업중인 상태를 나타내며 <br>
  120. 택배 출고 송장번호는 일괄 등록이 되므로 실제 상품이 출고된 시간과 상이할 수 있습니다. <br><br>
  121. 고객님께 취소를 요청하신 시점이 이미 출고가 된 이후인 경우 <br>
  122. 제품 반품 시 부과되는 배송료는 고객님께서 부담 해주셔야 합니다. <br><br>
  123. 상품 수령 후 7일 이내 당사 고객센터(1544-5336) 또는 1:1 상담으로 접수해 주시면 처리가 가능합니다. <br>
  124. 보내주신 상품은 반품 담당자의 검수 후 환불 처리되며, 상품 훼손/세탁/택 제거/외부 착용 시 반품 처리가 불가합니다. <br><br>
  125. 더불어 상품 하자가 아닌 고객님의 단순 변심 및 착오 구매일 경우 반품 배송비는 고객님께서 부담해 주셔야 합니다. <br>
  126. (반품에 따라 무료배송 조건 불충족 시에는 왕복 배송료 부담) <br>
  127. 반품이 불가한 경우는 다음과 같습니다. <br><br>
  128. </div>
  129. </div>
  130. </div>
  131. </div>
  132. </div>
  133. <script src="/ux/plugins/gaga/gaga.paging.js"></script>
  134. <script th:inline="javascript">
  135. /*<![CDATA[*/
  136. $(document).ready(function() {
  137. // 고객센터 LNB 설정
  138. fnSetCallcenterLnb(1);
  139. fnGetList();
  140. });
  141. let fnGetList = function(obj, faqType, isCallTab) {
  142. if (typeof(obj) != 'undefined') {
  143. $li = $(obj).parent('li').parent('ul').find('li>a');
  144. $li.each(function(i) {
  145. $(this).removeClass('on');
  146. });
  147. $(obj).addClass('on');
  148. }
  149. if (!gagajf.isNull(faqType)) {
  150. $('#faqForm input[name=faqType]').val(faqType);
  151. } else {
  152. $('#faqForm input[name=faqType]').val('');
  153. }
  154. if (isCallTab) {
  155. $('#faqForm input[name=searchTxt]').val('');
  156. }
  157. // Initialize a pagination
  158. gagaPaging.init('faqForm', fnGetListCallback, 'pageNav', 10);
  159. // Load data
  160. gagaPaging.load(1);
  161. }
  162. String.prototype.unescapeHtml = function(){
  163. return this.replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, "\"");
  164. };
  165. var idx = 1;
  166. var fnGetListCallback = function(result) {
  167. $('#ulFaq').html('');
  168. if (result.dataList != null && result.dataList.length > 0) {
  169. $.each(result.dataList, function(idx, item) {
  170. let tag = '<li>\n';
  171. tag += ' <div class="fold_head">\n';
  172. tag += ' <a href="javascript:void(0)" onclick="fnUpdateFaqReadCount(' + item.faqSq + ', this);">\n';
  173. tag += ' <div>\n';
  174. tag += ' <span class="fold_state">' + item.faqTypeNm + '</span>\n';
  175. tag += ' <div class="fold_tit">\n';
  176. tag += ' <span>' + item.question.unescapeHtml() + '</span>\n';
  177. tag += ' </div>\n';
  178. tag += ' </div>\n';
  179. tag += ' </a>\n';
  180. tag += ' </div>\n';
  181. tag += ' <div class="fold_cont" style="display: none;">\n';
  182. tag += ' <div class="fold_answer">\n';
  183. tag += ' <div>' + item.answer.replaceAll('&lt;','<').replaceAll('&gt;', '>').replaceAll('&quot;', '"').replaceAll('&amp;nbsp;', ' ') + '</div>\n';
  184. tag += ' </div>\n';
  185. tag += ' </div>\n';
  186. tag += '</li>\n';
  187. $('#ulFaq').append(tag);
  188. });
  189. $('#divFaq').removeClass('nodata');
  190. if(idx>1){
  191. // document.getElementById('scrollInit').scrollIntoView();
  192. // let sTop = document.getElementById("scrollInit").scrollHeight;
  193. var offset = $("#scrollInit").offset();
  194. $('html, body').animate({scrollTop : offset.top-100}, 300);
  195. }
  196. idx++;
  197. } else {
  198. let tag = '<li>내역이 없습니다.</li>\n';
  199. $('#ulFaq').append(tag);
  200. $('#divFaq').addClass('nodata');
  201. }
  202. // Create pagination
  203. gagaPaging.createPagination(result.paging.pageable);
  204. }
  205. let fnSearchFaq = function() {
  206. if (gagajf.isNull($('#faqForm input[name=searchTxt]').val())) {
  207. mcxDialog.alert('검색어를 입력해 주세요.');
  208. return;
  209. }
  210. $('#faqForm input[name=faqType]').val('');
  211. fnGetList($('#ulFaqType>li').eq(0).find('a'));
  212. }
  213. // FAQ상세팝업 오픈
  214. let fnOpenFaqDetailPopup = function(obj) {
  215. $('#faqQuestion').html($(obj).html());
  216. let answer = $(obj).data('answer');
  217. if (!gagajf.isNull(answer)) {
  218. $('#faqTypeNm').html('[' + answer.substring(0, answer.indexOf('|')) + ']');
  219. $('#faqAnswer').html('<span>답변 내용은 아래와 같습니다.</span>' + answer.substring(answer.indexOf('|') + 1).unescapeHtml().replace(/\n/g,'<br/>'));
  220. }
  221. }
  222. // FAQ 조회수 갱신
  223. let fnUpdateFaqReadCount = function(faqSq, obj) {
  224. if (!($(obj).parents('.fold_head').hasClass('on'))) {
  225. $.post('/callcenter/faq/readcount/update/' + faqSq
  226. , null
  227. , function() {
  228. // Do nothing
  229. }
  230. , 'json');
  231. }
  232. }
  233. /*]]>*/
  234. </script>
  235. </th:block>
  236. </body>
  237. </html>