OneToOneQnaFormWeb.html 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  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 : OneToOneQnaFormWeb.html
  9. * @desc : 1:1문의 Page
  10. *============================================================================
  11. * STYLE24
  12. * Copyright(C) 2020 TSIT, All rights reserved.
  13. *============================================================================
  14. * VER DATE AUTHOR DESCRIPTION
  15. * === =========== ========== =============================================
  16. * 1.0 2021.02.19 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">1:1문의</li>
  27. </ul>
  28. </div>
  29. <div class="wrap">
  30. <div class="content contactUs">
  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>1:1 문의</h3>
  39. </div>
  40. <div class="sec_body">
  41. <div class="history_wrap clear">
  42. <div class="hist_status">
  43. <ul>
  44. <li>
  45. <span>총 문의</span>
  46. <a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.totCnt}">12</a>
  47. </li>
  48. <li>
  49. <span>답변 완료</span>
  50. <a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.ansCnt}">8</a>
  51. </li>
  52. <li>
  53. <span>처리 중</span>
  54. <a href="javascript:void(0);" onclick="" th:text="${qnaCountInfo.ingCnt}" class="doing">0</a>
  55. </li>
  56. </ul>
  57. </div>
  58. <div class="txt">
  59. <p>궁금하신 점은 우측 문의하기를 통해 남겨주세요.<br/>문의를 남겨 주시면 24시간 이내(토/일/공휴일 제외)에<br/> 답변 드릴 수 있도록 최선을 다 하겠습니다.</p>
  60. </div>
  61. <div class="fr btn_area">
  62. <button type="button" class="btn" onclick="cfnGoToPage(_PAGE_ONETOONE_QNA_REG);"><span>1:1 문의하기</span></button>
  63. </div>
  64. </div>
  65. <div class="ui_row" id="divQna"> <!-- 데이터 없을시 클래스 nodata 추가 -->
  66. <!-- list -->
  67. <div class="foldGroup case1">
  68. <ul id="ulQna">
  69. </ul>
  70. </div>
  71. <!-- //list -->
  72. </div>
  73. <div class="ui_foot">
  74. <div class="ui_row">
  75. <ul class="pageNav" id="pageNav">
  76. </ul>
  77. </div>
  78. </div>
  79. </div>
  80. </div>
  81. </div>
  82. <!-- // CONT-BODY -->
  83. </div>
  84. </div>
  85. </div>
  86. </div>
  87. <!-- // container -->
  88. <!-- 문의 이미지 팝업 -->
  89. <div class="modal fade cs_pop contact_img_pop" id="contactImgPop" tabindex="-1" role="dialog" aria-labelledby="contactImgLabel" aria-hidden="true">
  90. <div class="modal-dialog" role="document">
  91. <div class="modal-content">
  92. <div class="modal-header sr-only">
  93. <h5 class="modal-title" id="contactImgLabel">이미지 상세보기</h5>
  94. </div>
  95. <div class="modal-body">
  96. <div class="pop_cont">
  97. <div class="swiper-container">
  98. <div class="swiper-wrapper">
  99. <!-- 이미지 슬라이드 영역 -->
  100. </div>
  101. </div>
  102. <div class="swiper-button-next"></div>
  103. <div class="swiper-button-prev"></div>
  104. <div class="swiper-pagination"></div>
  105. </div>
  106. </div>
  107. </div>
  108. </div>
  109. </div>
  110. <!-- //문의 이미지 팝업 -->
  111. <form id="qnaForm" name="qnaForm" action="#" th:action="@{'/callcenter/onetoone/qna/list'}">
  112. <input type="hidden" name="pageNo" value ="1"/>
  113. <input type="hidden" name="pageSize" value ="10"/>
  114. </form>
  115. <script src="/ux/plugins/gaga/gaga.paging.js"></script>
  116. <script th:inline="javascript">
  117. /*<![CDATA[*/
  118. //슬라이드 - 문의 이미지 팝업
  119. var contactPopSwiper = new Swiper('.cs_pop.contact_img_pop .swiper-container', {
  120. navigation: {
  121. nextEl: '.cs_pop.contact_img_pop .swiper-button-next',
  122. prevEl: '.cs_pop.contact_img_pop .swiper-button-prev',
  123. },
  124. pagination: {
  125. el: '.cs_pop.contact_img_pop .swiper-pagination',
  126. clickable: true,
  127. },
  128. observer:true,
  129. observeParents: true,
  130. });
  131. // 팝업 - 문의 이미지 슬라이드
  132. $(document).on('click','.contactUs .img_group .thumb_pic',function(e){
  133. $("#contactImgPop .swiper-wrapper").empty();
  134. var popSlideIndex = $(this).index();
  135. contactPopSwiper.slideTo(popSlideIndex);
  136. contactPopSwiper.update();
  137. var contactImglength = $('.contactUs .img_group .thumb_pic').length;
  138. var popImgHtml = "";
  139. for (i = 1; i <= contactImglength; i++) {
  140. var contactImg = $(this).find('img');
  141. var contactImgSrc = $('.img_group .thumb_pic:nth-child('+i+') img').attr('src');
  142. popImgHtml += "<div class='swiper-slide'><div class='pop_img' style='background-image:url("+ contactImgSrc +")'></div></div>";
  143. }
  144. $("#contactImgPop .swiper-wrapper").append(popImgHtml);
  145. $('#contactImgPop').modal("show");
  146. return false;
  147. });
  148. $(document).ready(function() {
  149. // 고객센터 LNB 설정
  150. fnSetCallcenterLnb(2);
  151. fnGetList();
  152. });
  153. let fnGetList = function() {
  154. // Initialize a pagination
  155. gagaPaging.init('qnaForm', fnGetListCallback, 'pageNav', 10);
  156. // Load data
  157. gagaPaging.load(1);
  158. }
  159. var fnGetListCallback = function(result) {
  160. $('#ulQna').html('');
  161. // 목록
  162. if (result.dataList != null && result.dataList.length > 0) {
  163. $.each(result.dataList, function(idx, item) {
  164. let tag = '<li>\n';
  165. tag += ' <div class="fold_head">\n';
  166. tag += ' <a href="javascript:void(0)">\n';
  167. tag += ' <div>\n';
  168. tag += ' <span class="fold_state ' + (item.ansStat == "G060_10" ? "doing" : "done") + '">' + item.ansStatNm + '</span>\n'; //답변완료 : done / 처리중 : doing
  169. tag += ' <div class="fold_tit">\n';
  170. tag += ' <span class="prod">[' + item.counselClsfNm + ']</span>\n';
  171. tag += ' <span>' + item.questTitle + '</span>\n';
  172. tag += ' </div>\n';
  173. tag += ' <span class="data">' + item.questDt + '</span>\n';
  174. tag += ' </div>\n';
  175. tag += ' </a>\n';
  176. tag += ' </div>\n';
  177. tag += ' <div class="fold_cont" style="display: none;">\n';
  178. tag += ' <div class="fold_detail">\n'; //문의 내용
  179. tag += ' <div>\n';
  180. tag += ' <p>' + item.questContent + '</p>\n';
  181. if (!gagajf.isNull(item.sysFileNm1) || !gagajf.isNull(item.sysFileNm2)) {
  182. tag += ' <p class="img_group">\n';
  183. if (!gagajf.isNull(item.sysFileNm1)) {
  184. tag += ' <span class="thumb_pic">\n';
  185. tag += ' <img src="' + _uploadImageUrl + '/counsel/' + item.sysFileNm1 + '" alt="" onerror="this.src=\'/image/bg_profile.png\'">\n';
  186. tag += ' </span>\n';
  187. }
  188. if (!gagajf.isNull(item.sysFileNm2)) {
  189. tag += ' <span class="thumb_pic">\n';
  190. tag += ' <img src="' + _uploadImageUrl + '/counsel/' + item.sysFileNm2 + '" alt="" onerror="this.src=\'/image/bg_profile.png\'">\n';
  191. tag += ' </span>\n';
  192. }
  193. tag += ' </p>\n';
  194. }
  195. tag += ' </div>\n';
  196. if (item.ansStat == 'G060_10') { // 처리중일때
  197. tag += ' <button type="button" class="btn btn_default btn_del" onclick="fnDeleteQna(' + item.counselSq + ');"><span><i class="ico ico_trash"></i>삭제</span></button>\n';
  198. }
  199. tag += ' </div>\n';
  200. if (item.ansStat == 'G060_20') { // 답변완료 상태일 때
  201. tag += ' <div class="fold_answer">\n'; //문의 답변
  202. tag += ' <div class="answer_head">답변이 등록되었습니다.</div>\n';
  203. tag += ' <div class="answer_body">' + item.ansContent + '</div>\n';
  204. tag += ' <span class="data">' + item.ansDt + '</span>\n';
  205. tag += ' </div>\n';
  206. }
  207. tag += ' </div>\n';
  208. tag += '</li>\n';
  209. $('#ulQna').append(tag);
  210. });
  211. } else {
  212. let tag = '<li>내역이 없습니다.</li>\n';
  213. $('#ulQna').append(tag);
  214. $('#divQna').addClass('nodata');
  215. }
  216. // Create pagination
  217. gagaPaging.createPagination(result.paging.pageable);
  218. }
  219. // 삭제
  220. let fnDeleteQna = function(counselSq) {
  221. mcxDialog.confirm("등록된 내용을 삭제하시겠습니까?", {
  222. cancelBtnText: "취소",
  223. sureBtnText: "확인",
  224. sureBtnClick: function() {
  225. let params = new Object();
  226. params.counselSq = counselSq;
  227. var jsonData = JSON.stringify(params);
  228. gagajf.ajaxJsonSubmit('/callcenter/onetoone/qna/delete'
  229. , jsonData
  230. , function() {
  231. fnGetList();
  232. });
  233. }
  234. });
  235. }
  236. /*]]>*/
  237. </script>
  238. </th:block>
  239. </body>
  240. </html>