diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json index 313e671..af1083b 100644 --- a/.eslintrc-auto-import.json +++ b/.eslintrc-auto-import.json @@ -5,8 +5,6 @@ "ComputedRef": true, "DirectiveBinding": true, "EffectScope": true, - "ElMessage": true, - "ElMessageBox": true, "ExtractDefaultPropTypes": true, "ExtractPropTypes": true, "ExtractPublicPropTypes": true, diff --git a/README.md b/README.md index 665d212..de4e174 100644 --- a/README.md +++ b/README.md @@ -6,18 +6,27 @@ +
+ +
+ ## 🚀 项目亮点 -**ruoyi-element-ai** 是基于 **Vue3.5** + **Element-Plus-X** + **TypeScript** 的企业级AI应用模板,搭配 **ruoyi-ai** 后端,快速构建仿豆包/通义的全栈AI项目。 +**ruoyi-element-ai** 是基于 **Vue3.5** + **Element-Plus-X** + **hook-fetch** + **TypeScript** + **Eslint9** 开发的企业级AI应用模板,搭配 **ruoyi-ai** 后端,快速构建仿豆包/通义的全栈AI项目。 ## 💡 核心优势 -- 最新技术栈:Vue3.5/Vite5/Pinia3/TypeScript5.8 -- 流式交互:Hook-Fetch支持Server-Sent Events +- 最新技术栈:Vue3.5+/Vite6/Pinia3/TypeScript5 +- 流式交互:Hook-Fetch支持Server-Sent Events,插件化写法优雅的一批 - 企业级规范:ESLint/Stylelint/husky/commitlint全链路校验 -- 开箱即用:内置动态路由、状态管理、组件库封装 +- 全栈项目:集成 ruoyi-ai 后端服务,快速开发 +- 开箱即用:内置动态路由、状态管理、组件库封装、hooks封装 + +## 🎯 开发文档 + +帮助你快速熟悉项目
- +
## 🔗 关键链接 @@ -25,9 +34,9 @@ | 功能模块 | 说明 | 链接 | |------------------|-------------------------------|----------------------------------------------------------------------| | 🚀 前端仓库 | Gitee/GitHub 代码仓库(感谢 star🥰爱你爱你😘) | [Gitee](https://gitee.com/he-jiayue/ruoyi-element-ai)
[GitHub](https://github.com/element-plus-x/ruoyi-element-ai) | -| 🛠️ 后端仓库 | 待补充(支持Java/Node) | 待更新 | -| 📚 前端文档 | 开发指南/组件说明 | [快速了解项目](https://chat-docs.element-plus-x.com) | -| 📡 在线演示 | 实时交互体验 | [立即访问](https://chat.element-plus-x.com) | +| 🛠️ 后端仓库 | Java服务,功能丰富强大 | [Gitee](https://gitee.com/ageerle/ruoyi-ai)
[GitHub](https://github.com/ageerle/ruoyi-ai) | +| 📚 前端文档 | 开发指南/项目说明 | [快速了解项目](https://chat-docs.element-plus-x.com) | +| 📡 在线演示 | 实时交互体验 | [在线预览](https://chat.element-plus-x.com) | ## 🧰 核心功能 @@ -68,16 +77,26 @@ pnpm lint:stylelint # 样式格式化 pnpm cz # 规范提交(自动执行lint) ``` +## 🧸 即将推出 (含 ruoyi-ai 接口联调) +- [x] 会话管理 +- [x] 发送消息 +- [x] 登录注册 +- [ ] md 渲染 +- [ ] 编辑输入框 +- [ ] 文件上传 +- [ ] 其他... + ## 🤝 社区支持 | 👨‍👨‍👧‍👦 微信交流群 | 💩 作者微信 | |---------------------------------------|-------------------------------------| -| 微信交流群
扫码加入交流群
获取最新动态与技术支持 | 作者vx
群过期或失效?
扫码添加作者微信 | +| 微信交流群
扫码加入交流群
获取最新动态与技术支持 | 作者vx
群过期或失效?
扫码添加作者微信 | -## 🌟 留下赞赏,助力开源 +## 🌹 赠人玫瑰,手有余香
-

🙊感谢您的支持!🙊

😍开源是热爱的坚持,您的每一份心意都让我们走得更远~😍

-

💌 扫码赞赏,后续将截图保留,并公示赞赏记录💌
💖感谢每一份温暖助力 💖

-赞赏 +赞赏 +

🙊扫码赞赏,感谢您的支持!🙊

+

💖感谢每一份温暖助力💖

+

💌 后续将截图保留,并公示赞赏记录 💌

diff --git a/src/routers/modules/staticRouter.ts b/src/routers/modules/staticRouter.ts index 3820785..73b7b2a 100644 --- a/src/routers/modules/staticRouter.ts +++ b/src/routers/modules/staticRouter.ts @@ -16,9 +16,9 @@ export const layoutRouter: RouteRecordRaw[] = [ // title: '通用聊天页面', isDefaultChat: true, icon: 'HomeFilled', - isHide: '1', - isKeepAlive: '0', // 是否缓存路由数据[0是,1否] - isFull: '1', // 是否缓存全屏[0是,1否] + // isHide: '1', // 是否在菜单中隐藏[0是,1否] 预留 + // isKeepAlive: '0', // 是否缓存路由数据[0是,1否] 预留 + // isFull: '1', // 是否全屏[0是,1否] 预留 // enName: "Master Station", // 英文名称 预留 }, }, diff --git a/types/auto-imports.d.ts b/types/auto-imports.d.ts index 1db43ec..6cd1a87 100644 --- a/types/auto-imports.d.ts +++ b/types/auto-imports.d.ts @@ -6,85 +6,68 @@ // biome-ignore lint: disable export {} declare global { - const EffectScope: (typeof import("vue"))["EffectScope"]; - const ElMessage: (typeof import("element-plus/es"))["ElMessage"]; - const ElMessageBox: (typeof import("element-plus/es"))["ElMessageBox"]; - const computed: (typeof import("vue"))["computed"]; - const createApp: (typeof import("vue"))["createApp"]; - const customRef: (typeof import("vue"))["customRef"]; - const defineAsyncComponent: (typeof import("vue"))["defineAsyncComponent"]; - const defineComponent: (typeof import("vue"))["defineComponent"]; - const effectScope: (typeof import("vue"))["effectScope"]; - const getCurrentInstance: (typeof import("vue"))["getCurrentInstance"]; - const getCurrentScope: (typeof import("vue"))["getCurrentScope"]; - const h: (typeof import("vue"))["h"]; - const inject: (typeof import("vue"))["inject"]; - const isProxy: (typeof import("vue"))["isProxy"]; - const isReactive: (typeof import("vue"))["isReactive"]; - const isReadonly: (typeof import("vue"))["isReadonly"]; - const isRef: (typeof import("vue"))["isRef"]; - const markRaw: (typeof import("vue"))["markRaw"]; - const nextTick: (typeof import("vue"))["nextTick"]; - const onActivated: (typeof import("vue"))["onActivated"]; - const onBeforeMount: (typeof import("vue"))["onBeforeMount"]; - const onBeforeUnmount: (typeof import("vue"))["onBeforeUnmount"]; - const onBeforeUpdate: (typeof import("vue"))["onBeforeUpdate"]; - const onDeactivated: (typeof import("vue"))["onDeactivated"]; - const onErrorCaptured: (typeof import("vue"))["onErrorCaptured"]; - const onMounted: (typeof import("vue"))["onMounted"]; - const onRenderTracked: (typeof import("vue"))["onRenderTracked"]; - const onRenderTriggered: (typeof import("vue"))["onRenderTriggered"]; - const onScopeDispose: (typeof import("vue"))["onScopeDispose"]; - const onServerPrefetch: (typeof import("vue"))["onServerPrefetch"]; - const onUnmounted: (typeof import("vue"))["onUnmounted"]; - const onUpdated: (typeof import("vue"))["onUpdated"]; - const onWatcherCleanup: (typeof import("vue"))["onWatcherCleanup"]; - const provide: (typeof import("vue"))["provide"]; - const reactive: (typeof import("vue"))["reactive"]; - const readonly: (typeof import("vue"))["readonly"]; - const ref: (typeof import("vue"))["ref"]; - const resolveComponent: (typeof import("vue"))["resolveComponent"]; - const shallowReactive: (typeof import("vue"))["shallowReactive"]; - const shallowReadonly: (typeof import("vue"))["shallowReadonly"]; - const shallowRef: (typeof import("vue"))["shallowRef"]; - const toRaw: (typeof import("vue"))["toRaw"]; - const toRef: (typeof import("vue"))["toRef"]; - const toRefs: (typeof import("vue"))["toRefs"]; - const toValue: (typeof import("vue"))["toValue"]; - const triggerRef: (typeof import("vue"))["triggerRef"]; - const unref: (typeof import("vue"))["unref"]; - const useAttrs: (typeof import("vue"))["useAttrs"]; - const useCssModule: (typeof import("vue"))["useCssModule"]; - const useCssVars: (typeof import("vue"))["useCssVars"]; - const useId: (typeof import("vue"))["useId"]; - const useModel: (typeof import("vue"))["useModel"]; - const useSlots: (typeof import("vue"))["useSlots"]; - const useTemplateRef: (typeof import("vue"))["useTemplateRef"]; - const watch: (typeof import("vue"))["watch"]; - const watchEffect: (typeof import("vue"))["watchEffect"]; - const watchPostEffect: (typeof import("vue"))["watchPostEffect"]; - const watchSyncEffect: (typeof import("vue"))["watchSyncEffect"]; + const EffectScope: typeof import('vue')['EffectScope'] + const ElMessage: (typeof import("element-plus/es"))["ElMessage"] + const ElMessageBox: (typeof import("element-plus/es"))["ElMessageBox"] + const computed: typeof import('vue')['computed'] + const createApp: typeof import('vue')['createApp'] + const customRef: typeof import('vue')['customRef'] + const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'] + const defineComponent: typeof import('vue')['defineComponent'] + const effectScope: typeof import('vue')['effectScope'] + const getCurrentInstance: typeof import('vue')['getCurrentInstance'] + const getCurrentScope: typeof import('vue')['getCurrentScope'] + const h: typeof import('vue')['h'] + const inject: typeof import('vue')['inject'] + const isProxy: typeof import('vue')['isProxy'] + const isReactive: typeof import('vue')['isReactive'] + const isReadonly: typeof import('vue')['isReadonly'] + const isRef: typeof import('vue')['isRef'] + const markRaw: typeof import('vue')['markRaw'] + const nextTick: typeof import('vue')['nextTick'] + const onActivated: typeof import('vue')['onActivated'] + const onBeforeMount: typeof import('vue')['onBeforeMount'] + const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'] + const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'] + const onDeactivated: typeof import('vue')['onDeactivated'] + const onErrorCaptured: typeof import('vue')['onErrorCaptured'] + const onMounted: typeof import('vue')['onMounted'] + const onRenderTracked: typeof import('vue')['onRenderTracked'] + const onRenderTriggered: typeof import('vue')['onRenderTriggered'] + const onScopeDispose: typeof import('vue')['onScopeDispose'] + const onServerPrefetch: typeof import('vue')['onServerPrefetch'] + const onUnmounted: typeof import('vue')['onUnmounted'] + const onUpdated: typeof import('vue')['onUpdated'] + const onWatcherCleanup: typeof import('vue')['onWatcherCleanup'] + const provide: typeof import('vue')['provide'] + const reactive: typeof import('vue')['reactive'] + const readonly: typeof import('vue')['readonly'] + const ref: typeof import('vue')['ref'] + const resolveComponent: typeof import('vue')['resolveComponent'] + const shallowReactive: typeof import('vue')['shallowReactive'] + const shallowReadonly: typeof import('vue')['shallowReadonly'] + const shallowRef: typeof import('vue')['shallowRef'] + const toRaw: typeof import('vue')['toRaw'] + const toRef: typeof import('vue')['toRef'] + const toRefs: typeof import('vue')['toRefs'] + const toValue: typeof import('vue')['toValue'] + const triggerRef: typeof import('vue')['triggerRef'] + const unref: typeof import('vue')['unref'] + const useAttrs: typeof import('vue')['useAttrs'] + const useCssModule: typeof import('vue')['useCssModule'] + const useCssVars: typeof import('vue')['useCssVars'] + const useId: typeof import('vue')['useId'] + const useModel: typeof import('vue')['useModel'] + const useSlots: typeof import('vue')['useSlots'] + const useTemplateRef: typeof import('vue')['useTemplateRef'] + const watch: typeof import('vue')['watch'] + const watchEffect: typeof import('vue')['watchEffect'] + const watchPostEffect: typeof import('vue')['watchPostEffect'] + const watchSyncEffect: typeof import('vue')['watchSyncEffect'] } // for type re-export declare global { // @ts-ignore - export type { - Component, - Slot, - Slots, - ComponentPublicInstance, - ComputedRef, - DirectiveBinding, - ExtractDefaultPropTypes, - ExtractPropTypes, - ExtractPublicPropTypes, - InjectionKey, - PropType, - Ref, - MaybeRef, - MaybeRefOrGetter, - VNode, - WritableComputedRef, - } from "vue"; - import("vue"); + export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' + import('vue') }