From 1f58f7ffee3ca19959978b866c3ebf8c235da3cf Mon Sep 17 00:00:00 2001
From: lkk <364857242@qq.com>
Date: 星期三, 23 七月 2025 17:14:47 +0800
Subject: [PATCH] 1

---
 src/views/reservation/reservations/index.vue |   14 ++-
 src/views/hosp/project/index.vue             |  187 ++++++++++++++++++++++++++++++++++++----------
 2 files changed, 153 insertions(+), 48 deletions(-)

diff --git a/src/views/hosp/project/index.vue b/src/views/hosp/project/index.vue
index c97fa3f..f9a55f2 100644
--- a/src/views/hosp/project/index.vue
+++ b/src/views/hosp/project/index.vue
@@ -1,5 +1,5 @@
 <template>
-  <div class="app-container">
+  <div class="app-container" v-loading="pageLoading">
     <el-row :gutter="20">
       <el-col :span="4" :xs="24">
         <div class="head-container">
@@ -12,7 +12,7 @@
             style="margin-bottom: 15px"
           />
         </div>
-        <div class="scrollable-container">
+        <div class="scrollable-container" v-loading="loadings">
           <div class="content">
             <el-tree
               :data="deptOptions"
@@ -25,7 +25,6 @@
               highlight-current
               @node-click="handleNodeClick"
               :render-content="renderContent"
-              v-loading="loadings"
             />
           </div>
         </div>
@@ -87,6 +86,7 @@
               icon="el-icon-plus"
               size="mini"
               @click="handleUpdate1"
+              :loading="updateLoading"
               v-hasPermi="['hosp:project:add']"
               >淇敼</el-button
             >
@@ -128,6 +128,7 @@
         <el-table
           v-if="refreshTable"
           v-loading="loading"
+          style="width: 100%"
           :data="projectList"
           ref="tableRef"
           height="580"
@@ -308,6 +309,7 @@
       width="1200px"
       append-to-body
       :before-close="handleClose"
+      v-loading="loading"
       :close-on-click-modal="false"
     >
       <el-form
@@ -636,10 +638,18 @@
             ></el-option>
           </el-select>
         </el-form-item>
-         <el-form-item label="鏄惁澶栭��" prop="proDelivery">
-          <el-select v-model="form.proDelivery" placeholder="璇烽�夋嫨鏄惁澶栭��" style="width: 200px">
-            <el-option v-for="dict in wsTypesy" :key="dict.value" :label="dict.label"
-              :value="dict.value"></el-option>
+        <el-form-item label="鏄惁澶栭��" prop="proDelivery">
+          <el-select
+            v-model="form.proDelivery"
+            placeholder="璇烽�夋嫨鏄惁澶栭��"
+            style="width: 200px"
+          >
+            <el-option
+              v-for="dict in wsTypesy"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
           </el-select>
         </el-form-item>
       </el-form>
@@ -1012,6 +1022,7 @@
       deptOptions: [],
       dialogTableVisible: false,
       isPriceDisabled: false,
+      pageLoading: true,
       sfxmList: [],
       deptOptionstree: [],
       defaultPropstree: {
@@ -1028,15 +1039,15 @@
           label: "鍚�",
         },
       ],
-         wsTypesy: [
+      wsTypesy: [
         {
-          value:"1",
-          label:"鏄�"
+          value: "1",
+          label: "鏄�",
         },
         {
-          value:"0",
-          label:"鍚�"
-        }
+          value: "0",
+          label: "鍚�",
+        },
       ],
       xmmc: "",
       chargeId: [],
@@ -1046,6 +1057,8 @@
       ChangeList: [],
       loading: true,
       loadings: false,
+      addLoading: false,
+      updateLoading: false,
       key: "",
       ids: [],
       single: true,
