hookehuyr

feat(课程评论): 实现课程评论的点赞、取消点赞及分页加载功能

添加了课程评论的点赞和取消点赞功能,并优化了评论列表的分页加载逻辑。同时,修复了评论提交后的列表刷新问题,确保数据一致性。
/*
* @Date: 2025-04-15 09:32:07
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-04-18 14:43:46
* @LastEditTime: 2025-04-18 17:15:52
* @FilePath: /mlaj/src/api/course.js
* @Description: 课程模块相关接口
*/
......@@ -15,6 +15,8 @@ const Api = {
GROUP_COMMENT_ADD: '/srv/?a=group_comment_add',
GROUP_COMMENT_EDIT: '/srv/?a=group_comment_edit',
GROUP_COMMENT_DEL: '/srv/?a=group_comment_del',
GROUP_COMMENT_LIKE: '/srv/?a=group_comment_like',
GROUP_COMMENT_DISLIKE: '/srv/?a=group_comment_dislike',
}
/**
......@@ -44,6 +46,7 @@ export const getScheduleCourseAPI = (params) => fn(fetch.get(Api.GET_SCHEDULE_CO
/**
* @description: 获取课程评论列表
* @param: i 课程 ID
* @param: schedule_id 章节ID,非必须,在课程章节内查询时需要
* @param: limit 每页数量 默认10
* @param: page 页码
* @return: data: { comment_score 课程评论分数, comment_count 评论数量, comment_list [{ id 评论id, created_by 评论人ID, name 评论人姓名, note 评论内容, score 分数, create_time 评论时间}] 评论列表}
......@@ -53,6 +56,7 @@ export const getGroupCommentListAPI = (params) => fn(fetch.get(Api.GET_GROUP_COM
/**
* @description: 添加课程评论
* @param: i 课程 ID
* @param: schedule_id 章节ID,非必须,在课程章节添加时需要
* @param: note 评论内容
* @param: score 分数
* @return: data: ''
......@@ -70,7 +74,21 @@ export const editGroupCommentAPI = (params) => fn(fetch.post(Api.GROUP_COMMENT_E
/**
* @description: 删除课程评论
* @param: i 课程 ID
* @param: i 课程ID
* @return: data: ''
*/
export const delGroupCommentAPI = (params) => fn(fetch.post(Api.GROUP_COMMENT_DEL, params))
/**
* @description: 点赞章节评论
* @param: i 评论ID
* @return: data: ''
*/
export const addGroupCommentLikeAPI = (params) => fn(fetch.post(Api.GROUP_COMMENT_LIKE, params))
/**
* @description: 取消点赞章节评论
* @param: i 评论ID
* @return: data: ''
*/
export const delGroupCommentLikeAPI = (params) => fn(fetch.post(Api.GROUP_COMMENT_DISLIKE, params))
......
......@@ -20,7 +20,7 @@ declare module 'vue' {
GradientHeader: typeof import('./components/ui/GradientHeader.vue')['default']
LiveStreamCard: typeof import('./components/ui/LiveStreamCard.vue')['default']
MenuItem: typeof import('./components/ui/MenuItem.vue')['default']
ReviewPopup: typeof import('./components/ui/ReviewPopup.vue')['default']
ReviewPopup: typeof import('./components/courses/ReviewPopup.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
SearchBar: typeof import('./components/ui/SearchBar.vue')['default']
......
This diff is collapsed. Click to expand it.