mirror of
https://github.com/chatopera/cosin.git
synced 2025-08-01 16:38:02 +08:00
add: route icon
Signed-off-by: Kaifuny <superbiger.github@gmail.com>
This commit is contained in:
parent
bdd8831e84
commit
a819c5f7d2
@ -1,9 +1,9 @@
|
|||||||
import 'vue-router'
|
import 'vue-router'
|
||||||
|
import { Component } from 'vue'
|
||||||
declare module 'vue-router' {
|
declare module 'vue-router' {
|
||||||
interface RouteMeta {
|
interface RouteMeta {
|
||||||
// 是可选的
|
// 是可选的
|
||||||
icon?: string,
|
icon?: Component,
|
||||||
comingSoon?: boolean
|
comingSoon?: boolean
|
||||||
|
|
||||||
// 每个路由都必须声明
|
// 每个路由都必须声明
|
||||||
|
@ -2,6 +2,11 @@ import { RouteRecordRaw } from 'vue-router'
|
|||||||
import { ROUTE_NAME } from '@cskefu/models'
|
import { ROUTE_NAME } from '@cskefu/models'
|
||||||
|
|
||||||
import Layout from '../layouts/MenusLayout.vue'
|
import Layout from '../layouts/MenusLayout.vue'
|
||||||
|
import {
|
||||||
|
BusinessOutline,
|
||||||
|
GitNetworkOutline,
|
||||||
|
LibraryOutline,
|
||||||
|
} from '@vicons/ionicons5'
|
||||||
|
|
||||||
const routes: RouteRecordRaw[] = [
|
const routes: RouteRecordRaw[] = [
|
||||||
{
|
{
|
||||||
@ -17,7 +22,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '企业服务',
|
title: '企业服务',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: BusinessOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -27,7 +32,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '渠道接入',
|
title: '渠道接入',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: GitNetworkOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -37,7 +42,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '知识库',
|
title: '知识库',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: LibraryOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -2,6 +2,16 @@ import { RouteRecordRaw } from 'vue-router'
|
|||||||
import { ROUTE_NAME } from '@cskefu/models'
|
import { ROUTE_NAME } from '@cskefu/models'
|
||||||
|
|
||||||
import Layout from '../layouts/MenusLayout.vue'
|
import Layout from '../layouts/MenusLayout.vue'
|
||||||
|
import {
|
||||||
|
AlbumsOutline,
|
||||||
|
AnalyticsOutline,
|
||||||
|
ChatbubblesOutline,
|
||||||
|
DocumentAttachOutline,
|
||||||
|
BarChartOutline,
|
||||||
|
SettingsOutline,
|
||||||
|
HardwareChip,
|
||||||
|
GridOutline,
|
||||||
|
} from '@vicons/ionicons5'
|
||||||
|
|
||||||
const routes: RouteRecordRaw[] = [
|
const routes: RouteRecordRaw[] = [
|
||||||
{
|
{
|
||||||
@ -17,7 +27,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '坐席看板',
|
title: '坐席看板',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: AnalyticsOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -27,7 +37,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '会话管理',
|
title: '会话管理',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: ChatbubblesOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -37,7 +47,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '留言管理',
|
title: '留言管理',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: DocumentAttachOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -47,7 +57,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '坐席管理',
|
title: '坐席管理',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: AlbumsOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -55,6 +65,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
name: ROUTE_NAME.SEATS_ROBOT_INDEX,
|
name: ROUTE_NAME.SEATS_ROBOT_INDEX,
|
||||||
meta: {
|
meta: {
|
||||||
title: '机器人管理',
|
title: '机器人管理',
|
||||||
|
icon: HardwareChip,
|
||||||
},
|
},
|
||||||
children: [
|
children: [
|
||||||
{
|
{
|
||||||
@ -64,7 +75,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '数据统计',
|
title: '数据统计',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: BarChartOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -74,7 +85,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '机器人管理',
|
title: '机器人管理',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: GridOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -84,7 +95,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '机器人设置',
|
title: '机器人设置',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: SettingsOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -2,6 +2,18 @@ import { RouteRecordRaw } from 'vue-router'
|
|||||||
import { ROUTE_NAME } from '@cskefu/models'
|
import { ROUTE_NAME } from '@cskefu/models'
|
||||||
|
|
||||||
import Layout from '../layouts/MenusLayout.vue'
|
import Layout from '../layouts/MenusLayout.vue'
|
||||||
|
import {
|
||||||
|
BeakerOutline,
|
||||||
|
CallOutline,
|
||||||
|
ChatboxEllipsesOutline,
|
||||||
|
ClipboardOutline,
|
||||||
|
FootballOutline,
|
||||||
|
IdCardOutline,
|
||||||
|
InfiniteSharp,
|
||||||
|
LayersOutline,
|
||||||
|
NotificationsOutline,
|
||||||
|
PlanetOutline,
|
||||||
|
} from '@vicons/ionicons5'
|
||||||
|
|
||||||
const routes: RouteRecordRaw[] = [
|
const routes: RouteRecordRaw[] = [
|
||||||
{
|
{
|
||||||
@ -17,7 +29,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '系统信息',
|
title: '系统信息',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: InfiniteSharp,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -27,7 +39,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '认证登录',
|
title: '认证登录',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: IdCardOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -37,7 +49,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '对象存储设置',
|
title: '对象存储设置',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: LayersOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -47,7 +59,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: 'CDN 设置',
|
title: 'CDN 设置',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: PlanetOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -57,7 +69,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '短信平台设置',
|
title: '短信平台设置',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: ChatboxEllipsesOutline,
|
||||||
comingSoon: true,
|
comingSoon: true,
|
||||||
disabled: true,
|
disabled: true,
|
||||||
},
|
},
|
||||||
@ -69,7 +81,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '呼叫平台设置',
|
title: '呼叫平台设置',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: CallOutline,
|
||||||
comingSoon: true,
|
comingSoon: true,
|
||||||
disabled: true,
|
disabled: true,
|
||||||
},
|
},
|
||||||
@ -81,7 +93,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: 'GPT 设置',
|
title: 'GPT 设置',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: BeakerOutline,
|
||||||
comingSoon: true,
|
comingSoon: true,
|
||||||
disabled: true,
|
disabled: true,
|
||||||
},
|
},
|
||||||
@ -93,7 +105,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '元数据',
|
title: '元数据',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: FootballOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -103,7 +115,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '通知设置',
|
title: '通知设置',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: NotificationsOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -113,7 +125,7 @@ const routes: RouteRecordRaw[] = [
|
|||||||
meta: {
|
meta: {
|
||||||
title: '日志查看',
|
title: '日志查看',
|
||||||
requiresAuth: true,
|
requiresAuth: true,
|
||||||
icon: 'el-icon-setting',
|
icon: ClipboardOutline,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -1,6 +1,13 @@
|
|||||||
import { MenuOption } from 'naive-ui'
|
import { MenuOption, NIcon } from 'naive-ui'
|
||||||
|
import { Component, h } from 'vue'
|
||||||
import { RouteRecordRaw } from 'vue-router'
|
import { RouteRecordRaw } from 'vue-router'
|
||||||
|
|
||||||
|
function renderIcon(icon?: Component) {
|
||||||
|
if (icon) {
|
||||||
|
return () => h(NIcon, null, { default: () => h(icon) })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function routesToMenus(
|
export function routesToMenus(
|
||||||
routes: RouteRecordRaw[],
|
routes: RouteRecordRaw[],
|
||||||
isNotRoot?: boolean
|
isNotRoot?: boolean
|
||||||
@ -13,12 +20,14 @@ export function routesToMenus(
|
|||||||
result.push({
|
result.push({
|
||||||
label: route.meta?.title,
|
label: route.meta?.title,
|
||||||
key: route.path,
|
key: route.path,
|
||||||
|
icon: renderIcon(route.meta?.icon),
|
||||||
children: routesToMenus(route.children, true),
|
children: routesToMenus(route.children, true),
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
result.push({
|
result.push({
|
||||||
label: route.meta?.title,
|
label: route.meta?.title,
|
||||||
key: route.name as string,
|
key: route.name as string,
|
||||||
|
icon: renderIcon(route.meta?.icon),
|
||||||
disabled: route.meta?.disabled as boolean,
|
disabled: route.meta?.disabled as boolean,
|
||||||
comingSoon: route.meta?.comingSoon,
|
comingSoon: route.meta?.comingSoon,
|
||||||
})
|
})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user