@@ -1149,6 +1162,8 @@
         this.$nextTick(() => {
           const lastId = newVal[newVal.length - 1] || "532";
           const node = this.findNodeById(this.deptOptions, lastId);
+          this.queryParams.proId = lastId
+          this.getList()
           if (node) {
             this.$refs.tree1.setCurrentKey(lastId);
             const nodeElement = document.querySelector(
@@ -1177,16 +1192,18 @@
     },
   },
   created() {
-    this.getConsumables();
-    this.getDeptList();
+    // this.getConsumables();
+    // this.getDeptList();
     // this.getDeptTree().then(() => {
     //   this.precomputePinyin();
     // });
   },
   mounted() {
-    this.getDeptTree().then(() => {
-      this.precomputePinyin();
-    });
+    // this.getDeptTree().then(() => {
+    //   this.precomputePinyin();
+    // });
+    // this.precomputePinyin();
+    this.loadPage();
   },
   methods: {
     debounceFilter: debounce(function (val) {
@@ -1209,6 +1226,59 @@
       };
       traverse(this.deptOptions);
     },
+
+    async loadPage() {
+      this.pageLoading = true;
+      try {
+        await Promise.all([
+          this.getDeptTree(), // 鑾峰彇宸︿晶鏍�
+          //this.getList(),  鑾峰彇鍙充晶琛ㄦ牸
+        ]);
+      } catch (error) {
+        console.error("鍔犺浇椤甸潰鍑洪敊", error);
+      } finally {
+        this.pageLoading = false; // 涓や釜閮藉姞杞藉畬鍐嶅叧闂� loading
+      }
+    },
+
+    async getDeptTree() {
+      this.loadings = true;
+      try {
+        const response = await deptTree111();
+        this.deptOptions = response.data;
+
+        // 淇濊瘉 treeId 鏄暟缁勬牸寮�
+        this.treeId = [];
+
+        if (this.treeDate?.id) {
+          this.treeId.push(this.treeDate.id);
+          
+        } else {
+          this.treeId.push("532");
+        }
+      } catch (error) {
+        console.error("鍔犺浇閮ㄩ棬鏍戝け璐ワ細", error);
+      } finally {
+        this.loadings = false; // loading 鐘舵�佺粨鏉�
+      }
+    },
+
+    async getList() {
+      this.loading = true;
+      let data = {
+        proName: this.queryParams.proName,
+        checkType: this.queryParams.checkType,
+        deptId: this.queryParams.deptId,
+        proId: this.queryParams.proId,
+      };
+      try {
+        const res = await getAllChildListById(data); // 鏇挎崲鎴愪綘瀹為檯鐨勬帴鍙�
+        this.projectList = res.data.list;
+      } finally {
+        this.loading = false;
+      }
+    },
+
     filterNode(value, data) {
       if (!value) return true;
       const cached = this.pinyinCache.get(data.id);
@@ -1478,15 +1548,23 @@
       });
     },
     getDeptTree() {
-      return deptTree111().then((response) => {
-        this.deptOptions = response.data;
-        this.treeId = [];
-        if (this.treeDate.id) {
-          this.treeId.push(this.treeDate.id);
-        } else {
-          this.treeId.push("532");
-        }
-      });
+      this.loadings = true;
+      return deptTree111()
+        .then((response) => {
+          this.deptOptions = response.data;
+          this.treeId = [];
+          if (this.treeDate.id) {
+            this.treeId.push(this.treeDate.id);
+          } else {
+            this.treeId.push("532");
+          }
+        })
+        .catch((err) => {
+          console.error("鍔犺浇閮ㄩ棬鏍戝け璐ワ細", err);
+        })
+        .finally(() => {
+          this.loadings = false; // 鏃犺鎴愬姛鎴栧け璐ワ紝缁撴潫鍔犺浇
+        });
     },
     handleNodeClick(date) {
       this.treeDate = date;
@@ -1645,22 +1723,27 @@
       }
     },
     handleUpdate1() {
+      this.updateLoading = true;
       this.form = {};
       this.form = this.xiugaiList;
       this.form.proStatus = this.form.proStatus.toString();
       this.form.sfcyyc = this.form.sfcyyc.toString();
       this.proParent = true;
       this.isPriceDisabled = true;
-      getlist().then((response) => {
-        if (response.code == 200) {
-          this.loading = false;
-          this.projectOptions = [];
-          const project = { proId: 0, proName: "涓荤被鐩�", children: [] };
-          project.children = this.handleTree(response.data.list, "proId");
-          this.key = response.data.key;
-          this.projectOptions.push(project);
-        }
-      });
+      getlist()
+        .then((response) => {
+          if (response.code == 200) {
+            this.loading = false;
+            this.projectOptions = [];
+            const project = { proId: 0, proName: "涓荤被鐩�", children: [] };
+            project.children = this.handleTree(response.data.list, "proId");
+            this.key = response.data.key;
+            this.projectOptions.push(project);
+          }
+        })
+        .finally(() => {
+          this.updateLoading = false;
+        });
       this.open = true;
     },
     handleUpdate(row) {
@@ -1697,9 +1780,9 @@
               }[item.tjType] || item.tjType;
           });
         }
