knowledge.ftl 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  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="knowledgeField-content-item">
  47. <a href="/articleTemplate/articleDetail?id=${item.id}">
  48. <div class="image"><img src="${item.coverImgUrl}" class="wh100" class="wh100"></img>
  49. </div>
  50. <div class="textContent">
  51. <div class="textContentTitle">${ item.title }</div>
  52. <p>${ item.profile }</p>
  53. <div class="textContentUnderstand">
  54. <div class="textContentUnderstandText">发布于:${item.createTimeStr} 预览量:${item.viewCount}</div>
  55. <!-- <button class="linkButtonss" onclick="learnMore(${item.id})">了解详情></button> -->
  56. <a class="linkButtonss" href="/articleTemplate/articleDetail?id=${item.id}">查看详情></a>
  57. </div>
  58. </div>
  59. </a>
  60. </div>
  61. <div class="dividingLine"></div>
  62. </div>
  63. </#list>
  64. </div>
  65. <div class="knowledgeField-bottom flex-center">
  66. <div class="pagination">
  67. <button class="prev" onclick="goToPage(currentPage - 1)">上一页</button>
  68. <ul id="page-list">
  69. <!-- 动态生成页码 -->
  70. </ul>
  71. <button class="next" onclick="goToPage(currentPage + 1)">下一页</button>
  72. </div>
  73. <div class="flex-center">
  74. 到第
  75. <input type="number" class="paginationInput" min="0" id="paginationInput">
  76. </div>
  77. <button onClick="confirmJump()" class="paginationButton">确定</button>
  78. </div>
  79. </div>
  80. </div>
  81. </div>
  82. </body>
  83. <script src="/js/js/jquery.min.js"></script> <!-- jQuery for Bootstrap's JavaScript plugins -->
  84. <script src="/js/js/popper.min.js"></script> <!-- Popper tooltip library for Bootstrap -->
  85. <script src="/js/js/bootstrap.min.js"></script> <!-- Bootstrap framework -->
  86. <script src="/js/js/jquery.easing.min.js"></script> <!-- jQuery Easing for smooth scrolling between anchors -->
  87. <script src="/js/js/swiper.min.js"></script> <!-- Swiper for image and text sliders -->
  88. <script src="/js/js/jquery.magnific-popup.js"></script> <!-- Magnific Popup for lightboxes -->
  89. <script src="/js/js/validator.min.js"></script> <!-- Validator.js - Bootstrap plugin that validates forms -->
  90. <script src="/js/js/scripts.js"></script>
  91. <script src="/js/iframe.js"></script>
  92. <script>
  93. // 获取当前页面的 URL 参数
  94. // const params = new URLSearchParams(window.location.search);
  95. const url = window.location.search
  96. const match = url.match(/pageList\/(\d+)/);
  97. const number = match ? match[1] : null;
  98. const pageIndex = +number || 1
  99. const pageSize = 10
  100. // const pageIndex = +params.get('pageIndex') || 1;
  101. // const pageSize = +params.get('pageSize') || 10;
  102. let total = ${total}
  103. let totalPages = Math.ceil(total / pageSize); // 总页数
  104. let currentSize = pageSize;
  105. let currentPage = pageIndex; // 当前页
  106. const knowledgeUrl = '/articleTemplate/pageList'
  107. const knowledgeDetails = '/articleTemplate/articleDetail'
  108. const fixedParameters = '/' + currentPage
  109. function search() {
  110. const inputVal = document.getElementById("knowledgeInput").value;
  111. window.location.href = knowledgeUrl + fixedParameters + '?&info=' + inputVal
  112. }
  113. function learnMore(id) {
  114. window.location.href = knowledgeDetails + `/` + id
  115. }
  116. function triggerButtonClick(itemId) {
  117. // 找到该 item 对应的按钮并触发点击事件
  118. const button = document.querySelector('button[onclick="learnMore('+itemId+')"]');
  119. if (button) {
  120. button.click();
  121. }
  122. }
  123. function confirmJump() {
  124. let inputVal = document.getElementById("paginationInput").value;
  125. if(inputVal <= 0) {
  126. inputVal = 1
  127. }
  128. if(inputVal > totalPages) {
  129. inputVal = totalPages
  130. }
  131. if(!inputVal) {
  132. return
  133. }
  134. window.location.href = knowledgeUrl + '/' + inputVal
  135. }
  136. // 初始化分页组件
  137. function initPagination() {
  138. const pageList = document.getElementById('page-list');
  139. pageList.innerHTML = ''; // 清空之前的页码
  140. for (let i = 1; i <= totalPages; i++) {
  141. const li = document.createElement('li');
  142. li.textContent = i;
  143. li.classList.toggle('active', i === currentPage); // 设置当前页的样式
  144. li.onclick = () => goToPage(i);
  145. pageList.appendChild(li);
  146. }
  147. // 更新按钮的禁用状态
  148. document.querySelector('.prev').disabled = currentPage === 1;
  149. document.querySelector('.next').disabled = currentPage === totalPages;
  150. }
  151. // 跳转到指定页面
  152. function goToPage(page) {
  153. window.location.href = knowledgeUrl + '/' + page
  154. }
  155. // 初始化分页
  156. initPagination();
  157. function reinitIframe() {
  158. const iframe = document.getElementById("headerIframe");
  159. let observer = null
  160. if (iframe) {
  161. const iframeDocument = iframe.contentDocument || iframe.contentWindow.document;
  162. const iframeBody = iframeDocument.body
  163. observer = new MutationObserver(function(mutationsList, observer) {
  164. const bodyHeight = iframeBody.clientHeight;
  165. iframe.style.height = (bodyHeight + 1) + 'px';
  166. });
  167. observer.observe(iframeBody, { attributes: true, childList: true, subtree: true });
  168. let imgElement = iframeDocument.getElementById('logo');
  169. let headerItems = iframeDocument.querySelectorAll('.header-item')
  170. let headerView = iframeDocument.querySelector('.headerView')
  171. headerView.style.background = '#fff'
  172. imgElement.src = './image/logos.jpg'
  173. headerView.style.boxShadow = '0 0 10px rgba(0, 0, 0, 0)';
  174. headerItems.forEach(function(item) {
  175. item.style.color = '#000'; // 设置你想要的字体颜色
  176. });
  177. }
  178. }
  179. reinitIframe()
  180. </script>
  181. </html>