searchStaticList.js 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. require('./../css/searchStaticList.less');
  2. const $ = require("jquery");
  3. const { post,config,getUrlArgObject,openNewWin } = require('./promise.js');
  4. const {toggleWarnBox} = require('./util.js');
  5. let searchType = 0, inputStr = '', curPage = 1, size = 10, totalPage = 1;
  6. searchType = getUrlArgObject('type') || 0
  7. inputStr = getUrlArgObject('inputStr') || ''
  8. let arrowLeft = require('./../images/leftpage.png').replace(/^undefined/g, '')
  9. let arrowRight = require('./../images/rightpage.png').replace(/^undefined/g, '')
  10. require('./../images/staticBgS.png').replace(/^undefined/g, '')
  11. require('./../images/staticLogo.png').replace(/^undefined/g, '')
  12. require('./../images/staticBg.png').replace(/^undefined/g, '')
  13. require('./../images/nolis.png').replace(/^undefined/g, '')
  14. require('./../images/warn.png').replace(/^undefined/g, '')
  15. $(function(){
  16. initData()
  17. getAllTypes()
  18. getSearchList()
  19. getTabData()
  20. });
  21. //tab
  22. function renderTab(data){
  23. let str = '';
  24. for (let i = 0; i < data.length; i++) {
  25. const element = data[i];
  26. str += `<li class="${i==0?'tabFst':''}" data-id="${element.val}">${element.name}</li>`
  27. }
  28. $('.staticTopTab ul').html(str)
  29. $('.staticTopTab li[data-id='+searchType+']').css({color:'#2A9BD5'}).siblings().css({color:'#333'});
  30. $(".staticTopTab li").click(function(){
  31. searchType = $(this).attr('data-id')
  32. $(this).css({color:'#2A9BD5'}).siblings().css({color:'#333'})
  33. })
  34. }
  35. //获取字典信息
  36. function getAllTypes(){
  37. /*const allTypes = localStorage.getItem('allTypes')&&JSON.parse(localStorage.getItem('allTypes'))||[];
  38. if(allTypes.length>0){
  39. renderTab(allTypes)
  40. return
  41. }*/
  42. post(config.dictionaryInfo, {}).then((res) => {
  43. const result = res.data
  44. if(result.code==='0'){
  45. const data = result.data[7]||[];
  46. //localStorage.setItem('allTypes',JSON.stringify(data))
  47. renderTab(data)
  48. }
  49. })
  50. }
  51. function getSearchList(){
  52. $(".searchBtn").click(function(){
  53. $(".resultItemWrap,.pagination").html("");
  54. $(".staticResult .loading").show();
  55. curPage=1;
  56. getTabData()
  57. })
  58. }
  59. function getTabData(){
  60. let vals = $('.searchStr').val().trim();
  61. if (!vals) {
  62. $(".staticResult .loading").hide();
  63. toggleWarnBox('检索词不能为空!');
  64. return;
  65. }
  66. let param = {
  67. size,
  68. current:curPage,
  69. types:[+searchType],
  70. inputStr:vals
  71. }
  72. $(".resultItemEmpty").hide();
  73. post(config.staticSearch,param).then((res) => {
  74. const result = res.data
  75. if(result.code == 0) {
  76. const data = result.data;
  77. tabList = data.records;
  78. totalPage = data.pages;
  79. const totalNum = data.total;
  80. renderList(tabList);
  81. if(totalNum > 0){
  82. renderPagination(totalPage,Number(curPage),totalNum)
  83. } else{
  84. $('.pagination').html("")
  85. }
  86. }
  87. })
  88. }
  89. function renderList(tabList){
  90. $(".staticResult .loading").hide();
  91. if(tabList.length == 0){
  92. $('.pagination').html('')
  93. $(".resultItemWrap").html('');
  94. $(".resultItemEmpty").css({display:'block'});
  95. return
  96. }
  97. let str = ''
  98. for(let i = 0;i<tabList.length;i++){
  99. let item = tabList[i]
  100. str += `
  101. <div class="resultItem" data-type="${item.type}" data-name="${item.name}">
  102. <div>
  103. <span class="type">${item.typeName}</span>
  104. <span class="drug">${item.name}</span>
  105. ${item.code ?`<span class="code">${item.code}</span>`:''}
  106. </div>
  107. ${item.retrievalName?`<div class="same">同义词:<span>${item.retrievalName}</span></div>`:''}
  108. <div class="content">
  109. <p>${item.abstractContent ? item.abstractContent : ''}</p>
  110. </div>
  111. </div>
  112. `
  113. }
  114. $(".resultItemWrap").html(str);
  115. $('.resultItem').click(function(){
  116. let name = $(this).attr('data-name')
  117. let type = $(this).attr('data-type')
  118. if(window.opener){
  119. openNewWin(`./staticInfo.html?name=${name}&type=${type}`);
  120. }else{
  121. window.open(`./staticInfo.html?name=${name}&type=${type}`);
  122. }
  123. })
  124. window.scrollTo(0, 0);
  125. }
  126. function initData(){
  127. if(searchType){
  128. $('.staticTopTab li').eq(searchType).css({color:'#2A9BD5'}).siblings().css({color:'#333'})
  129. }
  130. if(inputStr){
  131. $(".searchStr").val(inputStr)
  132. }
  133. }
  134. // 分页
  135. function renderPagination(totalPage,activePage,totalNum){
  136. let str = `<span class="totalSum">共${totalNum}条</span>
  137. <select class="select">
  138. <option value="10" ${size==10?'selected':''}>10条/页</option>
  139. <option value="50" ${size==50?'selected':''}>50条/页</option>
  140. <option value="100" ${size==100?'selected':''}>100条/页</option>
  141. <option value="500" ${size==500?'selected':''}>500条/页</option>
  142. <option value="1000" ${size==1000?'selected':''}>1000条/页</option>
  143. <option value="5000" ${size==5000?'selected':''}>5000条/页</option>
  144. </select>
  145. <span class="prePage">
  146. <img class="arrowPage" src=${arrowLeft} />
  147. </span>
  148. `
  149. if(totalPage <= 6){
  150. for(let i = 1; i <= totalPage; i++){
  151. str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
  152. }
  153. }else{
  154. if(activePage <= 3){ //选中页数小于4
  155. for(let i = 1; i <= 4; i++){
  156. str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
  157. }
  158. str += `<span class="more" >...</span>`
  159. str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
  160. } else if(activePage > totalPage -3){
  161. str += `<span class="pageNum page1" data-page=1>1</span>`
  162. str += `<span class="more" >...</span>`
  163. str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
  164. str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
  165. str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
  166. str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
  167. } else {
  168. str += `<span class="pageNum page1" data-page=1>1</span>`
  169. str += `<span class="more" >...</span>`
  170. str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
  171. str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
  172. str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
  173. str += `<span class="more" >...</span>`
  174. str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
  175. }
  176. }
  177. str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>
  178. <span class="goNum">前往 <input type="number" value="${curPage}" /> 页</span>`
  179. $('.pagination').html(str)
  180. $('.page' + activePage).addClass('activePage')
  181. $(".pageNum").on("click", function(e){
  182. //console.log($(this)[0])
  183. const activePageNow = Number($(this).attr('data-page'))
  184. curPage = activePageNow
  185. getTabData()
  186. })
  187. $(".prePage").on("click", function(e){
  188. let activePageNow = Number($(".activePage").attr('data-page'))
  189. if(activePageNow > 1){
  190. curPage = --activePageNow
  191. getTabData()
  192. }
  193. })
  194. $(".nextPage").on("click", function(e){
  195. let activePageNow = Number($(".activePage").attr('data-page'))
  196. if(activePageNow < totalPage){
  197. curPage = ++activePageNow
  198. getTabData()
  199. }
  200. })
  201. $('.select').change(function(){
  202. size = $(this).val();
  203. curPage=1;
  204. getTabData()
  205. })
  206. $('.goNum input').change(function(){
  207. const n = $(this).val()
  208. if (totalPage < n || n < 1) {
  209. toggleWarnBox("请输入1-" + totalPage + "范围内的整数");
  210. return;
  211. }
  212. curPage = n;
  213. getTabData()
  214. })
  215. }
  216. $(function () {
  217. $(".warning-box .confirm,.warning-box .close").click(function () {
  218. toggleWarnBox();
  219. })
  220. });