knowledge.ftl 8.3 KB

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