searchStaticList.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303
  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, codeType = 1, codeVal = 1;
  6. searchType = getUrlArgObject('type') || 0
  7. inputStr = getUrlArgObject('inputStr') || ''
  8. codeType = getUrlArgObject('codeType') || 1
  9. codeVal = getUrlArgObject('codeVal') || 1
  10. let arrowLeft = require('./../images/leftpage.png').replace(/^undefined/g, '')
  11. let arrowRight = require('./../images/rightpage.png').replace(/^undefined/g, '')
  12. require('./../images/staticBgS.png').replace(/^undefined/g, '')
  13. require('./../images/staticLogo.png').replace(/^undefined/g, '')
  14. require('./../images/staticBg.png').replace(/^undefined/g, '')
  15. require('./../images/nolis.png').replace(/^undefined/g, '')
  16. require('./../images/warn.png').replace(/^undefined/g, '')
  17. require('./../images/icon-down.png').replace(/^undefined/g, '')
  18. const iconDown = require('./../images/icon-down.png').replace(/^undefined/g, '')
  19. const iconUp = require('./../images/up-icon.png').replace(/^undefined/g, '')
  20. $(function () {
  21. initData()
  22. getAllTypes()
  23. getSearchList()
  24. getTabData()
  25. });
  26. //tab
  27. function renderTab(data) {
  28. let str = '';
  29. for (let i = 0; i < data.length; i++) {
  30. const element = data[i];
  31. str += `<li class="${i == 0 ? 'tabFst' : ''}" data-id="${element.val}">${element.name}</li>`
  32. }
  33. $('.staticTopTab .knowledge').html(str)
  34. $('.staticTopTab .knowledge li[data-id=' + searchType + ']').addClass('tabFst').siblings().removeClass('tabFst')
  35. $(".staticTopTab .knowledge li").click(function () {
  36. searchType = $(this).attr('data-id')
  37. $(this).addClass('tabFst').siblings().removeClass('tabFst')
  38. })
  39. }
  40. //获取字典信息
  41. function getAllTypes() {
  42. /*const allTypes = localStorage.getItem('allTypes')&&JSON.parse(localStorage.getItem('allTypes'))||[];
  43. if(allTypes.length>0){
  44. renderTab(allTypes)
  45. return
  46. }*/
  47. post(config.dictionaryInfo, {}).then((res) => {
  48. const result = res.data
  49. if (result.code === '0') {
  50. const data = result.data[7] || [];
  51. //localStorage.setItem('allTypes',JSON.stringify(data))
  52. renderTab(data)
  53. }
  54. })
  55. }
  56. function getSearchList() {
  57. $(".searchBtn").click(function () {
  58. $(".resultItemWrap,.pagination").html("");
  59. $(".staticResult .loading").show();
  60. curPage = 1;
  61. getTabData()
  62. })
  63. }
  64. function getTabData() {
  65. let vals = $('.searchStr').val().trim();
  66. if (!vals) {
  67. $(".staticResult .loading").hide();
  68. toggleWarnBox('检索词不能为空!');
  69. return;
  70. }
  71. let url, param
  72. if (codeVal == 1) {
  73. url = config.staticSearch
  74. param = {
  75. size,
  76. current: curPage,
  77. types: [+searchType],
  78. inputStr: vals
  79. }
  80. } else {
  81. url = config.diseaseIndex
  82. param = {
  83. current: curPage,
  84. size: size,
  85. inputStr: vals,
  86. type: codeVal
  87. }
  88. }
  89. $(".resultItemEmpty").hide();
  90. post(url, param).then((res) => {
  91. const result = res.data
  92. if (result.code == 0) {
  93. const data = result.data;
  94. tabList = data.records;
  95. totalPage = data.pages;
  96. const totalNum = data.total;
  97. renderList(tabList);
  98. if (totalNum > 0) {
  99. renderPagination(totalPage, Number(curPage), totalNum)
  100. } else {
  101. $('.pagination').html("")
  102. }
  103. }
  104. })
  105. }
  106. function renderList(tabList) {
  107. $(".staticResult .loading").hide();
  108. if (tabList.length == 0) {
  109. $('.pagination').html('')
  110. $(".resultItemWrap").html('');
  111. $(".resultItemEmpty").css({ display: 'block' });
  112. return
  113. }
  114. let str = ''
  115. for (let i = 0; i < tabList.length; i++) {
  116. let item = tabList[i]
  117. str += codeVal == 1 ? `
  118. <div class="resultItem" data-type="${item.type}" data-name="${item.name}">
  119. <div>
  120. <span class="type">${item.typeName}</span>
  121. <span class="drug">${item.name}</span>
  122. ${item.code ? `<span class="icon">医保版</span><span class="name">${item.name}</span><span class="code">${item.code}</span>` : ''}
  123. ${(item.guoname || item.guocode) ? `<span class="icon gicon">国临版</span><span class="name">${item.guoname}</span><span class="code">${item.guocode}</span>` : ''}
  124. </div>
  125. ${item.retrievalName ? `<div class="same">同义词:<span>${item.retrievalName}</span></div>` : ''}
  126. <div class="content">
  127. <p>${item.abstractContent ? item.abstractContent : ''}</p>
  128. </div>
  129. </div>
  130. `: `
  131. <div class="resultItem2">
  132. <div>
  133. <span class="code">${item.code}</span>
  134. <span class="drug">${item.name}</span>
  135. </div>
  136. </div>
  137. `
  138. }
  139. $(".resultItemWrap").html(str);
  140. $('.resultItem').click(function () {
  141. let name = $(this).attr('data-name')
  142. let type = $(this).attr('data-type')
  143. if (window.opener) {
  144. openNewWin(`./staticInfo.html?name=${name}&type=${type}`);
  145. } else {
  146. window.open(`./staticInfo.html?name=${name}&type=${type}`);
  147. }
  148. })
  149. window.scrollTo(0, 0);
  150. }
  151. function initData() {
  152. if (searchType) {
  153. $('.staticTopTab .knowledge li').eq(searchType).addClass('tabFst').siblings().removeClass('tabFst')
  154. }
  155. if (codeType) {
  156. $('.staticTopTab .code-list li[data-id=' + codeType + ']').addClass('code-active').siblings().removeClass('code-active')
  157. }
  158. if (codeVal) {
  159. $('.selectItem .selc-list li[data-val=' + codeVal + ']').addClass('active').siblings().removeClass('active')
  160. val = codeVal == 1 ? '医学静态知识' : 'ICD10编码查询'
  161. $(".seleName").html(val)
  162. if (codeVal == 1) {
  163. $(".staticTopTab .knowledge").css('display', 'block')
  164. $(".staticTopTab .code-list").css('display', 'none')
  165. } else {
  166. $(".staticTopTab .knowledge").css('display', 'none')
  167. $(".staticTopTab .code-list").css('display', 'block')
  168. }
  169. }
  170. if (inputStr) {
  171. $(".searchStr").val(inputStr)
  172. }
  173. }
  174. // 分页
  175. function renderPagination(totalPage, activePage, totalNum) {
  176. let str = `<span class="totalSum">共${totalNum}条</span>
  177. <select class="select">
  178. <option value="10" ${size == 10 ? 'selected' : ''}>10条/页</option>
  179. <option value="50" ${size == 50 ? 'selected' : ''}>50条/页</option>
  180. <option value="100" ${size == 100 ? 'selected' : ''}>100条/页</option>
  181. <option value="500" ${size == 500 ? 'selected' : ''}>500条/页</option>
  182. <option value="1000" ${size == 1000 ? 'selected' : ''}>1000条/页</option>
  183. <option value="5000" ${size == 5000 ? 'selected' : ''}>5000条/页</option>
  184. </select>
  185. <span class="prePage">
  186. <img class="arrowPage" src=${arrowLeft} />
  187. </span>
  188. `
  189. if (totalPage <= 6) {
  190. for (let i = 1; i <= totalPage; i++) {
  191. str += `<span class="pageNum ${'page' + i}" data-page=${i}>${i}</span>`
  192. }
  193. } else {
  194. if (activePage <= 3) { //选中页数小于4
  195. for (let i = 1; i <= 4; i++) {
  196. str += `<span class="pageNum ${'page' + i}" data-page=${i}>${i}</span>`
  197. }
  198. str += `<span class="more" >...</span>`
  199. str += `<span class="pageNum ${'page' + totalPage}" data-page=${totalPage}>${totalPage}</span>`
  200. } else if (activePage > totalPage - 3) {
  201. str += `<span class="pageNum page1" data-page=1>1</span>`
  202. str += `<span class="more" >...</span>`
  203. str += `<span class="pageNum ${'page' + (totalPage - 3)}" data-page=${totalPage - 3}>${totalPage - 3}</span>`
  204. str += `<span class="pageNum ${'page' + (totalPage - 2)}" data-page=${totalPage - 2}>${totalPage - 2}</span>`
  205. str += `<span class="pageNum ${'page' + (totalPage - 1)}" data-page=${totalPage - 1}>${totalPage - 1}</span>`
  206. str += `<span class="pageNum ${'page' + totalPage}" data-page=${totalPage}>${totalPage}</span>`
  207. } else {
  208. str += `<span class="pageNum page1" data-page=1>1</span>`
  209. str += `<span class="more" >...</span>`
  210. str += `<span class="pageNum ${'page' + (activePage - 1)}" data-page=${activePage - 1}>${activePage - 1}</span>`
  211. str += `<span class="pageNum ${'page' + activePage}" data-page=${activePage}>${activePage}</span>`
  212. str += `<span class="pageNum ${'page' + (activePage + 1)}" data-page=${activePage + 1}>${activePage + 1}</span>`
  213. str += `<span class="more" >...</span>`
  214. str += `<span class="pageNum ${'page' + totalPage}" data-page=${totalPage}>${totalPage}</span>`
  215. }
  216. }
  217. str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>
  218. <span class="goNum">前往 <input type="number" value="${curPage}" /> 页</span>`
  219. $('.pagination').html(str)
  220. $('.page' + activePage).addClass('activePage')
  221. $(".pageNum").on("click", function (e) {
  222. //console.log($(this)[0])
  223. const activePageNow = Number($(this).attr('data-page'))
  224. curPage = activePageNow
  225. getTabData()
  226. })
  227. $(".prePage").on("click", function (e) {
  228. let activePageNow = Number($(".activePage").attr('data-page'))
  229. if (activePageNow > 1) {
  230. curPage = --activePageNow
  231. getTabData()
  232. }
  233. })
  234. $(".nextPage").on("click", function (e) {
  235. let activePageNow = Number($(".activePage").attr('data-page'))
  236. if (activePageNow < totalPage) {
  237. curPage = ++activePageNow
  238. getTabData()
  239. }
  240. })
  241. $('.select').change(function () {
  242. size = $(this).val();
  243. curPage = 1;
  244. getTabData()
  245. })
  246. $('.goNum input').change(function () {
  247. const n = $(this).val()
  248. if (totalPage < n || n < 1) {
  249. toggleWarnBox("请输入1-" + totalPage + "范围内的整数");
  250. return;
  251. }
  252. curPage = n;
  253. getTabData()
  254. })
  255. }
  256. $(function () {
  257. $(".warning-box .confirm,.warning-box .close").click(function () {
  258. toggleWarnBox();
  259. })
  260. $(".selectItem").click(function (e) {
  261. e.stopPropagation()
  262. const showList = $(".selc-list ").css("display")
  263. if (showList == "none" || !showList) {
  264. $(".selc-list").css('display', 'block')
  265. $(".selectItem .arrow").attr("src", iconUp)
  266. } else {
  267. $(".selc-list").css('display', 'none')
  268. $(".selectItem .arrow").attr("src", iconDown)
  269. }
  270. })
  271. $(".selc-list li").click(function (e) {
  272. e.stopPropagation()
  273. codeVal = $(this).attr('data-val')
  274. $(".searchStr").val('')
  275. $(this).addClass('active').siblings().removeClass('active');
  276. $(".seleName").html($(this).text())
  277. $(".selc-list").css('display', 'none')
  278. $(".selectItem .arrow").attr("src", iconDown)
  279. if (codeVal == 1) {
  280. $(".staticTopTab .code-list").css('display', 'none')
  281. $(".staticTopTab .knowledge").css('display', 'block')
  282. } else {
  283. $(".staticTopTab .code-list").css('display', 'block')
  284. $(".staticTopTab .knowledge").css('display', 'none')
  285. }
  286. })
  287. $(".staticTopTab .code-list li").click(function () {
  288. codeType = $(this).attr('data-id')
  289. $(this).addClass('code-active').siblings().removeClass('code-active')
  290. })
  291. });
  292. $(document).on("click", function () {
  293. $(".selc-list").css('display', 'none')
  294. $(".selectItem .arrow").attr("src", iconDown)
  295. })