Browse Source

提交修改电子病历数据处理方式

xiezhiming 3 years ago
parent
commit
71a9ad00b9
1 changed files with 87 additions and 167 deletions
  1. 87 167
      src/components/cdssManage/plan/AddPlan.vue

+ 87 - 167
src/components/cdssManage/plan/AddPlan.vue

@@ -204,11 +204,15 @@
                       v-for="(item, index) in group.planDetails"
                       :key="index"
                     >
+					
+						
+					
+					
                       <div class="move_btn">
                         <div class="move_top">
                           <div
                             class="img_box ispointer"
-                            v-if="(index !== 0 && ismix(item.name))&&isCode(item)&&hvaeCode(item)"
+                            v-if="(index !== 0 && ismix(item.name))"
                             @mouseover="upActive = index"
                             @mouseout="upActive = null"
                             @click="
@@ -237,7 +241,7 @@
                             class="img_box ispointer"
                             v-if="
                               (index !== group.planDetails.length - 1 &&
-                              ismix(item.name))&&isCode(item)&&hvaeCode(item)
+                              ismix(item.name))
                             "
                             @mouseover="downActive = index"
                             @mouseout="downActive = null"
@@ -299,14 +303,16 @@
                               <el-option label="6" :value="6"></el-option>
                             </el-select>
                           </div>
-                        </div>
+						 
+						
                       </div>
 					 
-                      <div v-else style="width: 100%">
+					 </div>
+                      <div v-if='item.list' style="width: 100%">
                         <div
                           class="list_right list_right1"
-                          v-for="child in item.list"
-                          :key="child.id"
+                          v-for="(child,index) in item.list"
+                          :key="index"
                         >
                           <div class="right_l">
                             <div class="list_item_title">
@@ -342,6 +348,8 @@
                             </el-select>
                           </div>
                         </div>
+						
+						
                       </div>
                     </li>
                   </ul>
