diff --git a/contact-frontend/packages/modules/models/src/routes.ts b/contact-frontend/packages/modules/models/src/routes.ts
index f02eb015..0eb2c922 100644
--- a/contact-frontend/packages/modules/models/src/routes.ts
+++ b/contact-frontend/packages/modules/models/src/routes.ts
@@ -29,7 +29,10 @@ export enum ROUTE_NAME {
SEATS_CHATMANAGE_INDEX = 'SEATS_CHATMANAGE_INDEX', // 会话管理
SEATS_LEAVEMANAGE_INDEX = 'SEATS_LEAVEMANAGE_INDEX', // 留言管理
SEATS_SEATSMANAGE_INDEX = 'SEATS_SEATSMANAGE_INDEX', // 坐席管理
- SEATS_ROBOTMANAGE_INDEX = 'SEATS_ROBOTMANAGE_INDEX', // 机器人管理
+ SEATS_ROBOT_INDEX = 'SEATS_ROBOT_INDEX', // 机器人管理
+ SEATS_ROBOT_DASHBOARD_INDEX = 'SEATS_ROBOTMANAGE_DASHBOARD_INDEX', // 机器人数据统计
+ SEATS_ROBOT_MANAGE_INDEX = 'SEATS_ROBOTMANAGE_MANAGE_INDEX', // 机器人管理
+ SEATS_ROBOT_SETTING_INDEX = 'SEATS_ROBOT_SETTING_INDEX', // 机器人设置
// 组织管理模块
ORGANIZATION_INDEX = 'ORGANIZATION_INDEX',
@@ -39,16 +42,21 @@ export enum ROUTE_NAME {
// 企业设置模块
ENTERPRISE_INDEX = 'ENTERPRISE_INDEX',
- ENTERPRISE_KEFU_INDEX = 'ENTERPRISE_KEFU_INDEX', // 客服设置
- ENTERPRISE_CHANNEL_INDEX = 'ENTERPRISE_CHANNEL_INDEX', // 接入
- ENTERPRISE_CHAT_INDEX = 'ENTERPRISE_CHAT_INDEX', // 对话
- ENTERPRISE_CUSTOMER_INDEX = 'ENTERPRISE_CUSTOMER_INDEX', // 客户
+ ENTERPRISE_KEFU_INDEX = 'ENTERPRISE_KEFU_INDEX', // 客服入口设置
+ ENTERPRISE_CHANNEL_INDEX = 'ENTERPRISE_CHANNEL_INDEX', // 渠道接入
ENTERPRISE_KNOWLEDGE_INDEX = 'ENTERPRISE_KNOWLEDGE_INDEX', // 知识库
- ENTERPRISE_WORKORDER_INDEX = 'ENTERPRISE_WORKORDER_INDEX', // 工单
- ENTERPRISE_LEAVEMESSAGE_INDEX = 'ENTERPRISE_LEAVEMESSAGE_INDEX', // 留言
+ ENTERPRISE_QUALITY_INDEX = 'ENTERPRISE_QUALITY_INDEX', // 质检
+ ENTERPRISE_CHAT_INDEX = 'ENTERPRISE_CHAT_INDEX', // 对话
ENTERPRISE_ADMIN_INDEX = 'ENTERPRISE_ADMIN_INDEX', // 管理员 - 组织管理设置
ENTERPRISE_USERS_INDEX = 'ENTERPRISE_USERS_INDEX', // 账号管理
ENTERPRISE_ROLES_INDEX = 'ENTERPRISE_ROLES_INDEX', // 角色管理
+ ENTERPRISE_ORGANIZATIONS_INDEX = 'ENTERPRISE_ORGANIZATIONS_INDEX', // 组织架构管理
+ ENTERPRISE_FEATURE_INDEX = 'ENTERPRISE_FEATURE_INDEX', // 客户
+ ENTERPRISE_CHAT_SETTING_INDEX = 'ENTERPRISE_CHAT_SETTING_INDEX', // 对话设置
+ ENTERPRISE_CUSTOMER_SETTING_INDEX = 'ENTERPRISE_CUSTOMER_SETTING_INDEX', // 客户设置
+ ENTERPRISE_WORKORDER_SETTING_INDEX = 'ENTERPRISE_WORKORDER_SETTING_INDEX', // 工单设置
+ ENTERPRISE_LEAVEMESSAGE_SETTING_INDEX = 'ENTERPRISE_LEAVEMESSAGE_SETTING_INDEX', // 留言设置
+
// 系统设置模块
SYSTEM_INDEX = 'SYSTEM_INDEX',
SYSTEM_INFO_INDEX = 'SYSTEM_INFO_INDEX', // 系统信息
diff --git a/contact-frontend/packages/modules/services/enterprise/src/layouts/MenusLayout.vue b/contact-frontend/packages/modules/services/enterprise/src/layouts/MenusLayout.vue
index 0e18d148..e7927f45 100644
--- a/contact-frontend/packages/modules/services/enterprise/src/layouts/MenusLayout.vue
+++ b/contact-frontend/packages/modules/services/enterprise/src/layouts/MenusLayout.vue
@@ -1,68 +1,11 @@
diff --git a/contact-frontend/packages/modules/services/enterprise/src/routes/index.ts b/contact-frontend/packages/modules/services/enterprise/src/routes/index.ts
index ee649edd..e2655a2e 100644
--- a/contact-frontend/packages/modules/services/enterprise/src/routes/index.ts
+++ b/contact-frontend/packages/modules/services/enterprise/src/routes/index.ts
@@ -14,6 +14,139 @@ const routes: RouteRecordRaw[] = [
path: 'index',
name: ROUTE_NAME.ENTERPRISE_INDEX,
component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '企业服务',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'chat',
+ name: ROUTE_NAME.ENTERPRISE_KEFU_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '客服入口设置',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'channel',
+ name: ROUTE_NAME.ENTERPRISE_CHANNEL_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '渠道接入',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'knowledge',
+ name: ROUTE_NAME.ENTERPRISE_KNOWLEDGE_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '知识库',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'quality',
+ name: ROUTE_NAME.ENTERPRISE_QUALITY_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '质检',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'ou',
+ name: ROUTE_NAME.ENTERPRISE_ADMIN_INDEX,
+ meta: {
+ title: '组织/成员',
+ },
+ children: [
+ {
+ path: 'users',
+ name: ROUTE_NAME.ENTERPRISE_USERS_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '账号管理',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'roles',
+ name: ROUTE_NAME.ENTERPRISE_ROLES_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '角色管理',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'organization',
+ name: ROUTE_NAME.ENTERPRISE_ORGANIZATIONS_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '组织架构',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ ],
+ },
+ {
+ path: 'feature',
+ name: ROUTE_NAME.ENTERPRISE_FEATURE_INDEX,
+ meta: {
+ title: '功能设置',
+ },
+ children: [
+ {
+ path: 'index',
+ name: ROUTE_NAME.ENTERPRISE_CHAT_SETTING_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '对话设置',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'index',
+ name: ROUTE_NAME.ENTERPRISE_CUSTOMER_SETTING_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '客户设置',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'index',
+ name: ROUTE_NAME.ENTERPRISE_WORKORDER_SETTING_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '工单设置',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'index',
+ name: ROUTE_NAME.ENTERPRISE_LEAVEMESSAGE_SETTING_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '留言设置',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ ],
},
],
},
diff --git a/contact-frontend/packages/modules/services/seats/src/layouts/MenusLayout.vue b/contact-frontend/packages/modules/services/seats/src/layouts/MenusLayout.vue
index 4f87878b..e7927f45 100644
--- a/contact-frontend/packages/modules/services/seats/src/layouts/MenusLayout.vue
+++ b/contact-frontend/packages/modules/services/seats/src/layouts/MenusLayout.vue
@@ -1,43 +1,11 @@
diff --git a/contact-frontend/packages/modules/services/seats/src/routes/index.ts b/contact-frontend/packages/modules/services/seats/src/routes/index.ts
index 9979ccfa..f1c7c627 100644
--- a/contact-frontend/packages/modules/services/seats/src/routes/index.ts
+++ b/contact-frontend/packages/modules/services/seats/src/routes/index.ts
@@ -12,8 +12,82 @@ const routes: RouteRecordRaw[] = [
children: [
{
path: 'index',
- name: ROUTE_NAME.SEATS_INDEX,
+ name: ROUTE_NAME.SEATS_DASHBOARD_INDEX,
component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '坐席看板',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'index',
+ name: ROUTE_NAME.SEATS_CHATMANAGE_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '会话管理',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'index',
+ name: ROUTE_NAME.SEATS_LEAVEMANAGE_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '留言管理',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'index',
+ name: ROUTE_NAME.SEATS_SEATSMANAGE_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '坐席管理',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'index',
+ name: ROUTE_NAME.SEATS_ROBOT_INDEX,
+ meta: {
+ title: '机器人管理',
+ },
+ children: [
+ {
+ path: 'index',
+ name: ROUTE_NAME.SEATS_ROBOT_DASHBOARD_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '数据统计',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'index',
+ name: ROUTE_NAME.SEATS_ROBOT_MANAGE_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '机器人管理',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ {
+ path: 'index',
+ name: ROUTE_NAME.SEATS_INDEX,
+ component: () => import('../views/HomeView.vue'),
+ meta: {
+ title: '机器人设置',
+ isAuth: true,
+ icon: 'el-icon-setting',
+ },
+ },
+ ],
},
],
},
diff --git a/contact-frontend/packages/modules/services/system/src/layouts/MenusLayout.vue b/contact-frontend/packages/modules/services/system/src/layouts/MenusLayout.vue
index bd6d3436..c05cafcd 100644
--- a/contact-frontend/packages/modules/services/system/src/layouts/MenusLayout.vue
+++ b/contact-frontend/packages/modules/services/system/src/layouts/MenusLayout.vue
@@ -4,13 +4,9 @@ import { MenuOption, NMenu } from 'naive-ui'
import routes from '../routes'
-const menuOptions: MenuOption[] = routes[0]?.children?.map((route) => {
- return {
- label: route.meta?.title,
- key: route.name,
- disabled: route.meta?.disabled,
- }
-}) as MenuOption[]
+import { routesToMenus } from '@cskefu/shared-utils'
+
+const menuOptions: MenuOption[] = routesToMenus(routes)
diff --git a/contact-frontend/packages/shared/utils/package.json b/contact-frontend/packages/shared/utils/package.json
index af483d55..3ed0b883 100644
--- a/contact-frontend/packages/shared/utils/package.json
+++ b/contact-frontend/packages/shared/utils/package.json
@@ -2,5 +2,13 @@
"name": "@cskefu/shared-utils",
"private": true,
"version": "0.0.0",
- "type": "module"
+ "type": "module",
+ "exports": {
+ ".": {
+ "import": {
+ "node": "./src/index.ts",
+ "default": "./src/index.ts"
+ }
+ }
+ }
}
diff --git a/contact-frontend/packages/shared/utils/src/index.ts b/contact-frontend/packages/shared/utils/src/index.ts
new file mode 100644
index 00000000..49800c7a
--- /dev/null
+++ b/contact-frontend/packages/shared/utils/src/index.ts
@@ -0,0 +1 @@
+export * from './routes'
diff --git a/contact-frontend/packages/shared/utils/src/routes.ts b/contact-frontend/packages/shared/utils/src/routes.ts
new file mode 100644
index 00000000..2d63cb57
--- /dev/null
+++ b/contact-frontend/packages/shared/utils/src/routes.ts
@@ -0,0 +1,29 @@
+import { MenuOption } from 'naive-ui'
+import { RouteRecordRaw } from 'vue-router'
+
+export function routesToMenus(
+ routes: RouteRecordRaw[],
+ isNotRoot?: boolean
+): MenuOption[] {
+ const result: MenuOption[] = []
+ const array = isNotRoot ? routes : routes[0].children
+ if (array) {
+ array.forEach((route: RouteRecordRaw) => {
+ if (route.children) {
+ result.push({
+ label: route.meta?.title,
+ key: route.path,
+ children: routesToMenus(route.children, true),
+ })
+ } else {
+ result.push({
+ label: route.meta?.title,
+ key: route.name as string,
+ disabled: route.meta?.disabled as boolean,
+ comingSoon: route.meta?.comingSoon,
+ })
+ }
+ })
+ }
+ return result
+}
diff --git a/contact-frontend/packages/shared/utils/index.ts b/contact-frontend/packages/shared/utils/test/.gitkeep
similarity index 100%
rename from contact-frontend/packages/shared/utils/index.ts
rename to contact-frontend/packages/shared/utils/test/.gitkeep