mirror of
https://github.com/chatopera/cosin.git
synced 2025-08-01 16:38:02 +08:00
add: nested route view
Signed-off-by: Kaifuny <superbiger.github@gmail.com>
This commit is contained in:
parent
eb873f0482
commit
ba7447fa32
@ -66,7 +66,11 @@ export enum ROUTE_NAME {
|
|||||||
SYSTEM_INFO_INDEX = 'SYSTEM_INFO_INDEX', // 系统信息
|
SYSTEM_INFO_INDEX = 'SYSTEM_INFO_INDEX', // 系统信息
|
||||||
SYSTEM_SOURCE_INDEX = 'SYSTEM_SOURCE_INDEX', // 源数据
|
SYSTEM_SOURCE_INDEX = 'SYSTEM_SOURCE_INDEX', // 源数据
|
||||||
SYSTEM_NOTIFICATION_INDEX = 'SYSTEM_NOTIFICATION_INDEX', // 通知
|
SYSTEM_NOTIFICATION_INDEX = 'SYSTEM_NOTIFICATION_INDEX', // 通知
|
||||||
SYSTEM_SOCIAL_INDEX = 'SYSTEM_SOCIAL_INDEX', // 三方登录
|
SYSTEM_AUTHENTICATOR_INDEX = 'SYSTEM_AUTHENTICATOR_INDEX', // 三方登录
|
||||||
|
SYSTEM_AUTHENTICATOR_USERS_INDEX = 'SYSTEM_AUTHENTICATOR_USERS_INDEX', // 三方登录 - 用户管理
|
||||||
|
SYSTEM_AUTHENTICATOR_METHODS_INDEX = 'SYSTEM_AUTHENTICATOR_METHODS_INDEX', // 三方登录 - 登录方式
|
||||||
|
SYSTEM_AUTHENTICATOR_TEMPLATE_INDEX = 'SYSTEM_AUTHENTICATOR_TEMPLATE_INDEX', // 三方登录 - 模板管理
|
||||||
|
SYSTEM_AUTHENTICATOR_SETTING_INDEX = 'SYSTEM_AUTHENTICATOR_SETTING_INDEX', // 三方登录 - 设置
|
||||||
SYSTEM_OSS_INDEX = 'SYSTEM_OSS_INDEX', // OSS
|
SYSTEM_OSS_INDEX = 'SYSTEM_OSS_INDEX', // OSS
|
||||||
SYSTEM_CDN_INDEX = 'SYSTEM_CDN_INDEX', // CDN
|
SYSTEM_CDN_INDEX = 'SYSTEM_CDN_INDEX', // CDN
|
||||||
SYSTEM_GPT_INDEX = 'SYSTEM_GPT_INDEX', // GPT
|
SYSTEM_GPT_INDEX = 'SYSTEM_GPT_INDEX', // GPT
|
||||||
|
@ -8,7 +8,7 @@ import { routesToMenus } from '@cskefu/shared-utils'
|
|||||||
|
|
||||||
import routes from '../routes'
|
import routes from '../routes'
|
||||||
|
|
||||||
const menuOptions: MenuOption[] = routesToMenus(routes)
|
const menuOptions: MenuOption[] = routesToMenus(routes, false, false)
|
||||||
const collapsed = ref<boolean>(false)
|
const collapsed = ref<boolean>(false)
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
|
@ -20,7 +20,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
path: '/system',
|
path: '/system',
|
||||||
name: ROUTE_NAME.SYSTEM_INDEX,
|
name: ROUTE_NAME.SYSTEM_INDEX,
|
||||||
component: Layout,
|
component: Layout,
|
||||||
redirect: '/system/index',
|
redirect: { name: ROUTE_NAME.SYSTEM_INFO_INDEX },
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
path: 'index',
|
path: 'index',
|
||||||
@ -33,14 +33,47 @@ const routes: RouteRecordRaw[] = [
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'social',
|
path: 'authenticator',
|
||||||
name: ROUTE_NAME.SYSTEM_SOCIAL_INDEX,
|
name: ROUTE_NAME.SYSTEM_AUTHENTICATOR_INDEX,
|
||||||
component: () => import('../views/AuthenticatorView.vue'),
|
component: () => import('../views/AuthenticatorView.vue'),
|
||||||
meta: {
|
meta: {
|
||||||
title: '认证登录',
|
title: '认证登录',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: IdCardOutline,
|
icon: IdCardOutline,
|
||||||
},
|
},
|
||||||
|
redirect: { name: ROUTE_NAME.SYSTEM_AUTHENTICATOR_USERS_INDEX },
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'users',
|
||||||
|
name: ROUTE_NAME.SYSTEM_AUTHENTICATOR_USERS_INDEX,
|
||||||
|
component: () =>
|
||||||
|
import('../views/pages/authenticator/AuthenticatorUsersView.vue'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'methods',
|
||||||
|
name: ROUTE_NAME.SYSTEM_AUTHENTICATOR_METHODS_INDEX,
|
||||||
|
component: () =>
|
||||||
|
import(
|
||||||
|
'../views/pages/authenticator/AuthenticatorMethodsView.vue'
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'template',
|
||||||
|
name: ROUTE_NAME.SYSTEM_AUTHENTICATOR_TEMPLATE_INDEX,
|
||||||
|
component: () =>
|
||||||
|
import(
|
||||||
|
'../views/pages/authenticator/AuthenticatorTemplateView.vue'
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'setting',
|
||||||
|
name: ROUTE_NAME.SYSTEM_AUTHENTICATOR_SETTING_INDEX,
|
||||||
|
component: () =>
|
||||||
|
import(
|
||||||
|
'../views/pages/authenticator/AuthenticatorSettingView.vue'
|
||||||
|
),
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'oss',
|
path: 'oss',
|
||||||
|
@ -1,13 +1,30 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
import { ROUTE_NAME } from '@cskefu/models'
|
||||||
import { NTabs, NTab } from 'naive-ui'
|
import { NTabs, NTab } from 'naive-ui'
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<div class="p-4">
|
<div class="p-4">
|
||||||
<n-tabs type="line" :bar-width="32">
|
<n-tabs
|
||||||
<n-tab name="users"> 用户 </n-tab>
|
type="line"
|
||||||
<n-tab name="social"> 登录提供方 </n-tab>
|
:bar-width="32"
|
||||||
<n-tab name="template"> 模板 </n-tab>
|
:on-update:value="
|
||||||
<n-tab name="setting"> 设置 </n-tab>
|
(value) => {
|
||||||
|
$router.push({
|
||||||
|
name: value as ROUTE_NAME,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<n-tab :name="ROUTE_NAME.SYSTEM_AUTHENTICATOR_USERS_INDEX"> 用户 </n-tab>
|
||||||
|
<n-tab :name="ROUTE_NAME.SYSTEM_AUTHENTICATOR_METHODS_INDEX">
|
||||||
|
登录提供方
|
||||||
|
</n-tab>
|
||||||
|
<n-tab :name="ROUTE_NAME.SYSTEM_AUTHENTICATOR_TEMPLATE_INDEX">
|
||||||
|
模板
|
||||||
|
</n-tab>
|
||||||
|
<n-tab :name="ROUTE_NAME.SYSTEM_AUTHENTICATOR_SETTING_INDEX">
|
||||||
|
设置
|
||||||
|
</n-tab>
|
||||||
</n-tabs>
|
</n-tabs>
|
||||||
<div>
|
<div>
|
||||||
<router-view></router-view>
|
<router-view></router-view>
|
||||||
|
@ -0,0 +1,3 @@
|
|||||||
|
<template>
|
||||||
|
<div>methods</div>
|
||||||
|
</template>
|
@ -0,0 +1,3 @@
|
|||||||
|
<template>
|
||||||
|
<div>setting</div>
|
||||||
|
</template>
|
@ -0,0 +1,3 @@
|
|||||||
|
<template>
|
||||||
|
<div>template</div>
|
||||||
|
</template>
|
@ -0,0 +1,3 @@
|
|||||||
|
<template>
|
||||||
|
<div>users</div>
|
||||||
|
</template>
|
@ -10,13 +10,14 @@ function renderIcon(icon?: Component) {
|
|||||||
|
|
||||||
export function routesToMenus(
|
export function routesToMenus(
|
||||||
routes: RouteRecordRaw[],
|
routes: RouteRecordRaw[],
|
||||||
isNotRoot?: boolean
|
isNotRoot?: boolean,
|
||||||
|
deep?: boolean
|
||||||
): MenuOption[] {
|
): MenuOption[] {
|
||||||
const result: MenuOption[] = []
|
const result: MenuOption[] = []
|
||||||
const array = isNotRoot ? routes : routes[0].children
|
const array = isNotRoot ? routes : routes[0].children
|
||||||
if (array) {
|
if (array) {
|
||||||
array.forEach((route: RouteRecordRaw) => {
|
array.forEach((route: RouteRecordRaw) => {
|
||||||
if (route.children) {
|
if (route.children && deep) {
|
||||||
result.push({
|
result.push({
|
||||||
label: h(
|
label: h(
|
||||||
RouterLink,
|
RouterLink,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user