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