knowledge.ftl 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  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="工时管理,工时统计,工时填报,项目成本统计,生产工时管理系统,工时成本管理,工时管理软件,研发工时管理系统,企业工时管理系统,项目工时统计,项目工时统计软件,项目工时统计系统,工时统计系统,工时统计表" />
  9. <meta name="description" content="工时管家提供专业的工时填报和统计报表。支持PC和手机端。可按项目,部门,岗位等多维度统计成本。" />
  10. <title>工时管家-专注工时管理,手机移动填报,核算项目投入人力成本,企业IPO利器!</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-loading="detailsSwitchingLoading" class="wh100 flex">
  34. <div class="knowledgeField">
  35. <div class="knowledgeField-header">
  36. <div class="knowledgeField-header-text">知识园地</div>
  37. <div class="flex">
  38. <input id="knowledgeInput" type="text" class="knowledgeInput" placeholder="请输入关键字搜索">
  39. <button class="searchButton" onclick="search()">搜索</button>
  40. </div>
  41. </div>
  42. <div class="knowledgeField-content">
  43. <#list knowledgeFieldTableList as item>
  44. <div>
  45. <div class="knowledgeField-content-item" onclick="triggerButtonClick(${item.id})">
  46. <div class="image"><img src="${item.coverImgUrl}" class="wh100" class="wh100"></img>
  47. </div>
  48. <div class="textContent">
  49. <div class="textContentTitle">${ item.title }</div>
  50. <p>${ item.profile }</p>
  51. <div class="textContentUnderstand">
  52. <div class="textContentUnderstandText">发布于:${item.createTimeStr}</div>
  53. <button class="linkButtonss" onclick="learnMore(${item.id})">了解详情></button>
  54. </div>
  55. </div>
  56. </div>
  57. <div class="dividingLine"></div>
  58. </div>
  59. </#list>
  60. </div>
  61. <div class="knowledgeField-bottom flex-center">
  62. <div class="pagination">
  63. <button class="prev" onclick="goToPage(currentPage - 1)">上一页</button>
  64. <ul id="page-list">
  65. <!-- 动态生成页码 -->
  66. </ul>
  67. <button class="next" onclick="goToPage(currentPage + 1)">下一页</button>
  68. </div>
  69. <div class="flex-center">
  70. 到第
  71. <input type="number" class="paginationInput" min="0" id="paginationInput">
  72. </div>
  73. <button onClick="confirmJump()" class="paginationButton">确定</button>
  74. </div>
  75. </div>
  76. </div>
  77. </div>
  78. </body>
  79. <script src="/js/js/jquery.min.js"></script> <!-- jQuery for Bootstrap's JavaScript plugins -->
  80. <script src="/js/js/popper.min.js"></script> <!-- Popper tooltip library for Bootstrap -->
  81. <script src="/js/js/bootstrap.min.js"></script> <!-- Bootstrap framework -->
  82. <script src="/js/js/jquery.easing.min.js"></script> <!-- jQuery Easing for smooth scrolling between anchors -->
  83. <script src="/js/js/swiper.min.js"></script> <!-- Swiper for image and text sliders -->
  84. <script src="/js/js/jquery.magnific-popup.js"></script> <!-- Magnific Popup for lightboxes -->
  85. <script src="/js/js/validator.min.js"></script> <!-- Validator.js - Bootstrap plugin that validates forms -->
  86. <script src="/js/js/scripts.js"></script>
  87. <script src="/js/iframe.js"></script>
  88. <script>
  89. // 获取当前页面的 URL 参数
  90. const params = new URLSearchParams(window.location.search);
  91. const pageIndex = +params.get('pageIndex') || 1;
  92. const pageSize = +params.get('pageSize') || 10;
  93. let total = ${total}
  94. let totalPages = Math.ceil(total / pageSize); // 总页数
  95. let currentSize = pageSize;
  96. let currentPage = pageIndex; // 当前页
  97. const knowledgeUrl = '/articleTemplate/pageList'
  98. const knowledgeDetails = '/articleTemplate/articleDetail'
  99. const fixedParameters = '?pageIndex=' + currentPage + '&pageSize=' + currentSize + '&info=' // 分页固定参数
  100. function search() {
  101. const inputVal = document.getElementById("knowledgeInput").value;
  102. window.location.href = knowledgeUrl + fixedParameters + inputVal
  103. }
  104. function learnMore(id) {
  105. window.location.href = knowledgeDetails + `?id=` + id
  106. }
  107. function triggerButtonClick(itemId) {
  108. // 找到该 item 对应的按钮并触发点击事件
  109. const button = document.querySelector('button[onclick="learnMore('+itemId+')"]');
  110. if (button) {
  111. button.click();
  112. }
  113. }
  114. function confirmJump() {
  115. let inputVal = document.getElementById("paginationInput").value;
  116. if(inputVal <= 0) {
  117. inputVal = 1
  118. }
  119. if(inputVal > totalPages) {
  120. inputVal = totalPages
  121. }
  122. if(!inputVal) {
  123. return
  124. }
  125. window.location.href = knowledgeUrl + '?pageIndex=' + inputVal + '&pageSize=' + currentSize
  126. }
  127. // 初始化分页组件
  128. function initPagination() {
  129. const pageList = document.getElementById('page-list');
  130. pageList.innerHTML = ''; // 清空之前的页码
  131. for (let i = 1; i <= totalPages; i++) {
  132. const li = document.createElement('li');
  133. li.textContent = i;
  134. li.classList.toggle('active', i === currentPage); // 设置当前页的样式
  135. li.onclick = () => goToPage(i);
  136. pageList.appendChild(li);
  137. }
  138. // 更新按钮的禁用状态
  139. document.querySelector('.prev').disabled = currentPage === 1;
  140. document.querySelector('.next').disabled = currentPage === totalPages;
  141. }
  142. // 跳转到指定页面
  143. function goToPage(page) {
  144. window.location.href = knowledgeUrl + '?pageIndex=' + page + '&pageSize=' + currentSize
  145. }
  146. // 初始化分页
  147. initPagination();
  148. function reinitIframe() {
  149. const iframe = document.getElementById("headerIframe");
  150. let observer = null
  151. if (iframe) {
  152. const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
  153. const iframeBody = iframeDocument.body
  154. observer = new MutationObserver(function(mutationsList, observer) {
  155. const bodyHeight = iframeBody.clientHeight;
  156. iframe.style.height = (bodyHeight + 1) + 'px';
  157. });
  158. observer.observe(iframeBody, { attributes: true, childList: true, subtree: true });
  159. let imgElement = iframeDocument.getElementById('logo');
  160. let headerItems = iframeDocument.querySelectorAll('.header-item')
  161. let headerView = iframeDocument.querySelector('.headerView')
  162. headerView.style.background = '#fff'
  163. imgElement.src = './image/logos.jpg'
  164. headerView.style.boxShadow = '0 0 10px rgba(0, 0, 0, 0)';
  165. headerItems.forEach(function(item) {
  166. item.style.color = '#000'; // 设置你想要的字体颜色
  167. });
  168. }
  169. }
  170. reinitIframe()
  171. </script>
  172. </html>