You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7.5 KiB
7.5 KiB
电商互联网产品开发实训系统 - 项目认知
本文件为 AI 助手提供项目上下文,每次新对话开始时会读取此文件。
1. 项目基本信息
- 项目名称:电商互联网产品开发实训系统
- 技术栈:Vue 3 (Composition API) + Vite 3 + Element Plus 2.2.x + Pinia + Vue Router 4 + ECharts 5.4 + SCSS
- 基础框架:RuoYi-Vue 3.8.6(若依前后端分离系统增强版)
- 项目路径:
D:\TZ\dianshang-qianduan或d:\TZ\dianshang-qianduan - Git:当前目录不是 Git 仓库
2. 目录结构
src/
├── App.vue # 应用入口,包含顶部导航栏、Step 步骤条 title 区域
├── main.js # 应用入口
├── settings.js # 全局变量配置(主题、是否显示 TagsView 等)
│
├── assets/styles/ # 全局样式
│ ├── variables.module.scss # 主题色变量(菜单颜色、侧边栏、默认深色等)
│ ├── element-ui.scss # Element Plus 样式覆盖
│ ├── sidebar.scss # 侧边栏样式
│ ├── student-training.scss # 学生实训页样式
│ └── ...
│
├── components/ # 通用组件(分页组件、编辑弹框、图谱选择器等)
│
├── layout/ # 整体布局,包含主 UI 框架
│ ├── index.vue # 整体布局组件,根据角色渲染不同颜色主题
│ ├── components/
│ │ ├── Sidebar/index.vue # 侧边栏颜色主题 / 课程风格导航
│ │ ├── Sidebar/SidebarItem.vue # 菜单递归渲染
│ │ ├── Navbar.vue # 顶部导航栏,包含颜色主题切换 + 用户头像
│ │ ├── TagsView/ # 标签页(当前打开的页面)
│ │ └── Settings/ # 主题设置组件
│
├── router/index.js # 路由配置(静态路由 + 动态路由按角色加载)
│
├── store/modules/ # Pinia Store
│ ├── user.js # 用户信息(登录、退出)
│ ├── app.js # 标签页展开/折叠、设备状态(mobile/desktop)
│ ├── settings.js # 主题颜色、侧边栏、TagsView、Header 固定等
│ ├── permission.js # 动态路由、菜单权限
│
├── views/ # 页面视图
│ ├── index.vue # 首页,根据不同 role 渲染不同仪表盘(平台/学校/教师/学生)
│ ├── login.vue # 登录页
│ ├── register.vue # 注册页
│ ├── student/index.vue # 学生页:临摹表,可视化图谱 + 权重分配
│ ├── teacherEnd/index.vue # 教师端页
│ ├── schoolAdmin/ # 学校管理员(school, faculty, major, class, teacher, student)
│ ├── platformAdmin/ # 平台管理员(school, teacher 审核)
│ ├── demand/ # 市场需求分析模块
│ ├── product/ # 产品设计模块
│ ├── channel/ # 渠道模块
│ ├── test/ # 产品概念测试营销运营
│ ├── assessment/ # 产品概念评估
│ ├── training/ # 实训导航(通用页面的进阶页)
│ ├── foundation/ # 产品基础资料
│ ├── AI/ # AI 分析
│ ├── error/ # 错误页面
│
├── api/ # API 接口封装(统一管理模块化)
├── utils/ # 工具函数
├── plugins/ # 插件(如 Echarts cache 等)
3. 四种角色权限分布
| 角色 | roleId | 界面特点 | 导航栏 | 说明 |
|---|---|---|---|---|
| 平台管理员 | 1 | 平台管理后台 + 审核管理菜单 | theme-dark 深色导航 |
|
| 学校管理员 | 2 | 同上,但仅限本校管理 | theme-dark |
|
| 教师 | 3 | 课程管理角色分配 + 课程分配管理 | 课程模块页签自定义渲染 | |
| 学生 | 4 | 课程分配管理 | 仅实训模块页签动态渲染 +API 调用 |
核心导航逻辑(在 src/layout/index.vue中):
- 通过
useTopNavbarOnly判断是否为角色 1 或 2 - 通过
isCourseStyleSidebar判断是否为学生或教师 - 不同角色渲染不同的菜单列表的嵌套组件
4. 样式系统
主题变量(src/assets/styles/variables.module.scss)
// 默认深色主题
$base-menu-color: #bfcbd9;
$base-menu-background: #304156;
// 浅色主题
$base-menu-light-color: rgba(0, 0, 0, 0.7);
$base-menu-light-background: #ffffff;
// Element Plus 主色
$--color-primary: #409EFF;
主题切换
settings.js中的sideTheme: 'theme-dark'控制侧边栏主题- 顶部导航栏
Navbar.vue可以自定义主题切换样式 - 学生/教师端使用不同样式
student-training.scss样式
5. 路由系统
- 静态路由:
constantRoutes(无需登录、注册、首页、错误页) - 动态路由:
dynamicRoutes(按角色分发) - 角色路由分发:(
platformAdminRoutes、schoolAdminRoutes、teacherRoutes、dynamicRoutes) - 学生菜单是通过 API 动态获取实训模块,并写入路由文件
src/utils/studentTrainingNavigation.js
6. 关键设计模式
实训导航页面
src/views/training/GenericTrainingPage.vue通用的实训页src/views/training/CustomTrainingStepPage.vue自定义步骤页- 左侧边栏:
TrainingAiSidebar、DynamicTrainingStepNavigator
表单 + 弹框模式
- 使用
el-table展示数据 - 使用
el-form+el-dialog完成增删改查 - 分页组件
components/Pagination/
图表模式
- 使用 ECharts 5.4
- 在
onMounted中echarts.init,onBeforeUnmount中.dispose() - 响应式通过
window.addEventListener('resize', ...)调整
7. 状态管理
| Store | 说明 | |
|---|---|---|
user |
用户登录信息、Token、角色 | |
app |
标签页展开/折叠、设备状态(mobile/desktop) | |
settings |
主题颜色、侧边栏、侧边栏、TagsView、Header 固定等 | |
permission |
动态路由、菜单权限 |
8. 定制 UI 时的关键文件
| 定制项目 | 目标文件 | |
|---|---|---|
| 主题色 / Logo | src/assets/styles/variables.module.scss、src/assets/images/top.png |
|
| 顶部导航栏 | src/layout/components/Navbar.vue |
|
| 侧边菜单 | src/layout/components/Sidebar/index.vue |
|
| 侧边菜单项 | src/layout/components/Sidebar/SidebarItem.vue |
|
| 整体布局 | src/layout/index.vue |
|
| 首页仪表盘 | src/views/index.vue |
|
| 学生页临摹表 | src/views/student/index.vue |
|
| 主题设置组件 | src/layout/components/Settings/index.vue |
|
| Element Plus 样式 | src/assets/styles/element-ui.scss |
|
| 全局变量配置 | src/settings.js |
9. 开发注意事项
- 使用
npm run dev启动开发服务器 - 样式使用 SCSS,注意使用模块导出
:export供 JS 读取 - 组件使用
<script setup>Composition API 语法 - 角色通过
role字段动态切换主题 - 学生菜单是通过动态添加很优雅的方式接入的,不要随意改动路由
最后更新:2026-09-02