@@ -434,7 +442,9 @@ export default {
     onSubmit() {
       this.$refs.form.validate((valid) => {
         if (valid) {
-          let params = JSON.parse(JSON.stringify(this.form));
+		  let params =this.deepCopy(this.form)
+		  let paramsCopy=this.deepCopy(params)
+		  
           params.planDetailParent = params.planDetailSub;
           delete params.planDetailSub;
           let arr = [];
@@ -446,11 +456,20 @@ export default {
             }
           });
           params.planDetailParent[0].planDetails.splice(index, 1, ...arr);
+		  //改变param里面的可能诊断和已诊断的数据结构
+		  let objArr=[...this.updateDateParam(paramsCopy,"maydiagnose")]
+		  let objhasArr=[...this.updateDateParam(paramsCopy,"hasdiagnose")]
+		  let objArrOne=objArr[0];
+		  delete objArrOne.list
+		  let objhasArrOne=objhasArr[0];
+		   delete objhasArrOne.list
+		  objArr.splice(0,1)
+		  objhasArr.splice(0,1)
           params.planDetailParent = params.planDetailParent.map((item) => {
             let newArr = [];
             if (item.planDetails) {
               newArr = item.planDetails.map((child) => {
-                return {
+				  let obj={
                   code: child.code,
                   hospitalId: this.form.hospitalId,
                   name: child.name,
@@ -461,8 +480,29 @@ export default {
                   status: child.status,
                   value: child.value,
 				  id:child.id,
-				  parentId:child.parentId
+				  parentId:child.parentId,
+				  planDetailSub:null,
                 };
+				  if(child.code==='maydiagnose'){
+					  obj=JSON.parse(JSON.stringify(objArrOne));
+					  obj.hospitalId=this.form.hospitalId
+					  obj.planDetailSub=[];
+					  objArr.forEach(item=>{
+						  item.hospitalId=this.form.hospitalId
+						  obj.planDetailSub.push(item)
+					  })
+				  }else if(child.code==='hasdiagnose'){
+					  obj=obj=JSON.parse(JSON.stringify(objhasArrOne));
+					  obj.hospitalId=this.form.hospitalId
+					  obj.planDetailSub=[];
+					  objhasArr.forEach(item=>{
+						 item.hospitalId=this.form.hospitalId
+					  	 obj.planDetailSub.push(item)				  
+					  })
+				  }else{
+					obj= obj 
+				  }
+				  return obj
               });
             }
             return {
@@ -475,13 +515,6 @@ export default {
               status: item.status
             };
           });
-		  let arrCopy=params.planDetailParent[0].planDetailSub
-		  //将可能诊断和已有诊断的子集放回树里面
-		  if(this.isEdit){
-			  params.planDetailParent[0].planDetailSub=this.buildTree(arrCopy,'id','parentId',arrCopy[0].parentId,'save') 
-		  }else{
-			 params.planDetailParent[0].planDetailSub=this.buildTree(arrCopy,'id','parentId',arrCopy[0].parentId,'save') 
-		  }
           api.savePlanInfoDatas(params).then((res) => {
             if (res.data.code === "0") {
               this.$message({
@@ -528,59 +561,26 @@ export default {
        *      groupIndex:当前组的index
        *    }
        */
-	  
-	  
       const { name, orderNo, itemIndex, groupIndex,id } = obj;
-	  let arrCopy
-	  // 移动之前先合成树
-	  if(groupIndex===0){
-	  		arrCopy=this.form.planDetailSub[0].planDetails
-	  		arrCopy=this.buildTree(arrCopy,'id','parentId',arrCopy[0].parentId) 
-			arrCopy.forEach((item)=>{
-				if (item.name === "开单合理性") {
-				  item.id = item.id + "d";
-				}
-			})
-	  }
-	  this.form.planDetailSub[0].planDetails=arrCopy;
-	  console.log(arrCopy)
-	  //重新找itemIndex,通过id找itemIndex;
-	  let itemIndexs;
-	  this.form.planDetailSub[0].planDetails.forEach((item,index)=>{
-		  if(item.id==id){
-			  itemIndexs=index
-		  }
-	  })
-	  console.log(itemIndexs)
       // exIndex获取到要交换的Index值
-      let exIndex = type === "up" ? itemIndexs - 1 : itemIndexs + 1;
+      let exIndex = type === "up" ? itemIndex - 1 : itemIndex + 1;
       // exOrderNo获取到要交换的orderNo
       const exOrder = this.form.planDetailSub[groupIndex].planDetails[exIndex];
+	  
       // 赋值一份新的数据
       let newList = JSON.parse(
         JSON.stringify(this.form.planDetailSub[groupIndex].planDetails)
       );
       // 交换orderNo
       newList[exIndex].orderNo = orderNo;
-      newList[itemIndexs].orderNo = exOrder.orderNo;
-      if (newList[itemIndexs].list) {
-        newList[itemIndexs].list[0].orderNo = exOrder.orderNo;
+      newList[itemIndex].orderNo = exOrder.orderNo;
+      if (newList[itemIndex].list) {
+        newList[itemIndex].list[0].orderNo = exOrder.orderNo;
       }
       // 排序
       newList = this.groupSort(newList);
       // 更新数据
       this.form.planDetailSub[groupIndex].planDetails = newList;
-	  // 移动完成之后再展开
-	  if(groupIndex===0){
-	  	this.$nextTick(()=>{
-				// 改数组里面的可能诊断和已有诊断
-				this.form.planDetailSub[0].planDetails=this.tree2Array(this.form.planDetailSub[0],this.form.planDetailSub[0].parentId)
-				this.form.planDetailSub[0].planDetails.shift()
-				this.$forceUpdate()
-				
-	  	})	  
-	  }
-	  
 	  
     },
     // 获取医院下拉列表
@@ -622,10 +622,14 @@ export default {
         if (res.data.code === "0") {
           this.form.planDetailSub = res.data.data.planDetailDefault;
           this.fomatArr(res.data.data.planDetailDefault);
+		  //改变可能诊断和已诊断的数据
+		  this.$nextTick(()=>{
+			  this.form.planDetailSub[0].planDetails=[...this.updateDate(this.form.planDetailSub[0].planDetails,'maydiagnose')]
+			  this.form.planDetailSub[0].planDetails=[...this.updateDate(this.form.planDetailSub[0].planDetails,'hasdiagnose')]
+			  this.$forceUpdate()
+		  })
+		  
 		  
-		  // 将获取的数据改成改数组
-		  this.form.planDetailSub[0].planDetails=this.tree2Array(this.form.planDetailSub[0],this.form.planDetailSub[0].parentId)
-		  this.form.planDetailSub[0].planDetails.shift()
         }
       });
     },
@@ -661,12 +665,11 @@ export default {
           const defaultRes = await api.getDefaultPlans();
           if (defaultRes.data.code === "0") {
             this.mergeDefaultPlans(defaultRes.data.data.planDetailDefault);
-			
 			this.$nextTick(()=>{
 				// 改数组里面的可能诊断和已有诊断
-				this.form.planDetailSub[0].planDetails=this.tree2Array(this.form.planDetailSub[0],this.form.planDetailSub[0].parentId)
-				this.form.planDetailSub[0].planDetails.shift()
-				this.$forceUpdate()
+				this.form.planDetailSub[0].planDetails=this.updateDate(this.form.planDetailSub[0].planDetails,'maydiagnose')
+				this.form.planDetailSub[0].planDetails=this.updateDate(this.form.planDetailSub[0].planDetails,'hasdiagnose')
+				this.$forceUpdate()			  
 			})
           }
         }
@@ -716,71 +719,32 @@ export default {
       this.fomatArr(newData);
     },
 	
-	
-	
-	
-	// 将treeObj中的所有对象,放入一个数组中,要求某个对象在另一个对象的children时,其parent_id是对应的另一个对象的id
-	// 其原理实际上是数据结构中的广度优先遍历
-	tree2Array(treeObj, rootid) {
-	   let temp = [];  // 设置临时数组,用来存放队列
-	   let out = [];    // 设置输出数组,用来存放要输出的一维数组
-	   console.log(out)
-	   
-	   temp.push(treeObj);
-	   // 首先把根元素存放入out中
-	   let parentId = rootid;
-	   let obj = this.deepCopy(treeObj);
-	   obj.parentId = parentId;
-	   delete obj['planDetails'];
-	   out.push(obj)
-	   // 对树对象进行广度优先的遍历
-	   while(temp.length > 0) {
-	       let first = temp.shift();
-	       let planDetails = first.planDetails;
-	       if(planDetails && planDetails.length > 0) {
-	           parentId = first.id;
-	           let len = first.planDetails.length;
-	           for(let i=0;i<len;i++) {
-	               temp.push(planDetails[i]);
-	               let obj = this.deepCopy(planDetails[i]);
-	               obj.parentId = parentId;
-	               delete obj['planDetails'];
-	               out.push(obj)
-				   
-	           }
-	       } 
-	   }
-	   let arr=[];
-	   let arrs=[];
-	   let flag;
-	   let haveFlag;
-		 //可能诊断
-		 arr = this.someFor(arr,out,'maydiagnose',flag);
-		 //已诊断
-		 arrs = this.someFor(arrs,arr,'hasdiagnose',haveFlag);  
-	   return arrs
-	},
-	// 将可能诊断和已诊断的子集放在各自的下面
-	someFor(arr,oldArr,num,flag){
-		// 保存父级id
-		let numName;
-		oldArr.forEach((item,index)=>{
-			//判断父级的code,记住父级在数组的下标和id
-			if(item.code==num){
-				flag=index  
-				numName=item.id	   
+	// 修改请求数据中的可能诊断和已诊断的数据模式
+	updateDate(array,name){
+		array.forEach(item=>{
+			//可能诊断
+			if(item.code===name){
+				this.$set(item,'list',[])
+				if(Array.isArray(item.planDetails)){
+					item.planDetails.forEach((items)=>{
+						item.list.push(items)
+					})
+				}
+				let itemCopy=JSON.parse(JSON.stringify(item))
+				delete itemCopy.planDetails
+				item.list.unshift(itemCopy)
 			}
-			//子级下的父级id与父级的id对比
-			if(item.parentId==numName){
-				flag=flag+1
-				arr.splice(flag,0,item)
-				oldArr.splice(index,item)
-				
-			}else{
-				arr.push(item)
+		})
+		return array
+	},
+	updateDateParam(arrayCopy,name){
+		let dataList=[]
+		arrayCopy.planDetailSub[0].planDetails.forEach((item)=>{
+			if(item.code===name){
+				dataList=item.list
 			}
 		})
-		return arr
+		return dataList
 	},
 	// 深拷贝
 	deepCopy(obj){
@@ -801,50 +765,6 @@ export default {
 	      return object
 	    }
 	},
-	// 将一个数组,变成能够以树形展示的对象
-	buildTree(array,id,parent_id,num,save) {
-	    // 创建临时对象
-	    let temp = {};
-	    // 创建需要返回的树形对象
-	    let tree = {};
-	    // 先遍历数组,将数组的每一项添加到temp对象中
-	    for(let i in array) {
-			if(array[i].name==="开单合理性" && !save){
-				array[i].id.toString()
-				array[i].id=array[i].id.replace("d",""); 
-			}
-	        temp[array[i][id]] = array[i];
-			delete temp[array[i][id]].planDetailSub
-	    }
-	    // 遍历temp对象,将当前子节点与父节点建立连接
-	    for(let i in temp) {
-	        // 判断是否是根节点下的项
-	        if(temp[i][parent_id] !=num) {
-				if(num==1){
-					if(!temp[temp[i][parent_id]].planDetails) {
-					    temp[temp[i][parent_id]].planDetails = new Array();
-						temp[temp[i][parent_id]].planDetailSub = new Array();
-					}
-				}else{
-					if(!temp[temp[i][parent_id]].planDetailSub) {
-					    temp[temp[i][parent_id]].planDetails = new Array();
-						temp[temp[i][parent_id]].planDetailSub = new Array();
-					}
-				}
-				
-	             temp[temp[i][parent_id]].planDetails.push(temp[i]);
-				 temp[temp[i][parent_id]].planDetailSub.push(temp[i])
-				 
-	        } else {
-	            tree[temp[i][id]] = temp[i];
-	        }
-	    }
-	   let arr=[];
-	   Object.keys(tree).forEach((key)=>{
-		   arr.push(tree[key])
-	   })
-	    return arr;
-	},
 	//判断可能诊断下面的文字没有图片
 	isCode(item){