From 845296555697648d2ad71d339b2c5d2cb74994bf Mon Sep 17 00:00:00 2001 From: huertian <huertian@qq.com> Date: Thu, 2 Jan 2025 16:44:19 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E5=B8=83=E5=B1=80?= =?UTF-8?q?=E5=92=8C=E6=98=BE=E7=A4=BA=201.=20=E4=BF=AE=E5=A4=8D=E6=95=99?= =?UTF-8?q?=E5=B8=88=E5=90=8D=E7=A7=B0=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98?= =?UTF-8?q?=EF=BC=8C=E7=8E=B0=E5=9C=A8=E6=98=BE=E7=A4=BA=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E7=9A=84=E6=95=99=E5=B8=88=E5=90=8D=E7=A7=B0=202.=20=E5=9B=BA?= =?UTF-8?q?=E5=AE=9A=E8=BF=9B=E5=BA=A6=E6=9D=A1=E5=AE=BD=E5=BA=A6=203.=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=95=B4=E4=BD=93=E5=B8=83=E5=B1=80=E7=BB=93?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- API文档.md | 21 ++++++++++----------- src/pages/index/index.vue | 34 ++++++++++++++++++---------------- src/pages/lesson/index.vue | 6 ++++++ src/pages/progress/index.vue | 7 ++++++- 4 files changed, 40 insertions(+), 28 deletions(-) diff --git a/API文档.md b/API文档.md index e2fecdd..9575ce0 100644 --- a/API文档.md +++ b/API文档.md @@ -280,7 +280,7 @@ - **查询参数**: - `page`: 页码(从 1 开始) - `size`: 每页数量(默认 10) - - `userId`: 用户ID(可选) + - `userId`: 用户 ID(可选) - **成功响应**: ```json { @@ -326,10 +326,10 @@ ### 2. 获取单个课程任务 - **接口**:`GET /api/lesson-tasks/{id}` -- **描述**:根据ID获取课程任务详情 +- **描述**:根据 ID 获取课程任务详情 - **认证**:需要 - **路径参数**: - - `id`: 课程任务ID + - `id`: 课程任务 ID - **成功响应**: ```json { @@ -364,8 +364,7 @@ { "courseName": "测试课程", "microLessonName": "测试微课", - "userId": 1, - "advise": "任务说明" + "userId": 1 } ``` - **成功响应**: @@ -385,7 +384,7 @@ "videoCreateTime": null, "videoConfirmTime": null, "finishTime": null, - "advise": "任务说明", + "advise": null, "createdAt": 1735003870, "updatedAt": 1735003870 } @@ -398,7 +397,7 @@ - **描述**:更新课程任务信息 - **认证**:需要 - **路径参数**: - - `id`: 课程任务ID + - `id`: 课程任务 ID - **请求体**: ```json { @@ -436,7 +435,7 @@ - **描述**:获取指定部门的课程任务列表 - **认证**:需要 - **路径参数**: - - `departmentId`: 部门ID + - `departmentId`: 部门 ID - **查询参数**: - `page`: 页码(从 1 开始) - `size`: 每页数量(默认 10) @@ -481,7 +480,7 @@ - **描述**:删除指定的课程任务 - **认证**:需要 - **路径参数**: - - `id`: 课程任务ID + - `id`: 课程任务 ID - **成功响应**: ```json { @@ -493,7 +492,7 @@ ## 注意事项 -1. 所有时间戳字段均使用秒级时间戳(10位) +1. 所有时间戳字段均使用秒级时间戳(10 位) 2. 课程任务状态变更时会自动记录相应的时间戳 3. 部门课程任务列表会额外返回用户名信息 -4. 分页参数中的页码从1开始 +4. 分页参数中的页码从 1 开始 diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index c9f8e2e..94d4150 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -142,7 +142,13 @@ const getUsernameById = (userId: number) => { const refresh = async () => { try { + const startTime = Date.now() await loadLessons() + const endTime = Date.now() + const duration = endTime - startTime + if (duration < 500) { + await new Promise(resolve => setTimeout(resolve, 500 - duration)) + } } catch (err) { } finally { uni.stopPullDownRefresh() @@ -175,12 +181,6 @@ onLoad(() => { <div class="flex flex-col gap-1"> <p class="pt-1"> {{ courseName || '无标题课程' }} - <wd-badge hidden is-dot :top="-10"> - <span v-if="!user.hasRole('teacher') && getUsernameById(courses[0]?.userId)" - class=" text-xs text-gray-400 ml-2"> - <!-- {{ getUsernameById(courses[0]?.userId) }} --> - </span> - </wd-badge> </p> <div class="flex items-center gap-1"> <wd-tag v-if="(() => { @@ -238,9 +238,9 @@ onLoad(() => { </template> <div class="w-full"> <wd-status-tip v-if="courses.length === 0" image="content" tip="没有课程小节" /> - <div v-else v-for="(lesson, i) in courses" :key="i" @click="openLessonDetail(lesson.id)" class="w-full py-2 flex justify-between items-center gap-20 border-b border-b-solid border-neutral-100 - last:border-b-0 first:pt-0 last:pb-0"> - <div class="flex items-center gap-1"> + <div v-else v-for="(lesson, i) in courses" :key="i" @click="openLessonDetail(lesson.id)" + class="w-full py-2 gap-12 flex justify-between items-center border-b border-b-solid border-neutral-100 last:border-b-0 first:pt-0 last:pb-0"> + <div class="flex items-center gap-1 self-center"> <wd-badge is-dot hidden> <div is-dot> <div v-if="calcLessonProgress(lesson) === 100" class="i-tabler-circle-check"></div> @@ -249,16 +249,18 @@ onLoad(() => { </div> </wd-badge> <span>{{ lesson.microLessonName || '无标题微课' }}</span> + </div> + <div class="flex items-center gap-3 shrink-0"> <wd-badge hidden is-dot :top="-10"> - <span v-if="!user.hasRole('teacher') && getUsernameById(courses[0]?.userId)" - class=" text-xs text-gray-400 ml-2"> - {{ getUsernameById(courses[0]?.userId) }} + <span v-if="!user.hasRole('teacher') && getUsernameById(lesson.userId)" + class="text-xs text-gray-400 ml-2 whitespace-nowrap"> + {{ getUsernameById(lesson.userId) }} </span> </wd-badge> - </div> - <div class="w-24 flex items-center gap-3"> - <wd-progress :percentage="calcLessonProgress(lesson)" - :color="calcLessonProgress(lesson) === 100 ? '#34d399' : '#60a5fa'" hide-text /> + <div class="w-16"> + <wd-progress :percentage="calcLessonProgress(lesson)" + :color="calcLessonProgress(lesson) === 100 ? '#34d399' : '#60a5fa'" hide-text /> + </div> <div class="i-tabler-dots text-neutral-400 text-xl"></div> </div> </div> diff --git a/src/pages/lesson/index.vue b/src/pages/lesson/index.vue index e245f8a..666a7c1 100644 --- a/src/pages/lesson/index.vue +++ b/src/pages/lesson/index.vue @@ -57,7 +57,13 @@ onMounted(() => { const refresh = async () => { try { + const startTime = Date.now() await loadLesson() + const endTime = Date.now() + const duration = endTime - startTime + if (duration < 500) { + await new Promise(resolve => setTimeout(resolve, 500 - duration)) + } } catch (err) { } finally { uni.stopPullDownRefresh() diff --git a/src/pages/progress/index.vue b/src/pages/progress/index.vue index 5cec454..07e9001 100644 --- a/src/pages/progress/index.vue +++ b/src/pages/progress/index.vue @@ -325,13 +325,18 @@ onMounted(() => { const refresh = async () => { try { + const startTime = Date.now() await updateLessons() + const endTime = Date.now() + const duration = endTime - startTime + if (duration < 500) { + await new Promise(resolve => setTimeout(resolve, 500 - duration)) + } } catch (err) { } finally { uni.stopPullDownRefresh() } } -// 添加下拉刷新处理函数 onPullDownRefresh(() => { refresh() })