followUp.js 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. var $ = require("jquery");
  2. var { post,config,getUrlArgObject,openNewWin,isIe8 ,openNewWin} = require('./promise.js');
  3. let showImg = require('./../images/show.png').replace(/^undefined/g, '')
  4. let collapseImg = require('./../images/collapse.png').replace(/^undefined/g, '')
  5. let emptyImg = require('./../images/empty3.png').replace(/^undefined/g, '')
  6. let lisStrFrontIcon = require('./../images/lisStrFront-icon.png').replace(/^undefined/g, '')
  7. let pacsStrFrontIcon = require('./../images/pacsStrFront-icon.png').replace(/^undefined/g, '')
  8. let rightIcon = require('./../images/right-icon.png').replace(/^undefined/g, '')
  9. function getFollowUp(msg) {
  10. return post(config.followUp, msg)
  11. }
  12. let hospitalId = getUrlArgObject('hospitalId') || ''
  13. let mrId = getUrlArgObject('mrId')
  14. function renderFollowUp(msg, type) {
  15. getFollowUp(msg).then(res => {
  16. if (res.data.code === "0") {
  17. const result = res.data.data && res.data.data.pushPlans || []
  18. if (result.length === 0 || (result[0] && result[0].item && JSON.stringify(result[0].item) === "{}")) {
  19. followEmpty()
  20. return
  21. }
  22. renderPage(result, type)
  23. } else {
  24. followEmpty()
  25. }
  26. })
  27. }
  28. function renderPage(data, type) {
  29. const operaItem = data[0] || {}
  30. const operaItemName = operaItem.item || {}
  31. let operaItemDetail = operaItem.pushPlanDetails || []
  32. renderName(operaItemName)
  33. if (type) {
  34. operaItemDetail = operaItemDetail.filter((it)=>it.history===0)||[];
  35. renderDetailHorizontal(operaItemDetail[0])
  36. } else {
  37. renderBtn(operaItemDetail[0])
  38. renderDetail(operaItemDetail[0])
  39. //checkDom()
  40. }
  41. }
  42. function renderName(data) {
  43. const operationTime = data.dateValue && getTime(data.dateValue)
  44. const operationName = data.name || ""
  45. const str = `<div class="operaNameWrap" id="operaNameWrap"><div class="operaNameBox">患者于<span class="operaNameBold">${operationTime}</span>进行<span class="operaNameBold">${operationName}</span>。根据临床路径要求,特制订检验检查计划如下。</div></div>`
  46. $(".followUpWrap").append(str)
  47. }
  48. function renderDetailHorizontal(data) {
  49. let str = ``
  50. for (let i = 0; i < data.length; i++) {
  51. const item = data[i]
  52. const lisArr = item.lis || []
  53. const pacsArr = item.pacs || []
  54. let lisStr = ``
  55. let pacsStr = ``
  56. let title = `<p>${getTime(item.examineDate)}(${item.description && (item.description)})</p>`
  57. for (let i = 0; i < lisArr.length; i++) {
  58. lisStr += `<div style="position:relative"><span class="circle"></span>${lisArr[i]}</div>`
  59. }
  60. for (let i = 0; i < pacsArr.length; i++) {
  61. pacsStr += `<div style="position:relative"><span class="circle"></span>${pacsArr[i]}</div>`
  62. }
  63. str += `<div class="infoBox">
  64. ${title}
  65. <div class="checkFront lisBox">
  66. <div class="lisStrFront">
  67. <img src="${lisStrFrontIcon}" alt="" />
  68. <span>检验</span>
  69. </div>
  70. <div>${lisStr}</div>
  71. </div>
  72. <div class="checkFront pacsBox">
  73. <div class="pacsStrFront">
  74. <img src="${pacsStrFrontIcon}" alt="" />
  75. <span>检查</span>
  76. </div>
  77. <div>${pacsStr}</div>
  78. </div>
  79. </div>`
  80. }
  81. $(".followUpWrap").append(`<div class="infoWrap">${str}<div class="readMorePlan"><a>查看更多计划</a>
  82. <img src="${rightIcon}" alt="" />
  83. </div></div>`)
  84. showMoreCheck()
  85. }
  86. function showMoreCheck() {
  87. $(".readMorePlan").on("click", function () {
  88. openNewWin(`cdssPlan.html?mrId=${mrId}&hospitalId=${hospitalId}`)
  89. })
  90. }
  91. function renderDetail(data) {
  92. let historyStr = ``
  93. let laterStr = ``
  94. for (let i = 0; i < data.length; i++) {
  95. const item = data[i]
  96. const lisArr = item.lis || []
  97. const pacsArr = item.pacs || []
  98. let lisStr = ``
  99. let pacsStr = ``
  100. let title = `<p class="infoBoxTitle">${getTime(item.examineDate)}${item.description ? '(' + item.description + ')' : ''} <img class="toggleInfo" src="${showImg}"/></p>`
  101. for (let i = 0; i < lisArr.length; i++) {
  102. lisStr += `<div class="lisItem"><span class="circle"></span>${lisArr[i]}</div>`
  103. }
  104. for (let i = 0; i < pacsArr.length; i++) {
  105. pacsStr += `<div class="lisItem"><span class="circle"></span>${pacsArr[i]}</div>`
  106. }
  107. if (item.history === 1) {
  108. historyStr += `<div class="infoBox historyBox" >
  109. ${title}
  110. <div class="childrenBox">
  111. ${lisArr.length > 0 ? `<div class="lisBox"><span class="itemBoxTitle">检验</span>${lisStr}</div>` : ""}
  112. ${pacsArr.length > 0 ? `<div class="pacsBox"><span class="itemBoxTitle">检查</span>${pacsStr}</div>` : ""}
  113. </div>
  114. </div>`
  115. } else {
  116. laterStr += `<div class="infoBox">
  117. ${title}
  118. <div class="childrenBox">
  119. ${lisArr.length > 0 ? `<div class="lisBox"><span class="itemBoxTitle">检验</span>${lisStr}</div>` : ""}
  120. ${pacsArr.length > 0 ? `<div class="pacsBox"><span class="itemBoxTitle">检查</span>${pacsStr}</div>` : ""}
  121. </div>
  122. </div>`
  123. }
  124. }
  125. $(".followUpWrap").append(`<div class="infoWrap" id="infoWrap">
  126. <div class="historyWrap">${historyStr}</div>
  127. <div class="laterWrap">${laterStr}</div>
  128. </div>`)
  129. //最近一次计划默认展开
  130. $(".laterWrap .infoBox:first-child .childrenBox").show();
  131. $(".laterWrap .infoBox:first-child .toggleInfo").attr("src",collapseImg)
  132. // adjustHeight()
  133. bindToggleInfo()
  134. }
  135. function renderBtn(data){
  136. const hasBtn = data[0]&&data[0].history&&data[0].history === 1
  137. if(!hasBtn){
  138. return
  139. }
  140. const str = `<div class="btnBox" id="btnBox"><span class="btnName">显示历史计划</span></div>`
  141. $(".operaNameWrap").append(str)
  142. bindToggleHistory()
  143. }
  144. function adjustHeight() {
  145. var containerHt = $(".contentWrapper").height()
  146. var ht1 = $(".operaNameWrap").height()
  147. var ht2 = $(".btnBox").height()
  148. $(".followUpWrap .infoWrap").height(containerHt -ht1- ht2 + "px");
  149. $(".infoWrap").preventScroll();
  150. }
  151. function getTime(time) {
  152. if (!time) {
  153. return ``
  154. }
  155. date = time.replace('-', '/')
  156. const year = new Date(date).getFullYear()
  157. const month = new Date(date).getMonth() + 1
  158. const day = new Date(date).getDate()
  159. return `${year}年${month}月${day}日`
  160. }
  161. // 声明定时器
  162. var cheakDomTimer = null
  163. // 检查dom是否执行完成
  164. function checkDom() {
  165. let dom1Hei = $("#operaNameWrap").height()
  166. let dom2 = document.getElementById('btnBox')
  167. let dom3 = document.getElementById('infoWrap')
  168. let dom2Hei = $("#btnBox").height()
  169. if (dom1Hei !== 0 && (dom2 && dom2Hei != 0 || !dom2) && dom3) {
  170. // 执行dom加载完成后的操作
  171. adjustHeight()
  172. // 清除定时器
  173. if (!cheakDomTimer) {
  174. clearTimeout(cheakDomTimer)
  175. }
  176. } else {
  177. // 自我调用
  178. cheakDomTimer = setTimeout(checkDom, 200)
  179. }
  180. }
  181. function bindToggleHistory() {
  182. $(".followUpWrap .btnName").off("click").on("click",function () {
  183. const btnText = $(".btnName").text()
  184. if (btnText === "显示历史计划") {
  185. $(".btnName").text("隐藏历史计划")
  186. } else {
  187. $(".btnName").text("显示历史计划")
  188. }
  189. $(".historyWrap").slideToggle()
  190. })
  191. }
  192. function bindToggleInfo(){
  193. $(document).off("click").on("click",".infoBoxTitle",function(){
  194. const img = $(this).parents(".infoBox").find(".toggleInfo").attr("src")
  195. if(img === showImg){
  196. $(this).parents(".infoBox").find(".toggleInfo").attr("src",collapseImg)
  197. }else{
  198. $(this).parents(".infoBox").find(".toggleInfo").attr("src",showImg)
  199. }
  200. $(this).parents(".infoBox").find(".childrenBox").slideToggle()
  201. })
  202. }
  203. function followEmpty() {
  204. let str = `<div class="emptyBox">
  205. <img class="emptyImg" src=${emptyImg}>
  206. <p class="emptyTxt">暂无随访计划</p>
  207. </div>`
  208. $(".followUpWrap").append(str)
  209. }
  210. /*$(window).on('resize', function () {
  211. if (window.location.href.indexOf('cdssHorizontal') > -1) {
  212. return
  213. }
  214. adjustHeight()
  215. })*/
  216. module.exports = {
  217. renderFollowUp,
  218. followEmpty
  219. }