staticSearch.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. require('../css/staticSearch.less');
  2. require('./../images/del_nor.png')
  3. var $ = require("jquery");
  4. var { post, config, getUrlArgObject, openNewWin, isIe8 } = require('./promise.js');
  5. let checkOffImg = require('./../images/check_off.png')
  6. let checkOnImg = require('./../images/check_on.png')
  7. require('./../images/empty3.png').replace(/undefined/g, '')
  8. require('./../images/icon_search.png').replace(/undefined/g, '')
  9. require('./../images/icon_arrow_down.png').replace(/undefined/g, '')
  10. require('./../images/icon_arrow_up.png').replace(/undefined/g, '')
  11. let searchType = getUrlArgObject("searchType") || ""
  12. let medicalTypesList = []
  13. let first = true
  14. let tabid = 1, type = 1
  15. const is8Ie = isIe8() //判断是否为IE8
  16. if (is8Ie) {
  17. let reg = /undefined/g
  18. checkOffImg = checkOffImg.replace(reg, '')
  19. checkOnImg = checkOnImg.replace(reg, '')
  20. }
  21. if (searchType == '1') {
  22. $(".staticSearchB>ul").css({
  23. padding: "0px",
  24. left: "0px"
  25. })
  26. document.title = "医学知识搜索"
  27. }
  28. $(".header-tab li").click(function () {
  29. // 修改tab标签样式
  30. tabid = $(this).attr("tabid");
  31. $(".staticSearchT input").val('')
  32. $(this).attr("class", "choice")
  33. $(this).siblings().attr("class", "")
  34. $('.radio-list').find('input[value=1]').prop("checked", true)
  35. for (let i = 0; i < medicalTypesList.length; i++) {
  36. medicalTypesList[i].checked = false
  37. }
  38. medicalTypesList[0].checked = true
  39. // 获取tab ID
  40. if (tabid == 1) {
  41. $(".radio-list").css('display', 'none')
  42. $(".searchTypeBox").css('display', 'block')
  43. } else {
  44. $(".radio-list").css('display', 'block')
  45. $(".searchTypeBox").css('display', 'none')
  46. }
  47. $(".searchKnowledge .staticSearchB .tip").css({ display: 'none' })
  48. $(".searchKnowledge .staticSearchB .empty").css({ display: 'none' })
  49. $(".searchKnowledge .staticSearchB .searching").css({ display: 'none' })
  50. $(".searchKnowledge .staticSearchB .inputWarning").css({ display: 'none' })
  51. $(".searchKnowledge .staticSearchB ul").html('')
  52. renderMedicalType(medicalTypesList)
  53. })
  54. $(".check-box").click(function () {
  55. type = $(this).find('input[name=ICD10]').val()
  56. $(this).siblings().find('input[name=ICD10]').prop("checked", false)
  57. $(this).find('input[name=ICD10]').prop("checked", true)
  58. })
  59. $(".staticSearchT input").keyup(function (e) {
  60. const ev = e || window.event;
  61. const val = $(this).val();
  62. $(this).parents(".staticSearchT").find("i").css({ display: val == "" ? "none" : "inline-block" })
  63. if (val == '') {
  64. $(".searchKnowledge .staticSearchB .empty").css({ display: 'none' })
  65. $(".searchKnowledge .staticSearchB .tip").css({ display: 'none' })
  66. $(".searchKnowledge .staticSearchB ul").html('')
  67. $(".searchKnowledge .staticSearchB .inputWarning").css("display", "block")
  68. } else {
  69. $(".searchKnowledge .staticSearchB .inputWarning").css("display", "none")
  70. }
  71. val != '' && ev.keyCode == 13 && getKnowledgeData(val);
  72. })
  73. // document.title = "医学知识搜索"
  74. $(".searchScale").css({ display: 'none' })
  75. $(".searchKnowledge").css({ display: 'block' })
  76. $(".searchKnowledge .staticSearchT").on('click', 'button', function () {
  77. var val = $(this).parents(".staticSearchT").find("input").val()
  78. if (val.trim() == '') {
  79. $(".searchKnowledge .staticSearchB ul").html("");
  80. $(".searchKnowledge .staticSearchB .tip").hide();
  81. $(".searchKnowledge .staticSearchB .inputWarning").css("display", "block")
  82. } else {
  83. getKnowledgeData(val)
  84. }
  85. })
  86. function getMedicalTypes() {
  87. post(config.dictionaryInfo, {}).then((res) => {
  88. const data = res.data
  89. if (data.code == 0) {
  90. medicalTypesList = res.data.data[7]
  91. medicalTypesList[0].checked = true
  92. renderMedicalType(medicalTypesList)
  93. } else {
  94. console.log(res)
  95. }
  96. })
  97. }
  98. function renderMedicalType(medicalTypesList) {
  99. let str = ''
  100. for (let i = 0; i < medicalTypesList.length; i++) {
  101. str += `<span class='medicalTypeItem' data-index=${i}><img src = ${medicalTypesList[i].checked ? checkOnImg : checkOffImg}>${medicalTypesList[i].name}</span>`
  102. }
  103. $('.searchTypeBox').html(str)
  104. bindMedicalTypeClick();
  105. }
  106. function bindMedicalTypeClick() {
  107. $('.searchTypeBox .medicalTypeItem').on("click", function () {
  108. const index = $(this).attr('data-index')
  109. if (index == 0) {
  110. if (medicalTypesList[0].checked) {
  111. medicalTypesList[0].checked = false
  112. } else {
  113. for (let i = 0; i < medicalTypesList.length; i++) {
  114. medicalTypesList[i].checked = false
  115. }
  116. medicalTypesList[0].checked = true
  117. }
  118. renderMedicalType(medicalTypesList)
  119. } else {
  120. if (medicalTypesList[0].checked) {
  121. medicalTypesList[0].checked = false
  122. }
  123. medicalTypesList[index].checked = !medicalTypesList[index].checked
  124. }
  125. renderMedicalType(medicalTypesList)
  126. })
  127. }
  128. getMedicalTypes()
  129. function getKnowledgeData(value) {
  130. $(".searchKnowledge .staticSearchB .inputWarning").css("display", "none")
  131. $(".searchKnowledge .staticSearchB .empty").css({ display: 'none' })
  132. $(".searchKnowledge .staticSearchB ul").html('')
  133. if (first) {
  134. adjustHeight()
  135. first = false
  136. }
  137. let url, param
  138. if (tabid == 1) {
  139. let medicalTypes = []
  140. for (let i = 0; i < medicalTypesList.length; i++) {
  141. if (medicalTypesList[i].checked) {
  142. medicalTypes.push(medicalTypesList[i].val)
  143. }
  144. }
  145. url = config.getStaticKnowledge
  146. param = {
  147. inputStr: value.trim(),
  148. types: medicalTypes
  149. }
  150. } else {
  151. url = config.diseaseIndex
  152. param = {
  153. current: 0,
  154. size: 100,
  155. inputStr: value.trim(),
  156. type: type
  157. }
  158. }
  159. $(".searchKnowledge .staticSearchB .searching").css("display", "block")
  160. post(url, param).then((res) => {
  161. $(".searchKnowledge .staticSearchB .searching").css("display", "none")
  162. const data = res.data
  163. if (data.code == 0) {
  164. var knowledgeLis = tabid == 1 ? data.data : data.data.records
  165. var lisStr = ''
  166. if (knowledgeLis && knowledgeLis.length > 0) {
  167. for (var i = 0; i < knowledgeLis.length; i++) {
  168. var tmpPart = knowledgeLis[i];
  169. console.log(tmpPart);
  170. var ynameDom = tmpPart.code ? `<tr>
  171. <td rowspan="2" width="65"><span class="type-icon">医保版</span></td>
  172. <td><span title="${tmpPart.name}">${tmpPart.name}</span></td>
  173. </tr>
  174. <tr>
  175. <td>
  176. <span title="${tmpPart.code}" class="type-code">${tmpPart.code}</span>
  177. </td>
  178. </tr>`: '';
  179. var gnameDom = tmpPart.guoname || tmpPart.guocode ? `<tr>
  180. <td rowspan="2"><span class="type-icon type-l">国临版</span></td>
  181. <td><span title="${tmpPart.guoname}">${tmpPart.guoname}</span></td>
  182. </tr>
  183. <tr>
  184. <td>
  185. <span title="${tmpPart.guocode}" class="type-code">${tmpPart.guocode}</span>
  186. </td>
  187. </tr>`: '';
  188. var codeDom = ynameDom + gnameDom ? `<div class="codeDiv"><table width="100%"><tbody>${ynameDom}${gnameDom}</tbody></table></div>` : "";
  189. var codeIcon = ynameDom + gnameDom ? `<span class="code-slide"></span>` : "";
  190. var tmpLi = tabid == 1 ? `<li class="hide-codes" data-name='${tmpPart.name}' data-uname='${tmpPart.uniqueName}' data-type='${tmpPart.libTypeId}' data-sign='${tmpPart.type}'>
  191. <p><span class="diag-name">${tmpPart.name}<i>${tmpPart.typeName ? (' ( ' + tmpPart.typeName + ' )') : ''}</i></span>
  192. ${codeIcon}
  193. </p>
  194. ${tmpPart.retrievalName ? ('<span>• ' + tmpPart.retrievalName + '</span>') : ''}
  195. ${codeDom}
  196. </li>`: `<li class="hide-codes">
  197. <p><span style="font-size: 14px;color:#999;font-weight:normal">${tmpPart.code}</span> <span style="font-size: 14px;color:#333;font-weight:normal">${tmpPart.name}</span>
  198. </p>
  199. </li>`
  200. lisStr += tmpLi
  201. }
  202. $(".searchKnowledge .staticSearchB .empty").css({ display: 'none' })
  203. $(".searchKnowledge .staticSearchB .tip").css({ display: 'block' })
  204. $(".searchKnowledge .staticSearchB ul").html(lisStr)
  205. } else {
  206. $(".searchKnowledge .staticSearchB .empty").css({ display: 'block' })
  207. $(".searchKnowledge .staticSearchB .tip").css({ display: 'none' })
  208. $(".searchKnowledge .staticSearchB ul").html('')
  209. }
  210. } else {
  211. console.log(res)
  212. }
  213. })
  214. }
  215. function adjustHeight() {
  216. var ht = window.innerHeight;
  217. var containerHt = $(".medicalKonwledgeWrap .container").height()
  218. var ht2 = $(".searchTypeBox").outerHeight(true)
  219. $(".staticSearchB ul").height(ht - 120 - 10 - 40 + 20 - ht2 + "px");
  220. }
  221. $(window).on('resize', function () {
  222. adjustHeight()
  223. })
  224. $(".staticSearchB ul").on("click", "li .diag-name", function () {
  225. const infoMsgName = $(this).parents("li").attr('data-name')
  226. const infoMsgUName = $(this).parents("li").attr('data-uname')
  227. const type = $(this).parents("li").attr('data-type')
  228. const sign = $(this).parents("li").attr('data-sign')
  229. if (type != 48) {
  230. openNewWin(`staticInfo.html?type=${encodeURIComponent(sign)}&position=0&name=${encodeURIComponent(infoMsgName)}`)
  231. // openNewWin(`information.html?type=${encodeURIComponent(sign)}&position=0&name=${encodeURIComponent(infoMsgName)}&uname=${encodeURIComponent(infoMsgUName)}`)
  232. } else {
  233. let msg = JSON.parse(getUrlArgObject("msg"));
  234. const msg1 = JSON.parse(JSON.stringify(msg))
  235. // console.log('scaleName', msg,infoMsgName)
  236. msg1.scaleName = infoMsgName
  237. msg1.featureType = 21
  238. openNewWin(`scale.html?msg=${encodeURIComponent(JSON.stringify(msg1))}`)
  239. }
  240. })
  241. $(".staticSearchB ul").on("click", "li .code-slide", function () {
  242. $(this).parents("li").toggleClass("hide-codes");
  243. });
  244. $(".staticSearchT").on('click', '#clearKnowledge', function () {
  245. $(".staticSearchT input").val("")
  246. $(".searchKnowledge .staticSearchB ul").html('')
  247. $(".searchKnowledge .staticSearchB .tip").css({ display: 'none' })
  248. $(".searchKnowledge .staticSearchB .empty").css({ display: 'none' })
  249. $(this).prev('.ipt').find('input').focus()
  250. $(this).css({ display: "none" })
  251. })
  252. $(function () {
  253. $(".staticSearchT .ipt").find("input").focus()
  254. })