- 在技能 API 中新增 `getUserSkillDetail` 和 `updateUserSkill` 函数,支持获取和更新用户技能。 - 更新技能列表页面,改进搜索栏和技能表格展示,提升用户体验。 - 修改文件上传提示,明确支持的文件格式和要求。
593 lines
18 KiB
Markdown
593 lines
18 KiB
Markdown
# 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
|
||
<el-button v-debounce="handleClick">点击</el-button>
|
||
```
|
||
|
||
---
|
||
|
||
## 🌍 国际化 (`/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: 创建文档
|
||
- 添加数字人模块说明
|
||
- 添加技能管理功能说明
|
||
|
||
---
|
||
|
||
## 📞 联系方式
|
||
|
||
如有问题,请联系开发团队。
|