Browse Source

236测试-修改中添加默认数据

reaper 4 years ago
parent
commit
dcafe87a3a
1 changed files with 64 additions and 21 deletions
  1. 64 21
      src/components/cdssManage/plan/AddPlan.vue

+ 64 - 21
src/components/cdssManage/plan/AddPlan.vue

@@ -87,11 +87,15 @@
           justify-content: space-between;
           .right_l {
             display: flex;
+            // width: calc(100% - 200px);
           }
           /deep/.el-input--small {
             width: 60px;
           }
         }
+        .list_right1{
+          width: calc(100% );
+        }
       }
     }
   }
@@ -170,18 +174,11 @@
               >
                 <div class="item_title">
                   <div class="title_left">
-                    <div
-                      class="handleIcon"
-                      @click="
-                        isOpenCloseItems === i
-                          ? (isOpenCloseItems = null)
-                          : (isOpenCloseItems = i)
-                      "
-                    >
+                    <div class="handleIcon" @click="listShow(i)">
                       <img
                         src="../../../images/multi.png"
                         :alt="group.name"
-                        :class="isOpenCloseItems === i ? 'open' : 'close'"
+                        :class="isOpenCloseItems[i] ? 'open' : 'close'"
                       />
                     </div>
                     <h4>{{ group.name }}</h4>
@@ -200,7 +197,7 @@
                   </div>
                 </div>
                 <transition name="plus-icon">
-                  <ul v-if="isOpenCloseItems === i">
+                  <ul v-show="isOpenCloseItems[i]">
                     <li
                       v-for="(item, index) in group.planDetails"
                       :key="item.id"
@@ -297,9 +294,9 @@
                           </div>
                         </div>
                       </div>
-                      <div v-else>
+                      <div v-else style="width:100%">
                         <div
-                          class="list_right"
+                          class="list_right list_right1"
                           v-for="child in item.list"
                           :key="child.id"
                         >
@@ -390,7 +387,7 @@ export default {
         planStatus: 1,
         planDetailSub: []
       },
-      isOpenCloseItems: 0, // 是否展开方案配置项
+      isOpenCloseItems: { 0: true }, // 是否展开方案配置项
       rules: {
         planName: [
           { required: true, message: "方案名称不能为空", trigger: "change" },
@@ -413,11 +410,16 @@ export default {
     };
   },
   methods: {
-    //
+    //展开收起控制
+    listShow(i) {
+      // TODO Vue监听不到对象中新添加的项,所以复制一份
+      let obj = { ...this.isOpenCloseItems };
+      obj[i] === true ? (obj[i] = false) : (obj[i] = true);
+      this.isOpenCloseItems = obj;
+    },
     onSubmit() {
       this.$refs.form.validate((valid) => {
         if (valid) {
-          console.log("this.form", this.form);
           let params = JSON.parse(JSON.stringify(this.form));
           params.planDetailParent = params.planDetailSub;
           delete params.planDetailSub;
@@ -524,7 +526,6 @@ export default {
       // 排序
       newList = this.groupSort(newList);
       // 更新数据
-      console.log(newList);
       this.form.planDetailSub[groupIndex].planDetails = newList;
     },
     // 获取医院下拉列表
@@ -581,12 +582,13 @@ export default {
         return arr;
       }
     },
-    getPlanInfoIds(params) {
-      api.getPlanInfoIds(params).then((res) => {
-        console.log("???", res);
+    // 编辑获取默认数据
+    async getPlanInfoIds(params) {
+      try {
+        const res = await api.getPlanInfoIds(params);
         if (res.data.code === "0") {
           const obj = res.data.data[0];
-          const { data } = this.$route.params; 
+          const { data } = this.$route.params;
           this.form = {
             hospitalId: obj.hospitalId,
             planName: obj.planName,
@@ -595,11 +597,52 @@ export default {
             planDetailSub: obj.sysSetInfo,
             id: data.id
           };
+
+          const defaultRes = await api.getDefaultPlans();
+          if (defaultRes.data.code === "0") {
+            // 合并默认数据
+            this.mergeDefaultPlans(defaultRes.data.data.planDetailDefault);
+          }
+        }
+      } catch (err) {
+        console.error("err", err);
+      }
+    },
+    // 合并默认数据
+    mergeDefaultPlans(data) {
+      data.forEach((item) => {
+        const oneIndex = this.form.planDetailSub.findIndex(
+          (ite) => ite.name === item.name
+        );
+        // 第一层数据不存在的话,直接加入进去
+        if (oneIndex === -1) {
+          item.status = 0;
+          this.form.planDetailSub.push(item);
+        } else {
+          // 第一层数据存在,验证第二层
+          item.planDetails.forEach((child) => {
+            const childIndex = this.form.planDetailSub[
+              oneIndex
+            ].planDetails.findIndex((it) => it.name === child.name);
+            // 第二层数据不存在,直接添加进去
+            if (childIndex === -1) {
+              child.status = 0;
+              this.form.planDetailSub[oneIndex].planDetails.push(child);
+            }
+          });
         }
-        this.fomatArr();
       });
+      // 排序
+      const newData = this.groupSort(this.form.planDetailSub);
+      newData.forEach((sun) => {
+        if (sun.planDetails) {
+          this.groupSort(sun.planDetails);
+        }
+      });
+      this.fomatArr();
     }
   },
+
   created() {
     // this.getHospitalInfo();
     // this.getDefaultPlans();