From 754865e23efb5e79818a9ff982dbde238333d66a Mon Sep 17 00:00:00 2001 From: chenghuan Date: Fri, 21 Nov 2025 10:54:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=EF=BC=9A=E9=98=BF=E9=87=8C?= =?UTF-8?q?=E4=BA=91=E8=A7=86=E9=A2=91=E6=92=AD=E6=94=BE=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/modules/user.ts | 5 +- api/modules/video.ts | 68 ++ components/ali-video/PopupPlayer.vue | 295 ++++++++ components/ali-video/VideoList.vue | 123 ++++ components/ali-video/index.vue | 1015 ++++++++++++++++++++++++++ components/course/VideoPlayer.vue | 612 ++++++++++------ pages/course/details/chapter.vue | 42 +- style/tailwind.css | 12 +- types/video.d.ts | 210 ++++++ 9 files changed, 2132 insertions(+), 250 deletions(-) create mode 100644 api/modules/video.ts create mode 100644 components/ali-video/PopupPlayer.vue create mode 100644 components/ali-video/VideoList.vue create mode 100644 components/ali-video/index.vue create mode 100644 types/video.d.ts diff --git a/api/modules/user.ts b/api/modules/user.ts index 31174d3..0b1fbd8 100644 --- a/api/modules/user.ts +++ b/api/modules/user.ts @@ -11,9 +11,6 @@ import type { IPageData } from '@/types/user' import { SERVICE_MAP } from '@/api/config' -import { useUserStore } from '@/stores/user' - -const userStore = useUserStore() /** * 获取用户信息 @@ -46,7 +43,7 @@ export async function getOrderList(current: number, limit: number, orderStatus: const res = await mainClient.request }>>({ url: 'common/buyOrder/commonBuyOrderList', method: 'POST', - data: { current, limit, orderStatus, come: '10', userId: userStore.id } + data: { current, limit, orderStatus, come: '10', userId: uni.getStorageSync('userInfo').id } }) return res } diff --git a/api/modules/video.ts b/api/modules/video.ts new file mode 100644 index 0000000..a6a284e --- /dev/null +++ b/api/modules/video.ts @@ -0,0 +1,68 @@ +// api/modules/video.ts +/** + * 视频相关 API + * 完全保持原项目接口路径和调用方式 + */ + +import { createRequestClient } from '../request' +import { SERVICE_MAP } from '../config' +import type { + ICheckVideoRequest, + ICheckVideoResponse, + ISaveCoursePositionRequest, + ISaveCoursePositionResponse, + IAddErrorCourseRequest, + IAddErrorCourseResponse +} from '@/types/video' + +const client = createRequestClient({ baseURL: SERVICE_MAP.MAIN }) + +/** + * 视频相关 API + */ +export const videoApi = { + /** + * 检查视频并获取播放凭证 + * 原接口: sociology/course/checkVideo + * + * @param data 视频信息(id, video, courseId, catalogueId, chapterId 等) + * @returns 视频详细信息,包含 playAuth, videoId, m3u8Url, videoUrl 等 + */ + checkVideo(data: ICheckVideoRequest) { + return client.request({ + url: 'sociology/course/checkVideo', + method: 'POST', + data + }) + }, + + /** + * 保存课程播放位置 + * 原接口: sociology/course/saveCoursePosition + * + * @param data 包含 videoId 和 position(秒数) + * @returns 保存结果 + */ + saveCoursePosition(data: ISaveCoursePositionRequest) { + return client.request({ + url: 'sociology/course/saveCoursePosition', + method: 'POST', + data + }) + }, + + /** + * 记录 iOS 不支持的视频 + * 原接口: medical/course/addErrorCourse + * + * @param data 包含 chapterId, videoId, sort + * @returns 记录结果 + */ + addErrorCourse(data: IAddErrorCourseRequest) { + return client.request({ + url: 'medical/course/addErrorCourse', + method: 'POST', + data + }) + } +} diff --git a/components/ali-video/PopupPlayer.vue b/components/ali-video/PopupPlayer.vue new file mode 100644 index 0000000..c67f708 --- /dev/null +++ b/components/ali-video/PopupPlayer.vue @@ -0,0 +1,295 @@ + + + + + + + diff --git a/components/ali-video/VideoList.vue b/components/ali-video/VideoList.vue new file mode 100644 index 0000000..6666325 --- /dev/null +++ b/components/ali-video/VideoList.vue @@ -0,0 +1,123 @@ + + + + + diff --git a/components/ali-video/index.vue b/components/ali-video/index.vue new file mode 100644 index 0000000..a89c7d3 --- /dev/null +++ b/components/ali-video/index.vue @@ -0,0 +1,1015 @@ + + + + + + + + diff --git a/components/course/VideoPlayer.vue b/components/course/VideoPlayer.vue index fc17685..d14fb91 100644 --- a/components/course/VideoPlayer.vue +++ b/components/course/VideoPlayer.vue @@ -1,242 +1,394 @@ - - - diff --git a/pages/course/details/chapter.vue b/pages/course/details/chapter.vue index d529689..41d8299 100644 --- a/pages/course/details/chapter.vue +++ b/pages/course/details/chapter.vue @@ -7,7 +7,7 @@ - --> + @@ -107,10 +113,11 @@