浏览代码

```
feat(api): 添加购买资源和笔记课程列表API

- 添加purchase函数用于判断是否购买资源,支持工作流和课程类型
- 添加getCourseWithNotesList函数用于查询登录人记过笔记的课程列表
- 修改getDictType函数支持传参

feat(learning): 重构学习系统分类筛选功能

- 将学习分类改为学习阶段筛选
- 添加教程分类和技能标签筛选功能
- 使用字典类型替换原有的分类树结构
- 移除冗余的getCategoryListTree函数,统一使用getDictType

refactor(note): 更新笔记页面课程列表API调用

- 替换getCourseList为getCourseWithNotesList函数调用
- 优化笔记页面的课程列表数据获取逻辑
```

zhangningning 1 月之前
父节点
当前提交
636099e5f3
共有 4 个文件被更改,包括 47 次插入36 次删除
  1. 8 0
      src/api/common.js
  2. 5 1
      src/api/course.js
  3. 2 2
      src/pages/LearnNote/LearnNote.vue
  4. 32 33
      src/pages/LearningSystem/LearningSystem.vue

+ 8 - 0
src/api/common.js

@@ -3,4 +3,12 @@ import request from './request.js'
 // 上传文件
 export function uploadFile(data = {}) {
   return request.post('/upload',data)
+}
+/* 是否购买资源
+ * buyType  1-工作流  2-课程 
+ * chapterId  章节id(buyType为2必填)
+ * publishId  工作流id(buyType为1必填)
+ */
+export function purchase(data = {}) {
+  return request.get('/common/purchase',data)
 }

+ 5 - 1
src/api/course.js

