refactor(renovation): 重构页面数据处理逻辑

- 将页面数据处理逻辑提取到 applyPageData 方法中,简化 onOk 和 getTemplateItem 方法
- 增强数据解析和错误处理,确保在无数据或解析失败时正确初始化 modelForm
- 优化对 topAdvert 类型的处理逻辑,提高代码可读性和维护性
This commit is contained in:
田香琪
2026-08-25 10:46:44 +08:00
parent 3ca9aad9be
commit ffdae4a332
2 changed files with 66 additions and 56 deletions

View File

@@ -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);
}
});
},

View File

@@ -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);
}
});
},