|
@@ -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){
|
|
|
|