权限修正
This commit is contained in:
@@ -1,283 +0,0 @@
|
||||
# 校园新闻管理系统 - 项目结构说明
|
||||
|
||||
## 概述
|
||||
根据提供的结构图,已创建完整的前端页面层级和Vue组件文件。本文档详细说明了创建的所有文件和目录结构。
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
src/views/
|
||||
├── home/ # 首页模块
|
||||
│ ├── HomePage.vue # 首页主组件
|
||||
│ └── components/ # 首页子组件
|
||||
│ ├── LearningDataOverview.vue # 个人学习数据概览
|
||||
│ ├── BookHallSection.vue # 书报馆件
|
||||
│ ├── TopMusicRecommend.vue # TOP音乐推荐
|
||||
│ ├── NewsOverview.vue # 新闻概览
|
||||
│ ├── NavigationBar.vue # 导航栏
|
||||
│ └── SearchIndex.vue # 搜索索引
|
||||
│
|
||||
├── resource-center/ # 资源中心模块
|
||||
│ ├── ResourceCenterPage.vue # 资源中心主组件
|
||||
│ └── components/ # 资源中心子组件
|
||||
│ ├── MediaArchive.vue # 媒体档案
|
||||
│ ├── PartyHistoryLearning.vue # 党史学习
|
||||
│ ├── PolicySpeech.vue # 政策讲话
|
||||
│ ├── PolicyInterpretation.vue # 政策解读
|
||||
│ ├── RedClassic.vue # 红色经典
|
||||
│ ├── SpecialReport.vue # 专题报告
|
||||
│ └── WorldCase.vue # 世界案例
|
||||
│
|
||||
├── study-plan/ # 学习计划模块
|
||||
│ ├── StudyPlanPage.vue # 学习计划主组件
|
||||
│ └── components/ # 学习计划子组件
|
||||
│ ├── StudyTasks.vue # 学习任务(包含任务列表、任务进度)
|
||||
│ └── CourseCenter.vue # 课程中心(富文本课程)
|
||||
│
|
||||
├── user-center/ # 个人中心模块
|
||||
│ ├── UserCenterPage.vue # 个人中心主组件
|
||||
│ └── components/ # 个人中心子组件
|
||||
│ ├── LearningRecords.vue # 学习记录
|
||||
│ ├── MyFavorites.vue # 我的收藏
|
||||
│ └── MyAchievements.vue # 我的成就
|
||||
│
|
||||
├── profile/ # 我导中心模块(头像进入)
|
||||
│ ├── ProfilePage.vue # 我导中心主组件
|
||||
│ └── components/ # 我导中心子组件
|
||||
│ ├── PersonalInfo.vue # 个人信息
|
||||
│ └── AccountSettings.vue # 账号设置
|
||||
│
|
||||
├── ai-assistant/ # 智能体模块
|
||||
│ ├── AIAssistantPage.vue # AI助手主组件(包含悬浮球)
|
||||
│ └── components/ # AI助手子组件
|
||||
│ ├── ChatInterface.vue # 对话功能
|
||||
│ ├── KnowledgeBase.vue # 知识库
|
||||
│ ├── DialogHistory.vue # 历史对话记录加载
|
||||
│ └── FileInterpretation.vue # 文件解读与记录(文件上传、历史文件加载)
|
||||
│
|
||||
└── admin/ # 后端管理模块
|
||||
├── SystemOverview.vue # 系统总览(总用户数、总资源数、今日访问量、用户活跃度折线图、资源分类统计饼图)
|
||||
├── ResourceManagement.vue # 资源管理主组件
|
||||
├── LanguageManagement.vue # 语言管理主组件
|
||||
├── StudyManagement.vue # 学习管理主组件
|
||||
├── AIManagement.vue # 智能体管理主组件
|
||||
├── SystemLogs.vue # 系统日志主组件
|
||||
└── components/ # 后端管理子组件
|
||||
├── ArticleManagement.vue # 文章储备(数据采集、新增文章、课程文章)
|
||||
├── DataRecords.vue # 数据记录(菜单管理)
|
||||
├── BannerManagement.vue # Banner管理
|
||||
├── ColumnManagement.vue # 资源栏目管理
|
||||
├── TagManagement.vue # 标签管理
|
||||
├── TaskPublish.vue # 学习任务发布(任务名称、描述、周期、关联资源、接受对象)
|
||||
├── StudyRecords.vue # 学习记录
|
||||
├── AIConfig.vue # AI基础配置
|
||||
├── KnowledgeManagement.vue # 知识库管理
|
||||
├── LoginLogs.vue # 登录日志
|
||||
├── OperationLogs.vue # 操作日志
|
||||
└── SystemConfig.vue # 系统配置
|
||||
```
|
||||
|
||||
## 已存在的管理模块
|
||||
|
||||
以下管理功能已在 `src/views/manage/system/` 中实现:
|
||||
- `UserManageView.vue` - 用户管理
|
||||
- `RoleManageView.vue` - 角色管理
|
||||
- `PermissionManageView.vue` - 权限管理
|
||||
- `DeptManageView.vue` - 部门管理(组织结构管理)
|
||||
- `MenuManageView.vue` - 菜单管理
|
||||
|
||||
## 功能模块详细说明
|
||||
|
||||
### 前端功能
|
||||
|
||||
#### 1. 首页模块
|
||||
- **个人学习数据概览**: 展示用户学习统计数据
|
||||
- **书报馆件**: 图书资源展示
|
||||
- **TOP音乐推荐**: 红色音乐推荐列表
|
||||
- **新闻概览**: 最新思政新闻展示
|
||||
- **导航栏**: 快速导航入口
|
||||
- **搜索索引**: 热门标签和搜索功能
|
||||
|
||||
#### 2. 资源中心模块
|
||||
- **媒体档案**: 视频、音频等媒体资源管理
|
||||
- **党史学习**: 党史教育文章和资料(支持资源详情,二级文章向读者展示)
|
||||
- **政策讲话**: 重要政策讲话内容
|
||||
- **政策解读**: 政策文件解读说明
|
||||
- **红色经典**: 红色经典作品展示
|
||||
- **专题报告**: 各类专题报告内容
|
||||
- **世界案例**: 国际案例学习资料
|
||||
|
||||
#### 3. 学习计划模块
|
||||
- **学习任务**:
|
||||
- 任务列表展示
|
||||
- 任务进度跟踪
|
||||
- 任务状态管理(未开始、进行中、已完成)
|
||||
- **课程中心**: 富文本课程内容展示
|
||||
|
||||
#### 4. 个人中心模块
|
||||
- **学习记录**: 个人学习历史记录
|
||||
- **我的收藏**: 收藏的资源管理
|
||||
- **我的成就**: 获得的成就展示
|
||||
|
||||
#### 5. 我导中心模块(头像入口)
|
||||
- **个人信息**: 用户基本信息管理
|
||||
- **账号设置**: 密码修改、安全设置
|
||||
|
||||
#### 6. 智能体模块
|
||||
- **悬浮球**: 快速唤起AI助手
|
||||
- **对话功能**: 智能问答交互
|
||||
- **知识库**: AI知识库浏览
|
||||
- **历史对话记录**: 对话历史加载
|
||||
- **文件解读与记录**:
|
||||
- 文件上传
|
||||
- 历史文件加载
|
||||
- AI文件解读
|
||||
|
||||
### 后端管理功能
|
||||
|
||||
#### 1. 系统总览
|
||||
- **统计卡片**: 总用户数、总资源数、今日访问量、活跃用户
|
||||
- **用户活跃度折线图**: 用户活跃度趋势分析
|
||||
- **资源分类统计饼图**: 资源分类分布展示
|
||||
- **今日访问量详情**: UV、PV、平均访问时长、跳出率
|
||||
|
||||
#### 2. 用户管理(已存在)
|
||||
- 组织结构管理
|
||||
- 用户管理
|
||||
- 权限配置管理
|
||||
|
||||
#### 3. 资源管理
|
||||
- **文章储备**:
|
||||
- 数据采集功能
|
||||
- 新增文章
|
||||
- 课程文章管理
|
||||
- **数据记录**: 菜单管理(已在系统管理中实现)
|
||||
|
||||
#### 4. 语言管理
|
||||
- **Banner管理**: 首页轮播图管理
|
||||
- **资源栏目管理**: 资源分类栏目配置
|
||||
- **标签管理**: 资源标签维护
|
||||
|
||||
#### 5. 学习管理
|
||||
- **学习任务发布**:
|
||||
- 任务名称
|
||||
- 任务描述
|
||||
- 任务周期
|
||||
- 关联资源/选择
|
||||
- 任务接受对象(按部门/按权限/选人员)
|
||||
- **学习记录**: 用户学习数据查看和导出
|
||||
|
||||
#### 6. 智能体管理
|
||||
- **基础配置**: AI模型、API配置、对话参数设置
|
||||
- **知识库管理**: AI知识库内容维护
|
||||
|
||||
#### 7. 系统日志
|
||||
- **登录日志**: 用户登录记录
|
||||
- **操作日志**: 系统操作审计
|
||||
- **系统配置**: 系统参数设置
|
||||
|
||||
## 技术特点
|
||||
|
||||
### 1. 组件化设计
|
||||
- 每个功能模块都有独立的主组件
|
||||
- 复杂功能拆分为多个子组件
|
||||
- 组件可复用性高
|
||||
|
||||
### 2. 标准化结构
|
||||
- 统一的目录命名规范
|
||||
- 一致的文件命名方式
|
||||
- 清晰的层级关系
|
||||
|
||||
### 3. 功能完整性
|
||||
- 覆盖所有结构图要求的功能点
|
||||
- 包含完整的CRUD操作
|
||||
- 支持数据筛选、分页、导出等常用功能
|
||||
|
||||
### 4. UI/UX设计
|
||||
- 使用Element Plus组件库
|
||||
- 响应式布局设计
|
||||
- 现代化的UI风格
|
||||
- 良好的交互体验
|
||||
|
||||
## 后续开发建议
|
||||
|
||||
### 1. API集成
|
||||
所有组件中标记了 `TODO` 的地方需要接入实际的后端API:
|
||||
- 数据加载函数
|
||||
- 表单提交处理
|
||||
- 文件上传功能
|
||||
- 实时数据更新
|
||||
|
||||
### 2. 状态管理
|
||||
建议使用Vuex进行全局状态管理:
|
||||
- 用户信息状态
|
||||
- 权限数据缓存
|
||||
- 菜单树结构
|
||||
- AI对话上下文
|
||||
|
||||
### 3. 路由配置
|
||||
需要在 `src/router/` 中配置所有页面的路由:
|
||||
- 路由路径定义
|
||||
- 路由守卫配置
|
||||
- 动态路由加载
|
||||
- 权限路由过滤
|
||||
|
||||
### 4. 权限控制
|
||||
实现完整的权限控制系统:
|
||||
- 页面级权限
|
||||
- 按钮级权限
|
||||
- 数据级权限
|
||||
- 角色权限映射
|
||||
|
||||
### 5. 数据可视化
|
||||
系统总览页面需要集成ECharts:
|
||||
- 用户活跃度折线图
|
||||
- 资源分类饼图
|
||||
- 其他统计图表
|
||||
|
||||
### 6. 富文本编辑器
|
||||
课程内容需要集成富文本编辑器:
|
||||
- 推荐使用 TinyMCE 或 Quill
|
||||
- 支持图片、视频上传
|
||||
- 支持代码高亮
|
||||
- 支持数学公式
|
||||
|
||||
### 7. 文件管理
|
||||
完善文件上传和管理功能:
|
||||
- 文件分片上传
|
||||
- 断点续传
|
||||
- 文件预览
|
||||
- 批量操作
|
||||
|
||||
### 8. AI功能增强
|
||||
智能体模块需要接入AI服务:
|
||||
- 对话流式输出
|
||||
- 文件解读API
|
||||
- 知识库检索
|
||||
- 上下文管理
|
||||
|
||||
## 开发注意事项
|
||||
|
||||
1. **类型安全**: 所有组件都使用TypeScript,需要定义完整的类型接口
|
||||
2. **错误处理**: 添加适当的错误提示和异常处理
|
||||
3. **加载状态**: 为异步操作添加loading状态
|
||||
4. **数据验证**: 表单提交前进行数据验证
|
||||
5. **性能优化**:
|
||||
- 列表虚拟滚动
|
||||
- 图片懒加载
|
||||
- 组件按需加载
|
||||
- 路由懒加载
|
||||
6. **用户体验**:
|
||||
- 添加骨架屏
|
||||
- 优化加载动画
|
||||
- 提供操作反馈
|
||||
- 支持键盘快捷键
|
||||
|
||||
## 文件数量统计
|
||||
|
||||
- **主页面组件**: 10个
|
||||
- **子组件**: 40+个
|
||||
- **总计Vue文件**: 50+个
|
||||
|
||||
所有文件都已创建并包含基础的结构、样式和功能框架,可以直接在此基础上进行API集成和功能完善。
|
||||
|
||||
@@ -1,360 +0,0 @@
|
||||
# 前端标签系统类型化改造文档
|
||||
|
||||
## 📝 改造概述
|
||||
|
||||
前端标签系统已更新,支持3种标签类型,与后端保持一致:
|
||||
1. **文章分类标签** (tagType=1) - 替代原 `ResourceCategory`
|
||||
2. **课程分类标签** (tagType=2)
|
||||
3. **学习任务分类标签** (tagType=3)
|
||||
|
||||
### 改造日期
|
||||
2025-10-27
|
||||
|
||||
---
|
||||
|
||||
## 🔄 前端变更内容
|
||||
|
||||
### 1. 类型定义更新
|
||||
|
||||
#### 文件:`src/types/resource/index.ts`
|
||||
|
||||
**新增 TagType 枚举:**
|
||||
```typescript
|
||||
/**
|
||||
* 标签类型枚举
|
||||
*/
|
||||
export enum TagType {
|
||||
/** 文章分类标签 */
|
||||
ARTICLE_CATEGORY = 1,
|
||||
/** 课程分类标签 */
|
||||
COURSE_CATEGORY = 2,
|
||||
/** 学习任务分类标签 */
|
||||
LEARNING_TASK_CATEGORY = 3
|
||||
}
|
||||
```
|
||||
|
||||
**Tag 接口更新:**
|
||||
```typescript
|
||||
export interface Tag extends BaseDTO {
|
||||
/** 标签ID */
|
||||
tagID?: string;
|
||||
/** 标签名称 */
|
||||
name?: string;
|
||||
/** 标签描述 */
|
||||
description?: string;
|
||||
/** 标签颜色 */
|
||||
color?: string;
|
||||
/** 标签类型(1-文章分类标签 2-课程分类标签 3-学习任务分类标签) */
|
||||
tagType?: number; // ✅ 新增字段
|
||||
/** 排序号 */
|
||||
orderNum?: number;
|
||||
/** 状态(0禁用 1启用) */
|
||||
status?: number;
|
||||
/** 创建者 */
|
||||
creator?: string;
|
||||
/** 更新者 */
|
||||
updater?: string;
|
||||
}
|
||||
```
|
||||
|
||||
**ResourceVO 接口更新:**
|
||||
```typescript
|
||||
/**
|
||||
* 资源视图对象(已废弃category字段)
|
||||
* @deprecated category字段已废弃,请使用tags字段中tagType=1的标签
|
||||
*/
|
||||
export interface ResourceVO extends BaseDTO{
|
||||
resource: Resource;
|
||||
/** @deprecated 已废弃,改用tags字段(tagType=1表示文章分类标签) */
|
||||
category?: ResourceCategory;
|
||||
tags: Tag[];
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. API 接口更新
|
||||
|
||||
#### 文件:`src/apis/resource/resourceTag.ts`
|
||||
|
||||
**新增方法:**
|
||||
```typescript
|
||||
/**
|
||||
* 根据标签类型获取标签列表
|
||||
* @param tagType 标签类型(1-文章分类标签 2-课程分类标签 3-学习任务分类标签)
|
||||
* @returns Promise<ResultDomain<Tag>>
|
||||
*/
|
||||
async getTagsByType(tagType: number): Promise<ResultDomain<Tag>> {
|
||||
const response = await api.get<Tag>(`/news/tags/type/${tagType}`);
|
||||
return response.data;
|
||||
}
|
||||
```
|
||||
|
||||
**使用示例:**
|
||||
```typescript
|
||||
import { resourceTagApi } from '@/apis/resource';
|
||||
import { TagType } from '@/types/resource';
|
||||
|
||||
// 获取文章分类标签
|
||||
const articleTags = await resourceTagApi.getTagsByType(TagType.ARTICLE_CATEGORY);
|
||||
|
||||
// 获取课程分类标签
|
||||
const courseTags = await resourceTagApi.getTagsByType(TagType.COURSE_CATEGORY);
|
||||
|
||||
// 获取学习任务分类标签
|
||||
const taskTags = await resourceTagApi.getTagsByType(TagType.LEARNING_TASK_CATEGORY);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. ResourceCategory API 废弃
|
||||
|
||||
#### 文件:`src/apis/resource/resourceCategory.ts`
|
||||
|
||||
**⚠️ 此 API 已废弃!**
|
||||
|
||||
从2025-10-27起,资源分类功能已迁移到标签系统(Tag)中。
|
||||
|
||||
**API 迁移对照表:**
|
||||
|
||||
| 原 ResourceCategory API | 新 Tag API | 说明 |
|
||||
|------------------------|-----------|------|
|
||||
| `resourceCategoryApi.getCategoryList()` | `resourceTagApi.getTagsByType(1)` | 获取文章分类标签列表 |
|
||||
| `resourceCategoryApi.getCategoryById(id)` | `resourceTagApi.getTagById(id)` | 获取标签详情 |
|
||||
| `resourceCategoryApi.createCategory(category)` | `resourceTagApi.createTag({...category, tagType: 1})` | 创建文章分类标签 |
|
||||
| `resourceCategoryApi.updateCategory(category)` | `resourceTagApi.updateTag(category)` | 更新标签 |
|
||||
| `resourceCategoryApi.deleteCategory(id)` | `resourceTagApi.deleteTag(id)` | 删除标签 |
|
||||
|
||||
---
|
||||
|
||||
## 📦 已更新的组件
|
||||
|
||||
### 1. ArticleManagementView.vue
|
||||
**文件:** `src/views/admin/manage/resource/ArticleManagementView.vue`
|
||||
|
||||
**变更内容:**
|
||||
```typescript
|
||||
// 修改前
|
||||
import { resourceApi, resourceCategoryApi } from '@/apis/resource'
|
||||
const categoryList = ref<ResourceCategory[]>([]);
|
||||
const res = await resourceCategoryApi.getCategoryList();
|
||||
|
||||
// 修改后
|
||||
import { resourceApi, resourceTagApi } from '@/apis/resource'
|
||||
const categoryList = ref<Tag[]>([]); // 改为使用Tag类型(tagType=1表示文章分类)
|
||||
const res = await resourceTagApi.getTagsByType(1); // 1 = 文章分类标签
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. ArticleAddView.vue
|
||||
**文件:** `src/views/article/ArticleAddView.vue`
|
||||
|
||||
**变更内容:**
|
||||
```typescript
|
||||
// 修改前
|
||||
import { resourceCategoryApi, resourceTagApi, resourceApi } from '@/apis/resource';
|
||||
const categoryList = ref<ResourceCategory[]>([]);
|
||||
const result = await resourceCategoryApi.getCategoryList();
|
||||
|
||||
// 修改后
|
||||
import { resourceTagApi, resourceApi } from '@/apis/resource';
|
||||
const categoryList = ref<Tag[]>([]); // 改为使用Tag类型(tagType=1表示文章分类)
|
||||
const result = await resourceTagApi.getTagsByType(TagType.ARTICLE_CATEGORY);
|
||||
```
|
||||
|
||||
**模板更新:**
|
||||
```vue
|
||||
<!-- 修改前 -->
|
||||
<el-option
|
||||
v-for="category in categoryList"
|
||||
:key="category.tagID || category.id"
|
||||
:label="category.name"
|
||||
:value="category.tagID || category.id || ''"
|
||||
/>
|
||||
|
||||
<!-- 修改后 -->
|
||||
<el-option
|
||||
v-for="category in categoryList"
|
||||
:key="category.tagID || category.id"
|
||||
:label="category.name"
|
||||
:value="category.tagID || category.id || ''"
|
||||
/>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 3. ResourceSideBar.vue
|
||||
**文件:** `src/views/resource-center/components/ResourceSideBar.vue`
|
||||
|
||||
**变更内容:**
|
||||
```typescript
|
||||
// 修改前
|
||||
import { resourceCategoryApi } from '@/apis/resource';
|
||||
import type { ResourceCategory } from '@/types/resource';
|
||||
const categories = ref<ResourceCategory[]>([]);
|
||||
const res = await resourceCategoryApi.getCategoryList();
|
||||
|
||||
// 修改后
|
||||
import { resourceTagApi } from '@/apis/resource';
|
||||
import type { Tag, TagType } from '@/types/resource';
|
||||
const categories = ref<Tag[]>([]); // 改为使用Tag类型(tagType=1表示文章分类)
|
||||
const res = await resourceTagApi.getTagsByType(1); // 1 = 文章分类标签
|
||||
```
|
||||
|
||||
**模板更新:**
|
||||
```vue
|
||||
<!-- 修改前 -->
|
||||
<div
|
||||
v-for="category in categories"
|
||||
:key="category.tagID"
|
||||
:class="{ active: category.tagID === activeCategoryId }"
|
||||
>
|
||||
|
||||
<!-- 修改后 -->
|
||||
<div
|
||||
v-for="category in categories"
|
||||
:key="category.tagID || category.id"
|
||||
:class="{ active: (category.tagID || category.id) === activeCategoryId }"
|
||||
>
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎓 学习任务和课程标签说明
|
||||
|
||||
### 课程标签(tagType=2)
|
||||
|
||||
**类型定义:** `src/types/study/index.ts`
|
||||
|
||||
课程标签使用统一的标签系统(tb_tag表):
|
||||
- 使用 `tagType=2` 表示课程分类标签
|
||||
- 通过 `resourceTagApi.getTagsByType(TagType.COURSE_CATEGORY)` 获取课程分类标签
|
||||
|
||||
**使用示例:**
|
||||
```typescript
|
||||
import { resourceTagApi } from '@/apis/resource';
|
||||
import { TagType } from '@/types/resource';
|
||||
|
||||
// 在课程管理页面加载课程分类标签
|
||||
async function loadCourseTags() {
|
||||
const result = await resourceTagApi.getTagsByType(TagType.COURSE_CATEGORY);
|
||||
if (result.success) {
|
||||
courseTags.value = result.dataList || [];
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 学习任务标签(tagType=3)
|
||||
|
||||
**类型定义:** `src/types/study/index.ts`
|
||||
|
||||
学习任务分类使用统一的标签系统(tb_tag表):
|
||||
- 使用 `tagType=3` 表示学习任务分类标签
|
||||
- 通过 `resourceTagApi.getTagsByType(TagType.LEARNING_TASK_CATEGORY)` 获取学习任务分类标签
|
||||
|
||||
**使用示例:**
|
||||
```typescript
|
||||
import { resourceTagApi } from '@/apis/resource';
|
||||
import { TagType } from '@/types/resource';
|
||||
|
||||
// 在学习任务管理页面加载任务分类标签
|
||||
async function loadTaskTags() {
|
||||
const result = await resourceTagApi.getTagsByType(TagType.LEARNING_TASK_CATEGORY);
|
||||
if (result.success) {
|
||||
taskTags.value = result.dataList || [];
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📋 迁移检查清单
|
||||
|
||||
### 开发人员检查清单
|
||||
|
||||
- [x] ✅ 更新 Tag 类型定义(添加 tagType 字段)
|
||||
- [x] ✅ 添加 TagType 枚举
|
||||
- [x] ✅ 更新 resourceTag API(添加 getTagsByType 方法)
|
||||
- [x] ✅ 废弃 resourceCategory API(添加迁移说明)
|
||||
- [x] ✅ 更新 ArticleManagementView 组件
|
||||
- [x] ✅ 更新 ArticleAddView 组件
|
||||
- [x] ✅ 更新 ResourceSideBar 组件
|
||||
- [x] ✅ 添加课程标签说明文档
|
||||
- [x] ✅ 添加学习任务标签说明文档
|
||||
|
||||
### 未来开发任务
|
||||
|
||||
当开发课程管理或学习任务管理功能时:
|
||||
|
||||
- [ ] 在课程管理页面使用 `resourceTagApi.getTagsByType(2)` 获取课程分类标签
|
||||
- [ ] 在学习任务管理页面使用 `resourceTagApi.getTagsByType(3)` 获取任务分类标签
|
||||
- [ ] 为课程添加分类标签选择功能
|
||||
- [ ] 为学习任务添加分类标签选择功能
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
### 1. 向后兼容性
|
||||
|
||||
- `ResourceCategory` 类型和 `resourceCategoryApi` 暂时保留,但标记为 `@deprecated`
|
||||
- 建议尽快迁移到新的标签 API
|
||||
- 旧代码仍可运行,但会在 IDE 中显示废弃警告
|
||||
|
||||
### 2. 字段映射变化
|
||||
|
||||
| ResourceCategory | Tag | 说明 |
|
||||
|-----------------|-----|------|
|
||||
| `tagID` | `tagID` | 唯一标识字段名变更 |
|
||||
| `name` | `name` | 名称字段保持不变 |
|
||||
| `description` | `description` | 描述字段保持不变 |
|
||||
| - | `tagType` | 新增:标签类型(1/2/3) |
|
||||
| - | `color` | 新增:标签颜色 |
|
||||
|
||||
### 3. 导入路径
|
||||
|
||||
所有标签相关的类型和 API 现在统一从以下位置导入:
|
||||
|
||||
```typescript
|
||||
// 类型导入
|
||||
import { Tag, TagType } from '@/types/resource';
|
||||
|
||||
// API 导入
|
||||
import { resourceTagApi } from '@/apis/resource';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 总结
|
||||
|
||||
本次前端标签系统改造:
|
||||
|
||||
1. ✅ **统一标签管理** - 文章、课程、学习任务使用统一的标签系统
|
||||
2. ✅ **类型化分类** - 通过 tagType 区分不同业务领域的标签
|
||||
3. ✅ **简化架构** - 废弃 ResourceCategory,统一使用 Tag
|
||||
4. ✅ **灵活扩展** - 为未来添加新标签类型预留空间
|
||||
5. ✅ **向后兼容** - 旧 API 仍可使用(标记为废弃)
|
||||
|
||||
### 迁移前后对比
|
||||
|
||||
| 项目 | 迁移前 | 迁移后 |
|
||||
|------|--------|--------|
|
||||
| 文章分类 | `resourceCategoryApi.getCategoryList()` | `resourceTagApi.getTagsByType(1)` |
|
||||
| 课程分类 | 无 | `resourceTagApi.getTagsByType(2)` |
|
||||
| 学习任务分类 | 无 | `resourceTagApi.getTagsByType(3)` |
|
||||
| 类型定义 | `ResourceCategory` | `Tag` (with tagType) |
|
||||
| 字段名 | `tagID` | `tagID` |
|
||||
|
||||
改造完成后,系统将具备更清晰的业务边界、更简洁的代码结构和更灵活的扩展能力。
|
||||
|
||||
---
|
||||
|
||||
## 📚 相关文档
|
||||
|
||||
- 后端迁移文档:`schoolNewsServ/.bin/mysql/sql/TAG_TYPE_MIGRATION.md`
|
||||
- 后端移除清单:`schoolNewsServ/.bin/mysql/sql/RESOURCE_CATEGORY_REMOVAL.md`
|
||||
- 前端项目结构:`schoolNewsWeb/PROJECT_STRUCTURE.md`
|
||||
|
||||
Reference in New Issue
Block a user