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