staticSearch.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  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. const is8Ie = isIe8() //判断是否为IE8
  15. if(is8Ie) {
  16. let reg = /undefined/g
  17. checkOffImg = checkOffImg.replace(reg, '')
  18. checkOnImg = checkOnImg.replace(reg, '')
  19. }
  20. if(searchType == '1'){
  21. $(".staticSearchB>ul").css({
  22. padding: "0px",
  23. left:"0px"
  24. })
  25. document.title = "医学知识搜索"
  26. }
  27. $(".staticSearchT input").keyup(function(e) {
  28. const ev = e||window.event;
  29. const val = $(this).val();
  30. $(this).parents(".staticSearchT").find("i").css({display:val==""?"none":"inline-block"})
  31. if(val == ''){
  32. $(".searchKnowledge .staticSearchB .empty").css({display:'none'})
  33. $(".searchKnowledge .staticSearchB .tip").css({display:'none'})
  34. $(".searchKnowledge .staticSearchB ul").html('')
  35. $(".searchKnowledge .staticSearchB .inputWarning").css("display","block")
  36. }else{
  37. $(".searchKnowledge .staticSearchB .inputWarning").css("display","none")
  38. }
  39. val!=''&&ev.keyCode == 13&&getKnowledgeData(val);
  40. })
  41. // document.title = "医学知识搜索"
  42. $(".searchScale").css({display:'none'})
  43. $(".searchKnowledge").css({display:'block'})
  44. $(".searchKnowledge .staticSearchT").on('click','button',function() {
  45. var val = $(this).parents(".staticSearchT").find("input").val()
  46. if(val.trim() == ''){
  47. $(".searchKnowledge .staticSearchB ul").html("");
  48. $(".searchKnowledge .staticSearchB .tip").hide();
  49. $(".searchKnowledge .staticSearchB .inputWarning").css("display","block")
  50. }else{
  51. getKnowledgeData(val)
  52. }
  53. })
  54. function getMedicalTypes() {
  55. post(config.dictionaryInfo,{}).then((res) =>{
  56. const data = res.data
  57. if(data.code == 0) {
  58. medicalTypesList = res.data.data[7]
  59. medicalTypesList[0].checked = true
  60. renderMedicalType(medicalTypesList)
  61. } else {
  62. console.log(res)
  63. }
  64. })
  65. }
  66. function renderMedicalType(medicalTypesList) {
  67. let str = ''
  68. for(let i = 0; i < medicalTypesList.length; i++) {
  69. str += `<span class='medicalTypeItem' data-index=${i}><img src = ${medicalTypesList[i].checked? checkOnImg:checkOffImg}>${medicalTypesList[i].name}</span>`
  70. }
  71. $('.searchTypeBox').html(str)
  72. bindMedicalTypeClick();
  73. }
  74. function bindMedicalTypeClick() {
  75. $('.searchTypeBox .medicalTypeItem').on("click", function(){
  76. const index = $(this).attr('data-index')
  77. if(index == 0) {
  78. if(medicalTypesList[0].checked) {
  79. medicalTypesList[0].checked = false
  80. }else {
  81. for(let i = 0; i < medicalTypesList.length; i++) {
  82. medicalTypesList[i].checked = false
  83. }
  84. medicalTypesList[0].checked = true
  85. }
  86. renderMedicalType(medicalTypesList)
  87. } else {
  88. if(medicalTypesList[0].checked) {
  89. medicalTypesList[0].checked = false
  90. }
  91. medicalTypesList[index].checked = !medicalTypesList[index].checked
  92. }
  93. renderMedicalType(medicalTypesList)
  94. })
  95. }
  96. getMedicalTypes()
  97. function getKnowledgeData(value) {
  98. $(".searchKnowledge .staticSearchB .inputWarning").css("display","none")
  99. $(".searchKnowledge .staticSearchB .empty").css({display:'none'})
  100. $(".searchKnowledge .staticSearchB ul").html('')
  101. if(first) {
  102. adjustHeight()
  103. first =false
  104. }
  105. let medicalTypes = []
  106. for(let i = 0; i < medicalTypesList.length; i++) {
  107. if(medicalTypesList[i].checked) {
  108. medicalTypes.push(medicalTypesList[i].val)
  109. }
  110. }
  111. $(".searchKnowledge .staticSearchB .searching").css("display","block")
  112. post(config.getStaticKnowledge,{
  113. inputStr: value.replace(/\\/g,'\\\\').replace(/%/g,'\\%').replace(/\_/g,'\\_').trim(),
  114. types:medicalTypes
  115. }).then((res) => {
  116. $(".searchKnowledge .staticSearchB .searching").css("display","none")
  117. const data = res.data
  118. if(data.code == 0) {
  119. var knowledgeLis = data.data;
  120. var lisStr = ''
  121. if(knowledgeLis&&knowledgeLis.length>0){
  122. for(var i = 0;i<knowledgeLis.length;i++){
  123. var tmpPart = knowledgeLis[i];
  124. var ynameDom = tmpPart.code?`<tr>
  125. <td rowspan="2" width="65"><span class="type-icon">医保版</span></td>
  126. <td><span title="${tmpPart.name}">${tmpPart.name}</span></td>
  127. </tr>
  128. <tr>
  129. <td>
  130. <span title="${tmpPart.code}" class="type-code">${tmpPart.code}</span>
  131. </td>
  132. </tr>`:'';
  133. var gnameDom = tmpPart.guoname||tmpPart.guocode?`<tr>
  134. <td rowspan="2"><span class="type-icon type-l">国临版</span></td>
  135. <td><span title="${tmpPart.guoname}">${tmpPart.guoname}</span></td>
  136. </tr>
  137. <tr>
  138. <td>
  139. <span title="${tmpPart.guocode}" class="type-code">${tmpPart.guocode}</span>
  140. </td>
  141. </tr>`:'';
  142. var codeDom = ynameDom+gnameDom?`<div class="codeDiv"><table width="100%"><tbody>${ynameDom}${gnameDom}</tbody></table></div>`:"";
  143. var codeIcon = ynameDom+gnameDom?`<span class="code-slide"></span>`:"";
  144. var tmpLi = `<li class="hide-codes" data-name='${tmpPart.name}' data-uname='${tmpPart.uniqueName}' data-type='${tmpPart.libTypeId}' data-sign='${tmpPart.type}'>
  145. <p><span class="diag-name">${tmpPart.name}<i>${tmpPart.typeName?(' ( '+tmpPart.typeName+' )'):''}</i></span>
  146. ${codeIcon}
  147. </p>
  148. ${tmpPart.retrievalName?('<span>• '+tmpPart.retrievalName+'</span>'):''}
  149. ${codeDom}
  150. </li>`
  151. lisStr += tmpLi
  152. }
  153. $(".searchKnowledge .staticSearchB .empty").css({display:'none'})
  154. $(".searchKnowledge .staticSearchB .tip").css({display:'block'})
  155. $(".searchKnowledge .staticSearchB ul").html(lisStr)
  156. }else{
  157. $(".searchKnowledge .staticSearchB .empty").css({display:'block'})
  158. $(".searchKnowledge .staticSearchB .tip").css({display:'none'})
  159. $(".searchKnowledge .staticSearchB ul").html('')
  160. }
  161. }else{
  162. console.log(res)
  163. }
  164. })
  165. }
  166. function adjustHeight() {
  167. var ht = window.innerHeight;
  168. var containerHt = $(".medicalKonwledgeWrap .container").height()
  169. var ht2 = $(".searchTypeBox").outerHeight(true)
  170. $(".staticSearchB ul").height(ht - 120-10-40 +20- ht2 + "px");
  171. }
  172. $(window).on('resize', function(){
  173. adjustHeight()
  174. })
  175. $(".staticSearchB ul").on("click","li .diag-name",function(){
  176. const infoMsgName = $(this).parents("li").attr('data-name')
  177. const infoMsgUName = $(this).parents("li").attr('data-uname')
  178. const type = $(this).parents("li").attr('data-type')
  179. const sign = $(this).parents("li").attr('data-sign')
  180. if(type != 48){
  181. openNewWin(`staticInfo.html?type=${encodeURIComponent(sign)}&position=0&name=${encodeURIComponent(infoMsgName)}`)
  182. // openNewWin(`information.html?type=${encodeURIComponent(sign)}&position=0&name=${encodeURIComponent(infoMsgName)}&uname=${encodeURIComponent(infoMsgUName)}`)
  183. }else{
  184. let msg = JSON.parse(getUrlArgObject("msg"));
  185. const msg1 = JSON.parse(JSON.stringify(msg))
  186. // console.log('scaleName', msg,infoMsgName)
  187. msg1.scaleName = infoMsgName
  188. msg1.featureType = 21
  189. openNewWin(`scale.html?msg=${encodeURIComponent(JSON.stringify(msg1))}`)
  190. }
  191. })
  192. $(".staticSearchB ul").on("click","li .code-slide",function(){
  193. $(this).parents("li").toggleClass("hide-codes");
  194. });
  195. $(".staticSearchT").on('click','#clearKnowledge',function() {
  196. $(".staticSearchT input").val("")
  197. $(".searchKnowledge .staticSearchB ul").html('')
  198. $(".searchKnowledge .staticSearchB .tip").css({display:'none'})
  199. $(".searchKnowledge .staticSearchB .empty").css({display:'none'})
  200. $(this).prev('.ipt').find('input').focus()
  201. $(this).css({display:"none"})
  202. })
  203. $(function(){
  204. $(".staticSearchT .ipt").find("input").focus()
  205. })