From b0286bcc08c22b7c06174b6bc20f7e5530fe1ae5 Mon Sep 17 00:00:00 2001 From: lb Date: Fri, 24 Feb 2023 14:13:47 +0800 Subject: [PATCH] =?UTF-8?q?update=20DialogWithMenu=E5=9C=A8=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E6=97=B6=E7=9A=84=E5=88=9D=E5=A7=8B=E5=8C=96=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E2=80=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/DialogWithMenu.vue | 119 +++++++++++++------- src/views/modules/pms/testingStep/config.js | 3 +- 2 files changed, 81 insertions(+), 41 deletions(-) diff --git a/src/components/DialogWithMenu.vue b/src/components/DialogWithMenu.vue index 2d26966..f75998e 100644 --- a/src/components/DialogWithMenu.vue +++ b/src/components/DialogWithMenu.vue @@ -422,6 +422,41 @@ export default { ); }, + updateOptions() { + return new Promise((resolve, reject) => { + if (!this.dataForm?.id) resolve(null); + + if (this.watingToRefreshQueue.length) { + this.watingToRefreshQueue.forEach((opt) => { + console.log("[刷新数据, ", opt, "]"); + if ("fetchData" in opt) { + opt.fetchData(this.dataForm.id).then(({ data: res }) => { + if (res.code === 0) { + this.$set( + opt, + "options", + "list" in res.data + ? res.data.list.map((i) => ({ label: i.name, value: i.id })) + : res.data.map((i) => ({ label: i.name, value: i.id })) + ); + + resolve({ done: true }); + } else { + this.$message({ + message: `${res.code}: ${res.msg}`, + type: "error", + duration: 1500, + }); + + resolve({ done: false }); + } + }); + } + }); + } else resolve(null); + }); + }, + /** init **/ init(id, detailMode, menu) { // this.dialogVisible = true; @@ -440,27 +475,31 @@ export default { // 提前获取属性列表 this.getSubList(); // 获取详情 - this.$http.get(this.urls.base + `/${this.dataForm.id}`).then(({ data: res }) => { - if (res && res.code === 0) { - const dataFormKeys = Object.keys(this.dataForm); - this.dataForm = __pick(res.data, dataFormKeys); - if ("files" in res.data) { - console.log("[DialogWithMenu] fileList===>", res.data.files, this.fileList); - /** 返回的文件列表 */ - this.fileList = res.data.files - ? res.data.files.map((file) => ({ - id: file.id, - name: file.fileUrl.split("/").pop(), - url: file.fileUrl, - typeCode: file.typeCode, - })) - : []; - } - } - this.loadingStatus = false; - // 是否要跳转到附件页 - if (menu && menu.key) { - this.activeMenu = this.configs.menu.find((item) => item.key === menu.key)?.name; + this.updateOptions().then((result) => { + if (result === null || (typeof result === "object" && result.done)) { + this.$http.get(this.urls.base + `/${this.dataForm.id}`).then(({ data: res }) => { + if (res && res.code === 0) { + const dataFormKeys = Object.keys(this.dataForm); + this.dataForm = __pick(res.data, dataFormKeys); + if ("files" in res.data) { + console.log("[DialogWithMenu] fileList===>", res.data.files, this.fileList); + /** 返回的文件列表 */ + this.fileList = res.data.files + ? res.data.files.map((file) => ({ + id: file.id, + name: file.fileUrl.split("/").pop(), + url: file.fileUrl, + typeCode: file.typeCode, + })) + : []; + } + } + this.loadingStatus = false; + // 是否要跳转到附件页 + if (menu && menu.key) { + this.activeMenu = this.configs.menu.find((item) => item.key === menu.key)?.name; + } + }); } }); } else { @@ -682,25 +721,25 @@ export default { this.loadingStatus = false; // 如果 watingToRefreshQueue 队列里有数据 - if (this.watingToRefreshQueue.length) { - // 刷新队列 - this.watingToRefreshQueue.forEach((opt) => { - console.log('[刷新数据, ', opt, ']') - if ("fetchData" in opt) { - opt.fetchData().then(({ data: res }) => { - if (res.code === 0) { - this.$set( - opt, - "options", - "list" in res.data - ? res.data.list.map((i) => ({ label: i.name, value: i.id })) - : res.data.map((i) => ({ label: i.name, value: i.id })) - ); - } - }); - } - }); - } + // if (this.watingToRefreshQueue.length) { + // // 刷新队列 + // this.watingToRefreshQueue.forEach((opt) => { + // console.log("[刷新数据, ", opt, "]"); + // if ("fetchData" in opt) { + // opt.fetchData().then(({ data: res }) => { + // if (res.code === 0) { + // this.$set( + // opt, + // "options", + // "list" in res.data + // ? res.data.list.map((i) => ({ label: i.name, value: i.id })) + // : res.data.map((i) => ({ label: i.name, value: i.id })) + // ); + // } + // }); + // } + // }); + // } this.handleClose(); } else { diff --git a/src/views/modules/pms/testingStep/config.js b/src/views/modules/pms/testingStep/config.js index 89afd03..a9366fd 100644 --- a/src/views/modules/pms/testingStep/config.js +++ b/src/views/modules/pms/testingStep/config.js @@ -101,7 +101,8 @@ export default function () { options: [], refreshOptionsAfterConfirm: true, elparams: { clearable: true, filterable: true, placeholder: "请选择砖型" }, - fetchData: () => this.$http.get("/pms/shape/listUnR", { params: { wsId: 2, externalCode: '', key: '' } }), + // 下面参数的 techId 是为 /pms/xxx/listUnR 接口定制的,默认为 -1,新增时使用,编辑时传对应的 工艺id + fetchData: (techId = -1) => this.$http.get("/pms/shape/listUnR", { params: { wsId: 4, externalCode: '', key: '', techId } }), }, ], // {