@@ -9,12 +9,16 @@ export function getCourseList(data = {}) {
 export function getCourseDetail(data = {}) {
   return request.get('/course/'+data.id)
 }
+// 查询登录人记过笔记的课程列表(笔记列表旁边的课程列表)
+export function getCourseWithNotesList(data = {}) {
+  return request.get('/course/coursesWithNotesList')
+}
 // 获取课程标签
 //学习阶段  bus_study_stage
 //教程分类  bus_course_category
 //技能标签  bus_skill_tag
 export function getDictType(data = {}) {
-  return request.get('/system/dict/type')
+  return request.get('/system/dict/type',data)
 }
 // 查询章节列表
 export function getChaptersList(data = {}) {

+ 2 - 2
src/pages/LearnNote/LearnNote.vue

@@ -28,7 +28,7 @@
 </template>
 <script setup>
 import Xuxibiji from '@/pages/LearningSystem/components/xuxibiji.vue'
-import { getCourseList } from '@/api/course.js'
+import { getCourseWithNotesList } from '@/api/course.js'
 
 
 import { ref, onMounted } from 'vue'
@@ -43,7 +43,7 @@ onMounted(() => {
   getList();
 });
 const getList = async () => {
-   getCourseList({}).then(res => {
+   getCourseWithNotesList().then(res => {
     if(res.code === 200){
       console.log(res)
       list.value = res.rows || [];

+ 32 - 33
src/pages/LearningSystem/LearningSystem.vue

@@ -25,16 +25,16 @@
       <Breadcrumb />
       <div class="padding12 bg_color_fff border_radius_16 box_shadow_card">
         <div class="typeList flex-between typeborder">
-          <div class="gray font_size14 typeName">学习分类:</div>
+          <div class="gray font_size14 typeName">学习阶段:</div>
           <div class="flex_1 gap10">
-            <div class="font_size14 typeItem"  :class="{'active':searchFom.categoryId2 === ''}"
-            @click="searchFom.categoryId2 = ''; searchFom.categoryId3 = '';getList('init');categoryListTree2=[]"
+            <div class="font_size14 typeItem"  :class="{'active':searchFom.studyStage === ''}"
+            @click="searchFom.studyStage === '';getList('init');"
             :key="-1">
               全部
             </div>
             <div class="font_size14 typeItem" 
-             v-for="item in categoryListTree" :key="item.categoryId"
-             :class="{'active':searchFom.categoryId2 === item.categoryId}"
+             v-for="item in bus_study_stage" :key="item.studyStage"
+             :class="{'active':searchFom.studyStage === item.studyStage}"
              @click="searchFom.categoryId2 = item.categoryId;searchFom.categoryId3 = '';categoryListTree2=[]; getList('init');getCategoryListTreeFn2();">
               {{item.categoryName}}
             </div>
@@ -43,15 +43,15 @@
         <div class="typeList flex-between typeborder">
           <div class="gray font_size14 typeName">教程分类:</div>
           <div class="flex_1 gap10">
-            <div class="font_size14 typeItem"  :class="{'active':searchFom.categoryId2 === ''}"
-            @click="searchFom.categoryId2 = ''; searchFom.categoryId3 = '';getList('init');categoryListTree2=[]"
+            <div class="font_size14 typeItem"  :class="{'active':searchFom.courseCategory === ''}"
+            @click="searchFom.courseCategory === '';getList('init');"
             :key="-1">
               全部
             </div>
             <div class="font_size14 typeItem" 
-             v-for="item in categoryListTree" :key="item.categoryId"
-             :class="{'active':searchFom.categoryId2 === item.categoryId}"
-             @click="searchFom.categoryId2 = item.categoryId;searchFom.categoryId3 = '';categoryListTree2=[]; getList('init');getCategoryListTreeFn2();">
+             v-for="item in bus_course_category" :key="item.courseCategory"
+             :class="{'active':searchFom.courseCategory === item.courseCategory}"
+             @click="getList('init');">
               {{item.categoryName}}
             </div>
           </div>
@@ -59,15 +59,15 @@
         <div class="typeList flex-between">
           <div class="gray font_size14 typeName">技能标签:</div>
           <div class="flex_1 gap10">
-            <div class="font_size14 typeItem"  :class="{'active':searchFom.categoryId3 === ''}"
-            @click="searchFom.categoryId3 = ''; getList('init');"
+            <div class="font_size14 typeItem"  :class="{'active':searchFom.skillTag === ''}"
+            @click="searchFom.skillTag = ''; getList('init');"
             :key="-1">
               全部
             </div>
             <div class="font_size14 typeItem" 
-             v-for="item in categoryListTree2" :key="item.categoryId"
-             :class="{'active':searchFom.categoryId3 === item.categoryId}"
-             @click="searchFom.categoryId3 = item.categoryId; getList('init');">
+             v-for="item in bus_skill_tag" :key="item.skillTag"
+             :class="{'active':searchFom.skillTag === item.skillTag}"
+             @click="searchFom.skillTag = item.skillTag; getList('init');">
               {{item.categoryName}}
             </div>
           </div>
@@ -124,7 +124,7 @@
   import Pagination from '@/components/Pagination.vue'
 
   import { getCategoryListTree } from '@/api/category.js'
-  import { getCourseList } from '@/api/course.js'
+  import { getCourseList, getDictType } from '@/api/course.js'
 
   import { isLogin } from '@/utils/util.js'
   import { useI18n } from 'vue-i18n' 
@@ -159,26 +159,27 @@
 
 
   // 一级分类列表
-  const categoryListTree = ref([]);
-  // 二级分类列表
-  const categoryListTree2 = ref([]);
+  const bus_study_stage = ref([]);
+  const bus_course_category = ref([]);
+  const bus_skill_tag = ref([]);
   // 活动平台
 
   // 添加分页相关数据
   const list = ref([]);
   const listTotal = ref(0);
   const searchFom = reactive({
-    categoryId1: categoryId.value,
-    categoryId2: '',
-    categoryId3: '',
-    workflowTitle: '',
+    studyStage: '',
+    courseCategory: '',
+    skillTag: '',
     pageNum: 1,
     pageSize: 10,
   })
 
   onMounted(() => {
     getList();
-    getCategoryListTreeFn();
+    getDictTypeFn('bus_study_stage');
+    getDictTypeFn('bus_course_category');
+    getDictTypeFn('bus_skill_tag');
   })
 
    // 列表
@@ -214,16 +215,14 @@
     })
   };
 
-  const getCategoryListTreeFn = () => {
-    getCategoryListTree({categoryId: categoryId.value}).then(res => {
-      console.log(res)
-      categoryListTree.value = res.rows || [];
-    })
-  };
-  const getCategoryListTreeFn2 = () => {
-    getCategoryListTree({categoryId: searchFom.categoryId2}).then(res => {
+  //// 获取课程标签
+//学习阶段  bus_study_stage
+//教程分类  bus_course_category
+//技能标签  bus_skill_tag
+  const getDictTypeFn = (dictType) => {
+    getDictType({dictType}).then(res => {
       console.log(res)
-      categoryListTree2.value = res.rows || [];
+      [dictType].value = res.rows || [];
     })
   };