diff --git a/packages/configurator/src/index.ts b/packages/configurator/src/index.ts index ecb870b85..414b78917 100644 --- a/packages/configurator/src/index.ts +++ b/packages/configurator/src/index.ts @@ -29,6 +29,7 @@ import SwitchConfigurator from './switch-configurator/SwitchConfigurator.vue' import TableColumnsConfigurator from './table-columns-configurator/TableColumnsConfigurator.vue' import TabsGroupConfigurator from './tabs-group-configurator/TabsGroupConfigurator.vue' import VariableConfigurator from './variable-configurator/VariableConfigurator.vue' +import TabBarConfigurator from './tab-bar-configurator/TabBarConfigurator.vue' import { I18nInput, MetaCodeEditor } from '@opentiny/tiny-engine-common' import './styles/vars.less' @@ -65,6 +66,7 @@ export { TableColumnsConfigurator, TabsGroupConfigurator, VariableConfigurator, + TabBarConfigurator, MetaCodeEditor, I18nInput as I18nConfigurator, MetaCodeEditor as CodeConfigurator, diff --git a/packages/configurator/src/router-select-configurator/RouterSelectConfigurator.vue b/packages/configurator/src/router-select-configurator/RouterSelectConfigurator.vue index cabe9a936..bfecb4385 100644 --- a/packages/configurator/src/router-select-configurator/RouterSelectConfigurator.vue +++ b/packages/configurator/src/router-select-configurator/RouterSelectConfigurator.vue @@ -50,10 +50,10 @@ onMounted(() => { }) const pageToTreeData = (page) => { - const { id, name, isPage, children } = page + const { id, name, route, isPage, children } = page // id 可能为数字,需要转换成字符串 - const result = { id: String(id), name, isPage, disabled: !isPage } + const result = { id: String(id), name, route, isPage, disabled: !isPage } if (Array.isArray(children)) { result.children = children.map((page) => pageToTreeData(page)) @@ -94,8 +94,22 @@ const treeFolderOp = computed(() => { return options }) +const treeToArray = (treeData) => { + let res = [] + for (const item of treeData) { + const { children, ...i } = item + if (children && children.length) { + res = res.concat(treeToArray(children)) + } + res.push(i) + } + return res +} + const handleChange = () => { - emit('update:modelValue', { name: state.selected }) + const treeData = treeFolderOp?.value?.data + const selectedData = treeToArray(treeData)?.find((item) => item.id === state.selected) || {} + emit('update:modelValue', { name: state.selected, path: selectedData.route }) } diff --git a/packages/configurator/src/styles/vars.less b/packages/configurator/src/styles/vars.less index bae819898..d628d7fe0 100644 --- a/packages/configurator/src/styles/vars.less +++ b/packages/configurator/src/styles/vars.less @@ -43,4 +43,7 @@ --te-configurator-container-bg-color: var(--te-common-bg-container); --te-configurator-container-border-color-divider: var(--te-common-border-bg-divider); + + --te-configurator-tab-bar-bg-color: var(--te-common-bg-container); + --te-configurator-tab-bar-border-color-divider: var(--te-common-border-bg-divider); } diff --git a/packages/configurator/src/tab-bar-configurator/TabBarConfigurator.vue b/packages/configurator/src/tab-bar-configurator/TabBarConfigurator.vue new file mode 100644 index 000000000..22795c4fd --- /dev/null +++ b/packages/configurator/src/tab-bar-configurator/TabBarConfigurator.vue @@ -0,0 +1,206 @@ + + +