allotCheckTask.js 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760
  1. const $ = require('jquery');
  2. require("../css/allotCheckTask.less");
  3. require('./modal.js');
  4. const {api,ywCheckApi} = require('./api.js')
  5. const {post,getCookie,emptyBox,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 iconRadio=require("./../images/radio.png")
  11. const iconUnRadio=require("./../images/unradio.png")
  12. const iconCalenBlue= require("./../images/icon_calen_blue.png")
  13. const iconCalenGrey= require("./../images/icon_calen_grey.png")
  14. const iconDown= require("./../images/arrow_down.png")
  15. const iconUp = require("./../images/arrow_up.png")
  16. const loadingImg = require("./../images/loading.gif")
  17. const arrowLeft= require("./../images/arrow_left.png")
  18. const arrowRight = require("./../images/arrow_right.png")
  19. listenScroll()
  20. let tabList = [], data_desc=["leaveHospitalDate"],data_asc=[];
  21. let global_DeptCheckers = {},global_Checkers={4:[],5:[],6:[]},global_CheckerId='',global_CheckerName='',
  22. global_DeptId='',global_DeptMId="",global_DeptAllId='',global_deptData = {},global_activeTabCode='0',global_TaskCodes=[];
  23. let isPlacefile = getCookie('isPlacefile')||1
  24. /*if(isPlacefile != 1){
  25. data_desc=["behospital_date"]
  26. }*/
  27. $(function() {
  28. const checkAuth = getCookie('checkAuth');
  29. /*if(!checkAuth){
  30. $(".tabs").hide();
  31. toast("没有质控核查权限!");
  32. return
  33. }*/
  34. const tabs = (checkAuth||'').replace(/[^456]/g,'');
  35. if(tabs.length===0){
  36. $(".tabs").hide();
  37. toast("没有质控核查权限!");
  38. return;
  39. }else if(tabs.length<2){
  40. //只有一个权限,隐藏tab切换
  41. $(".tabs").hide();
  42. }else{//隐藏没有权限的tab
  43. const last = "456".replace(tabs,'');
  44. $(".tabs [data-code="+(last-4)+"]").parent().hide();
  45. }
  46. global_activeTabCode=tabs.substr(0,1)-4;
  47. $(".tabs [data-code="+global_activeTabCode+"]").addClass("active");
  48. if(global_activeTabCode=='0'){
  49. $(".patDeptFilter").hide();
  50. }
  51. //初始化日期
  52. $.datepicker.regional['zh-CN'] = {
  53. clearText: '清除',
  54. clearStatus: '清除已选日期',
  55. closeText: '关闭',
  56. closeStatus: '不改变当前选择',
  57. prevText: '<上月',
  58. prevStatus: '显示上月',
  59. prevBigText: '<<',
  60. prevBigStatus: '显示上一年',
  61. nextText: '下月>',
  62. nextStatus: '显示下月',
  63. nextBigText: '>>',
  64. nextBigStatus: '显示下一年',
  65. currentText: '今天',
  66. currentStatus: '显示本月',
  67. monthNames: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
  68. monthNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
  69. yearNamesShort: ['一月','二月','三月','四月','五月','六月', '七月','八月','九月','十月','十一月','十二月'],
  70. monthStatus: '选择月份',
  71. yearStatus: '选择年份',
  72. weekHeader: '周',
  73. weekStatus: '年内周次',
  74. dayNames: ['星期日','星期一','星期二','星期三','星期四','星期五','星期六'],
  75. dayNamesShort: ['周日','周一','周二','周三','周四','周五','周六'],
  76. dayNamesMin: ['日','一','二','三','四','五','六'],
  77. dayStatus: '设置 DD 为一周起始',
  78. dateStatus: '选择 m月 d日, DD',
  79. dateFormat: 'yy-mm-dd',
  80. firstDay: 1,
  81. initStatus: '请选择日期',
  82. isRTL: false};
  83. $.datepicker.setDefaults($.datepicker.regional['zh-CN']);
  84. const days = new Date().getDate()-1;
  85. let startDate = "-"+days+"d",endDate=new Date();
  86. $( "#datepicker" ).datepicker({
  87. changeMonth: true,
  88. changeYear: true,
  89. dateFormat:"yy-mm-dd",
  90. }).datepicker( "setDate", startDate);
  91. $( "#datepicker2" ).datepicker({
  92. changeMonth: true,
  93. changeYear: true,
  94. dateFormat:"yy-mm-dd",
  95. }).datepicker( "setDate",endDate);
  96. $( "#datepicker3" ).datepicker({
  97. changeMonth: true,
  98. changeYear: true,
  99. dateFormat:"yy-mm-dd",
  100. });
  101. $( "#datepicker4" ).datepicker({
  102. changeMonth: true,
  103. changeYear: true,
  104. dateFormat:"yy-mm-dd",
  105. });
  106. $('.datapickerBox').append(`<img class="iconCalen" src=${iconCalenGrey} />`)
  107. $('.iconCalen').on("mouseenter", function(e){
  108. $(this).attr("src", iconCalenBlue)
  109. })
  110. $('.iconCalen').on("mouseleave", function(e){
  111. $(this).attr("src", iconCalenGrey)
  112. })
  113. $('.iconCalen').on("click", function(e){
  114. $(this).parent().find("input").focus()
  115. })
  116. //保存分配
  117. $(".save-btn").click(function(){
  118. allotTask(0);
  119. })
  120. //菜单选中状态
  121. $(".menu .page", parent.document).removeClass("active")
  122. $(parent.document).find(".menu .page[code=YH-ZKHC-FPHCRW]").addClass("active")
  123. //表格容器高度计算
  124. setBoxHeight();
  125. $(window).resize(function() {
  126. setBoxHeight();
  127. });
  128. //切换tab
  129. $(".tabBox .tabs button").on("click",(e)=>{
  130. const me = e.target;
  131. global_activeTabCode = $(me).attr("data-code");
  132. $(".tabBox .tabs button").removeClass("active");
  133. $(me).addClass("active");
  134. if(global_activeTabCode=='0'){
  135. $(".patDeptFilter").hide();
  136. }else{
  137. $(".patDeptFilter").show();
  138. }
  139. clearCheckerFilter();
  140. clearFilter();
  141. //刷新质控员、任务列表
  142. //getCheckerList();
  143. //const data = global_Checkers[+global_activeTabCode+4];
  144. getCheckerList();
  145. getTabData(1);
  146. /*rendeDeptList();
  147. rendeCheckerList();
  148. renderCheckerTable();*/
  149. });
  150. //任务筛选
  151. $(".filter").on("click", function(e){
  152. const behosDateStart1 = $("#datepicker1").val() //出院日期
  153. const behosDateEnd1 = $("#datepicker2").val()
  154. const behosDateStartTime1 = new Date(behosDateStart1).getTime()
  155. const behosDateEndTime1 = new Date(behosDateEnd1).getTime()
  156. const behosDateStart = $("#datepicker3").val() //出院日期
  157. const behosDateEnd = $("#datepicker4").val()
  158. const behosDateStartTime = new Date(behosDateStart).getTime()
  159. const behosDateEndTime = new Date(behosDateEnd).getTime()
  160. if(behosDateStartTime > behosDateEndTime){
  161. $.alerModal({"message":'生成日期开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  162. return
  163. }
  164. if(behosDateStartTime1 > behosDateEndTime1){
  165. $.alerModal({"message":'出院日期开始时间不能大于结束时间~',type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  166. return
  167. }
  168. getTabData(1)
  169. })
  170. //重置
  171. $(".abnormalClear").on("click", function(e){
  172. clearFilter();
  173. getTabData(1)
  174. })
  175. //关闭弹窗事件
  176. $(".modal-container .close").click(function(){
  177. $(".modal-container").hide();
  178. });
  179. //科室选择
  180. $('.selectDept').on("click", function(e){
  181. e.stopPropagation()
  182. $(".checkerList ").css("display", "none")
  183. $(".selectChecker .arrow").attr("src",iconDown)
  184. $(".deptList ").css("display","block")
  185. })
  186. //病人科室选择
  187. $('.selectAllDept').on("click", function(e){
  188. e.stopPropagation()
  189. $(".checkerList ").css("display", "none")
  190. $(".selectChecker .arrow").attr("src",iconDown)
  191. $(".deptAllList ").css("display","block")
  192. })
  193. //质控员选择
  194. $('.selectChecker').on("click", function(e){
  195. e.stopPropagation()
  196. $(".deptList ").css("display", "none")
  197. $(".selectChecker .arrow").attr("src",iconDown)
  198. $(".checkerList").css("display","block")
  199. })
  200. //关闭下拉事件
  201. $(document).on("click", function(){
  202. $(".deptList ").css("display", "none")
  203. $(".deptAllList ").css("display", "none")
  204. $(".checkerList").css("display", "none")
  205. $(".selectDept .arrow").attr("src",iconDown)
  206. $(".selectAllDept .arrow").attr("src",iconDown)
  207. $(".selectChecker .arrow").attr("src",iconDown)
  208. })
  209. //获取科室列表
  210. getAllDeptList()
  211. //获取核查人员列表
  212. getCheckerList()
  213. getTabData(1)
  214. });
  215. //高度适应
  216. function setBoxHeight() {
  217. const ht = window.innerHeight;
  218. $('.table-cont').height(ht - 319 + 'px');
  219. $('.overAuto').height(ht - 174 + 'px');
  220. }
  221. //病人列表获取筛选值
  222. function getFilterData(){
  223. const obj = {};
  224. $(".overAuto.fr .filterBox input[code]").map((i,it)=>{
  225. obj[$(it).attr("code")]=$(it).val()
  226. })
  227. return obj;
  228. }
  229. //获取分配核查任务列表数据
  230. function getTabData(activePage){
  231. const filterData = getFilterData();
  232. const dept = global_DeptMId||global_DeptId||global_DeptAllId;
  233. const deptList=dept.trim()?[dept]:[];
  234. const param = {
  235. current:activePage,
  236. asc:data_asc, //升序
  237. desc:data_desc, //降序
  238. size: 15,
  239. jobType:global_activeTabCode, //0-科室任务 1-院级 2-质控科
  240. ...filterData,
  241. deptList:deptList,
  242. endTime:filterData.endTime+" 23:59:59"
  243. };
  244. $('.pagination').html("");
  245. $('.patientTable .tbody').html(emptyBox('努力加载中...','',8))
  246. return post(ywCheckApi.getAllotCheckList,param).then(res =>{
  247. if(res.data.code == '0'){
  248. const data = res.data.data;
  249. tabList = data.records;
  250. const totalPage = data.pages;
  251. const totalNum = data.total;
  252. renderTab(tabList)
  253. renderPagination(totalPage,Number(activePage),totalNum)
  254. if(totalPage > 0){
  255. renderPagination(totalPage,Number(activePage),totalNum)
  256. } else{
  257. $('.pagination').html("")
  258. }
  259. }else{
  260. $.alerModal({"message":res.data.msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  261. }
  262. }).catch((e) =>{
  263. })
  264. }
  265. function clearCheckerFilter(){
  266. $('.selectDept i').text('全部')
  267. $('.selectAllDept i').text('全部')
  268. $(".deptList").css("display", "none")
  269. $(".deptAllList").css("display", "none")
  270. $('.selectChecker i').text('全部')
  271. $(".checkerList").css("display", "none")
  272. global_DeptMId="";
  273. global_DeptId="";
  274. global_CheckerId="";
  275. global_CheckerName="";
  276. }
  277. function clearFilter(){
  278. $(".overAuto.fr input").val("");
  279. data_desc=["leaveHospitalDate"];
  280. global_DeptAllId="";
  281. /*if(isPlacefile != 1){
  282. data_desc=["behospital_date"]
  283. }*/
  284. data_asc=[];
  285. //默认日期为本月
  286. const days = new Date().getDate()-1;
  287. let startDate = "-"+days+"d",endDate=new Date();
  288. $( "#datepicker" ).datepicker({
  289. changeMonth: true,
  290. changeYear: true,
  291. dateFormat:"yy-mm-dd",
  292. }).datepicker( "setDate", startDate);
  293. $( "#datepicker2" ).datepicker({
  294. changeMonth: true,
  295. changeYear: true,
  296. dateFormat:"yy-mm-dd"
  297. }).datepicker( "setDate",endDate);
  298. $( "#datepicker3" ).datepicker({
  299. changeMonth: true,
  300. changeYear: true,
  301. dateFormat:"yy-mm-dd",
  302. });
  303. $( "#datepicker4" ).datepicker({
  304. changeMonth: true,
  305. changeYear: true,
  306. dateFormat:"yy-mm-dd"
  307. });
  308. $("th[code]").removeClass("asc desc")
  309. }
  310. //病人列表排序事件
  311. function bindOrder(){
  312. $(".patientTable th[code]").off("click").on("click",function(e){
  313. const code=$(this).attr("code");
  314. if(data_asc[0]===code){
  315. data_desc=[code];
  316. data_asc=[];
  317. $("th[code]").removeClass("asc desc");
  318. $(this).addClass("desc");
  319. }else{
  320. data_desc=[];
  321. data_asc=[code];
  322. $("th[code]").removeClass("asc desc");
  323. $(this).addClass("asc");
  324. }
  325. getTabData(1);
  326. // console.log(code)
  327. });
  328. }
  329. //已分配列表排序事件
  330. function bindTaskOrder(){
  331. $(".taskTable th[code]").off("click").on("click",function(e){
  332. const code=$(this).attr("code");
  333. let d_desc=[],d_asc=[];
  334. if(data_asc[0]===code){
  335. d_desc=[code];
  336. d_asc=[];
  337. $(".taskTable th[code]").removeClass("asc desc");
  338. $(this).addClass("desc");
  339. }else{
  340. d_desc=[];
  341. d_asc=[code];
  342. $(".taskTable th[code]").removeClass("asc desc");
  343. $(this).addClass("asc");
  344. }
  345. getTasksList({desc:d_desc,asc:d_asc});
  346. // console.log(code)
  347. });
  348. }
  349. //质控员列表渲染
  350. function renderCheckerTable(d){
  351. const data = d?d:global_Checkers[+global_activeTabCode+4];
  352. let str = ``,code="";
  353. global_CheckerId="";
  354. if(!data||data.length===0){
  355. $('.checkerTable .tbody').html(emptyBox(null,4))
  356. //if(!noTasksUpdate){getTabData(1);}
  357. // initScroll("qcList","YX",1)
  358. return;
  359. }
  360. //获取任务列表数据
  361. //if(!noTasksUpdate){getTabData(1);}
  362. const titles = $(".checkerTable .tabTitle th[valCode]");
  363. for(let i = 0; i < data.length; i++){
  364. const item = data[i]
  365. str += `
  366. <tr data-index=${i}>
  367. <td class="operaItem checkerRadio textCenter" code="${item.doctorId}" data-dept=${item.deptId} data-name="${item.doctorName}"><img src="${iconUnRadio}" alt=""></td>
  368. `
  369. for(let i=0;i<titles.length;i++){
  370. code=$(titles[i]).attr('valCode');
  371. if(code==="jobNum"){
  372. str += `<td class="textCenter"><a class="job-num" data-index=${i} data-dept=${item.deptId} data-id="${item.doctorId}" data-name="${item.doctorName}">${ item[code]}<a></td>`
  373. }else{
  374. str += `<td class="textCenter"><span data-index=${i}>${ item[code]}<span></td>`
  375. }
  376. }
  377. str += "</tr>"
  378. }
  379. $('.checkerTable .tbody').html(str);
  380. selectCheckerTb();
  381. bindTaskNumEvent();
  382. }
  383. //选中质控员
  384. function selectCheckerTb(){
  385. $(".checkerRadio").click(function(){
  386. global_CheckerId=$(this).attr("code");
  387. global_CheckerName=$(this).attr("data-name");
  388. global_DeptMId=$(this).attr("data-dept");
  389. getTabData(1)
  390. $(".checkerRadio img").attr('src',iconUnRadio);
  391. $(this).find("img").attr('src',iconRadio);
  392. });
  393. }
  394. //选中任务
  395. function selectTaskTb(){
  396. $(".taskCheck").unbind("click").click(function(){
  397. const id=$(this).attr("code");
  398. const it =$(this).find("img");
  399. const codes = global_TaskCodes.join(",")+",";
  400. if(it.is(".active")){
  401. $(this).find("img").attr('src',iconUnCheck);
  402. global_TaskCodes = codes.replace(id+",","").replace(/^,|,$/,'').split(",");
  403. }else{
  404. $(this).find("img").attr('src',iconCheck);
  405. global_TaskCodes.push(id);
  406. }
  407. it.toggleClass('active');
  408. });
  409. }
  410. //待分配任务列表渲染
  411. function renderTab(data){
  412. let str = ``,code=""
  413. global_TaskCodes=[];
  414. if(data.length===0){
  415. $('.patientTable .tbody').html(emptyBox(null,7))
  416. // initScroll("qcList","YX",1)
  417. return;
  418. }
  419. const titles = $(".patientTable .tabTitle th[valCode]");
  420. for(let i = 0; i < data.length; i++){
  421. const item = data[i]
  422. str += `
  423. <tr data-index=${i}>
  424. <td class="operaItem taskCheck textCenter" code="${item.behospitalCode}"><img src="${iconUnCheck}" alt=""></td>`;
  425. for(let i=0;i<titles.length;i++){
  426. code=$(titles[i]).attr('valCode');
  427. str += `<td class="textCenter"><span data-index=${i}>${ item[code] || "-"}<span></td>`
  428. }
  429. str += "</tr>"
  430. }
  431. $('.patientTable .tbody').html(str)
  432. selectTaskTb();
  433. bindOrder()
  434. }
  435. //任务数点击事件
  436. function bindTaskNumEvent(){
  437. $(".job-num").unbind("click").click(function(){
  438. global_CheckerId = $(this).attr("data-id");
  439. global_CheckerName=$(this).attr("data-name");
  440. global_DeptMId=$(this).attr("data-dept");
  441. $(".modal-container").show();
  442. getTasksList();
  443. })
  444. }
  445. //获取全部科室数据
  446. function getAllDeptList(){
  447. post(api.getDeptList,{}).then(res =>{
  448. if(res.data.code == '0'){
  449. const deptList = res.data.data||[]
  450. rendeAllDeptList(deptList)
  451. }else{rendeAllDeptList([])}
  452. }).catch((e) =>{
  453. })
  454. }
  455. function getCheckerList(){
  456. post(ywCheckApi.getCheckUserMap,{jobType:+global_activeTabCode+4}).then(res =>{
  457. if(res.data.code == '0'){
  458. const list = res.data.data||{};
  459. global_deptData = list;
  460. formatDeptChecker(list);
  461. }else{rendeCheckerList([])}
  462. }).catch((e) =>{
  463. })
  464. }
  465. //获取质控员任务列表
  466. function getTasksList(param={}){console.log(222,global_activeTabCode)
  467. post(ywCheckApi.getTaskByUserId,{...param,jobType:global_activeTabCode,checkId:global_CheckerId,deptList:[global_DeptMId]}).then(res =>{
  468. if(res.data.code == '0'){
  469. const list = res.data.data||{};
  470. renderTaskTable(list);
  471. }else{rendeCheckerList()}
  472. }).catch((e) =>{
  473. })
  474. }
  475. //质控员任务列表渲染
  476. function renderTaskTable(data) {
  477. let str = ``, code = "";
  478. if (!data || data.length === 0) {
  479. $('.taskTable .tbody').html(emptyBox(null, 7))
  480. return;
  481. }
  482. const titles = $(".taskTable .tabTitle th[valCode]");console.log(data)
  483. for (let i = 0; i < data.length; i++) {
  484. const item = data[i];
  485. str += `<tr data-index=${i}>`;
  486. for (let i = 0; i < titles.length; i++) {
  487. code = $(titles[i]).attr('valCode');
  488. str += `<td class="textCenter"><span data-index=${i}>${ item[code] || "-"}<span></td>`
  489. }
  490. str+=`<td class="operaItem textCenter"><a class="delete ${item.delFlag?'':'disable'}" code="${item.behospitalCode}">移除</a></td><tr>`
  491. }
  492. $('.taskTable .tbody').html(str);
  493. bindDeleteEvent();
  494. bindTaskOrder();
  495. }
  496. //移除任务事件
  497. function bindDeleteEvent(){
  498. const dom = `<div class="del-pop">
  499. <div class="pop-title">确定移除该任务吗?</div>
  500. <div class="pop-btns">
  501. <button class="del-confirm">确定</button>
  502. <button class="cancel">取消</button>
  503. </div>
  504. </div>`;
  505. $(".taskTable .delete:not(.disable)").unbind("click").click(function(e){
  506. global_TaskCodes=[$(this).attr("code")];console.log(3)
  507. $(dom).insertAfter($(this)).show();
  508. $(".del-pop .cancel").unbind("click").click(function(){
  509. $(".del-pop").hide();
  510. });
  511. $(".del-pop .del-confirm").unbind("click").click(function(){
  512. allotTask(1);
  513. });
  514. });
  515. }
  516. //科室筛选质控员
  517. function formatDeptChecker(list){
  518. const k=+global_activeTabCode +4;
  519. const allCheckArrs = list[k];
  520. global_Checkers={4:[],5:[],6:[]}
  521. allCheckArrs.map((it)=>{
  522. global_DeptCheckers[it.deptId]=it.deptcheckUsers;
  523. global_Checkers[k].push(...it.deptcheckUsers);
  524. });
  525. rendeDeptList();
  526. rendeCheckerList();
  527. renderCheckerTable();
  528. }
  529. //渲染科室列表
  530. function rendeAllDeptList(list){
  531. if(list.length == 0){
  532. $(".deptAllList").html("")
  533. return
  534. }
  535. let str = `<li class="deptAllItem ellipsis" data-id=" " data-name="全部">全部</li>`;
  536. for(let i = 0; i < list.length; i++){
  537. str += `<li class="deptAllItem ellipsis" title=${list[i]['deptName']} data-id=${list[i]['deptId']} data-name=${list[i].deptName}> ${list[i].deptName}</li>`
  538. }
  539. $(".deptAllList").html(str)
  540. bindAllDeptSelect()
  541. }
  542. //渲染当前用户科室列表
  543. function rendeDeptList(){
  544. const list = global_deptData[+global_activeTabCode+4];
  545. if(!list||list.length == 0){
  546. $(".deptList").html("")
  547. return
  548. }
  549. let str = `<li class="deptItem ellipsis" data-id=" " data-name="全部">全部</li>`;
  550. for(let i = 0; i < list.length; i++){
  551. str += `<li class="deptItem ellipsis" title=${list[i]['deptName']} data-id=${list[i]['deptId']} data-name=${list[i].deptName}> ${list[i].deptName}</li>`
  552. }
  553. $(".deptList").html(str)
  554. bindDeptSelect()
  555. }
  556. //质控员列表渲染
  557. function rendeCheckerList(arr){
  558. const list = arr?arr:global_Checkers[+global_activeTabCode+4];
  559. if(list.length == 0){
  560. $(".checkerList").html("")
  561. return
  562. }
  563. let str = `<li class="checkerItem ellipsis" data-id=" " data-name="全部">全部</li>`;
  564. for(let i = 0; i < list.length; i++){
  565. str += `<li class="checkerItem ellipsis" data-id=${list[i]['doctorId']} data-dept=${list[i]['deptId']} data-name=${list[i].doctorName}> ${list[i].doctorName}</li>`
  566. }
  567. $(".checkerList").html(str)
  568. bindCheckerSelect()
  569. }
  570. //质控员列表科室选择
  571. function bindDeptSelect(){
  572. $('.deptItem').on("mousedown",function(){
  573. const deptItemName = $(this).attr("data-name")
  574. global_DeptId = $(this).attr("data-id")
  575. global_DeptAllId="";
  576. global_DeptMId="";
  577. $('.selectDept i').text(deptItemName)
  578. $('.selectDept').attr('title',deptItemName)
  579. $(".deptList").css("display", "none")
  580. //质控员选择清空
  581. $('.selectChecker i').text('全部')
  582. $('.selectChecker').attr('title','全部')
  583. const data = +global_DeptId?global_DeptCheckers[global_DeptId]:global_Checkers[+global_activeTabCode+4];
  584. console.log(data,global_DeptId)
  585. rendeCheckerList(data||[]);
  586. renderCheckerTable(data);
  587. getTabData(1);
  588. })
  589. }
  590. //病人列表科室选择
  591. function bindAllDeptSelect(){
  592. $('.deptAllItem').on("mousedown",function(){
  593. const deptItemName = $(this).attr("data-name")
  594. global_DeptId="";
  595. global_DeptMId="";
  596. global_DeptAllId = $(this).attr("data-id");
  597. $('.selectAllDept i').text(deptItemName)
  598. $('.selectAllDept').attr('title',deptItemName)
  599. $(".deptAllList").css("display", "none")
  600. getTabData(1)
  601. })
  602. }
  603. //质控员选择
  604. function bindCheckerSelect(){
  605. $('.checkerItem').on("mousedown",function(){
  606. const itemName = $(this).attr("data-name")
  607. const itemId = $(this).attr("data-id")
  608. $('.selectChecker i').text(itemName)
  609. $('.selectChecker').attr('title',itemName)
  610. $(".checkerList").css("display", "none")
  611. global_DeptAllId="";
  612. if(!itemId.trim()){
  613. renderCheckerTable();
  614. return
  615. }
  616. const dept=$(this).attr("data-dept");
  617. const totalArr = global_DeptId?global_DeptCheckers[global_DeptId]:global_Checkers[+global_activeTabCode+4];
  618. const arr = totalArr.find((it)=>itemId===it.doctorId&&dept===it.deptId);
  619. renderCheckerTable([arr]);
  620. })
  621. }
  622. function loading(){
  623. const str = `
  624. <div class="loadingBox">
  625. <div class="mask"></div>
  626. <img class="loadingImg" src=${loadingImg} alt="loading" />
  627. </div>
  628. `
  629. $("#mainBox", parent.document).append(str)
  630. }
  631. function hideLoading(){
  632. $("#mainBox .loadingBox", parent.document).remove()
  633. }
  634. function allotTask(flag){
  635. if(!global_CheckerId){
  636. toast("请先选择质控员");
  637. return;
  638. }
  639. if(global_TaskCodes.length===0){
  640. toast("请选择至少一个任务");
  641. return;
  642. }
  643. const param = {
  644. checkId:global_CheckerId,
  645. checkName:global_CheckerName,
  646. distributionType:flag,
  647. behospitalCodes:global_TaskCodes,
  648. }
  649. post(ywCheckApi.allotTask,param).then(res =>{
  650. if(res.data.code == '0'){
  651. global_TaskCodes=[];
  652. getCheckerList();
  653. getTabData(1);
  654. flag&&getTasksList(); //移除时更新已分配任务列表弹窗数据
  655. toast("操作成功");
  656. }else{
  657. toast(res.data.msg||'保存分配失败,请重试~');
  658. }
  659. }).catch((e) =>{
  660. })
  661. }
  662. //气泡提示
  663. function toast(msg) {
  664. $.alerModal({"message":msg,type:"tip",time:'1000',isFather: true, fatherWrapper: $("#mainBox", parent.document)});
  665. }
  666. //分页渲染
  667. function renderPagination(totalPage,activePage,totalNum){
  668. let str = `<span class="totalSum">共${totalPage}页/${totalNum}条数据</span><span class="prePage"><img class="arrowPage" src=${arrowLeft} /></span>`
  669. if(totalPage <= 6){
  670. for(let i = 1; i <= totalPage; i++){
  671. str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
  672. }
  673. }else{
  674. if(activePage <= 3){ //选中页数小于4
  675. for(let i = 1; i <= 4; i++){
  676. str += `<span class="pageNum ${'page'+i}" data-page=${i}>${i}</span>`
  677. }
  678. str += `<span class="more" >...</span>`
  679. str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
  680. } else if(activePage > totalPage -3){
  681. str += `<span class="pageNum page1" data-page=1>1</span>`
  682. str += `<span class="more" >...</span>`
  683. str += `<span class="pageNum ${'page'+(totalPage-3)}" data-page=${totalPage -3}>${totalPage -3}</span>`
  684. str += `<span class="pageNum ${'page'+(totalPage-2)}" data-page=${totalPage -2}>${totalPage -2}</span>`
  685. str += `<span class="pageNum ${'page'+(totalPage-1)}" data-page=${totalPage -1}>${totalPage -1}</span>`
  686. str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
  687. } else {
  688. str += `<span class="pageNum page1" data-page=1>1</span>`
  689. str += `<span class="more" >...</span>`
  690. str += `<span class="pageNum ${'page'+(activePage -1)}" data-page=${activePage -1}>${activePage -1}</span>`
  691. str += `<span class="pageNum ${'page'+activePage}" data-page=${activePage}>${activePage}</span>`
  692. str += `<span class="pageNum ${'page'+(activePage +1)}" data-page=${activePage +1}>${activePage +1}</span>`
  693. str += `<span class="more" >...</span>`
  694. str += `<span class="pageNum ${'page'+totalPage}" data-page=${totalPage}>${totalPage}</span>`
  695. }
  696. }
  697. str += `<span class="nextPage"><img class="arrowPage" src=${arrowRight} /></span>`
  698. $('.pagination').html(str)
  699. $('.page' + activePage).addClass('activePage')
  700. $(".pageNum").on("click", function(e){
  701. const activePageNow = Number($(this).attr('data-page'))
  702. getTabData(activePageNow)
  703. // renderPagination(totalPage,activePageNow,totalNum)
  704. })
  705. $(".prePage").on("click", function(e){
  706. let activePageNow = Number($(".activePage").attr('data-page'))
  707. if(activePageNow > 1){
  708. activePageNow--
  709. getTabData(activePageNow)
  710. // renderPagination(totalPage,activePageNow,totalNum)
  711. }
  712. })
  713. $(".nextPage").on("click", function(e){
  714. let activePageNow = Number($(".activePage").attr('data-page'))
  715. if(activePageNow < totalPage){
  716. activePageNow++
  717. getTabData(activePageNow)
  718. // renderPagination(totalPage,activePageNow,totalNum)
  719. }
  720. })
  721. }