deptQualifiedPhysician.js 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739
  1. const $ = require('jquery');
  2. require("../css/deptQualifiedPhysician.less");
  3. require('./../resource/jquery-ui/jquery-ui.min.js');
  4. require('./modal.js');
  5. const { api } = require('./api.js')
  6. const { post, getCookie, getUrlArgObjectNew, emptyBox, setDatePicker, getPickerDate, expJson, listenScroll, downloadExportedData } = require('./utils.js')
  7. const switchIconOpen = require("./../images/btn_open.png")
  8. const switchIconClose = require("./../images/btn_close.png")
  9. const iconDown = require("./../images/arrow_down.png")
  10. const iconUp = require("./../images/arrow_up.png")
  11. const arrowLeft = require("./../images/arrow_left.png")
  12. const arrowRight = require("./../images/arrow_right.png")
  13. listenScroll('.physician')
  14. let casesId = "", name = "", isReject = "", isUsed = "", casesIdTemp = "", nameTemp = "", isRejectTemp = "", data_asc = [], data_desc = ['deptName'], isUsedTemp = "", from = "", deptIdTemp = "", deptNameTemp = "", deptName = "",deptItemId = "", deptId = "", professor = ""
  15. $(".selectModuleType").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  16. $(".selectReject").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  17. $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  18. $(".selectPhysician").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  19. $(".selectUsed").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  20. let isPlacefile = getCookie('isPlacefile') || 1
  21. let deptList = JSON.parse(getCookie("deptList")) || []
  22. $(function () {
  23. dateChange()
  24. let srcUrl = $("#contentIframe", parent.document).attr("src")
  25. isReject = getUrlArgObjectNew("dateType", srcUrl) || ""
  26. from = getUrlArgObjectNew("from", srcUrl) || ""
  27. name = nameTemp = getUrlArgObjectNew("name", srcUrl) || ""
  28. let startDateParam = getUrlArgObjectNew("startDateParam", srcUrl) || ""
  29. let endDateParam = getUrlArgObjectNew("endDateParam", srcUrl) || ""
  30. if (name) {
  31. $(".moduleItemInp").val(name)
  32. }
  33. if (isReject == 1) {
  34. $(".monthYear .mon").css({
  35. backgroundColor: '#00A1FF',
  36. color: '#fff'
  37. }).siblings().css({
  38. color: '#00A1FF',
  39. backgroundColor: '#fff'
  40. })
  41. setDatePicker($("#datepicker"), $("#datepicker2"), 1)
  42. } else if (isReject == 2) {
  43. $(".monthYear .year").css({
  44. backgroundColor: '#00A1FF',
  45. color: '#fff'
  46. }).siblings().css({
  47. color: '#00A1FF',
  48. backgroundColor: '#fff'
  49. })
  50. setDatePicker($("#datepicker"), $("#datepicker2"), 2)
  51. } else if (isReject == 3) {
  52. setDatePicker($("#datepicker"), $("#datepicker2"), 3, new Date(startDateParam), new Date(endDateParam))
  53. } else {
  54. setDatePicker($("#datepicker"), $("#datepicker2"), "default")
  55. }
  56. if (!isReject) {
  57. setDatePicker($("#datepicker"), $("#datepicker2"), "default")
  58. }
  59. getDeptList(1)
  60. $(".partTitle a").click(function () {
  61. //初始菜单选中
  62. focusMenuItem('YH-KZTKS')
  63. $(".container", parent.document).addClass("console-cont");
  64. })
  65. $(".abnormalClear").click(function () {
  66. setDatePicker($("#datepicker"), $("#datepicker2"), "default")
  67. deptId = deptIdTemp = deptList[0] && deptList[0].deptId
  68. deptName = deptNameTemp = deptList[0] && deptList[0].deptName
  69. name = ""
  70. professor = "";
  71. data_asc = []
  72. professor = "";
  73. data_desc = ['deptName'];
  74. $("th[code]").removeClass("asc desc").addClass("desc");
  75. $(".patientNumInp").val("")
  76. $(".selectModuleType ").val("全部").attr({
  77. "data-id": '',
  78. "title": ''
  79. })
  80. $(".selectPhysician").html('全部').attr({
  81. "data-id": "",
  82. "title": "全部"
  83. }).append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  84. $(".selectDept").html(deptName).attr({
  85. "data-id": deptId,
  86. "title": deptName
  87. }).append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  88. getTabData(1)
  89. })
  90. getTabData(1)//条目缺陷
  91. })
  92. function focusMenuItem(code) {
  93. const ele = $(parent.document).find(".menu .page[code=" + code + "]");
  94. const parEle = ele.parents(".list-1");
  95. if (!parEle.is(".list-1-show")) {
  96. parEle.click();
  97. }
  98. //console.log($(parent.document).find(".menu .page[code='YH-ZKK-GMKQXZB_XQ']"))
  99. ele.click();
  100. }
  101. //获取医师类别
  102. // getDoctorProfessorList()
  103. function getDoctorProfessorList(val) {
  104. // post(api.getDoctorProfessorList, { inputStr: val == "全部" ? "" : val || "", }).then(res => {
  105. // if (res.data.code == '0') {
  106. // const physicianList = res.data.data || []
  107. // rendePhysicianList(physicianList)
  108. // } else {
  109. // rendePhysicianList([])
  110. // }
  111. // }).catch((e) => {
  112. // })
  113. }
  114. function rendePhysicianList(physicianList) {
  115. if (physicianList.length == 0) {
  116. $('.physicianList').html("")
  117. return
  118. }
  119. let str = `<li class="physicianItem " data-id=" " data-name="全部">全部</li>`
  120. for (let i = 0; i < physicianList.length; i++) {
  121. str += `<li class="physicianItem ellipsis" title=${physicianList[i]} data-name=${physicianList[i]}> ${physicianList[i]}</li>`
  122. }
  123. $('.physicianList').html(str)
  124. bindPhysicianSelect()
  125. }
  126. bindPhysicianSelect()
  127. //医师类别选中
  128. function bindPhysicianSelect() {
  129. $('.physicianItem').on("click", function () {
  130. const physicianItemName = $(this).attr("data-name") || ''
  131. const physicianItemId = $(this).attr("data-id")
  132. professor = physicianItemName
  133. if (physicianItemName.length > 10) {
  134. $('.selectPhysician').html(physicianItemName.substring(0, 8) + '...')
  135. } else {
  136. $('.selectPhysician').html(physicianItemName)
  137. }
  138. $('.selectPhysician ').attr({ 'title': physicianItemName, 'data-id': physicianItemName })
  139. $(".selectPhysician").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  140. $(".physicianList").css("display", "none")
  141. })
  142. }
  143. bindDeptSelect()
  144. //科室选择
  145. function bindDeptSelect() {
  146. $(document).on("click", '.deptItem', function () {
  147. const deptItemName = $(this).attr("data-name") || ''
  148. const deptItemId = $(this).attr("data-id")
  149. deptId = deptIdTemp = deptItemId
  150. deptName = deptNameTemp = deptItemName
  151. if (deptItemName.length > 10) {
  152. $('.selectDept').html(deptItemName.substring(0, 8) + '...')
  153. } else {
  154. $('.selectDept').html(deptItemName)
  155. }
  156. $('.selectDept ').attr({ 'title': deptItemName, 'data-id': deptItemId })
  157. $(".selectDept").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  158. $(".deptList").css("display", "none")
  159. })
  160. }
  161. //全选绑定
  162. $('.selectDept').on("click", function (e) {
  163. e.stopPropagation()
  164. $(".levelList ").css("display", "none")
  165. $(".selectLevel .arrow").attr("src", iconDown)
  166. const showList = $(".deptList ").css("display")
  167. if (showList == "none" || !showList) {
  168. $(".deptList ").css("display", "block")
  169. $(".selectDept .arrow").attr("src", iconUp)
  170. } else {
  171. $(".deptList ").css("display", "none")
  172. $(".selectDept .arrow").attr("src", iconDown)
  173. }
  174. })
  175. $('.selectPhysician').on("click", function (e) {
  176. e.stopPropagation()
  177. $(".levelList ").css("display", "none")
  178. $(".selectLevel .arrow").attr("src", iconDown)
  179. const showList = $(".physicianList ").css("display")
  180. if (showList == "none" || !showList) {
  181. $(".physicianList ").css("display", "block")
  182. $(".selectPhysician .arrow").attr("src", iconUp)
  183. } else {
  184. $(".physicianList ").css("display", "none")
  185. $(".selectPhysician .arrow").attr("src", iconDown)
  186. }
  187. })
  188. //排序
  189. $("body").on("click", "th[code]", function (e) {
  190. const code = $(this).attr("code");
  191. if (data_asc[0] === code) {
  192. data_desc = [code];
  193. data_asc = [];
  194. $("th[code]").removeClass("asc desc");
  195. $(this).addClass("desc");
  196. } else {
  197. data_desc = [];
  198. data_asc = [code];
  199. $("th[code]").removeClass("asc desc");
  200. $(this).addClass("asc");
  201. }
  202. getTabData(1);
  203. });
  204. //科室处理
  205. getDeptList()
  206. function getDeptList() {
  207. let str = ``
  208. if (deptList.length <= 0) return
  209. $(".physician .selectDept").attr("data-id", deptList[0].deptId).find("i").html(deptList[0].deptName)
  210. for (let i = 0; i < deptList.length; i++) {
  211. let tmp = deptList[i]
  212. str += `<li class="deptItem ellipsis" title="${tmp.deptName}" data-id="${tmp.deptId}" data-name="${tmp.deptName}">${tmp.deptName}</li>`
  213. }
  214. $(".physician .deptList").html(str)
  215. deptName = deptNameTemp = deptList[0].deptName
  216. deptId = deptIdTemp = deptList[0].deptId
  217. }
  218. //判断有无某一权限
  219. function hasData(data) {
  220. let lis = JSON.parse(getCookie("codeLis")) || []
  221. if (lis.indexOf(data) > -1) {//有权限
  222. return true
  223. }
  224. return false;
  225. }
  226. //所有数据切换日期筛选
  227. function dateChange() {
  228. $(".monthYear .mon").click(function () {
  229. $(this).css({
  230. backgroundColor: '#00A1FF',
  231. color: '#fff'
  232. }).siblings().css({
  233. color: '#00A1FF',
  234. backgroundColor: '#fff'
  235. })
  236. isReject = isRejectTemp = 1
  237. setDatePicker($("#datepicker"), $("#datepicker2"), 1)
  238. getTabData(1)
  239. })
  240. $(".monthYear .year").click(function () {
  241. $(this).css({
  242. backgroundColor: '#00A1FF',
  243. color: '#fff'
  244. }).siblings().css({
  245. color: '#00A1FF',
  246. backgroundColor: '#fff'
  247. })
  248. isReject = isRejectTemp = 2
  249. setDatePicker($("#datepicker"), $("#datepicker2"), 2)
  250. getTabData(1)
  251. })
  252. }
  253. //获取表格数据
  254. function getTabData(activePage) {
  255. const dateStatrt = getPickerDate($("#datepicker"), 1)
  256. const dateEnd = getPickerDate($("#datepicker2"), 2)
  257. const start = new Date(dateStatrt).getTime()
  258. const end = new Date(dateEnd).getTime()
  259. if (start > end) {
  260. $.alerModal({ "message": '开始时间不能大于结束时间~', type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
  261. return
  262. }
  263. const param = {
  264. current: activePage,
  265. type: 0, //1-本月,2-本年,0-自定义时间(现在 都是自定义时间,都会传具体时间进去)
  266. doctorName: name, //条目名
  267. deptName: deptName || '', //科室名
  268. deptId: deptId || '',
  269. size: 15,
  270. ascs: data_asc, //升序
  271. descs: data_desc, //降序
  272. "professor": professor == "全部" ? "" : professor || "",
  273. "startDate": dateStatrt,
  274. "endDate": dateEnd
  275. }
  276. startDateParam = dateStatrt
  277. endDateParam = dateEnd
  278. post(api.homePageLevelStatisticsXYByDept, param).then(res => {
  279. if (res.data.code == '0') {
  280. const data = res.data.data.records
  281. const totalPage = res.data.data.pages
  282. const totalNum = res.data.data.total
  283. renderTab(data, activePage)
  284. if (totalPage > 1) {
  285. renderPagination(totalPage, Number(activePage), totalNum)
  286. } else {
  287. $('.pagination').html("")
  288. }
  289. } else { }
  290. }).catch((e) => { })
  291. }
  292. $(".moduleItemInp").on("input", function (e) {
  293. const val = $(this).val().trim()
  294. name = nameTemp = val
  295. })
  296. $(".filter").on("click", function (e) {
  297. casesId = casesIdTemp, name = nameTemp, isReject = isRejectTemp, isUsed = isUsedTemp, deptId = deptIdTemp, deptName = deptNameTemp
  298. getTabData(1)
  299. })
  300. $(".filterclear").on("click", function (e) {
  301. nameTemp = ""
  302. $(".moduleItemInp").val("")
  303. })
  304. // $('.selectModuleType').on("click", function(e){
  305. // e.stopPropagation()
  306. // $(".rejectList ").css("display","none")
  307. // $(".usedList ").css("display", "none")
  308. // $(".selectReject .arrow").attr("src",iconDown)
  309. // $(".selectUsed .arrow").attr("src",iconDown)
  310. // const showList = $(".moduleTypeList ").css("display")
  311. // if(showList == "none" ||!showList){
  312. // $(".moduleTypeList ").css("display","block")
  313. // $(".selectModuleType .arrow").attr("src",iconUp)
  314. // }else{
  315. // $(".moduleTypeList ").css("display", "none")
  316. // $(".selectModuleType .arrow").attr("src",iconDown)
  317. // }
  318. // })
  319. $('.selectReject').on("click", function (e) {
  320. e.stopPropagation()
  321. $(".moduleTypeList ").css("display", "none")
  322. $(".usedList ").css("display", "none")
  323. $(".selectModuleType .arrow").attr("src", iconDown)
  324. $(".selectUsed .arrow").attr("src", iconDown)
  325. const showList = $(".rejectList ").css("display")
  326. if (showList == "none" || !showList) {
  327. $(".rejectList ").css("display", "block")
  328. $(".selectUsed .arrow").attr("src", iconUp)
  329. } else {
  330. $(".rejectList ").css("display", "none")
  331. $(".selectUsed .arrow").attr("src", iconDown)
  332. }
  333. })
  334. $('.selectUsed').on("click", function (e) {
  335. e.stopPropagation()
  336. $(".moduleTypeList ").css("display", "none")
  337. $(".rejectList ").css("display", "none")
  338. $(".selectModuleType .arrow").attr("src", iconDown)
  339. $(".selectReject .arrow").attr("src", iconDown)
  340. const showList = $(".usedList ").css("display")
  341. if (showList == "none" || !showList) {
  342. $(".usedList ").css("display", "block")
  343. $(".selectUsed .arrow").attr("src", iconUp)
  344. } else {
  345. $(".usedList ").css("display", "none")
  346. $(".selectUsed .arrow").attr("src", iconDown)
  347. }
  348. })
  349. // bindRejectSelect()
  350. // bindUsedSelect()
  351. // getmoduleTypeList()
  352. function renderTab(data, activePage) {
  353. let str = ``
  354. let tHead = `
  355. <thead>
  356. <th class="moduleName" style="width: 65px;">序号</th>
  357. <th class="beHospitalId textCenter ${data_asc == 'deptName' ? 'asc' : data_desc == 'deptName' ? 'desc' : ''}" code="deptName">科室</th>
  358. <th class="beHospitalId textCenter ${data_asc == 'professor' ? 'asc' : data_desc == 'professor' ? 'desc' : ''}" code="professor">医师类别</th>
  359. <th class="beHospitalId textCenter ${data_asc == 'doctorName' ? 'asc' : data_desc == 'doctorName' ? 'desc' : ''}" code="doctorName">医师姓名</th>
  360. <th class="beHospitalId textCenter ${data_asc == 'entryNum' ? 'asc' : data_desc == 'entryNum' ? 'desc' : ''}" code="entryNum">缺陷总数</th>
  361. <th class="beHospitalId textCenter ${data_asc == 'secondLevelNum' ? 'asc' : data_desc == 'secondLevelNum' ? 'desc' : ''}" code="secondLevelNum">不合格数</th>
  362. <th class="beHospitalId textCenter ${data_asc == 'firstLevelNum' ? 'asc' : data_desc == 'firstLevelNum' ? 'desc' : ''}" code="firstLevelNum">合格数</th>
  363. <th class="beHospitalId textCenter ${data_asc == 'firstLevelPercent' ? 'asc' : data_desc == 'firstLevelPercent' ? 'desc' : ''}" code="firstLevelPercent">合格率</th>
  364. <th class="beHospitalId textCenter ${data_asc == 'emptyNum' ? 'asc' : data_desc == 'emptyNum' ? 'desc' : ''}" code="emptyNum">空项数</th>
  365. <th class="beHospitalId textCenter ${data_asc == 'emptyPercent' ? 'asc' : data_desc == 'emptyPercent' ? 'desc' : ''}" code="emptyPercent">完整率</th>
  366. <th class="beHospitalId textCenter ${data_asc == 'errorNum' ? 'asc' : data_desc == 'errorNum' ? 'desc' : ''}" code="errorNum">错误数</th>
  367. <th class="beHospitalId textCenter ${data_asc == 'errorPercent' ? 'asc' : data_desc == 'errorPercent' ? 'desc' : ''}" code="errorPercent">完善率</th>
  368. <th class="beHospitalId textCenter ${data_asc == 'averageValue' ? 'asc' : data_desc == 'averageValue' ? 'desc' : ''}" code="averageValue">质控平均分</th>
  369. <th class="beHospitalId textCenter ${data_asc == 'mrNum' ? 'asc' : data_desc == 'mrNum' ? 'desc' : ''}" code="mrNum">质控病历数</th>
  370. </thead>`
  371. for (let i = 0; i < data.length; i++) {
  372. const item = data[i]
  373. str += `
  374. <tr data-index=${i}>
  375. <td class="textCenter">${(activePage - 1) * 15 + i + 1}</td>
  376. <td >${item.deptName || "-"}</td>
  377. <td >${item.professor || "-"}</td>
  378. <td >${item.doctorName || "-"}</td>
  379. <td class="goHomeDetailQuexian goHomeDetail" data-professor="${item.professor || ""}" data-doctorName="${item.doctorName || ""}" data-docId="${item.doctorId || ""}" data-ruleType="" data-dept="${item.deptName || ""}" dept-id="${item.deptId || ""}">
  380. ${item.entryNum || "-"}
  381. ${item.entrySameNum < 0 ? '<img class="updownimg" src="' + jiantou_down + '"/>' : item.entrySameNum > 0 ? '<img class="updownimg" src="' + jiantou_up + '"/>' : ''}
  382. </td>
  383. <td class="goHomeDetailQuexian goHomeDetail1" data-professor="${item.professor || ""}" data-title="不合格数" data-doctorName="${item.doctorName || ""}" data-docId="${item.doctorId || ""}" data-dept="${item.deptName || ""}" dept-id="${item.deptId || ""}">
  384. ${item.secondLevelNum}
  385. </td>
  386. <td class="goHomeDetailQuexian goHomeDetail1" data-professor="${item.professor || ""}" data-title="合格数" data-doctorName="${item.doctorName || ""}" data-docId="${item.doctorId || ""}" data-dept="${item.deptName || ""}" dept-id="${item.deptId || ""}">
  387. ${item.firstLevelNum}
  388. </td>
  389. <td >${item.firstLevelPercentStr}</td>
  390. <td class="goHomeDetailQuexian goHomeDetail" data-professor="${item.professor || ""}" data-doctorName="${item.doctorName || ""}" data-docId="${item.doctorId || ""}" data-ruleType="1" data-dept="${item.deptName || ""}" dept-id="${item.deptId || ""}">
  391. ${item.emptyNum}
  392. </td>
  393. <td >${item.emptyPercentStr}</td>
  394. <td class="goHomeDetailQuexian goHomeDetail" data-professor="${item.professor || ""}" data-doctorName="${item.doctorName || ""}" data-docId="${item.doctorId || ""}" data-ruleType="2" data-dept="${item.deptName || ""}" dept-id="${item.deptId || ""}">
  395. ${item.errorNum}
  396. </td>
  397. <td >${item.errorPercentStr}</td>
  398. <td >${item.averageValue}</td>
  399. <td >${item.mrNum}</td>
  400. </tr>
  401. `
  402. }
  403. $('.deptScoreDetailControlTable table').html(str ? tHead + '<tbody>' + str + '</tbody>' : tHead + `<tbody>${emptyBox()}</tbody>`)
  404. $(".goHomeDetail").click(function () {
  405. let index = $(this).parent().attr("data-index")
  406. let deptName = $(this).attr("data-dept")
  407. let ruleType = $(this).attr("data-ruleType")
  408. let doctorName = $(this).attr("data-doctorName") || ''
  409. let docId = $(this).attr("data-docId") || ''
  410. let professor = $(this).attr("data-professor")
  411. let deptId = data[index].deptId
  412. $(parent.document).find("#contentIframe").attr("src", "quexianDetailHome.html?deptName=" + deptName + "&deptId=" + deptId + "&from=13&casesId=243" + "&shijian=3" + "&ruleType=" + ruleType + "&startDateParam=" + startDateParam + "&endDateParam=" + endDateParam + "&docName=" + doctorName + "&docId=" + docId + "&code=XY" + "&professor=" + professor)
  413. })
  414. // 不合格数跳转至 病历列表详情页
  415. $(".goHomeDetail1").click(function () {
  416. let index = $(this).parent().attr("data-index")
  417. let deptName = $(this).attr("data-dept")
  418. let titleName = $(this).attr("data-title")
  419. let doctorName = $(this).attr("data-doctorName") || ''
  420. let docId = $(this).attr("data-docId") || ''
  421. let professor = $(this).attr("data-professor")
  422. // let ruleType = $(this).attr("data-ruleType")
  423. let deptId = data[index].deptId
  424. // $(parent.document).find("#contentIframe").attr("src", "qcListCopy.html?deptName=" + deptName + "&deptId=" + deptId + "&from=4&casesId=243" + "&shijian=3" + "&ruleType=" + ruleType + "&startDate=" + startDateParam + "&endDate=" + endDateParam + "&defectName=" + defectName)
  425. $(parent.document).find("#contentIframe").attr("src", "qcListCopyUnqualifiedDept.html?deptName=" + deptName + "&deptId=" + deptId + "&from=13&casesId=243" + "&shijian=3" + "&startDateParam=" + startDateParam + "&endDateParam=" + endDateParam + "&titleName=" + titleName + "&docName=" + doctorName + "&docId=" + docId + "&code=XY" + "&professor=" + professor)
  426. })
  427. // initScroll("deptScoreDetailControl","YX",1)
  428. }
  429. function bindEdit(data, activePage) {
  430. if (!hasData('FUNC000007')) {
  431. return
  432. }
  433. $('.editItem').click(function (e) {
  434. const index = $(this).parent().attr('data-index')
  435. editItem(data[index], activePage)
  436. })
  437. }
  438. //修改
  439. function editItem(item, activePage) {
  440. const itemCpoy = JSON.parse(JSON.stringify(item))
  441. $('.pop-box').remove()
  442. $('.container').append('<div class="pop-box"></div>')
  443. const str = `
  444. <div class="itemMsgBox">
  445. <div class="mask"></div>
  446. <div class="itemMsgContent">
  447. <p class="itemMsgTitle">修改 <img class="iconClose" src=${require('./../images/icon_close_default.png')} alt="关闭" /></p>
  448. <div class="itemMsgContentBox">
  449. <div class="itemMsgInfoBox"><span class="itemMsgLab">模块名称:</span> <span class="itemInfoRight">${itemCpoy.casesName}</span></div>
  450. <div class="itemMsgInfoBox"><span class="itemMsgLab">条目名称:</span> <span class="itemInfoRight"> ${itemCpoy.name}</span></div>
  451. <div class="itemMsgInfoBox"><span class="itemMsgLab">提示信息:</span> <span class="itemInfoRight"> <input class="itemTipMsg" value="${itemCpoy.msg}" /></span></div>
  452. <div class="itemMsgInfoBox"><span class="itemMsgLab">
  453. 分值:
  454. </span> <span class="itemInfoRight">
  455. <input class="itemScore" type="number" min="0" value=${itemCpoy.score} />
  456. </span>
  457. <p class="itemMsgInfoTips">支持≥0的数字输入,最多保留小数点后1位~</p>
  458. </div>
  459. <div class="itemMsgInfoBox"><span class="itemMsgLab">单项否决:</span><span class="itemInfoRight itemReject">${item.isReject == '1' ? `<img class="switchImg" src=${switchIconOpen} /><span class="imgInfo"> 是</span>` : `<img class="switchImg" src=${switchIconClose} /> <span class="imgInfo"> 否</span>`}</span></div>
  460. <div class="itemMsgInfoBox"><span class="itemMsgLab">启用:</span><span class=" temInfoRight itemUsed">${item.isUsed == '1' ? `<img class="switchImg" src=${switchIconOpen} /><span class="imgInfo"> 是</span>` : `<img class="switchImg" src=${switchIconClose} /> <span class="imgInfo"> 否</span>`}</span></div>
  461. </div>
  462. <div class="confirmEditBox"><span class="confirmEdit">保存</span></div>
  463. </div>
  464. </div>
  465. `
  466. $("#mainBox", parent.document).append(str)
  467. $("#mainBox .itemMsgBox .iconClose", parent.document).on("click", function (e) {
  468. $("#mainBox .itemMsgBox", parent.document).remove()
  469. })
  470. $("#mainBox .itemMsgBox .itemTipMsg", parent.document).on("input", function (e) {
  471. const val = $(this).val().trim()
  472. itemCpoy.msg = val
  473. })
  474. $("#mainBox .itemMsgBox .itemScore", parent.document).on("keypress", function (e) {
  475. return (/[0-9\.]/.test(String.fromCharCode(e.keyCode)))
  476. })
  477. $("#mainBox .itemMsgBox .itemScore", parent.document).on("input", function (e) {
  478. const val = $(this).val()
  479. itemCpoy.score = val
  480. })
  481. $("#mainBox .itemMsgBox .itemReject", parent.document).on("click", function (e) {
  482. itemCpoy.isReject = itemCpoy.isReject == 1 ? 0 : 1
  483. $('#mainBox .itemMsgBox', parent.document).remove()
  484. editItem(itemCpoy, activePage)
  485. })
  486. $("#mainBox .itemMsgBox .itemUsed", parent.document).on("click", function (e) {
  487. itemCpoy.isUsed = itemCpoy.isUsed == 1 ? 0 : 1
  488. $('#mainBox .itemMsgBox', parent.document).remove()
  489. editItem(itemCpoy, activePage)
  490. })
  491. $("#mainBox .itemMsgBox .confirmEdit", parent.document).on("click", function () {
  492. var reg = new RegExp(/^\d+(\.\d)?$/);
  493. if (reg.test(itemCpoy.score)) {
  494. // console.log('itemCopy', itemCpoy)
  495. if (!itemCpoy.msg.trim()) {
  496. $.alerModal({ "message": "提示信息不能为空~", type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
  497. return
  498. }
  499. saveEdit(itemCpoy, activePage)
  500. $("#mainBox .itemMsgBox .itemMsgInfoTips", parent.document).css("display", "none")
  501. $('#mainBox .itemMsgBox', parent.document).remove()
  502. return
  503. } else {
  504. $("#mainBox .itemMsgBox .itemMsgInfoTips", parent.document).css("display", "block")
  505. return
  506. }
  507. })
  508. }
  509. //保存修改
  510. function saveEdit(item, activePage) {
  511. const param = {
  512. id: item.id,
  513. isReject: item.isReject,
  514. isUsed: item.isUsed,
  515. msg: item.msg,
  516. score: item.score
  517. }
  518. post(api.updataQcCasesEntry, param).then(res => {
  519. if (res.data.code == '0') {
  520. // const data = res.data.data
  521. $.alerModal({ "message": "修改成功", type: "tip", time: '1000', isFather: true, win: true, fatherWrapper: $("#mainBox", parent.document) });
  522. getTabData(activePage)
  523. } else {
  524. $.alerModal({ "message": '修改失败,请重试~', type: "tip", time: '1000', isFather: true, win: 'default', fatherWrapper: $("#mainBox", parent.document) });
  525. }
  526. }).catch((e) => {
  527. $.alerModal({ "message": '修改失败,请重试~', type: "tip", time: '1000', isFather: true, win: 'default', fatherWrapper: $("#mainBox", parent.document) });
  528. })
  529. }
  530. $('.selectModuleType').on("focus", function (e) {
  531. e.stopPropagation()
  532. $(".rejectList ").css("display", "none")
  533. $(".usedList ").css("display", "none")
  534. $(".selectReject .arrow").attr("src", iconDown)
  535. $(".selectUsed .arrow").attr("src", iconDown)
  536. $(".moduleTypeList ").css("display", "block")
  537. })
  538. $('.selectModuleType').on("blur", function (e) {
  539. $(".moduleTypeList ").css("display", "none")
  540. })
  541. $('.selectModuleType').on("input", function (e) {
  542. let val = $(this).val().trim()
  543. casesName = casesNameTemp = val
  544. getmoduleTypeList(val)
  545. })
  546. getmoduleTypeList()
  547. //获取模块类型
  548. function getmoduleTypeList(val) {
  549. post(api.getQcCasesAll, { casesName: val == "全部" ? "" : val || "" }).then(res => {
  550. if (res.data.code == '0') {
  551. const moduleTypeList = res.data.data
  552. renderModuleTypeList(moduleTypeList)
  553. } else {
  554. renderModuleTypeList([])
  555. }
  556. }).catch((e) => {
  557. })
  558. }
  559. function renderModuleTypeList(moduleTypeList) {
  560. if (moduleTypeList.length == 0) {
  561. $('.moduleTypeList').html("")
  562. return
  563. }
  564. let str = `<li class="modeTypeItem " data-id=" " data-name="全部">全部</li>`
  565. for (let i = 0; i < moduleTypeList.length; i++) {
  566. str += `<li class="modeTypeItem ellipsis" title=${moduleTypeList[i].name} data-id=${moduleTypeList[i].id} data-name=${moduleTypeList[i].name}> ${moduleTypeList[i].name}</li>`
  567. }
  568. $('.moduleTypeList').html(str)
  569. bindModuleTypeSelect()
  570. }
  571. //模块类型选择
  572. function bindModuleTypeSelect() {
  573. $('.modeTypeItem').on("mousedown", function () {
  574. const modeTypeItemName = $(this).attr("data-name")
  575. const modeTypeItemId = $(this).attr("data-id")
  576. name = nameTemp = modeTypeItemName == "全部" ? "" : modeTypeItemName;
  577. $('.selectModuleType').val(modeTypeItemName).attr("title", modeTypeItemName)
  578. $(".moduleTypeList ").css("display", "none")
  579. })
  580. }
  581. //单项否决选择
  582. function bindRejectSelect() {
  583. $('.rejectItem').on("click", function () {
  584. const rejectItemName = $(this).attr("data-name")
  585. const rejectItemId = $(this).attr("data-id")
  586. isRejectTemp = rejectItemId
  587. $('.selectReject').html(rejectItemName)
  588. $(".rejectList ").css("display", "none")
  589. $(".selectReject").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  590. })
  591. }
  592. //是否启用选择
  593. function bindUsedSelect() {
  594. $('.usedItem').on("click", function () {
  595. const usedItemName = $(this).attr("data-name")
  596. const usedItemItemId = $(this).attr("data-id")
  597. isUsedTemp = usedItemItemId
  598. $('.selectUsed').html(usedItemName)
  599. $(".usedList").css("display", "none")
  600. $(".selectUsed").append(`<img class="arrow" src=${iconDown} alt="下拉">`)
  601. })
  602. }
  603. //分页渲染
  604. function renderPagination(totalPage, activePage, totalNum) {
  605. let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
  606. if (totalPage <= 6) {
  607. for (let i = 1; i <= totalPage; i++) {
  608. str += `<span class="pageNum ${'page' + i}" data-page=${i}>${i}</span>`
  609. }
  610. } else {
  611. if (activePage <= 3) { //选中页数小于4
  612. for (let i = 1; i <= 4; i++) {
  613. str += `<span class="pageNum ${'page' + i}" data-page=${i}>${i}</span>`
  614. }
  615. str += `<span class="more" >...</span>`
  616. str += `<span class="pageNum ${'page' + totalPage}" data-page=${totalPage}>${totalPage}</span>`
  617. } else if (activePage > totalPage - 3) {
  618. str += `<span class="pageNum page1" data-page=1>1</span>`
  619. str += `<span class="more" >...</span>`
  620. str += `<span class="pageNum ${'page' + (totalPage - 3)}" data-page=${totalPage - 3}>${totalPage - 3}</span>`
  621. str += `<span class="pageNum ${'page' + (totalPage - 2)}" data-page=${totalPage - 2}>${totalPage - 2}</span>`
  622. str += `<span class="pageNum ${'page' + (totalPage - 1)}" data-page=${totalPage - 1}>${totalPage - 1}</span>`
  623. str += `<span class="pageNum ${'page' + totalPage}" data-page=${totalPage}>${totalPage}</span>`
  624. } else {
  625. str += `<span class="pageNum page1" data-page=1>1</span>`
  626. str += `<span class="more" >...</span>`
  627. str += `<span class="pageNum ${'page' + (activePage - 1)}" data-page=${activePage - 1}>${activePage - 1}</span>`
  628. str += `<span class="pageNum ${'page' + activePage}" data-page=${activePage}>${activePage}</span>`
  629. str += `<span class="pageNum ${'page' + (activePage + 1)}" data-page=${activePage + 1}>${activePage + 1}</span>`
  630. str += `<span class="more" >...</span>`
  631. str += `<span class="pageNum ${'page' + totalPage}" data-page=${totalPage}>${totalPage}</span>`
  632. }
  633. }
  634. str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
  635. $('.pagination').html(str)
  636. $('.page' + activePage).addClass('activePage')
  637. $(".pageNum").on("click", function (e) {
  638. const activePageNow = Number($(this).attr('data-page'))
  639. getTabData(activePageNow)
  640. // renderPagination(totalPage,activePageNow,totalNum)
  641. })
  642. $(".prePage").on("click", function (e) {
  643. let activePageNow = Number($(".activePage").attr('data-page'))
  644. if (activePageNow > 1) {
  645. activePageNow--
  646. getTabData(activePageNow)
  647. // renderPagination(totalPage,activePageNow,totalNum)
  648. }
  649. })
  650. $(".nextPage").on("click", function (e) {
  651. let activePageNow = Number($(".activePage").attr('data-page'))
  652. if (activePageNow < totalPage) {
  653. activePageNow++
  654. getTabData(activePageNow)
  655. // renderPagination(totalPage,activePageNow,totalNum)
  656. }
  657. })
  658. }
  659. $(document).on("click", function () {
  660. // $(".moduleTypeList ").css("display", "none")
  661. $(".rejectList ").css("display", "none")
  662. $(".usedList ").css("display", "none")
  663. $(".selectModuleType .arrow").attr("src", iconDown)
  664. $(".selectReject .arrow").attr("src", iconDown)
  665. $(".selectUsed .arrow").attr("src", iconDown)
  666. $(".deptList").css("display", "none")
  667. $(".physicianList").css("display", "none")
  668. $(".selectDept .arrow").attr("src", iconDown)
  669. })
  670. $(function () {
  671. const iconCalenBlue = require("./../images/darkDate.png")
  672. const iconCalenGrey = require("./../images/icon_calen_grey.png")
  673. $('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
  674. $('.iconCalen').on("mouseenter", function (e) {
  675. $(this).attr("src", iconCalenBlue)
  676. })
  677. $('.iconCalen').on("mouseleave", function (e) {
  678. $(this).attr("src", iconCalenGrey)
  679. })
  680. $('.iconCalen').on("click", function (e) {
  681. $(this).parent().find("input").focus()
  682. })
  683. $('.exportData').click(function () {
  684. const start = new Date(startDateParam).getTime()
  685. const end = new Date(endDateParam).getTime()
  686. if (start > end) {
  687. $.alerModal({ "message": '开始时间不能大于结束时间~', type: "tip", time: '1000', isFather: true, fatherWrapper: $("#mainBox", parent.document) });
  688. return
  689. }
  690. const param = {
  691. "asc": data_asc,
  692. "desc": data_desc,
  693. "doctorName": name,
  694. "professor": professor == "全部" ? "" : professor || "",
  695. "deptName": deptName || '', //科室名
  696. "type": 0, //1-本月,2-本年
  697. "startDate": startDateParam,
  698. "isPlacefile": isPlacefile,
  699. "endDate": endDateParam
  700. };
  701. expJson(api.homePageLevelXYExportByDept, param).then(res => {
  702. downloadExportedData(res.data, "医师病案首页合格率占比(科室).xls")
  703. })
  704. })
  705. });