1
0
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:
Kaifuny 2023-07-24 20:58:56 +08:00
parent bdd8831e84
commit a819c5f7d2
5 changed files with 60 additions and 23 deletions

View File

@ -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
// 每个路由都必须声明 // 每个路由都必须声明

View File

@ -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,
}, },
}, },
{ {

View File

@ -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,
}, },
}, },
], ],

View File

@ -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,
}, },
}, },
], ],

View File

@ -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,
}) })