-        getlist().then((response) => {
+         getlist().then((response) => {
           if (response.code == 200) {
-            this.loading = false;
+            // this.loading = false;
             this.projectOptions = [];
             const project = { proId: 0, proName: "涓荤被鐩�", children: [] };
             project.children = this.handleTree(response.data.list, "proId");
@@ -1707,6 +1790,7 @@
             this.projectOptions.push(project);
           }
         });
+        // this.loadPage();
         this.open = true;
         this.title = "浣撴椤圭洰淇℃伅缁存姢";
       });
@@ -1726,6 +1810,7 @@
     },
     submitForm() {
       this.noclick = true;
+      this.pageLoading = true;
       this.$refs["form"].validate((valid) => {
         if (valid) {
           const isUpdate = this.form.proId != null;
@@ -1752,9 +1837,13 @@
           this.form.lisXmbm = this.form.lisXmbm;
           if (this.key === "N") {
             this.processSubmission(isUpdate, false);
+            this.open = false;
+            // this.pageLoading = false;
           } else if (this.key === "Y") {
             this.form.sfxmId = this.sfxmId;
             this.processSubmission(isUpdate, true);
+            this.open = false;
+            // this.pageLoading = false;
           }
         }
       });
@@ -1787,16 +1876,30 @@
         }
       }
     },
-    handleSuccess(isY) {
+    /* handleSuccess(isY) {
       this.cancel();
-      this.getList();
+      // this.getList();
       if (this.proParent || isY) {
         this.getDeptTree().then(() => {
           this.precomputePinyin();
         });
       }
       console.log(this.treeId);
-    },
+    }, */
+    async handleSuccess(isY) {
+  this.cancel();
+
+  if (this.proParent || isY) {
+    // 绛夊緟宸︿晶鏍戝姞杞藉拰鎷奸煶澶勭悊
+    await this.getDeptTree();
+    this.precomputePinyin();
+  }
+
+  // 绛夊緟鍙充晶琛ㄦ牸鍒锋柊
+  await this.getList();
+
+  this.pageLoading = false; // 鉁� 缁熶竴鍔犺浇鐘舵�佹帶鍒�
+},
     submit() {
       this.ChangeList.forEach((item) => {
         this.form.proPrice = item.ckdj;
diff --git a/src/views/reservation/reservations/index.vue b/src/views/reservation/reservations/index.vue
index 5864b46..b99dc91 100644
--- a/src/views/reservation/reservations/index.vue
+++ b/src/views/reservation/reservations/index.vue
@@ -1389,10 +1389,10 @@
                   style="width: 160px"
                 />
               </el-form-item>
-              <el-form-item label="鍗曚綅鍚嶇О" prop="company">
+              <el-form-item label="鍗曚綅鍚嶇О" prop="companyId">
                 <el-select
                   :remote-method="getRemoteData"
-                  v-model="formIn.company"
+                  v-model="formIn.companyId"
                   remote
                   default-first-option
                   allow-create
@@ -2121,7 +2121,7 @@
         cusSex: null,
         cusBrithday: null,
         cusAddr: null,
-        cusPhone: null,
+        phone: null,
         yykssj: "", // 棰勭害寮�濮嬫椂闂�
         yyjssj: "", // 棰勭害缁撴潫鏃堕棿
         cusPostcode: null,
@@ -2235,7 +2235,7 @@
         // cusAddr: [
         //   { required: true, message: "鐜板眳浣忓湴鍧�涓嶈兘涓虹┖", trigger: "blur" },
         // ],
-        cusPhone: [
+        phone: [
           { required: true, validator: checkPhoneNum, trigger: "blur" },
         ],
         reservationTime: [
@@ -2575,7 +2575,7 @@
         cusSex: null,
         cusBrithday: null,
         cusAddr: null,
-        cusPhone: null,
+        phone: null,
         yykssj: "", // 棰勭害寮�濮嬫椂闂�
         yyjssj: "", // 棰勭害缁撴潫鏃堕棿
         cusPostcode: null,
@@ -3169,7 +3169,7 @@
           name: this.formIn.name,
           nation: this.formIn.nation,
           pacId,
-          phoe: this.formIn.cusPhone,
+          phoe: this.formIn.phoe,
           reservationTime: this.formIn.reservationTime,
           sex: this.formIn.sex,
           timeRegion: this.formIn.timeRegion,
@@ -3210,8 +3210,10 @@
         };
       }
       tjReappoint(data).then((res) => {
+        console.log("鎺ュ彛鍝嶅簲", res);
         if (res.code === 200) {
           this.$modal.msgSuccess("棰勭害鎴愬姛");
+          Object.assign(this.formIn, data);
           this.getList();
           this.$tab.refreshPage();
           _this.drawer = false;

--
Gitblit v1.8.0