qcScore.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  1. require("../css/qcScore.less");
  2. const $ = require('jquery');
  3. require('jquery-templates');
  4. require('./modal.js');
  5. const {api,post,getUrlArgObject,setBoxHeight} = require('./utils.js');
  6. const {keyMaps} = require('./maps.js');
  7. //本页全局变量
  8. let global_flawData = {}; //缺陷数据
  9. const global_id=getUrlArgObject("id");
  10. let global_activeTab=$(".sub-menu .page.active").attr("code"); //当前激活菜单项
  11. $(function(){
  12. //getSubMenu();
  13. //initScoreItem();
  14. getRecordDetail();
  15. function initMenu(data){
  16. //菜单数据填充
  17. $("#subMenuTmpl").tmpl(data).appendTo("#subMenu");
  18. //菜单收起展开
  19. $(".list-1").on("click",function(){
  20. $(".list-1 .slide-up").removeClass('slide-up');
  21. $(this).toggleClass('slide-up');
  22. $(this).find("ul").slideToggle();
  23. });
  24. $(".list-1 li").on("click",function(e){
  25. e.stopPropagation();
  26. });
  27. //右侧内容切换
  28. $(".page").on("click",function(){
  29. //选中样式
  30. $(".sub-menu .active").removeClass('active');
  31. $(this).addClass("active");
  32. //显示对应内容
  33. const code=$(this).attr("code");
  34. global_activeTab=code;
  35. $(".content-item,.flaw-item").hide();
  36. $(".content-item[code='"+code+"']").show();
  37. showFlawList();
  38. });
  39. }
  40. /*function getSubMenu(){
  41. post(api.getSubMenu).then(function(res){
  42. if(res.data.code==='0'){
  43. const data = res.data.data;
  44. initMenu(data);
  45. $(".sub-menu li:first-child.page").addClass("active");
  46. }
  47. });
  48. };*/
  49. //获取病例明细
  50. function getRecordDetail(){
  51. post(api.getRecordDetail,{'behospitalCode':global_id}).then(function(res){
  52. if(res.data.code==='0'){
  53. const data = res.data.data;
  54. const {beHospital,result,msg} = data;
  55. const info=Object.assign(beHospital,result);
  56. initMenu(JSON.parse(result.menuData));
  57. $(".sub-menu>ul>li:first-child.page").addClass("active");
  58. global_activeTab=$(".sub-menu .page.active").attr("code");
  59. initPatientInfo(info);
  60. initContent(result.pageData);
  61. setBoxHeight();
  62. initScoreItem(msg);
  63. global_flawData=msg;
  64. }
  65. });
  66. }
  67. //填充患者信息
  68. function initPatientInfo(data){
  69. const date = data.birthday.substr(0,10);
  70. const age=new Date(date).getTime()/(365*24*60*60*1000);
  71. const obj=Object.assign({},data,{age:Math.floor(-age)});
  72. $("#infoTmpl").tmpl(obj).appendTo("#patientInfo");
  73. }
  74. //显示病例模块明细
  75. function initContent(data){
  76. const obj = JSON.parse(data);
  77. //formatData(obj['入院记录'])
  78. let info=[];//formatData(obj['入院记录']);
  79. for(let k in obj){
  80. info=formatData(obj[k],k);
  81. $("#contentTmpl").tmpl({title:k,info:info}).appendTo("#contentInfo");
  82. }
  83. $(".content-item[code="+global_activeTab+"]").show();
  84. console.log(obj)
  85. }
  86. function formatData(data,title){
  87. if(!keyMaps[title]){
  88. return data;
  89. }
  90. const keyArr=Object.keys(keyMaps[title]);
  91. let obj={};
  92. keyArr.map((k)=>{
  93. obj[keyMaps[title][k]]=data[0][k]||"";
  94. });
  95. const obj1=Object.assign({},obj,data[0]);
  96. return [obj1];
  97. }
  98. //评分项数据填充
  99. function initScoreItem(data){
  100. $("#flaws .flaw-box").html("");
  101. for(let k in data){
  102. $("#flawTmpl").tmpl(data[k]).appendTo("#flaws .flaw-box");
  103. }
  104. //$(".flaw-item[code="+global_activeTab+"]").show();
  105. showFlawList();
  106. $(".flaw-item .oper a").click(function () {
  107. //const activeTab=$(".sub-menu .page.active").attr("code");
  108. const i = $(".flaw-item[code="+global_activeTab+"]").index($(this).parents(".flaw-item"));
  109. const code=$(this).attr("code");
  110. const isEdit = $(this).is(".edit-flaw");
  111. showModal(isEdit?'0':'1',code,i);
  112. })
  113. }
  114. //显示缺陷列表
  115. function showFlawList(){
  116. const hml = $(".flaw-item[code="+global_activeTab+"]");
  117. if(hml.length){
  118. hml.show();
  119. $("#flaws .empty").hide();
  120. }else{
  121. $("#flaws .empty").length?$("#flaws .empty").show():$("#emptyTmpl").tmpl().appendTo("#flaws .flaw-box");
  122. }
  123. }
  124. //删除评分项
  125. function delScore(id){
  126. const param={
  127. 'behospitalCode':global_id,
  128. 'optResultAlgVO':{
  129. 'id':id
  130. }
  131. };
  132. post(api.delScore,param).then(function(res){
  133. if(res.data.code==='0'){
  134. $("#delModal").hide();
  135. updateFlaws(res.data.data);
  136. $.alerModal({"message":"删除成功",type:"tip",time:'1000'});
  137. }
  138. });
  139. }
  140. //修改评分项
  141. function editScore(info){
  142. const param={
  143. "behospitalCode": global_id,
  144. "optResultAlgVO": info
  145. };
  146. post(api.editScore,param).then(function(res){
  147. if(res.data.code==='0'){
  148. $("#delModal").hide();
  149. updateFlaws(res.data.data);
  150. $.alerModal({"message":"修改成功",type:"tip",time:'1000'});
  151. }
  152. });
  153. }
  154. //显示删除/修改弹窗
  155. function showModal(flag,code,i){
  156. $("#delModal .modal-body").html("");
  157. $("#delModal").show();
  158. //事件解绑
  159. $("#delModal .confirm").off("click");
  160. $("#qcScore,#qcMsg").off("input");
  161. const info = global_flawData[global_activeTab][i];
  162. if(flag==='0'){ //修改
  163. $("#delModal .title").text("修改评分");
  164. $("#editTmpl").tmpl(info).appendTo("#delModal .modal-body");
  165. //分数输入验证
  166. $("#qcScore").on("input",function(){
  167. const val=$(this).val();
  168. if(/^[0-9]\d*$|^[0-9]\d*(.\d)?$/.test(val)){
  169. $(".edit-box .warning").hide();
  170. }else{
  171. $(".edit-box .warning .red").text("支持≥0的数字输入,最多保留小数点后1位~");
  172. $(".edit-box .warning").show();
  173. }
  174. });
  175. //提示信息输入验证
  176. $("#qcMsg").on("input",function(){
  177. const val=$(this).val();
  178. if(val.trim()){
  179. $(".edit-box .warning").hide();
  180. }else{
  181. $(".edit-box .warning .red").text("提示信息不能为空~");
  182. $(".edit-box .warning").show();
  183. }
  184. });
  185. $("#delModal .confirm").click(function(){
  186. if($(".edit-box .warning").is(":visible")){
  187. return;
  188. }
  189. const obj = Object.assign({},info,{msg:$("#delModal #qcMsg").val(),score:$("#delModal #qcScore").val()});
  190. editScore(obj);
  191. });
  192. }else{
  193. $("#delModal .title").text("删除评分");
  194. $("#delModal .modal-body").html('<p>确定要删除该评分记录吗?</p>');
  195. $("#delModal .confirm").click(function(){
  196. delScore(code,info);
  197. });
  198. }
  199. }
  200. //更新缺陷列表
  201. function updateFlaws(info){
  202. $("#patientInfo .level").text("质控等级:"+info.level);
  203. $("#patientInfo .score").text("质控得分:"+info.scoreRes);
  204. const param = {
  205. 'behospitalCode':global_id,
  206. 'paramStr':[
  207. "msg"
  208. ]
  209. };
  210. post(api.getRecordDetail,param).then(function(res){
  211. if(res.data.code==='0'){
  212. const data = res.data.data;
  213. const {msg} = data;
  214. initScoreItem(msg);
  215. global_flawData=msg;
  216. }
  217. });
  218. }
  219. });