# src 目录结构说明 > 本文档详细说明了项目 src 目录下所有文件和文件夹的作用 ## 📁 目录结构总览 ``` src/ ├── api/ # API 接口层 ├── assets/ # 静态资源 ├── components/ # 公共组件 ├── directives/ # 自定义指令 ├── i18n/ # 国际化 ├── layout/ # 布局组件 ├── router/ # 路由配置 ├── stores/ # 状态管理(Pinia) ├── theme/ # 样式主题 ├── types/ # TypeScript 类型定义 ├── utils/ # 工具函数 ├── views/ # 页面视图 ├── App.vue # 根组件 └── main.ts # 应用入口 ``` --- ## 🎯 核心文件 ### App.vue - **作用**: Vue 应用根组件 - **功能**: 定义应用的最外层结构 ### main.ts - **作用**: 应用入口文件 - **功能**: - 初始化 Vue 实例 - 注册全局插件(Router、Store、i18n) - 挂载应用到 DOM --- ## 📡 API 接口层 (`/api`) 统一管理所有后端接口调用 ``` api/ ├── assets/ # 资产管理接口 ├── cid/ # CID 相关接口 ├── common/ # 公共接口(文件上传等) ├── customerService/ # 客服系统接口 ├── digitalHuman/ # 数字人相关接口 │ ├── audioAssets/ # 音频资产接口 │ ├── avatar/ # 数字人形象接口 │ ├── creation/ # 内容创作接口 │ ├── modelConfig/ # 模型配置接口 │ ├── skill/ # 技能管理接口 ⭐ │ └── videoAssets/ # 视频资产接口 ├── knowledge/ # 知识库接口 │ ├── dataset/ # 数据集接口 │ ├── document/ # 文档接口 │ └── model/ # 模型接口 ├── login/ # 登录认证接口 ├── menu/ # 菜单接口 ├── system/ # 系统管理接口 │ ├── cache/ # 缓存管理 │ ├── config/ # 系统配置 │ ├── dept/ # 部门管理 │ ├── dict/ # 字典管理 │ ├── menu/ # 菜单管理 │ ├── monitor/ # 系统监控 │ ├── personal/ # 个人中心 │ ├── post/ # 岗位管理 │ ├── role/ # 角色管理 │ ├── tenant/ # 租户管理 │ └── user/ # 用户管理 └── trade/ # 交易运营接口 └── operation/ # 运营数据 ├── analysis/ # 数据分析 ├── distribution/# 分销数据 ├── setting/ # 运营设置 └── stats/ # 统计数据 ``` **关键文件**: - 每个模块的 `index.ts` 包含该模块的所有接口定义 - 使用 TypeScript 定义接口参数和返回值类型 --- ## 🎨 静态资源 (`/assets`) 存放项目静态资源文件 ``` assets/ ├── 401.png # 401 无权限页面图片 ├── 404.png # 404 页面未找到图片 ├── bg.jpg # 背景图 ├── login-icon-two.svg # 登录页图标 └── logo-mini.svg # 小尺寸 Logo ``` --- ## 🧩 公共组件 (`/components`) 可复用的 Vue 组件 ``` components/ ├── auth/ # 权限控制组件 │ ├── auth.vue # 单个权限控制 │ ├── authAll.vue # 全部权限控制 │ └── auths.vue # 多权限控制 ├── cropper/ # 图片裁剪组件 │ └── index.vue ├── editor/ # 富文本编辑器 │ ├── index.vue │ └── toolbar.ts # 工具栏配置 ├── iconSelector/ # 图标选择器 │ └── index.vue ├── model/ # 模型选择器 ⭐ │ └── ModelSelector.vue ├── myCodeMirror/ # 代码编辑器 │ └── index.vue ├── noticeBar/ # 通知栏组件 │ └── index.vue ├── pagination/ # 分页组件 │ └── index.vue ├── skill/ # 技能选择器 ⭐ │ ├── NodeSkillSelector.vue # 节点技能选择器 │ └── SkillSelector.vue # 技能选择器 └── svgIcon/ # SVG 图标组件 └── index.vue ``` **使用说明**: - 组件可在任何页面中导入使用 - 部分组件已注册为全局组件 --- ## 📜 自定义指令 (`/directives`) Vue 自定义指令 ``` directives/ └── debounce.ts # 防抖指令 ``` **使用示例**: ```vue 点击 ``` --- ## 🌍 国际化 (`/i18n`) 多语言支持 ``` i18n/ ├── lang/ # 语言包 │ ├── en.ts # 英文 │ ├── zh-cn.ts # 简体中文 │ └── zh-tw.ts # 繁体中文 ├── pages/ # 页面级国际化 │ ├── formI18n/ # 表单国际化 │ └── login/ # 登录页国际化 └── index.ts # 国际化配置入口 ``` **支持语言**: - 简体中文 (zh-cn) - 繁体中文 (zh-tw) - 英文 (en) --- ## 🏗️ 布局组件 (`/layout`) 应用整体布局结构 ``` layout/ ├── component/ # 布局基础组件 │ ├── aside.vue # 侧边栏 │ ├── columnsAside.vue # 分栏侧边栏 │ ├── header.vue # 头部 │ └── main.vue # 主体内容区 ├── footer/ # 页脚 │ └── index.vue ├── lockScreen/ # 锁屏功能 │ └── index.vue ├── logo/ # Logo 组件 │ └── index.vue ├── main/ # 主布局模式 │ ├── classic.vue # 经典布局 │ ├── columns.vue # 分栏布局 │ ├── defaults.vue # 默认布局 │ └── transverse.vue # 横向布局 ├── navBars/ # 导航栏 │ ├── breadcrumb/ # 面包屑导航 │ │ ├── breadcrumb.vue # 面包屑 │ │ ├── closeFull.vue # 全屏切换 │ │ ├── index.vue # 导航栏入口 │ │ ├── search.vue # 搜索 │ │ ├── setings.vue # 设置 │ │ ├── user.vue # 用户信息 │ │ └── userNews.vue # 用户消息 │ └── tagsView/ # 标签页视图 │ ├── contextmenu.vue # 右键菜单 │ └── tagsView.vue # 标签页 ├── navMenu/ # 导航菜单 │ ├── horizontal.vue # 横向菜单 │ ├── subItem.vue # 子菜单项 │ └── vertical.vue # 纵向菜单 ├── routerView/ # 路由视图 │ ├── iframes.vue # iframe 视图 │ ├── link.vue # 外链视图 │ └── parent.vue # 父级视图 └── index.vue # 布局入口 ``` **布局模式**: - 经典布局 (classic) - 分栏布局 (columns) - 默认布局 (defaults) - 横向布局 (transverse) --- ## 🛣️ 路由配置 (`/router`) Vue Router 路由管理 ``` router/ ├── backEnd.ts # 后端动态路由 ├── frontEnd.ts # 前端静态路由 ├── index.ts # 路由入口 └── route.ts # 路由工具函数 ``` **路由模式**: - 前端路由: 静态配置,适合固定菜单 - 后端路由: 动态加载,根据权限生成 --- ## 🗄️ 状态管理 (`/stores`) Pinia 状态管理 ``` stores/ ├── interface/ # Store 接口定义 │ └── index.ts ├── bigUpload.ts # 大文件上传状态 ├── index.ts # Store 入口 ├── keepAliveNames.ts # 页面缓存名称 ├── requestOldRoutes.ts # 旧路由请求 ├── routesList.ts # 路由列表状态 ├── tagsViewRoutes.ts # 标签页路由状态 ├── themeConfig.ts # 主题配置状态 └── userInfo.ts # 用户信息状态 ``` **主要 Store**: - `userInfo`: 用户登录信息、权限 - `themeConfig`: 主题、布局配置 - `routesList`: 动态路由列表 - `tagsViewRoutes`: 标签页历史记录 --- ## 🎨 样式主题 (`/theme`) 全局样式和主题配置 ``` theme/ ├── common/ # 公共样式 │ └── transition.scss # 过渡动画 ├── media/ # 响应式样式 │ ├── chart.scss # 图表样式 │ ├── cityLinkage.scss # 城市联动 │ ├── date.scss # 日期选择器 │ ├── dialog.scss # 对话框 │ ├── error.scss # 错误页 │ ├── form.scss # 表单 │ ├── home.scss # 首页 │ ├── index.scss # 媒体查询入口 │ ├── layout.scss # 布局 │ ├── login.scss # 登录页 │ ├── media.scss # 响应式断点 │ ├── pagination.scss # 分页 │ ├── personal.scss # 个人中心 │ ├── scrollbar.scss # 滚动条 │ └── tagsView.scss # 标签页 ├── mixins/ # SCSS 混入 │ ├── button-text.scss # 按钮文本混入 │ └── index.scss # 混入入口 ├── app.scss # 应用主样式 ├── dark.scss # 暗黑主题 ├── element.scss # Element Plus 样式覆盖 ├── iconSelector.scss # 图标选择器样式 ├── index.scss # 样式入口 ├── loading.scss # 加载动画 ├── other.scss # 其他样式 └── waves.scss # 波纹效果 ``` **主题功能**: - 支持亮色/暗色主题切换 - 响应式布局适配 - Element Plus 组件样式定制 --- ## 📝 类型定义 (`/types`) TypeScript 类型声明 ``` types/ └── file-saver.d.ts # file-saver 库类型定义 ``` **说明**: 为第三方库提供 TypeScript 类型支持 --- ## 🛠️ 工具函数 (`/utils`) 通用工具函数库 ``` utils/ ├── arrayOperation.ts # 数组操作工具 ├── assetSubscribe.ts # 资产订阅工具 ├── authDirective.ts # 权限指令工具 ├── authFunction.ts # 权限判断函数 ├── build.ts # 构建相关工具 ├── commonFunction.ts # 公共函数 ├── customDirective.ts # 自定义指令注册 ├── debounce.ts # 防抖函数 ├── diffUtils.ts # 差异对比工具 ├── directive.ts # 指令工具 ├── formatTime.ts # 时间格式化 ├── getStyleSheets.ts # 获取样式表 ├── gfast.ts # GFast 框架工具 ├── loading.ts # 加载状态工具 ├── other.ts # 其他工具函数 ├── request.ts # HTTP 请求封装 ⭐ ├── setIconfont.ts # 设置图标字体 ├── storage.ts # 本地存储封装 ├── theme.ts # 主题切换工具 ├── toolsValidate.ts # 表单验证规则 └── wartermark.ts # 水印工具 ``` **核心工具**: - `request.ts`: Axios 封装,统一处理 HTTP 请求、错误拦截 - `storage.ts`: localStorage/sessionStorage 封装 - `authFunction.ts`: 权限判断函数 - `formatTime.ts`: 日期时间格式化 --- ## 📄 页面视图 (`/views`) 所有页面组件 ### 核心业务模块 #### 数字人模块 (`/digitalHuman`) ⭐ ``` digitalHuman/ ├── audioAssets/ # 音频资产管理 │ ├── component/ │ │ └── ttsDialog.vue # TTS 对话框 │ └── index.vue ├── avatar/ # 数字人形象管理 │ └── index.vue ├── creation/ # 内容创作 │ └── index.vue ├── modelConfig/ # 模型配置 │ ├── modelModule/ # 模型模块管理 │ │ ├── component/ │ │ │ └── editModule.vue # 编辑模型 │ │ └── index.vue │ └── modelType/ # 模型类型管理 │ └── index.vue ├── skill/ # 技能管理 ⭐ │ └── index.vue └── videoAssets/ # 视频资产管理 └── index.vue ``` **功能说明**: - **音频资产**: 管理 TTS 音频文件 - **数字人形象**: 配置数字人外观 - **内容创作**: 创建数字人内容 - **模型配置**: 管理 AI 模型(推理、图片、音频) - **技能管理**: 管理技能模板(zip 格式,包含 .md 文件) - **视频资产**: 管理视频素材 #### 知识库模块 (`/knowledge`) ``` knowledge/ ├── component/ │ └── documentDetailDialog.vue # 文档详情对话框 ├── dataset/ # 数据集管理 │ ├── component/ │ │ └── editDataset.vue │ └── index.vue ├── document/ # 文档管理 │ ├── component/ │ │ ├── documentChunks.vue # 文档分块 │ │ ├── previewDocument.vue # 文档预览 │ │ └── uploadDocument.vue # 上传文档 │ ├── detail.vue # 文档详情 │ └── index.vue └── index.vue ``` #### 客服系统 (`/customerService`) ``` customerService/ ├── account/ # 客服账号管理 ├── product/ # 产品管理 ├── report/ # 报表统计 └── script/ # 话术管理 ``` #### 资产管理 (`/assets`) ``` assets/ ├── asset/ # 资产管理 ├── category/ # 资产分类 ├── location/ # 库位管理 ├── operation/ # 资产操作 │ └── count/ # 盘点管理 ├── warehouse/ # 仓库管理 └── zone/ # 库区管理 ``` #### 交易运营 (`/trade`) ``` trade/ └── operation/ ├── analysis/ # 数据分析 │ ├── product/ # 产品分析 │ ├── region/ # 区域分析 │ └── shop/ # 店铺分析 ├── distribution/ # 分销管理 │ ├── effect/ # 分销效果 │ └── order/ # 分销订单 ├── order/ # 订单管理 ├── setting/ # 运营设置 │ ├── anchor/ # 主播管理 │ ├── live-account/# 直播账号 │ └── scheduling/ # 排期管理 └── stats/ # 统计数据 ├── anchor/ # 主播统计 └── shop/ # 店铺统计 ``` ### 系统管理模块 (`/system`) ``` system/ ├── config/ # 系统配置 ├── dept/ # 部门管理 ├── dict/ # 字典管理 ├── menu/ # 菜单管理 ├── monitor/ # 系统监控 │ ├── loginLog/ # 登录日志 │ ├── operLog/ # 操作日志 │ ├── server/ # 服务器监控 │ └── userOnline/ # 在线用户 ├── personal/ # 个人中心 ├── post/ # 岗位管理 ├── role/ # 角色管理 ├── tenant/ # 租户管理 └── user/ # 用户管理 ``` ### 其他模块 ``` views/ ├── ads/ # 广告数据分析 ├── chart/ # 图表示例 ├── error/ # 错误页(401, 404) ├── fun/ # 功能演示 │ ├── clipboard/ # 剪贴板 │ ├── codemirror/ # 代码编辑器 │ ├── countup/ # 数字滚动 │ ├── cropper/ # 图片裁剪 │ ├── echartsMap/ # 地图 │ ├── gridLayout/ # 网格布局 │ ├── printJs/ # 打印 │ ├── qrcode/ # 二维码 │ ├── splitpanes/ # 分割面板 │ └── tagsView/ # 标签页 ├── home/ # 首页 ├── login/ # 登录页 ├── make/ # 组件制作 ├── menu/ # 菜单示例 ├── pages/ # 页面示例 │ ├── awesome/ # 精选组件 │ ├── drag/ # 拖拽 │ ├── dynamicForm/ # 动态表单 │ ├── element/ # Element 组件 │ ├── filtering/ # 筛选 │ ├── formAdapt/ # 表单适配 │ ├── formI18n/ # 表单国际化 │ ├── formRules/ # 表单验证 │ ├── iocnfont/ # 图标字体 │ ├── lazyImg/ # 图片懒加载 │ ├── listAdapt/ # 列表适配 │ ├── preview/ # 预览 │ ├── steps/ # 步骤条 │ ├── tableRules/ # 表格验证 │ ├── tree/ # 树形控件 │ ├── waterfall/ # 瀑布流 │ ├── waves/ # 波纹效果 │ └── workflow/ # 工作流 ├── params/ # 参数传递 ├── personal/ # 个人中心 ├── report-engine/ # 报表引擎 ├── tools/ # 工具页 └── visualizing/ # 数据可视化 ``` --- ## 🔑 关键文件说明 | 文件 | 作用 | 重要性 | |------|------|--------| | `main.ts` | 应用入口,初始化 Vue、Router、Store | ⭐⭐⭐ | | `utils/request.ts` | HTTP 请求封装,统一错误处理 | ⭐⭐⭐ | | `router/index.ts` | 路由配置,权限控制 | ⭐⭐⭐ | | `stores/userInfo.ts` | 用户信息状态管理 | ⭐⭐⭐ | | `stores/themeConfig.ts` | 主题配置状态管理 | ⭐⭐ | | `components/model/ModelSelector.vue` | 模型选择器组件 | ⭐⭐ | | `components/skill/SkillSelector.vue` | 技能选择器组件 | ⭐⭐ | | `views/digitalHuman/` | 数字人核心业务模块 | ⭐⭐⭐ | --- ## 📚 开发规范 ### 文件命名 - 组件文件: PascalCase (如 `ModelSelector.vue`) - 工具文件: camelCase (如 `request.ts`) - 样式文件: kebab-case (如 `login.scss`) ### 目录组织 - 每个业务模块独立目录 - 组件相关文件放在 `component/` 子目录 - 接口定义放在对应的 `api/` 目录 ### 代码风格 - 使用 TypeScript - 遵循 ESLint 规则 - 使用 Prettier 格式化 --- ## 🔄 更新日志 - 2024-XX-XX: 创建文档 - 添加数字人模块说明 - 添加技能管理功能说明 --- ## 📞 联系方式 如有问题,请联系开发团队。