diff --git a/packages/controller/src/usePage.js b/packages/controller/src/usePage.js index 8af5fc0e4..7157c43f7 100644 --- a/packages/controller/src/usePage.js +++ b/packages/controller/src/usePage.js @@ -48,7 +48,9 @@ const pageSettingState = reactive({ isNew: false, ROOT_ID: '0', // 根节点ID updateTreeData: null, - treeDataMapping: {} + treeDataMapping: {}, + template_content: null, + templates: [] }) const isTemporaryPage = reactive({ diff --git a/packages/controller/src/useTemplate.js b/packages/controller/src/useTemplate.js index e0a332c84..88b647a79 100644 --- a/packages/controller/src/useTemplate.js +++ b/packages/controller/src/useTemplate.js @@ -12,6 +12,7 @@ import { reactive } from 'vue' import { extend, isEqual } from '@opentiny/vue-renderless/common/object' +import { useHttp } from '@opentiny/tiny-engine-http' const DEFAULT_TEMPLATE = { app: '', @@ -128,6 +129,37 @@ const resetTemplateData = () => { const isChangeTemplateData = () => !isEqual(templateSettingState.currentTemplateData, templateSettingState.currentTemplateDataCopy) +const http = useHttp() + +const formatTreeData = (data) => { + const map = {} + const tree = [] + + data.forEach((item) => { + map[item.id] = { ...item, children: [] } + }) + + data.forEach((item) => { + if (item.parentId) { + const parent = map[item.parentId] + if (parent) { + parent.children.push(map[item.id]) + } + } else { + tree.push(map[item.id]) + } + }) + templateSettingState.treeDataMapping = map + + return tree +} + +const refreshTemplateList = async (appId, data) => { + const templateData = data ? data : await http.get(`/app-center/api/templates/list/${appId}`) + templateSettingState.templates = formatTreeData(templateData) + return templateSettingState.templates +} + export default () => { return { DEFAULT_TEMPLATE, @@ -138,6 +170,7 @@ export default () => { getTemplateContent, resetTemplateData, initCurrentTemplateData, - isChangeTemplateData + isChangeTemplateData, + refreshTemplateList } } diff --git a/packages/plugins/page/src/Main.vue b/packages/plugins/page/src/Main.vue index b9cf21ddb..83a974201 100644 --- a/packages/plugins/page/src/Main.vue +++ b/packages/plugins/page/src/Main.vue @@ -35,7 +35,7 @@