From 3697fcee9387250faeabee3caaf758853629df18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BB=98=E6=B0=91=E5=BA=B7?= Date: Tue, 6 May 2025 14:44:35 +0800 Subject: [PATCH] =?UTF-8?q?AI=E5=8A=A9=E6=89=8B=E9=A1=B5=E9=9D=A2=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/imgs/jyh/ai/aiLogo.png | Bin 0 -> 6598 bytes src/layouts/AILayout/aside.vue | 273 ++++++++++++++++++++++++++++++ src/layouts/AILayout/index.vue | 212 +++++++++++++++++++++++ src/router/config/home.ts | 22 +++ 4 files changed, 507 insertions(+) create mode 100644 src/assets/imgs/jyh/ai/aiLogo.png create mode 100644 src/layouts/AILayout/aside.vue create mode 100644 src/layouts/AILayout/index.vue diff --git a/src/assets/imgs/jyh/ai/aiLogo.png b/src/assets/imgs/jyh/ai/aiLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..417cb1c5c14b98580c3977bc4888f736a97bd68a GIT binary patch literal 6598 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 +import { ref, watchEffect } from 'vue'; +import { useRouter, useRoute } from 'vue-router'; +import { useAccountStore } from '@/stores/user'; +import { usePageResize } from '@/utils/hooks/usePageResize'; +import { emitEvent } from '@/utils/eventBus'; +import setting from '@/setting'; +const { copyright } = setting; + +defineProps<{ asideDefaultWidth: number; }>(); +const emit = defineEmits<{ + onSelect: []; +}>(); + +const userStore = useAccountStore(); +const sizeStore = usePageResize(); +const router = useRouter(); +const route = useRoute(); +const defaultSelectKeys = ref([]); +/** + * 跳转菜单,转向子应用路由 或 自身路由 + */ +const onSelect = (e) => { + const route: { microApp?: string, name: string; login?: boolean; } = JSON.parse(e.el.parentNode.getAttribute('data-route')); + if (route) { + if (route.login && !userStore.isLogin) { + if (sizeStore.isMobile.value) { + emit('onSelect'); + } + emitEvent('login'); + return; + } + location.href = router.resolve(route).href; + // if (route?.microApp) { + // if (microApp.router.current.has(route?.microApp)) { + // microApp.router.push({ + // name: 'micoro-app-homeweb-app', + // path: router.resolve(route).href + // }); + // } else { + // router.push(route); + // } + // } else { + // router.push(route); + // } + } + emit('onSelect'); +}; +const menuItemRouteName = ['home', 'gStar', 'aiCopilot', 'contributed', 'issues', 'merge', 'discussionCreated', 'explore', 'userFollowing', 'userStars']; +watchEffect(() => { + // 回显高亮menuitem + const name = route?.name as string; + if (menuItemRouteName.includes(name)) { + defaultSelectKeys.value = [name]; + } else { + const basePath = route.meta.basePath as string; + if (basePath) defaultSelectKeys.value = [basePath]; + } +}); + + + diff --git a/src/layouts/AILayout/index.vue b/src/layouts/AILayout/index.vue new file mode 100644 index 0000000..0c85d34 --- /dev/null +++ b/src/layouts/AILayout/index.vue @@ -0,0 +1,212 @@ + + + + + diff --git a/src/router/config/home.ts b/src/router/config/home.ts index 8813259..1b935fe 100644 --- a/src/router/config/home.ts +++ b/src/router/config/home.ts @@ -1,4 +1,5 @@ import DefaultLayout from '@/layouts/DefaultLayout/index.vue'; +import AILayout from '@/layouts/AILayout/index.vue'; export default [ { @@ -107,5 +108,26 @@ export default [ } } ] + }, + { + path: '/ai', + redirect: '/ai/home', + component: AILayout, + children: [ + { + path: '/ai/home', + name: 'aihome', + component: () => import('@/views/Jyh/Home/index.vue'), + meta: { + micorApp: ['micoro-app-homeweb-app'], + hasMobile: true, + hiddenFooter: true, + reportTitle: '首页', + className: 'w-full min-w-full', + headerClassName: '', + asideMenu: 'drawer' // 左侧菜单抽屉模式 + } + } + ] } ];