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()
 })