qcListDocteam.js 39 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012
  1. const $ = require('jquery');
  2. require("../css/qcListDocteam.less");
  3. require('./modal.js');
  4. const {api} = require('./api.js')
  5. const {post,getCookie,getUrlArgObjectNew,emptyBox,downloadExportedData,expJson,initScroll,listenScroll} = require('./utils.js')
  6. require('./../resource/jquery-ui/jquery-ui.min.js');
  7. require('./../resource/jquery-ui/jquery-ui.min.css');
  8. const iconCheck= require("./../images/icon_check.png")
  9. const iconUnCheck = require("./../images/icon_unchecked.png")
  10. const iconCalenBlue= require("./../images/icon_calen_blue.png")
  11. const iconCalenGrey= require("./../images/icon_calen_grey.png")
  12. const iconDown= require("./../images/arrow_down.png")
  13. const iconUp = require("./../images/arrow_up.png")
  14. const loadingImg = require("./../images/loading.gif")
  15. const arrowLeft= require("./../images/arrow_left.png")
  16. const arrowRight = require("./../images/arrow_right.png")
  17. const goUpG= require("./../images/arrow_up_grey.png")
  18. const goUpB = require("./../images/arrow_up_blue.png")
  19. const goDownG= require("./../images/arrow_down_grey.png")
  20. const goDownB = require("./../images/arrow_down_blue.png")
  21. listenScroll()
  22. let pageSet = [],pageSetCopy = [], showNum = 0, scrollTop=0;
  23. $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  24. $(".fpSelectCheck").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  25. $(".qcSelectCheck").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  26. let srcUrl = $("#contentIframe",parent.document).attr("src")
  27. let statisticsType = getUrlArgObjectNew("dateType",srcUrl)||getUrlArgObjectNew("shijian",srcUrl) || ""
  28. let chengdu = getUrlArgObjectNew("chengdu",srcUrl)||""
  29. let deptIdPram = getUrlArgObjectNew("deptId",srcUrl)||""
  30. let deptNamePram = getUrlArgObjectNew("deptName",srcUrl)||""
  31. let docName = getUrlArgObjectNew("docName",srcUrl)||""
  32. let tabList = [], name = "", behospitalCode="", behosDateStart="", level="",behosDateEnd="", scoreSum = 0,nameTemp = "",
  33. behospitalCodeTemp="",levelTemp="", deptId="",deptIdTemp="", doctorName="", doctorNameTemp="", doctorNum="", doctorNumTemp="",
  34. fpCheckStatus="",fpCheckStatusTemp="",fpCheckName="",fpCheckNameTemp="",qcCheckName="",qcCheckNameTemp="",qcCheckStatus="",qcCheckStatusTemp="",fpCheckDateStart="",fpCheckDateEnd="",
  35. qcCheckDateStart="",qcCheckDateEnd="",data_desc=["leave_hospital_date"],data_asc=[];
  36. $("#filterToggler").click(function(){
  37. const text = $(this).text();
  38. $(".toggle-item").slideToggle();
  39. $(this).text(text==="收起筛选"?"展开筛选":"收起筛选").toggleClass("up");
  40. });
  41. if(chengdu){
  42. levelTemp = chengdu
  43. level = chengdu
  44. $('.selectLevel').html(chengdu)
  45. $(".levelList").css("display", "none")
  46. $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  47. }
  48. if(docName){
  49. doctorNameTemp = docName
  50. doctorName = docName
  51. $('.doctorInp').val(docName)
  52. }
  53. $('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
  54. $('.iconCalen').on("mouseenter", function(e){
  55. $(this).attr("src", iconCalenBlue)
  56. })
  57. $('.iconCalen').on("mouseleave", function(e){
  58. $(this).attr("src", iconCalenGrey)
  59. })
  60. $('.iconCalen').on("click", function(e){
  61. $(this).parent().find("input").focus()
  62. })
  63. $('.recordScoreBtn').css("opacity",hasData('FUNC000017')?'1':'0.5')
  64. //判断有无某一权限
  65. function hasData(data){
  66. let trdObj = JSON.parse(getCookie("trdObj"))
  67. let lis = trdObj['YH-BLZK-ZKPFYLZ']
  68. if(!lis){
  69. return false
  70. }
  71. if(lis.indexOf(data)>-1){//有权限
  72. return true
  73. }
  74. return false;
  75. }
  76. function getTabData(activePage){
  77. const param = {
  78. current:activePage,
  79. behospitalCode: behospitalCode,
  80. name: name, //条目名
  81. level:level,//病历等级
  82. asc:data_asc, //升序
  83. desc:data_desc, //降序
  84. doctorName: doctorName,
  85. doctorCode: doctorNum,
  86. leaveHosDateStart: behosDateStart, //1-单项否决 0-非
  87. leaveHosDateEnd: behosDateEnd, //0-未启用 1-启用
  88. size: 15,
  89. statisticsType:statisticsType,
  90. checkStatus: qcCheckStatus?Number(qcCheckStatus):qcCheckStatus, //病历核查状态
  91. mrStatus: fpCheckStatus?Number(fpCheckStatus):fpCheckStatus, //首页核查状态(1:已核查,0:未核查)
  92. chName: qcCheckName, //病历核查人员
  93. mrName: fpCheckName, //首页核查人员
  94. chTimeStart: qcCheckDateStart.replace(/\//g,'-'), //病历核查起始时间
  95. chTimeEnd: qcCheckDateEnd.replace(/\//g,'-'), //病历核查截止时间
  96. mrTimeStart: fpCheckDateStart.replace(/\//g,'-'), //首页核查起始时间
  97. mrTimeEnd: fpCheckDateEnd.replace(/\//g,'-'), //首页核查截止时间
  98. }
  99. return post(api.qcListByDoc,param).then(res =>{
  100. if(res.data.code == '0'){
  101. tabList = res.data.data.records
  102. const totalPage = res.data.data.pages
  103. const totalNum = res.data.data.total
  104. renderTab(tabList)
  105. renderPagination(totalPage,Number(activePage),totalNum)
  106. if(totalPage > 1){
  107. renderPagination(totalPage,Number(activePage),totalNum)
  108. } else{
  109. $('.pagination').html("")
  110. }
  111. }else{
  112. $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  113. }
  114. }).catch((e) =>{
  115. })
  116. }
  117. //getTabData(1)
  118. $(".filter").on("click", function(e){
  119. behosDateStart = $("#datepicker").val()
  120. behosDateEnd = $("#datepicker2").val()
  121. fpCheckDateStart = $("#datepickerFp1").val()
  122. fpCheckDateEnd = $("#datepickerFp2").val()
  123. qcCheckDateStart = $("#datepickerQc1").val()
  124. qcCheckDateEnd = $("#datepickerQc2").val()
  125. const behosDateStartTime = new Date(behosDateStart).getTime()
  126. const behosDateEndTime = new Date(behosDateEnd).getTime()
  127. const qcCheckDateStartTime = new Date(qcCheckDateStart).getTime()
  128. const qcCheckDateEndTime = new Date(qcCheckDateEnd).getTime()
  129. const fpCheckDateStartTime = new Date(fpCheckDateStart).getTime()
  130. const fpCheckDateEndTime = new Date(fpCheckDateEnd).getTime()
  131. if(behosDateStartTime > behosDateEndTime){
  132. $.alerModal({"message":'出院日期开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  133. return
  134. }
  135. if(qcCheckDateStartTime > qcCheckDateEndTime){
  136. $.alerModal({"message":'病历核查开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  137. return
  138. }
  139. if(fpCheckDateStartTime > fpCheckDateEndTime){
  140. $.alerModal({"message":'病案首页核查开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  141. return
  142. }
  143. if(behosDateStart){
  144. behosDateStart = behosDateStart.replace(/\//g,'-') + ' 00:00:00'
  145. }
  146. if(behosDateEnd){
  147. behosDateEnd = behosDateEnd.replace(/\//g,'-') + ' 23:59:59'
  148. }
  149. if(fpCheckDateStart){
  150. fpCheckDateStart = fpCheckDateStart + ' 00:00:00'
  151. }
  152. if(fpCheckDateEnd){
  153. fpCheckDateEnd = fpCheckDateEnd + ' 23:59:59'
  154. }
  155. if(qcCheckDateStart){
  156. qcCheckDateStart = qcCheckDateStart + ' 00:00:00'
  157. }
  158. if(qcCheckDateEnd){
  159. qcCheckDateEnd = qcCheckDateEnd + ' 23:59:59'
  160. }
  161. name = nameTemp
  162. behospitalCode = behospitalCodeTemp
  163. level = levelTemp==="全部"?"":levelTemp
  164. deptId = deptIdTemp
  165. doctorName = doctorNameTemp
  166. fpCheckName = fpCheckNameTemp
  167. qcCheckName = qcCheckNameTemp
  168. doctorNum = doctorNumTemp
  169. fpCheckStatus = fpCheckStatusTemp
  170. qcCheckStatus = qcCheckStatusTemp
  171. getTabData(1)
  172. })
  173. $(".abnormalClear").on("click", function(e){
  174. tabList = [];
  175. name = "";
  176. behospitalCode="";
  177. level="";
  178. scoreSum = 0;
  179. nameTemp = "";
  180. behospitalCodeTemp="";
  181. levelTemp="";
  182. deptId="";
  183. deptIdTemp="";
  184. doctorName="";
  185. fpCheckName="";
  186. qcCheckName="" ;
  187. doctorNum="";
  188. doctorNameTemp="";
  189. doctorNumTemp="";
  190. fpCheckNameTemp="";
  191. qcCheckNameTemp="";
  192. fpCheckStatus="";
  193. fpCheckStatusTemp="";
  194. qcCheckStatus="";
  195. qcCheckStatusTemp=""
  196. data_desc=["leave_hospital_date"]
  197. data_asc=[];
  198. $('.patientNumInp').val('')
  199. $('.patientNameInp').val('')
  200. $('.doctorInp').val('')
  201. $('.doctorNumInp').val('')
  202. $('.doctorInp').val('')
  203. $('.fpCheckPeople').val('')
  204. $('.qcCheckPeople').val('')
  205. // $('#datepicker').val('')
  206. // $('#datepicker2').val('')
  207. //默认日期为近一周
  208. $( "#datepicker" ).datepicker({
  209. changeMonth: true,
  210. changeYear: true,
  211. dateFormat:"yy/mm/dd",
  212. }).datepicker( "setDate", "-6d");
  213. $( "#datepicker2" ).datepicker({
  214. changeMonth: true,
  215. changeYear: true,
  216. dateFormat:"yy/mm/dd"
  217. }).datepicker( "setDate",new Date());
  218. $( "#datepickerFp1" ).datepicker({
  219. changeMonth: true,
  220. changeYear: true,
  221. dateFormat:"yy/mm/dd",
  222. }).datepicker( "setDate", "");
  223. $( "#datepickerFp2" ).datepicker({
  224. changeMonth: true,
  225. changeYear: true,
  226. dateFormat:"yy/mm/dd"
  227. }).datepicker( "setDate","");
  228. $( "#datepickerQc1" ).datepicker({
  229. changeMonth: true,
  230. changeYear: true,
  231. dateFormat:"yy/mm/dd",
  232. }).datepicker( "setDate", "");
  233. $( "#datepickerQc2" ).datepicker({
  234. changeMonth: true,
  235. changeYear: true,
  236. dateFormat:"yy/mm/dd"
  237. }).datepicker( "setDate","");
  238. $('.selectLevel').html('全部')
  239. $(".levelList").css("display", "none")
  240. $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  241. // $('.selectLevel ').addClass('unSelect')
  242. $('.fpSelectCheck').html('全部')
  243. $(".fpCheckList").css("display", "none")
  244. $(".fpSelectCheck").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  245. $('.qcSelectCheck').html('全部')
  246. $(".qcCheckList").css("display", "none")
  247. $(".qcSelectCheck").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  248. $("th[code]").removeClass("asc desc")
  249. $(".leaveHospitalDate").addClass(" desc")
  250. behosDateStart = $("#datepicker").val()
  251. behosDateEnd = $("#datepicker2").val()
  252. if(behosDateStart){
  253. behosDateStart = behosDateStart.replace(/\//g,'-') + ' 00:00:00'
  254. }
  255. if(behosDateEnd){
  256. behosDateEnd = behosDateEnd.replace(/\//g,'-') + ' 23:59:59'
  257. }
  258. fpCheckDateStart = ""
  259. fpCheckDateEnd = ""
  260. qcCheckDateStart = ""
  261. qcCheckDateEnd = ""
  262. getTabData(1)
  263. })
  264. function bindOrder(){
  265. $("th[code]").off("click").on("click",function(e){
  266. const code=$(this).attr("code");
  267. if(data_asc[0]===code){
  268. data_desc=[code];
  269. data_asc=[];
  270. $("th[code]").removeClass("asc desc");
  271. $(this).addClass("desc");
  272. }else{
  273. data_desc=[];
  274. data_asc=[code];
  275. $("th[code]").removeClass("asc desc");
  276. $(this).addClass("asc");
  277. }
  278. getTabData(1);
  279. // console.log(code)
  280. });
  281. }
  282. function renderTab(data){
  283. let str = ``
  284. let hasSelectAll = true;
  285. if(data.length===0){
  286. $('.tbody').html(emptyBox(null,showNum+2))
  287. // initScroll("qcListDocteam","YX",1)
  288. return;
  289. }
  290. for(let i = 0; i < data.length; i++){
  291. const item = data[i]
  292. if(!item.hasSelect){
  293. hasSelectAll = false
  294. }
  295. str += `
  296. <tr data-index=${i}>
  297. <td class="scoreOperaItem textCenter">${item.hasSelect ? `<img class="iconCheck" src=${iconCheck} />`:`<img class="iconCheck" src=${iconUnCheck} />`}</td>
  298. <td class="recordScoreOperaBtn textCenter" style="opacity:${hasData('FUNC000017')?'1':'0.5'}">评分</td>`
  299. for(let j = 0; j < pageSet.length; j++){
  300. if(pageSet[j].status == 1){
  301. if(pageSet[j].val === "checkStatus" || pageSet[j].val === "mrStatus" ){
  302. str += `<td class="${isTextCenter(pageSet[j].val) ? 'textCenter':''}"><span data-index=${i} class="${pageSet[j].val=='name'?'patientNameSpan':'' } ">${item[pageSet[j].val] =="1"? "已核查" :item[pageSet[j].val] === 0 ? "未核查":"-"}<span></td>`
  303. }else{
  304. str += `<td class="${isTextCenter(pageSet[j].val) ? 'textCenter':''}"><span data-index=${i} class="${pageSet[j].val=='name'?'patientNameSpan':'' } ">${item[pageSet[j].val] || "-"}<span></td>`
  305. }
  306. }
  307. }
  308. // <td >${item.behospitalCode || "-"}</td>
  309. // <td>${item.fileCode || "-"}</td>
  310. // <td class="textCenter"><span data-index=${i} class="patientNameSpan">${item.name || "-"}<span></td>
  311. // <td class="textCenter">${item.sex || "-"}</td>
  312. // <td class="textCenter">${item.age || "-"}</td>
  313. // <td class="textCenter">${item.bedCode || "-"}</td>
  314. // <td class="textCenter">${item.behospitalDate&&item.behospitalDate.slice(0,10) || "-"}</td>
  315. // <td class="textCenter">${item.leaveHospitalDate&&item.leaveHospitalDate.slice(0,10)|| "-"}</td>
  316. // <td class="textCenter">${item.diagnose|| "-"}</td>
  317. // <td class="textCenter">${item.behDoctorName || "-"}</td>
  318. // <td class="textCenter">${item.doctorName || "-"}</td>
  319. // <td class="textCenter">${item.directorDoctorName || "-"}</td>
  320. // <td class="textCenter">${item.behDeptName || "-"}</td>
  321. // <td class="textCenter">${item.level || "-"}</td>
  322. // <td class="textCenter">${item.scoreRes || "-"}</td>
  323. // <td class="textCenter">${item.gradeTime&&item.gradeTime.slice(0,10) || "-"}</td>
  324. str += "</tr>"
  325. }
  326. if(data.length === 0){
  327. hasSelectAll = false
  328. }
  329. if(hasSelectAll){
  330. $('.scoreOpera img').attr("src" ,iconCheck)
  331. $('.scoreOpera').attr("data-selectall",true)
  332. }else{
  333. $('.scoreOpera img').attr("src" ,iconUnCheck)
  334. $('.scoreOpera').attr("data-selectall",false)
  335. }
  336. $('.tbody').html(str)
  337. bindScoreOperaItem()
  338. bindRecordScoreOper()
  339. bindScoreDetail()
  340. // initScroll("qcListDocteam","YX",1)
  341. }
  342. function isTextCenter(name){
  343. const textCenterList = ['level', 'scoreRes', 'sex','age', 'behospitalDate', 'leaveHospitalDate', 'placefileDate', 'gradeTime','checkStatus','mrStatus','mrTime','chTime','chName','mrName','diagnose','behDoctorName','directorDoctorName','doctorName','name']
  344. return textCenterList.findIndex(item=> item==name) > -1
  345. }
  346. function scoreDetail(id,age,code,name){
  347. window.open(`./qcScore.html?id=${id}&age=${age}&code=${code}&hid=${getCookie('hospitalid')}&name=${name}`)
  348. }
  349. function bindScoreDetail(){
  350. $('.patientNameSpan').on('click',function(e){
  351. const index = $(this).attr("data-index")
  352. const id = tabList[index].behospitalCode
  353. const age = tabList[index].age
  354. const noScore = tabList[index].level == '未评分'
  355. const checkStatus = tabList[index].checkStatus
  356. if(noScore){
  357. $.alerModal({"message":'请先进行评分!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  358. return
  359. } else{
  360. scoreDetail(id,age,'YH-BLZK-ZKPFKS',tabList[index].name)
  361. }
  362. })
  363. }
  364. //选择病历等级
  365. $('.selectLevel').on("click", function(e){
  366. e.stopPropagation()
  367. $(".checkList ").css("display", "none")
  368. $(".selectCheck .arrow").attr("src",iconDown)
  369. $(".fpCheckList ").css("display", "none")
  370. $(".fpSelectCheck .arrow").attr("src",iconDown)
  371. $(".qcSelectCheck .arrow").attr("src",iconDown)
  372. $(".qcCheckList ").css("display", "none")
  373. const showList = $(".levelList ").css("display")
  374. if(showList == "none" ||!showList){
  375. $(".levelList ").css("display","block")
  376. $(".selectLevel .arrow").attr("src",iconUp)
  377. }else{
  378. $(".levelList ").css("display", "none")
  379. $(".selectLevel .arrow").attr("src",iconDown)
  380. }
  381. })
  382. //选择病案首页核查状态
  383. $('.fpSelectCheck').on("click", function(e){
  384. e.stopPropagation()
  385. $(".deptList ").css("display", "none")
  386. $(".selectDept .arrow").attr("src",iconDown)
  387. $(".levelList ").css("display","none")
  388. $(".selectLevel .arrow").attr("src",iconDown)
  389. $(".qcSelectCheck .arrow").attr("src",iconDown)
  390. $(".qcCheckList ").css("display", "none")
  391. const showList = $(".fpCheckList ").css("display")
  392. if(showList == "none" ||!showList){
  393. $(".fpCheckList ").css("display","block")
  394. $(".fpSelectCheck .arrow").attr("src",iconUp)
  395. }else{
  396. $(".fpCheckList ").css("display", "none")
  397. $(".fpSelectCheck .arrow").attr("src",iconDown)
  398. }
  399. })
  400. //选择病历核查状态
  401. $('.qcSelectCheck').on("click", function(e){
  402. e.stopPropagation()
  403. $(".deptList ").css("display", "none")
  404. $(".selectDept .arrow").attr("src",iconDown)
  405. $(".levelList ").css("display","none")
  406. $(".selectLevel .arrow").attr("src",iconDown)
  407. $(".fpSelectCheck .arrow").attr("src",iconDown)
  408. $(".fpCheckList ").css("display", "none")
  409. const showList = $(".qcCheckList ").css("display")
  410. if(showList == "none" ||!showList){
  411. $(".qcCheckList ").css("display","block")
  412. $(".qcSelectCheck .arrow").attr("src",iconUp)
  413. }else{
  414. $(".qcCheckList ").css("display", "none")
  415. $(".qcSelectCheck .arrow").attr("src",iconDown)
  416. }
  417. })
  418. bindLeveldSelect()
  419. //病历等级选择
  420. function bindLeveldSelect(){
  421. $('.levelItem').on("click",function(){
  422. const levelItemName = $(this).attr("data-name")
  423. const levelItemItemId = $(this).attr("data-id")
  424. levelTemp =levelItemItemId
  425. $('.selectLevel').html(levelItemName)
  426. $(".levelList").css("display", "none")
  427. $(".selectLevel").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  428. $('.selectLevel').removeClass('unSelect')
  429. })
  430. }
  431. bindCheckedSelectFp()
  432. //病案首页核查状态选择
  433. function bindCheckedSelectFp(){
  434. $('.fpCheckItem').on("click",function(){
  435. const fpCheckItemName = $(this).attr("data-name")
  436. const fpCheckItemItemId = $(this).attr("data-id") || ""
  437. fpCheckStatusTemp =fpCheckItemItemId
  438. $('.fpSelectCheck').html(fpCheckItemName)
  439. $(".fpCheckList").css("display", "none")
  440. $(".fpSelectCheck").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  441. $('.fpSelectCheck').removeClass('unSelect')
  442. })
  443. }
  444. bindCheckedSelectQc()
  445. //病历核查状态选择
  446. function bindCheckedSelectQc(){
  447. $('.qcCheckItem').on("click",function(){
  448. const qcCheckItemName = $(this).attr("data-name")
  449. const qcCheckItemItemId = $(this).attr("data-id") || ""
  450. qcCheckStatusTemp =qcCheckItemItemId
  451. $('.qcSelectCheck').html(qcCheckItemName)
  452. $(".qcCheckList").css("display", "none")
  453. $(".qcSelectCheck").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  454. $('.qcSelectCheck').removeClass('unSelect')
  455. })
  456. }
  457. //全选绑定
  458. bindOperaAll()
  459. function bindScoreOperaItem(){
  460. $(".scoreOperaItem").on("click", function(e){
  461. const index = $(this).parent().attr("data-index")
  462. tabList[index].hasSelect = tabList[index].hasSelect ? false:true
  463. renderTab(tabList)
  464. })
  465. }
  466. function bindRecordScoreOper(){
  467. $(".recordScoreOperaBtn").on("click", function(e){
  468. if(!hasData('FUNC000017')){
  469. return
  470. }
  471. const index = $(this).parent().attr("data-index")
  472. const behospitalCode = tabList[index].behospitalCode
  473. loading()
  474. recordScore(behospitalCode,1,true)
  475. })
  476. }
  477. function bindOperaAll(){
  478. $('.scoreOpera').on("click", function(e){
  479. const hasSelectAll = $('.scoreOpera').attr("data-selectall")
  480. if(hasSelectAll == 'true'){
  481. for(let i = 0; i < tabList.length; i++){
  482. tabList[i].hasSelect = false
  483. }
  484. }else{
  485. for(let i = 0; i < tabList.length; i++){
  486. tabList[i].hasSelect = true
  487. }
  488. }
  489. renderTab(tabList)
  490. })
  491. }
  492. //获取页面配置
  493. function getPageSet(){
  494. return post(api.getQcListPageSet,{pageType:1}).then(res =>{
  495. if(res.data.code == '0'){
  496. pageSet = res.data.data
  497. pageSetCopy = JSON.parse(JSON.stringify(pageSet))
  498. showNum = 0
  499. renderTabTitle(pageSet)
  500. }else{}
  501. }).catch((e) =>{
  502. })
  503. }
  504. function renderTabTitle(data){
  505. let str = ` <th class="textCenter" ></th>
  506. <th class="recordScoreOpera textCenter" style="width: 65px;">操作</th>`
  507. for(let i = 0; i < data.length; i++){
  508. const item = data[i]
  509. if(item.status == 1){
  510. showNum++
  511. str += `<th class="textCenter ${item.val} ${item.val =='leaveHospitalDate' ? 'desc':''}" code="${item.val.replace(/([A-Z])/g,function(match) {
  512. return '_' + match.toLowerCase()
  513. })}">${item.name}</th>`
  514. }
  515. }
  516. let operStr=`<td colspan="${showNum+2}" style="background: #fff">
  517. <div class="tabFoot">
  518. <span class="scoreOpera" data-selectAll=false><img class="iconCheck" src="${iconUnCheck}" alt="checkbox">全选</span>
  519. <span class="recordScoreBtn">评分</span>
  520. <span class="setCol"><img class="iconSetting" src=${require('./../images/setting.png')} alt="关闭" />列设置</span>
  521. </div>
  522. </td>`
  523. $(".tabOpera").html(operStr)
  524. $(".tabTitle").html(str)
  525. //全选绑定
  526. bindOperaAll()
  527. bindRecordScoreBtn()
  528. bindSetCol()
  529. bindOrder()
  530. }
  531. function bindSetCol(){
  532. $(".setCol").off("click").on("click", function(){
  533. renderColSet(pageSetCopy)
  534. })
  535. }
  536. function loading(){
  537. const str = `
  538. <div class="loadingBox">
  539. <div class="mask"></div>
  540. <img class="loadingImg" src=${loadingImg} alt="loading" />
  541. </div>
  542. `
  543. $("#mainBox", parent.document).append(str)
  544. }
  545. function hideLoading(){
  546. $("#mainBox .loadingBox", parent.document).remove()
  547. }
  548. function bindRecordScoreBtn(){
  549. $('.recordScoreBtn').off("click").on("click",function(e){
  550. if(!hasData('FUNC000017')){
  551. return
  552. }
  553. let scoreList = []
  554. for(let i = 0; i <tabList.length; i++){
  555. if(tabList[i].hasSelect){
  556. scoreList.push(tabList[i].behospitalCode)
  557. }
  558. }
  559. if(scoreList.length === 0){
  560. $.alerModal({"message":'请选择要评分的项!',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  561. return
  562. } else{
  563. loading()
  564. for(let j = 0; j < scoreList.length; j++){
  565. recordScore(scoreList[j],scoreList.length,true)
  566. }
  567. }
  568. })
  569. }
  570. function recordScore(behospitalCode,totalNum,hasToast){
  571. const param = {
  572. behospitalCode: behospitalCode
  573. }
  574. post(api.recordScore,param).then(res =>{
  575. if(res.data.code == '0'){
  576. scoreSum++
  577. if(scoreSum === totalNum){
  578. hideLoading()
  579. scoreSum = 0
  580. const activePage = $(".activePage").attr('data-page') || 1
  581. getTabData(activePage)
  582. if(hasToast){
  583. $.alerModal({"message":'评分成功',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  584. }
  585. }
  586. }else{
  587. hideLoading()
  588. if(hasToast){
  589. $.alerModal({"message":'评分失败',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  590. }
  591. }
  592. }).catch((e) =>{
  593. hideLoading()
  594. if(hasToast){
  595. $.alerModal({"message":'评分失败',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  596. }
  597. })
  598. }
  599. function renderColSet(list){
  600. let pageSetList = list || pageSetCopy
  601. let allSelect = true
  602. for(let i = 0; i < pageSetList.length; i++){
  603. if(pageSetList[i].status != 1){
  604. allSelect = false
  605. }
  606. }
  607. let str = `<div class='colSetBox'>
  608. <div class='mask'></div>
  609. <div class='cloInfobox'>
  610. <div class='cloInfoTitle'><span class='cloInfoTitleTxt'>列显示设置</span> <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></div>
  611. <div class='cloInfo'></div>
  612. <div class='btnBox'> <span class='cancalColSet'>取消</span> <span class='saveColSet'>保存设置</span></div>
  613. </div>
  614. </div>`
  615. let infoStr = `<div class='colTabTitle' ><span class='colOpera toggleSelectColAll' data-select=${allSelect}>${allSelect ? `<img src=${iconCheck} />`:`<img src=${iconUnCheck} />`}全选</span><span class='colName'>列名</span></div><div class='colTabInfoBox' >`
  616. for(let i = 0; i < pageSetList.length; i++){
  617. infoStr += `<div class='colTabInfo' data-index=${i}>
  618. <span class='colOpera' data-index=${i}>${pageSetList[i].status == 1 ? `<img class="toggleSelectCol" src=${iconCheck} />`:`<img class="toggleSelectCol" src=${iconUnCheck} />`}</span>
  619. <span class='colName'>
  620. <span>${pageSetList[i].name}</span>
  621. <span class="pageOrder">
  622. <span class="pageSetUpBox">${ i === 0 ?'':`<img class="pageSetUp" src=${goUpG} />`}</span>
  623. <span class="pageSetDownBox">${ i === pageSetList.length -1 ?'':`<img class="pageSetDown" src=${goDownG} />`}</span>
  624. </span>
  625. </span>
  626. </div>`
  627. }
  628. infoStr += "</div>"
  629. // $(".main-body").append(str)
  630. if(!$("#mainBox .colSetBox", parent.document).length){
  631. $("#mainBox", parent.document).append(str)
  632. }
  633. $("#mainBox .colSetBox .cloInfo", parent.document).html(infoStr)
  634. $(".colTabInfoBox", parent.document).scrollTop(scrollTop)
  635. scrollTop = 0
  636. bindSelectCol()
  637. bindColOrder()
  638. bindSaveColSet()
  639. bindCloseColSet()
  640. bindImgEnter()
  641. }
  642. function bindImgEnter(){
  643. $(".pageSetUpBox img",parent.document).off("mouseenter").on("mouseenter",function(){
  644. $(this).attr('src', goUpB)
  645. })
  646. $(".pageSetDownBox img",parent.document).off("mouseenter").on("mouseenter",function(){
  647. $(this).attr('src', goDownB)
  648. })
  649. $(".pageSetUpBox img",parent.document).off("mouseout").on("mouseout",function(){
  650. $(this).attr('src', goUpG)
  651. })
  652. $(".pageSetDownBox img",parent.document).off("mouseout").on("mouseout",function(){
  653. $(this).attr('src', goDownG)
  654. })
  655. }
  656. function bindSelectCol(){
  657. $(".toggleSelectCol", parent.document ).off("click").on("click", function(){
  658. const index = $(this).parent().attr("data-index")
  659. pageSetCopy[index].status = pageSetCopy[index].status == 1 ? 0 : 1
  660. scrollTop = $(".colTabInfoBox", parent.document).scrollTop()
  661. renderColSet(pageSetCopy)
  662. })
  663. $(".toggleSelectColAll", parent.document ).off("click").on("click", function(){
  664. const hasSelectAll = $(this).attr("data-select")
  665. for(let i = 0; i < pageSetCopy.length; i++){
  666. if(hasSelectAll == "true"){
  667. pageSetCopy[i].status = 0
  668. }else{
  669. pageSetCopy[i].status = 1
  670. }
  671. }
  672. scrollTop = $(".colTabInfoBox", parent.document).scrollTop()
  673. renderColSet(pageSetCopy)
  674. })
  675. }
  676. function closeColSet(){
  677. pageSetCopy = JSON.parse(JSON.stringify(pageSet))
  678. $("#mainBox .colSetBox", parent.document).remove()
  679. }
  680. function bindCloseColSet(){
  681. $(".colSetBox .iconClose", parent.document ).off("click").on("click",function(){
  682. closeColSet()
  683. })
  684. $(".colSetBox .cancalColSet", parent.document ).off("click").on("click",function(){
  685. closeColSet()
  686. })
  687. }
  688. function bindSaveColSet(){
  689. $(".saveColSet", parent.document ).off("click").on("click", function(){
  690. let showNumSet = 0
  691. let sysUserPagesetVOList = []
  692. for(let i = 0; i < pageSetCopy.length; i++){
  693. const item = pageSetCopy[i]
  694. sysUserPagesetVOList.push({
  695. name: item.name,
  696. orderNo: i,
  697. status: item.status,
  698. val: item.val
  699. })
  700. if(item.status == 1){
  701. showNumSet++
  702. }
  703. }
  704. if(showNumSet === 0){
  705. $.alerModal({"message":'最少显示一列',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  706. return
  707. }
  708. return post(api.saveQcListPageSet,{pageType:1,sysUserPagesetVOList:sysUserPagesetVOList}).then(res =>{
  709. if(res.data.code == '0'){
  710. closeColSet()
  711. getPageSet().then(res =>{
  712. $(".filter").click(); //初始查询
  713. })
  714. }else{
  715. $("#mainBox .colSetBox", parent.document).remove()
  716. $.alerModal({"message":'保存失败',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  717. }
  718. }).catch((e) =>{
  719. $("#mainBox .colSetBox", parent.document).remove()
  720. $.alerModal({"message":'保存失败',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  721. })
  722. })
  723. }
  724. function bindColOrder(){
  725. $(".pageSetUp", parent.document ).off("click").on("click", function(){
  726. const index = parseInt($(this).parent().parent().parent().parent().attr("data-index"))
  727. if(index != 0){
  728. const upItem = pageSetCopy[index]
  729. const upItemPre = pageSetCopy[index-1]
  730. pageSetCopy.splice(index-1,2,upItem,upItemPre)
  731. scrollTop = $(".colTabInfoBox", parent.document).scrollTop()
  732. renderColSet(pageSetCopy)
  733. }else{
  734. return
  735. }
  736. })
  737. $(".pageSetDown", parent.document ).off("click").on("click", function(){
  738. const index = parseInt($(this).parent().parent().parent().parent().attr("data-index"))
  739. if(index == pageSetCopy.length - 1){
  740. return
  741. }else{
  742. const downItem = pageSetCopy[index]
  743. const downItemBack = pageSetCopy[index + 1]
  744. pageSetCopy.splice(index,2,downItemBack,downItem)
  745. scrollTop = $(".colTabInfoBox", parent.document).scrollTop()
  746. renderColSet(pageSetCopy)
  747. }
  748. })
  749. }
  750. $(".patientNumInp").on("input", function(e){
  751. const val = $(this).val().trim()
  752. let beCode=behospitalCode;
  753. const patrn = /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]/g;
  754. beCode=val.replace(patrn,function(x){
  755. return "\\"+x;
  756. });
  757. behospitalCodeTemp = beCode
  758. })
  759. $(".patientNameInp").on("input", function(e){
  760. const val = $(this).val().trim()
  761. nameTemp = val
  762. })
  763. $(".doctorInp").on("input", function(e){
  764. const val = $(this).val().trim()
  765. doctorNameTemp = val
  766. })
  767. $(".fpCheckPeople").on("input", function(e){
  768. const val = $(this).val().trim()
  769. fpCheckNameTemp = val
  770. })
  771. $(".qcCheckPeople").on("input", function(e){
  772. const val = $(this).val().trim()
  773. qcCheckNameTemp = val
  774. })
  775. $(".doctorNumInp").on("input", function(e){
  776. const val = $(this).val().trim();
  777. doctorNumTemp = val
  778. })
  779. $(function() {
  780. $.datepicker.regional['zh-CN'] = {
  781. clearText: '清除',
  782. clearStatus: '清除已选e799bee5baa6e59b9ee7ad9431333361303131日期',
  783. closeText: '关闭',
  784. closeStatus: '不改变当前选择',
  785. prevText: '<上月',
  786. prevStatus: '显示上月',
  787. prevBigText: '<<',
  788. prevBigStatus: '显示上一年',
  789. nextText: '下月>',
  790. nextStatus: '显示下月',
  791. nextBigText: '>>',
  792. nextBigStatus: '显示下一年',
  793. currentText: '今天',
  794. currentStatus: '显示本月',
  795. monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
  796. monthNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
  797. yearNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
  798. monthStatus: '选择月份',
  799. yearStatus: '选择年份',
  800. weekHeader: '周',
  801. weekStatus: '年内周次',
  802. dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
  803. dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
  804. dayNamesMin: ['日','一','二','三','四','五','六'],
  805. dayStatus: '设置 DD 为一周起始',
  806. dateStatus: '选择 m月 d日, DD',
  807. dateFormat: 'yy-mm-dd',
  808. firstDay: 1,
  809. initStatus: '请选择日期',
  810. isRTL: false};
  811. $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
  812. let startDate = "", endDate=new Date()
  813. let year = new Date().getFullYear()
  814. let month = new Date().getMonth() + 1
  815. if(statisticsType == '1'){
  816. startDate = new Date(`${year}-${month}-01`)
  817. }else if(statisticsType == '2'){
  818. startDate = new Date(`${year}-01-01`)
  819. } else {
  820. startDate = "-6d"
  821. }
  822. $( "#datepicker" ).datepicker({
  823. changeMonth: true,
  824. changeYear: true,
  825. dateFormat:"yy/mm/dd",
  826. }).datepicker( "setDate", startDate);
  827. $( "#datepicker2" ).datepicker({
  828. changeMonth: true,
  829. changeYear: true,
  830. dateFormat:"yy/mm/dd"
  831. }).datepicker( "setDate",endDate);
  832. $( "#datepickerFp1" ).datepicker({
  833. changeMonth: true,
  834. changeYear: true,
  835. dateFormat:"yy/mm/dd"
  836. }).datepicker( "setDate","");
  837. $( "#datepickerFp2" ).datepicker({
  838. changeMonth: true,
  839. changeYear: true,
  840. dateFormat:"yy/mm/dd"
  841. }).datepicker( "setDate","");
  842. $( "#datepickerQc1" ).datepicker({
  843. changeMonth: true,
  844. changeYear: true,
  845. dateFormat:"yy/mm/dd"
  846. }).datepicker( "setDate","");
  847. $( "#datepickerQc2" ).datepicker({
  848. changeMonth: true,
  849. changeYear: true,
  850. dateFormat:"yy/mm/dd"
  851. }).datepicker( "setDate","");
  852. getPageSet().then(res =>{
  853. $(".filter").click(); //初始查询
  854. })
  855. });
  856. //分页渲染
  857. function renderPagination(totalPage,activePage,totalNum){
  858. let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
  859. if(totalPage <= 6){
  860. for(let i = 1; i <= totalPage; i++){
  861. str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
  862. }
  863. }else{
  864. if(activePage <= 3){ //选中页数小于4
  865. for(let i = 1; i <= 4; i++){
  866. str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
  867. }
  868. str += `<span class="more" >...</span>`
  869. str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
  870. } else if(activePage > totalPage -3){
  871. str += `<span class="pageNum page1" data-page=1>1</span>`
  872. str += `<span class="more" >...</span>`
  873. str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
  874. str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
  875. str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
  876. str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
  877. } else {
  878. str += `<span class="pageNum page1" data-page=1>1</span>`
  879. str += `<span class="more" >...</span>`
  880. str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
  881. str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
  882. str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
  883. str += `<span class="more" >...</span>`
  884. str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
  885. }
  886. }
  887. str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
  888. $('.pagination').html(str)
  889. $('.page' + activePage).addClass('activePage')
  890. $(".pageNum").on("click", function(e){
  891. const activePageNow = Number($(this).attr('data-page'))
  892. getTabData(activePageNow)
  893. // renderPagination(totalPage,activePageNow,totalNum)
  894. })
  895. $(".prePage").on("click", function(e){
  896. let activePageNow = Number($(".activePage").attr('data-page'))
  897. if(activePageNow > 1){
  898. activePageNow--
  899. getTabData(activePageNow)
  900. // renderPagination(totalPage,activePageNow,totalNum)
  901. }
  902. })
  903. $(".nextPage").on("click", function(e){
  904. let activePageNow = Number($(".activePage").attr('data-page'))
  905. if(activePageNow < totalPage){
  906. activePageNow++
  907. getTabData(activePageNow)
  908. // renderPagination(totalPage,activePageNow,totalNum)
  909. }
  910. })
  911. }
  912. $(document).on("click", function(){
  913. $(".levelList ").css("display", "none")
  914. $(".selectLevel .arrow").attr("src",iconDown)
  915. $(".fpCheckList").css("display", "none")
  916. $(".qcCheckList").css("display", "none")
  917. $(".fpSelectCheck .arrow").attr("src",iconDown)
  918. $(".qcSelectCheck .arrow").attr("src",iconDown)
  919. })
  920. $((function($){
  921. $('.export').click(function(){
  922. const behosDateStartTime = new Date(behosDateStart).getTime()
  923. const behosDateEndTime = new Date(behosDateEnd).getTime()
  924. if(behosDateStartTime > behosDateEndTime){
  925. $.alerModal({"message":'开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  926. return
  927. }
  928. if((new Date(behosDateEnd) - new Date(behosDateStart))/24/60/60/1000 > 7){
  929. $.alerModal({"message":"最多只能导出7天",type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  930. return
  931. }
  932. const param = {
  933. "behospitalCode": behospitalCode,
  934. "deptId": deptId,
  935. "doctorCode":doctorNum,
  936. "doctorName": doctorName,
  937. "asc":data_asc, //升序
  938. "desc":data_desc, //降序
  939. "leaveHosDateEnd": behosDateEnd,
  940. "leaveHosDateStart": behosDateStart,
  941. "level": level,
  942. "name": name,
  943. "checkStatus": qcCheckStatus?Number(qcCheckStatus):qcCheckStatus, //病历核查状态
  944. "mrStatus": fpCheckStatus?Number(fpCheckStatus):fpCheckStatus, //首页核查状态(1:已核查,0:未核查)
  945. "chName": qcCheckName, //病历核查人员
  946. "mrName": fpCheckName, //首页核查人员
  947. "chTimeStart": qcCheckDateStart.replace(/\//g,'-'), //病历核查起始时间
  948. "chTimeEnd": qcCheckDateEnd.replace(/\//g,'-'), //病历核查截止时间
  949. "mrTimeStart": fpCheckDateStart.replace(/\//g,'-'), //首页核查起始时间
  950. "mrTimeEnd": fpCheckDateEnd.replace(/\//g,'-'), //首页核查截止时间
  951. }
  952. expJson(api.exportQcDocteam,param).then(res =>{
  953. downloadExportedData(res.data, behosDateStart.slice(0,10).replace(/-/g,"")+"-"+behosDateEnd.slice(0,10).replace(/-/g,"")+"抽查住院病历质量情况.xls")
  954. })
  955. })
  956. })($));