From 3d660cb8f4476fb2678f8c9ad7471cd4a4d2fc94 Mon Sep 17 00:00:00 2001 From: youbo <1370246117@qq.com> Date: Mon, 30 Sep 2024 02:43:29 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(plugins):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/plugins/template/readme.md | 28 +++------------------------- 1 file changed, 3 insertions(+), 25 deletions(-) diff --git a/packages/plugins/template/readme.md b/packages/plugins/template/readme.md index 811b5478e..b3879fe25 100644 --- a/packages/plugins/template/readme.md +++ b/packages/plugins/template/readme.md @@ -1,25 +1,3 @@ -## UI思路 - -1. 修改顶部新增页面的UI,一个入口 - - 修改标题 - - 修改内容 - -2. 修改内容区域(树结构区域) - - 去掉两个顶层类别 - - 每一项hover时右侧出现操作图标 - 1. 为模板类别时 - - 新增(设置页提供单选框选择) - - 类别 - - 模板 - - 编辑 - - 删除 - - 生成页面 - - 提供有复选框的tree结构 - 2. 为模板实例时 - - 编辑 - - 删除 - - 生成页面 - - -## mockserver 思路 -- 参考页面管理的接口,让gpt实现 +## TODO +- 优化 +- 完善文档 \ No newline at end of file From a06b5314c75270a032104f70abb20125bb80c892 Mon Sep 17 00:00:00 2001 From: youbo <1370246117@qq.com> Date: Fri, 25 Oct 2024 00:43:08 +0800 Subject: [PATCH 2/2] =?UTF-8?q?feat(controller,page,template):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E9=A1=B5=E9=9D=A2=E6=94=AF=E6=8C=81=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/controller/src/usePage.js | 4 +- packages/controller/src/useTemplate.js | 35 ++++++++- packages/plugins/page/src/Main.vue | 7 +- packages/plugins/page/src/PageGeneral.vue | 43 ++++++++++- packages/plugins/page/src/PageSetting.vue | 9 +++ .../plugins/template/src/TemplateTree.vue | 75 +++++++++---------- 6 files changed, 127 insertions(+), 46 deletions(-) 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 @@