From ffdae4a332eed60c34a248d352da4540330796d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=B0=E9=A6=99=E7=90=AA?= <624506849@qq.com> Date: Tue, 25 Aug 2026 10:46:44 +0800 Subject: [PATCH] =?UTF-8?q?refactor(renovation):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E6=95=B0=E6=8D=AE=E5=A4=84=E7=90=86=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将页面数据处理逻辑提取到 applyPageData 方法中,简化 onOk 和 getTemplateItem 方法 - 增强数据解析和错误处理,确保在无数据或解析失败时正确初始化 modelForm - 优化对 topAdvert 类型的处理逻辑,提高代码可读性和维护性 --- .../src/views/page-decoration/renovation.vue | 61 ++++++++++--------- seller/src/views/shop/renovation.vue | 61 ++++++++++--------- 2 files changed, 66 insertions(+), 56 deletions(-) diff --git a/manager/src/views/page-decoration/renovation.vue b/manager/src/views/page-decoration/renovation.vue index 638876c1..b7520c50 100644 --- a/manager/src/views/page-decoration/renovation.vue +++ b/manager/src/views/page-decoration/renovation.vue @@ -55,20 +55,7 @@ export default { okText: '使用', cancelText: '取消', onOk: () => { - let pageData = cache; - if (pageData) { - pageData = JSON.parse(pageData); - if (pageData.list[0].type === "topAdvert") { - this.$refs.modelForm.topAdvert = pageData.list[0]; - this.$refs.modelForm.navList = pageData.list[1]; - pageData.list.splice(0, 2); - this.modelForm = pageData; - } else { - this.modelForm = { list: [] }; - } - } else { - this.modelForm = { list: [] }; - } + this.applyPageData(cache); } }); } @@ -131,23 +118,41 @@ export default { resetTemplate() { this.getTemplateItem(this.$route.query.id); }, + applyPageData(raw) { + const empty = { list: [] }; + if (raw == null || raw === "") { + this.modelForm = empty; + return; + } + let pageData = raw; + if (typeof raw === "string") { + try { + pageData = JSON.parse(raw); + } catch { + this.modelForm = empty; + return; + } + } + const list = Array.isArray(pageData) + ? pageData + : Array.isArray(pageData?.list) + ? pageData.list + : []; + const form = Array.isArray(pageData) ? { list } : { ...pageData, list }; + if (list[0]?.type === "topAdvert") { + this.$refs.modelForm.topAdvert = list[0]; + if (list[1]) { + this.$refs.modelForm.navList = list[1]; + } + this.modelForm = { ...form, list: list.slice(2) }; + return; + } + this.modelForm = { ...form, list }; + }, getTemplateItem(id) { API_floor.getHomeData(id).then((res) => { if (res.success) { - let pageData = res.result.pageData; - if (pageData) { - pageData = JSON.parse(pageData); - if (pageData.list[0].type === "topAdvert") { - this.$refs.modelForm.topAdvert = pageData.list[0]; - this.$refs.modelForm.navList = pageData.list[1]; - pageData.list.splice(0, 2); - this.modelForm = pageData; - } else { - this.modelForm = { list: [] }; - } - } else { - this.modelForm = { list: [] }; - } + this.applyPageData(res.result?.pageData); } }); }, diff --git a/seller/src/views/shop/renovation.vue b/seller/src/views/shop/renovation.vue index d0866985..cc6dcc0c 100644 --- a/seller/src/views/shop/renovation.vue +++ b/seller/src/views/shop/renovation.vue @@ -55,20 +55,7 @@ export default { okText: '使用', cancelText: '取消', onOk: () => { - let pageData = cache; - if (pageData) { - pageData = JSON.parse(pageData); - if (pageData.list[0].type === "topAdvert") { - this.$refs.modelForm.topAdvert = pageData.list[0]; - this.$refs.modelForm.navList = pageData.list[1]; - pageData.list.splice(0, 2); - this.modelForm = pageData; - } else { - this.modelForm = { list: [] }; - } - } else { - this.modelForm = { list: [] }; - } + this.applyPageData(cache); } }); } @@ -130,23 +117,41 @@ export default { resetTemplate() { this.getTemplateItem(this.$route.query.id); }, + applyPageData(raw) { + const empty = { list: [] }; + if (raw == null || raw === "") { + this.modelForm = empty; + return; + } + let pageData = raw; + if (typeof raw === "string") { + try { + pageData = JSON.parse(raw); + } catch { + this.modelForm = empty; + return; + } + } + const list = Array.isArray(pageData) + ? pageData + : Array.isArray(pageData?.list) + ? pageData.list + : []; + const form = Array.isArray(pageData) ? { list } : { ...pageData, list }; + if (list[0]?.type === "topAdvert") { + this.$refs.modelForm.topAdvert = list[0]; + if (list[1]) { + this.$refs.modelForm.navList = list[1]; + } + this.modelForm = { ...form, list: list.slice(2) }; + return; + } + this.modelForm = { ...form, list }; + }, getTemplateItem(id) { API_floor.getHomeData(id).then((res) => { if (res.success) { - let pageData = res.result.pageData; - if (pageData) { - pageData = JSON.parse(pageData); - if (pageData.list[0].type === "topAdvert") { - this.$refs.modelForm.topAdvert = pageData.list[0]; - this.$refs.modelForm.navList = pageData.list[1]; - pageData.list.splice(0, 2); - this.modelForm = pageData; - } else { - this.modelForm = { list: [] }; - } - } else { - this.modelForm = { list: [] }; - } + this.applyPageData(res.result?.pageData); } }); },