yuhongqi 1 месяц назад
Родитель
Сommit
c82a1071c3
3 измененных файлов с 116 добавлено и 53 удалено
  1. 14 0
      api/home.js
  2. 51 40
      pages/home/index.vue
  3. 51 13
      pages_index/course.vue

+ 14 - 0
api/home.js

@@ -30,3 +30,17 @@ export function getHomeGoods(data) {
 export function getHomeGoodsRecommend(data) {
 	return request('/app/index/home/goods/recommend', data || {}, 'GET');
 }
+
+/**
+ * 公域课程二级分类(CourseController.listPublicCourseCategory)
+ */
+export function listPublicCourseCategory(data) {
+	return request('/course_auto/app/course/publicCourseCategory/list', data || {}, 'GET');
+}
+
+/**
+ * 公域课程列表(CourseController.listPublicCourse)
+ */
+export function listPublicCourse(data) {
+	return request('/course_auto/app/course/publicCourse/list', data || {}, 'GET');
+}

+ 51 - 40
pages/home/index.vue

@@ -136,57 +136,65 @@
 </template>
 
 <script>
+import { listPublicCourseCategory, listPublicCourse } from '@/api/home.js'
+
 export default {
 	data() {
 		return {
 			statusBarHeight: uni.getSystemInfoSync().statusBarHeight + 'px',
 			videoTagIndex: 0,
-			activeId:0,
+			activeId: 0,
 			videoTags: ['恩施', '长白山', '吉林', '武当山', '张家界', '更多'],
-			navList:[
-				{id: 31,categoryName: "精选"},
-				{id: 37,categoryName: "健康食品"},
-				{id: 35,categoryName: "绿色有机"},
-				{id: 34,categoryName: "健康食品"},
-				{id: 33,categoryName: "绿色有机"},
-				{id: 32,categoryName: "健康食品"},
-				{id: 38,categoryName: "绿色有机"}
-			],
-			courses: [
-				{
-					name: '歌唱家刘金的《0基础金曲演唱速练课》',
-					views: '9239',
-					tag: '0基础 金曲演唱速练',
-					cover: ''
-				},
-				{
-					name: '资深编辑邹方斌讲《毛笔书法修心课》',
-					views: '7.2w',
-					tag: '毛笔书法修心课',
-					cover: ''
-				},
-				{
-					name: '张斌《元气八段锦》系列课',
-					views: '5.9w',
-					tag: '元气八段锦',
-					cover: ''
-				},
-				{
-					name: '翔哥精讲摄影课-手机微距拍摄技巧分享',
-					views: '100w+',
-					tag: '手机微距 拍摄技巧分享',
-					cover: ''
-				}
-			],
+			navList: [],
+			courses: [],
 			menuButtonInfo: {}, // 胶囊按钮布局信息
 		}
 	},
 	onLoad() {
 		this.getMenuButtonInfo(); // 初始化获取胶囊信息
+		this.initPublicCourseData();
 	},
 	methods: {
-		onSelectByIndex(index) {
-			this.activeId=index
+		onSelectByIndex(cateId) {
+			this.activeId = cateId;
+			this.getPublicCourseList(cateId);
+		},
+		async initPublicCourseData() {
+			try {
+				const res = await listPublicCourseCategory({ pageNum: 1, pageSize: 10 });
+				const list = (res && res.data && res.data.list) || [];
+				this.navList = list.map(item => ({
+					id: item.cateId,
+					categoryName: item.cateName
+				}));
+				if (this.navList.length > 0) {
+					this.activeId = this.navList[0].id;
+					await this.getPublicCourseList(this.activeId);
+				} else {
+					this.courses = [];
+				}
+			} catch (e) {
+				this.navList = [];
+				this.courses = [];
+			}
+		},
+		async getPublicCourseList(subCateId) {
+			try {
+				const res = await listPublicCourse({
+					pageNum: 1,
+					pageSize: 10,
+					subCateId: subCateId || null
+				});
+				const list = (res && res.data && res.data.list) || [];
+				this.courses = list.map(item => ({
+					courseId: item.courseId,
+					name: item.courseTitle || item.courseName || '',
+					views: item.watchUserCount || 0,
+					cover: item.imgUrl || ''
+				}));
+			} catch (e) {
+				this.courses = [];
+			}
 		},
 		// 获取胶囊按钮布局参数
 		getMenuButtonInfo() {
@@ -219,8 +227,11 @@ export default {
 			uni.navigateTo({ url: '/pages_index/course' })
 		},
 		onCourseClick(course) {
-			//uni.showToast({ title: course.name, icon: 'none' })
-		uni.navigateTo({ url: '/pages_index/courseDetail'})
+			if (course && course.courseId) {
+				uni.navigateTo({ url: '/pages_course/learn?courseId=' + course.courseId + '&type=1' })
+				return;
+			}
+			uni.navigateTo({ url: '/pages_index/courseDetail'})
 		}
 	}
 }

+ 51 - 13
pages_index/course.vue

@@ -27,7 +27,7 @@
 						:key="idx"
 						class="tag-item"
 						:class="{ active: categoryIndex === idx }"
-						@click="categoryIndex = idx"
+						@click="onSelectCategory(idx)"
 					>
 						<text>{{ cat }}</text>
 					</view>
@@ -141,6 +141,8 @@
 </template>
 
 <script>
+import { listPublicCourseCategory, listPublicCourse } from '@/api/home.js'
+
 export default {
 	data() {
 		return {
@@ -148,15 +150,9 @@ export default {
 			tabIndex: 0,
 			categoryExpand: true,
 			categoryIndex: 0,
-			categories: ['全部', '歌唱艺术', '太极养生', '防骗指南', '手机摄影', '棋牌益智', '用药指导', '膳食营养', '慢病管理'],
-			courseList: [
-				{ title: '刘金的《0基础金曲演唱速练课》', views: '9239', cover: '' },
-				{ title: '邹方斌讲《毛笔书法修心课》', views: '10.8w', cover: '' },
-				{ title: '张斌《元气八段锦》系列课', views: '2.5w', cover: '' },
-				{ title: '翔哥精讲摄影课—手机微距拍摄技巧...', views: '100w+', cover: '' },
-				{ title: '道家智慧 入门21讲', views: '1.2w', cover: '' },
-				{ title: '入门进阶必修 瑜伽呼吸全精讲', views: '3.6w', cover: '' }
-			],
+			categories: [],
+			categoryRows: [],
+			courseList: [],
 			recentList: [
 				{
 					date: '2026-02-08',
@@ -181,13 +177,55 @@ export default {
 		}
 	},
 	onLoad() {
-		// 若无最近学习,可置空 recentList 显示空态
-		// this.recentList = [];
+		// 默认先查一次课程(不带分类参数),再加载分类标签
+		this.initPublicCourseData()
 	},
 	methods: {
+		async initPublicCourseData() {
+      await this.getCategoryList()
+			await this.getCourseList()
+		},
+		async getCategoryList() {
+			try {
+				const res = await listPublicCourseCategory({ pageNum: 1, pageSize: 10 })
+				const list = (res && res.data && res.data.list) || []
+				this.categoryRows = [{ cateId: null, cateName: '全部' }, ...list]
+				this.categories = this.categoryRows.map(item => item.cateName || '')
+			} catch (e) {
+				this.categoryRows = [{ cateId: null, cateName: '全部' }]
+				this.categories = ['全部']
+			}
+		},
+		async getCourseList(subCateId) {
+			try {
+				const params = { pageNum: 1, pageSize: 10 }
+				if (subCateId) {
+					params.subCateId = subCateId
+				}
+				const res = await listPublicCourse(params)
+				const list = (res && res.data && res.data.list) || []
+				this.courseList = list.map(item => ({
+					courseId: item.courseId,
+					title: item.courseTitle || item.courseName || '',
+					views: item.watchUserCount || 0,
+					cover: item.imgUrl || ''
+				}))
+			} catch (e) {
+				this.courseList = []
+			}
+		},
+		onSelectCategory(idx) {
+			this.categoryIndex = idx
+			const selected = this.categoryRows[idx]
+			const subCateId = selected && selected.cateId ? selected.cateId : null
+			this.getCourseList(subCateId)
+		},
 		onCourseClick(course) {
+			if (course && course.courseId) {
+				uni.navigateTo({ url: '/pages_course/learn?courseId=' + course.courseId + '&type=1' })
+				return
+			}
 			uni.showToast({ title: course.title || '立即观看', icon: 'none' })
-			// uni.navigateTo({ url: '/pages_course/videovip?id=' + (course.id || '') })
 		}
 	}
 }