knowledgeDetails.ftl 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <meta name="keywords"
  8. content="${article.categoryNames}" />
  9. <meta name="description" content="${article.profile}" />
  10. <title>${article.title}</title>
  11. <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
  12. <link href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700&display=swap&subset=latin-ext"
  13. rel="stylesheet">
  14. <link href="/css/bootstrap.css" rel="stylesheet">
  15. <link href="/css/font-awesome.css" rel="stylesheet">
  16. <link href="/css/swiper.css" rel="stylesheet">
  17. <link href="/css/magnific-popup.css" rel="stylesheet">
  18. <link href="/css/styles.css" rel="stylesheet">
  19. <link href="/css/reset.css" rel="stylesheet" >
  20. <link href="/css/tongyong.css" rel="stylesheet">
  21. <link href="/css/knowledgeField.css" rel="stylesheet" >
  22. </head>
  23. <body data-spy="scroll" data-target=".fixed-top" id="body">
  24. <div class="spinner-wrapper">
  25. <div class="spinner">
  26. <div class="bounce1"></div>
  27. <div class="bounce2"></div>
  28. <div class="bounce3"></div>
  29. </div>
  30. </div>
  31. <iframe id="headerIframe" src="/moduleView/header.html" class="iframeClass"></iframe>
  32. <div class="knowledgeFieldCon">
  33. <div v-if="isItForDetails" class="knowledgeDetails">
  34. <div class="returnIcon" id="returnIcon">
  35. <img src="/image/ions/zuos.png" />
  36. </div>
  37. <div class="knowledgeDetails-left">
  38. <div class="knowledgeDetails-left-title">
  39. ${article.title}
  40. <div class="previewTwo">预览量:${article.viewCount}</div>
  41. </div>
  42. <div class="dividingLine"></div>
  43. <div class="knowledgeDetails-left-con">
  44. <div class="flex distribution">
  45. <ul class="flex">
  46. <li class="grey">标签:</li>
  47. <#list categoryNameList as item>
  48. <li class="blue">${item}</li>
  49. </#list>
  50. </ul>
  51. </div>
  52. <div class="flex-center distribution timeContent">
  53. <p>发布时间</p>
  54. <span>${ article.createTimeStr }</span>
  55. </div>
  56. <div class="flex-center distribution readUse" style="justify-content: flex-end;">
  57. <div class="text">推荐使用:</div>
  58. <#if article?exists && article.productId?exists>
  59. <#if article.productId == "1">
  60. <a target="_blank" href="http://worktime.ttkuaiban.com/#/login" class="jumpToImg">工时管家</a>
  61. <#elseif article.productId == "2">
  62. <a target="_blank" href="http://clinic.ttkuaiban.com/#/login" class="jumpToImg">随访管家</a>
  63. <#elseif article.productId == "3">
  64. <a target="_blank" href="http://worktime.ttkuaiban.com/#/login" class="jumpToImg">项目管家</a>
  65. <#elseif article.productId == "4">
  66. <a target="_blank" href="http://crm.ttkuaiban.com/login" class="jumpToImg">客户管家</a>
  67. <#elseif article.productId == "5">
  68. <a target="_blank" href="http://workshop.ttkuaiban.com" class="jumpToImg">生产车间管家</a>
  69. <#else>
  70. <div class="jumpToImg">敬请期待</div>
  71. </#if>
  72. <#else>
  73. <div class="jumpToImg">敬请期待</div>
  74. </#if>
  75. </div>
  76. </div>
  77. <div class="hypertextContent" id="hypertextContent">
  78. ${ article.content }
  79. </div>
  80. <div class="knowledgeDetails-left-bottom flex-center"></div>
  81. </div>
  82. <div class="knowledgeDetails-right">
  83. <div class="latestArticles">
  84. <div class="knowledgeDetails-right-title">
  85. <div>最新文章</div>
  86. <a href="/articleTemplate/pageList/1" class="linkButton">查看更多></a>
  87. </div>
  88. <div class="line"></div>
  89. <div class="latestList">
  90. <#list latestList as item>
  91. <a href="/articleTemplate/articleDetail/${item.id}">
  92. <div class="latestList-item" data-item='${item.id}'>
  93. <div class="latestList-item-image">
  94. <img src="${item.coverImgUrl}" class="wh100"></img>
  95. </div>
  96. <div class="latestList-item-text">
  97. <div class="latestList-item-text-title">${ item.title }</div>
  98. <div class="data">${ item.createTimeStr }</div>
  99. </div>
  100. </div>
  101. </a>
  102. </#list>
  103. </div>
  104. </div>
  105. <div class="relatedRecommendations">
  106. <div class="knowledgeDetails-right-title">
  107. <div>相关推荐</div>
  108. <a href="/articleTemplate/pageList/1" class="linkButton">查看更多></a>
  109. </div>
  110. <div class="line"></div>
  111. <div class="latestList">
  112. <#list relatedList as item>
  113. <a href="/articleTemplate/articleDetail/${item.id}">
  114. <div class="latestList-item" data-item='${item.id}'>
  115. <div class="latestList-item-image">
  116. <img src="${item.coverImgUrl}" class="wh100"></img>
  117. </div>
  118. <div class="latestList-item-text">
  119. <div class="latestList-item-text-title">${ item.title }</div>
  120. <div class="data">${item.createTimeStr}</div>
  121. </div>
  122. </div>
  123. </a>
  124. </#list>
  125. </div>
  126. </div>
  127. </div>
  128. </div>
  129. <div class="modal" id="imageModal">
  130. <div class="layout" id="modalLayout">
  131. <button class="prev" id="prevBtn">
  132. <img src="/image/customer/zuo.png" />
  133. </button>
  134. <div class="modalImage">
  135. <img id="modalImage" src="" alt="Preview">
  136. </div>
  137. <button class="next" id="nextBtn">
  138. <img src="/image/customer/you.png" />
  139. </button>
  140. </div>
  141. </div>
  142. </div>
  143. </body>
  144. <script src="/js/js/jquery.min.js"></script> <!-- jQuery for Bootstrap's JavaScript plugins -->
  145. <script src="/js/js/popper.min.js"></script> <!-- Popper tooltip library for Bootstrap -->
  146. <script src="/js/js/bootstrap.min.js"></script> <!-- Bootstrap framework -->
  147. <script src="/js/js/jquery.easing.min.js"></script> <!-- jQuery Easing for smooth scrolling between anchors -->
  148. <script src="/js/js/swiper.min.js"></script> <!-- Swiper for image and text sliders -->
  149. <script src="/js/js/jquery.magnific-popup.js"></script> <!-- Magnific Popup for lightboxes -->
  150. <script src="/js/js/validator.min.js"></script> <!-- Validator.js - Bootstrap plugin that validates forms -->
  151. <script src="/js/js/scripts.js"></script>
  152. <script src="/js/iframe.js"></script>
  153. <script>
  154. $(document).ready(function() {
  155. const images = $('#hypertextContent img');
  156. images.on('click', function() {
  157. currentImageIndex = images.index(this);
  158. $('#modalImage').attr('src', $(this).attr('src'));
  159. $('#imageModal').fadeIn();
  160. updateButtons();
  161. });
  162. $('#prevBtn').on('click', function() {
  163. if (currentImageIndex > 0) {
  164. currentImageIndex--;
  165. $('#modalImage').attr('src', $(images[currentImageIndex]).attr('src'));
  166. updateButtons();
  167. }
  168. });
  169. $('#nextBtn').on('click', function() {
  170. if (currentImageIndex < images.length - 1) {
  171. currentImageIndex++;
  172. $('#modalImage').attr('src', $(images[currentImageIndex]).attr('src'));
  173. updateButtons();
  174. }
  175. });
  176. function updateButtons() {
  177. $('#prevBtn').prop('disabled', currentImageIndex === 0);
  178. $('#nextBtn').prop('disabled', currentImageIndex === images.length - 1);
  179. }
  180. $('#modalLayout').on('click', function(event) {
  181. if ($(event.target).is('#modalLayout')) {
  182. $('#imageModal').fadeOut();
  183. }
  184. });
  185. });
  186. const knowledgeDetails = '/articleTemplate/articleDetail'
  187. function toKnowledge() {
  188. window.location.href = `/articleTemplate/pageList/1`
  189. }
  190. $('#returnIcon').click(function () {
  191. window.history.back()
  192. })
  193. $('#imgClick').click(function () {
  194. const id = ${article.productId}
  195. const jumpObject = {
  196. '1': 'http://worktime.ttkuaiban.com/#/login',
  197. '2': 'http://clinic.ttkuaiban.com/#/login',
  198. '3': 'http://worktime.ttkuaiban.com/#/login',
  199. '4': 'http://crm.ttkuaiban.com/login',
  200. '5': 'http://workshop.ttkuaiban.com'
  201. }
  202. if (id) {
  203. // window.location.href = jumpObject[id]
  204. window.open(jumpObject[id], '_blank');
  205. }
  206. })
  207. // document.addEventListener("DOMContentLoaded", function () {
  208. // const items = document.querySelectorAll('.latestList-item');
  209. // items.forEach(item => {
  210. // item.addEventListener('click', function () {
  211. // const itemData = item.getAttribute('data-item');
  212. // console.log('点击了', itemData)
  213. // window.location.href = knowledgeDetails + `/` + itemData
  214. // });
  215. // });
  216. // });
  217. function reinitIframe() {
  218. const iframe = document.getElementById("headerIframe");
  219. let observer = null
  220. if (iframe) {
  221. const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
  222. const iframeBody = iframeDocument.body
  223. observer = new MutationObserver(function(mutationsList, observer) {
  224. const bodyHeight = iframeBody.clientHeight;
  225. iframe.style.height = (bodyHeight + 1) + 'px';
  226. });
  227. observer.observe(iframeBody, { attributes: true, childList: true, subtree: true });
  228. let imgElement = iframeDocument.getElementById('logo');
  229. let headerItems = iframeDocument.querySelectorAll('.header-item')
  230. let headerView = iframeDocument.querySelector('.headerView')
  231. headerView.style.background = '#fff'
  232. imgElement.src = './image/logos.jpg'
  233. headerView.style.boxShadow = '0 0 10px rgba(0, 0, 0, 0)';
  234. headerItems.forEach(function(item) {
  235. item.style.color = '#000'; // 设置你想要的字体颜色
  236. });
  237. }
  238. }
  239. reinitIframe()
  240. </script>
  241. </html>