|
@@ -4,21 +4,22 @@ require('jquery-templates');
|
|
|
require('./modal.js');
|
|
|
const {post,getUrlArgObject,setBoxHeight,getCookie} = require('./utils.js');
|
|
|
const {api} = require('./api.js');
|
|
|
-//本页全局变量
|
|
|
-let global_flawData = {}; //缺陷数据
|
|
|
-const global_id=getUrlArgObject("id");
|
|
|
-const global_age = getUrlArgObject("age");
|
|
|
-const global_code = getUrlArgObject("code");
|
|
|
-let global_activeTab=$(".sub-menu .page.active").attr("code"); //当前激活菜单项
|
|
|
-let global_modules ={}; //模板数据缓存
|
|
|
window.document.title="质控评分-"+getUrlArgObject("name");
|
|
|
|
|
|
$(function(){
|
|
|
- //getSubMenu();
|
|
|
- //initScoreItem();
|
|
|
- //getRecordDetail();
|
|
|
- getAllModules()
|
|
|
- //getInfoModule(15); //根据对应id获取模板
|
|
|
+//本页全局变量
|
|
|
+ let global_flawData = {}; //缺陷数据
|
|
|
+ const global_id=getUrlArgObject("id");
|
|
|
+ const global_age = getUrlArgObject("age");
|
|
|
+ const global_code = getUrlArgObject("code");
|
|
|
+ let global_activeTab=$(".sub-menu .page.active").attr("code"); //当前激活菜单项
|
|
|
+ let global_modules ={}; //模板数据缓存
|
|
|
+ let global_flaws=[]; //缺陷条目列表缓存
|
|
|
+ let global_selectedFlaw = {}; //新增时选中的条目信息
|
|
|
+ getAllModules();
|
|
|
+ $(".add-flaw").click(function(){
|
|
|
+ getQcCasesEntry();
|
|
|
+ });
|
|
|
function initMenu(data){
|
|
|
const menu=[{id:0,name:"缺陷总览",parentId: -1,sonMode: []},...(data||[])];
|
|
|
//菜单数据填充
|
|
@@ -50,8 +51,10 @@ function initMenu(data){
|
|
|
});
|
|
|
//右侧内容切换
|
|
|
$(".page").on("click",function(){
|
|
|
- if($(this).attr("code")==="缺陷总览"){
|
|
|
- $(".flaw-table").show();
|
|
|
+ const title = $(this).attr("code");
|
|
|
+ if(title==="缺陷总览"||title==="谈话告知书"||title==="知情同意书"){
|
|
|
+ $(".flaw-table .page-item").hide();
|
|
|
+ $(".flaw-table,.flaw-table .page-item[code="+title+"]").show();
|
|
|
}else{
|
|
|
$(".flaw-table").hide();
|
|
|
}
|
|
@@ -97,31 +100,11 @@ function getRecordDetail(){
|
|
|
initList(msg);
|
|
|
initScoreItem(msg);
|
|
|
global_flawData=msg;
|
|
|
- /*let obj = JSON.parse(result.pageData)
|
|
|
-
|
|
|
- infoNotNull(obj,'查房记录')&&wardRound(obj['查房记录'],'查房记录')
|
|
|
- infoNotNull(obj,'术前讨论、术前小结')&&preoperation(obj['术前讨论、术前小结'],'术前讨论、术前小结')
|
|
|
- infoNotNull(obj,'阶段小结')&&summary(obj['阶段小结'],'阶段小结')
|
|
|
- infoNotNull(obj,'手术记录')&&operationRecord(obj['手术记录'],'手术记录')
|
|
|
- infoNotNull(obj,'会诊申请单')&&applicationForm(obj['会诊申请单'],'会诊申请单')
|
|
|
- infoNotNull(obj,'会诊结果单')&&resultForm(obj['会诊结果单'],'会诊结果单')
|
|
|
- infoNotNull(obj,'会诊记录')&&consultationNote(obj['会诊记录'],'会诊记录')
|
|
|
- infoNotNull(obj,'疑难病例讨论记录')&&difficultRecord(obj['疑难病例讨论记录'],'疑难病例讨论记录')
|
|
|
- infoNotNull(obj,'病危通知书')&&illnessNotice(obj['病危通知书'],'病危通知书')
|
|
|
- infoNotNull(obj,'病理检验送检单')&&pathologicTest(obj['病理检验送检单'],'病理检验送检单')
|
|
|
- infoNotNull(obj,'抢救记录')&&rescueRecord(obj['抢救记录'],'抢救记录')
|
|
|
- infoNotNull(obj,'输血后效果评价')&&transfusionEvaluate(obj['输血后效果评价'],'输血后效果评价')*/
|
|
|
setBoxHeight();
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
-//判断模块内容是否不为空
|
|
|
-function infoNotNull(obj,moduleName){
|
|
|
- if( obj[moduleName]&&obj[moduleName].length > 0 &&Object.keys(obj[moduleName][0]).length !== 0 ){
|
|
|
- return true
|
|
|
- }
|
|
|
- return false
|
|
|
-}
|
|
|
+
|
|
|
//填充患者信息
|
|
|
function initPatientInfo(data){
|
|
|
const obj=Object.assign({},data,{age:!global_age||global_age=="null"?"-":global_age});
|
|
@@ -132,29 +115,21 @@ function initContent(data){
|
|
|
const obj = JSON.parse(data);
|
|
|
let info=[];
|
|
|
let hml='',moduleId='';
|
|
|
+ formatSpecPage(obj["谈话告知书"],"谈话告知书");
|
|
|
+ formatSpecPage(obj["知情同意书"],"知情同意书");
|
|
|
for(let k in obj){
|
|
|
- if(k==="病案首页"){ //病案首页不使用动态模板
|
|
|
- info=formatInfoData(k,obj[k][0]);
|
|
|
- $("#indexTmpl").tmpl(info).appendTo("#contentInfo");
|
|
|
+ if(k==="谈话告知书"||k==="知情同意书"){
|
|
|
continue;
|
|
|
}
|
|
|
for(let i in obj[k]){
|
|
|
info=formatInfoData(k,obj[k][i]);
|
|
|
moduleId=info.mode_id;
|
|
|
if(global_modules[moduleId]){
|
|
|
- hml=initModuleData(moduleId,obj[k].length);
|
|
|
+ hml=initModuleData(moduleId,obj[k]);
|
|
|
$.tmpl(hml,info).appendTo("#contentInfo");
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
- if(obj["病案首页"]&&obj["病案首页"][0]["出院诊断"]){
|
|
|
- const diag = JSON.parse(obj["病案首页"][0]["出院诊断"]);
|
|
|
- $("#tableTmpl").tmpl({k:"出院诊断",data:diag}).appendTo("#diagTable");
|
|
|
- }
|
|
|
- if(obj["病案首页"]&&obj["病案首页"][0]["手术信息"]){
|
|
|
- const diag = JSON.parse(obj["病案首页"][0]["手术信息"]);
|
|
|
- $("#tableTmpl").tmpl({k:"手术信息",data:diag}).appendTo("#surgeryTable");
|
|
|
- }
|
|
|
$(".content-item[code="+global_activeTab+"]").show();
|
|
|
//console.log(obj)
|
|
|
}
|
|
@@ -172,21 +147,15 @@ function formatInfoData(k,data){
|
|
|
return Object.assign({title:k},obj);
|
|
|
}
|
|
|
|
|
|
-/*function formatData(data,title){
|
|
|
- if(!keyMaps[title]){
|
|
|
- return data;
|
|
|
+//知情同意书、谈话告知书
|
|
|
+ function formatSpecPage(data,title){
|
|
|
+ $("#appointBookTmpl").tmpl({title,data}).appendTo(".flaw-table");
|
|
|
}
|
|
|
- const keyArr=Object.keys(keyMaps[title]);
|
|
|
- let obj={};
|
|
|
- keyArr.map((k)=>{
|
|
|
- obj[keyMaps[title][k]]=data[0][k]||"";
|
|
|
- });
|
|
|
- const obj1=Object.assign({},obj,data[0]);
|
|
|
- return [obj1];
|
|
|
-}*/
|
|
|
|
|
|
function initList(data){
|
|
|
- $("#flawTotalList").tmpl({data:data}).appendTo(".flaw-table");
|
|
|
+ //$("#flawTotalList").tmpl({title:"缺陷总览",data:data}).appendTo(".flaw-table");
|
|
|
+ formatSpecPage(data,"缺陷总览");
|
|
|
+ $(".flaw-table .page-item[code="+global_activeTab+"]").show();
|
|
|
$(".slide-up").off("click").on("click",function(){
|
|
|
const name = $(this).text();
|
|
|
$("tr[code='"+name+"']").slideToggle();
|
|
@@ -270,6 +239,22 @@ function editScore(info){
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
+//添加评分项
|
|
|
+function addScore(info){
|
|
|
+ const param={
|
|
|
+ "behospitalCode": global_id,
|
|
|
+ "optResultAlgVO": info
|
|
|
+ };
|
|
|
+ post(api.addScore,param).then(function(res){
|
|
|
+ if(res.data.code==='0'){
|
|
|
+ $("#delModal").hide();
|
|
|
+ updateFlaws(res.data.data);
|
|
|
+ $.alerModal({"message":"添加成功",type:"tip",time:'1000'});
|
|
|
+ }
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
//显示删除/修改弹窗
|
|
|
function showModal(flag,code,i){
|
|
|
$("#delModal .modal-body").html("");
|
|
@@ -311,6 +296,45 @@ function showModal(flag,code,i){
|
|
|
const obj = Object.assign({},info,{msg:$("#delModal #qcMsg").val(),score:$("#delModal #qcScore").val()});
|
|
|
editScore(obj);
|
|
|
});
|
|
|
+ }else if(flag==='2'){ //新增
|
|
|
+ $("#delModal .title").text("新增");
|
|
|
+ $("#delModal .confirm").text("保存");
|
|
|
+ $("#addFlawTmpl").tmpl().appendTo("#delModal .modal-body");
|
|
|
+ $("#flawDropTmpl").tmpl({info:code}).appendTo("#delModal .modal-body ul");
|
|
|
+ //分数输入验证
|
|
|
+ $("#addQcScore").on("input",function(){
|
|
|
+ const val=$(this).val();
|
|
|
+ if(/^[0-9]\d*$|^[0-9]\d*(.\d)?$/.test(val) && val <= 100){
|
|
|
+ $(".add-box .warning").hide();
|
|
|
+ }else{
|
|
|
+ $(".add-box .warning .red").text("支持≥0且≤100的数字输入,最多保留小数点后1位~");
|
|
|
+ $(".add-box .warning").show();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ //提示信息输入验证
|
|
|
+ $("#addQcMsg").on("input",function(){
|
|
|
+ const val=$(this).val();
|
|
|
+ if(val.trim()){
|
|
|
+ $(".add-box .warning").hide();
|
|
|
+ }else{
|
|
|
+ $(".add-box .warning .red").text("提示信息不能为空~");
|
|
|
+ $(".add-box .warning").show();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ $("#delModal .confirm").click(function(){
|
|
|
+ if(!$(".flaw-drop-input").attr("code")){
|
|
|
+ $(".add-box .warning .red").text("请选择质控条目~");
|
|
|
+ $(".add-box .warning").show();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const msg=$("#delModal #addQcMsg").val();
|
|
|
+ const score=$("#delModal #addQcScore").val();
|
|
|
+ if($(".add-box .warning").is(":visible")||!msg.trim()||!score){
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ const obj = Object.assign({},global_selectedFlaw,{msg,score});
|
|
|
+ addScore(obj);
|
|
|
+ });
|
|
|
}else{
|
|
|
$("#delModal .title").text("删除评分");
|
|
|
$("#delModal .confirm").text("确定");
|
|
@@ -328,6 +352,57 @@ function formatFlawKeys(data){
|
|
|
}
|
|
|
return obj;
|
|
|
}
|
|
|
+ //获取缺陷条目下拉列表
|
|
|
+ function getQcCasesEntry(name){
|
|
|
+ const id=$("#subMenu [code="+global_activeTab+"]").attr("mode");
|
|
|
+ const param = {
|
|
|
+ 'behospitalCode':global_id,
|
|
|
+ 'entryName':name,
|
|
|
+ 'modeId':id
|
|
|
+ };
|
|
|
+ post(api.findQcCasesEntry,param).then(function(res){
|
|
|
+ if(res.data.code==='0'){
|
|
|
+ const data = res.data.data;
|
|
|
+ if(name){
|
|
|
+ global_flaws=data;
|
|
|
+ $("#delModal .modal-body ul").html("");
|
|
|
+ $("#flawDropTmpl").tmpl({info:data}).appendTo("#delModal .modal-body ul");
|
|
|
+ addFlawEvent();
|
|
|
+ }else{
|
|
|
+ global_flaws=data;
|
|
|
+ showModal('2',data);
|
|
|
+ addFlawEvent();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+//增加条目弹窗元素事件
|
|
|
+ function addFlawEvent(){
|
|
|
+ $(".add-box .flaw-drop-input").off("click").on("click",function(){
|
|
|
+ $(".add-box .drop-box ul").show();
|
|
|
+ });
|
|
|
+ $(".add-box .flaw-drop-input").off("blur").on("blur",function(){
|
|
|
+ setTimeout(function(){
|
|
|
+ $(".add-box .drop-box ul").hide();
|
|
|
+ },300)
|
|
|
+
|
|
|
+ });
|
|
|
+ $(".add-box .flaw-drop-input").off("input").on("input",function(){
|
|
|
+ $(this).attr("code","");
|
|
|
+ getQcCasesEntry($(this).val().trim());
|
|
|
+ });
|
|
|
+ $(".add-box .drop-box li").off("click").on("click",function(){
|
|
|
+ const n = $(this).attr("idx");
|
|
|
+ const flaw=global_flaws[n];
|
|
|
+ const {score,msg,entryName,casesEntryId}=flaw;
|
|
|
+ global_selectedFlaw=flaw;
|
|
|
+ $(".flaw-drop-input").val(entryName).attr("code",casesEntryId);
|
|
|
+ $("#addQcMsg").val(msg);
|
|
|
+ $("#addQcScore").val(score);
|
|
|
+ $(".add-box .warning").hide();
|
|
|
+ $(".add-box .drop-box ul").hide();
|
|
|
+ });
|
|
|
+ }
|
|
|
|
|
|
//更新缺陷列表
|
|
|
function updateFlaws(info){
|
|
@@ -373,7 +448,8 @@ function formatFlawKeys(data){
|
|
|
}
|
|
|
|
|
|
//初始化模板
|
|
|
- function initModuleData(mid,n){
|
|
|
+ function initModuleData(mid,obj){
|
|
|
+ const n = obj.length;
|
|
|
const module=global_modules[mid].moduleDetail;
|
|
|
const key = global_modules[mid].modeName.replace(/[^\u4e00-\u9fa5|a-zA-Z0-9]+/g,'');
|
|
|
let hml = '<div class="content-item" code="'+key+'">' +
|
|
@@ -387,7 +463,7 @@ function formatFlawKeys(data){
|
|
|
const {tagType} = detal;
|
|
|
switch (tagType) {
|
|
|
case 1:
|
|
|
- hml = hml + simpleStructure(detal);
|
|
|
+ hml = hml + simpleStructure(detal,obj);
|
|
|
break;
|
|
|
case 4:
|
|
|
hml = hml + combineStructure(detal);
|
|
@@ -402,8 +478,23 @@ function formatFlawKeys(data){
|
|
|
}
|
|
|
|
|
|
//基础类型结构生成
|
|
|
- function simpleStructure(data){
|
|
|
+ function simpleStructure(data,obj){
|
|
|
const {name, val,monoLine,addLine,position,bold,retract,id} = data;
|
|
|
+ if(name==="手术记录表格-1"){
|
|
|
+ const value = val.replace("【","").replace("】","");
|
|
|
+ const diag = JSON.parse(obj[0][value]);
|
|
|
+ let thml=`<div class="cont" style="width: 100%;" id="anchor${id}">`;
|
|
|
+ thml+=$("#tableTmpl").tmpl({k:"手术信息",data:diag})[0].outerHTML+"</div>";
|
|
|
+ return thml;
|
|
|
+ }
|
|
|
+ if(name==="出院诊断表格-1"){
|
|
|
+ const value = val.replace("【","").replace("】","");
|
|
|
+ const diag = JSON.parse(obj[0][value]);
|
|
|
+
|
|
|
+ let thml=`<div class="cont" style="width: 100%;" id="anchor${id}">`;
|
|
|
+ thml+=$("#tableTmpl").tmpl({k:"出院诊断",data:diag})[0].outerHTML+"</div>";
|
|
|
+ return thml;
|
|
|
+ }
|
|
|
const posClass = position===1?'text-left':'';
|
|
|
const boldClass = bold===1?'text-bold':'';
|
|
|
const retractClass = retract===1?'text-indent':'';
|