Browse Source

记录时间

skyblued 2 years ago
parent
commit
7f612cdab9

+ 27 - 15
src/views/courseList/index.tsx

@@ -70,6 +70,12 @@ export default defineComponent({
         return
       }
       if (!item.hasCache) {
+        if (!item.knowledgePointList) {
+          showConfirmDialog({
+            message: '该课件暂无知识点'
+          })
+          return
+        }
         if (browserInfo.isStudent || route.query.isdev) {
           try {
             await showConfirmDialog({
@@ -175,25 +181,31 @@ export default defineComponent({
                   <img src={iconCourse} class={styles.cover} />
                   <div class={styles.title}>
                     <div class="van-multi-ellipsis--l2">{item.coursewareDetailName}</div>
-                    {!browserInfo.isStudent && <div class={styles.subtitle}>已使用 {item.useNum} 次</div>}
+                    {!browserInfo.isStudent && (
+                      <div class={styles.subtitle}>已使用 {item.useNum} 次</div>
+                    )}
                   </div>
                   {route.query.code !== 'select' ? (
                     <>
-                      {item.hasCache ? (
-                        <div class={styles.num}>
-                          查看
-                          <Icon name="play-circle-o" />
-                        </div>
-                      ) : (
+                      {!!item.knowledgePointList && (
                         <>
-                          {item.downloadStatus === 1 ? (
-                            <div class={styles.num}>下载中 {item.progress || 0}%</div>
-                          ) : item.downloadStatus === 2 ? (
-                            <div class={styles.num}>下载成功</div>
-                          ) : item.downloadStatus === 3 ? (
-                            <div class={styles.num}>重新下载</div>
+                          {item.hasCache ? (
+                            <div class={styles.num}>
+                              查看
+                              <Icon name="play-circle-o" />
+                            </div>
                           ) : (
-                            <div class={styles.num}>下载</div>
+                            <>
+                              {item.downloadStatus === 1 ? (
+                                <div class={styles.num}>下载中 {item.progress || 0}%</div>
+                              ) : item.downloadStatus === 2 ? (
+                                <div class={styles.num}>下载成功</div>
+                              ) : item.downloadStatus === 3 ? (
+                                <div class={styles.num}>重新下载</div>
+                              ) : (
+                                <div class={styles.num}>下载</div>
+                              )}
+                            </>
                           )}
                         </>
                       )}
@@ -215,7 +227,7 @@ export default defineComponent({
         {/* <Button onClick={() => {
           location.href = 'http://192.168.3.114:1000/teacher.html#/coursewarePlay?id=1613426640725217281'
         }}>胜强测试老师端</Button> */}
-        {!data.loading && !data.list.length && <OEmpty tips='暂无内容' />}
+        {!data.loading && !data.list.length && <OEmpty tips="暂无内容" />}
       </div>
     )
   }

+ 6 - 5
src/views/coursewarePlay/index.tsx

@@ -42,6 +42,7 @@ import { Vue3Lottie } from 'vue3-lottie'
 import playLoadData from './datas/data.json'
 import { usePageVisibility } from '@vant/use'
 import PlayRecordTime from './playRecordTime'
+import dayjs from 'dayjs'
 
 export default defineComponent({
   name: 'CoursewarePlay',
@@ -128,7 +129,8 @@ export default defineComponent({
       knowledgePointList: [] as any,
       itemList: [] as any,
       showHead: true,
-      isCourse: false
+      isCourse: false,
+      isRecordPlay: false
     })
     const activeData = reactive({
       nowTime: 0,
@@ -166,7 +168,8 @@ export default defineComponent({
         )
         if (res?.data) {
           data.isCourse =
-            res.data.status === 'ING' && state.platformType == 'TEACHER' ? true : false
+          res.data.status === 'ING' && state.platformType == 'TEACHER' ? true : false
+          data.isRecordPlay = Date.now() > dayjs(res.data.startTime).valueOf()
         }
       } catch (e) {
         console.log(e)
@@ -290,10 +293,8 @@ export default defineComponent({
       getCourseSchedule()
       window.addEventListener('message', iframeHandle)
     })
-    const playRef = ref()
     // 返回
     const goback = () => {
-      playRef.value?.handleOut()
       if (route.query.source == 'my-course') {
         router.back()
       }
@@ -636,7 +637,7 @@ export default defineComponent({
               返回
             </div>
             <div class={styles.menu}>{popupData.tabName}</div>
-            {data.isCourse && <PlayRecordTime ref={playRef} list={data.itemList} />}
+            {data.isCourse && data.isRecordPlay && <PlayRecordTime list={data.itemList} />}
           </div>
 
           <Transition name="right">

+ 10 - 8
src/views/coursewarePlay/playRecordTime.tsx

@@ -2,6 +2,7 @@ import request from '@/helpers/request'
 import { getSecondRPM } from '@/helpers/utils'
 import { state } from '@/state'
 import { usePageVisibility } from '@vant/use'
+import dayjs from 'dayjs'
 import { computed, defineComponent, onMounted, onUnmounted, reactive, ref, watch } from 'vue'
 import { useRoute } from 'vue-router'
 import styles from './index.module.less'
@@ -27,13 +28,11 @@ export default defineComponent({
     })
     const handleOut = () => {
       clearInterval(timerRecord.value)
-      handleRecord()
+      handleRecord(true)
     }
-    expose({
-      handleOut
-    })
     const route = useRoute()
     const saveModel = reactive({
+      loading: true,
       /**当前时长 */
       currentTime: 0,
       /**记录的开始时间 */
@@ -52,6 +51,7 @@ export default defineComponent({
     })
 
     const getPlayTime = async () => {
+      saveModel.loading = true
       try {
         const res: any = await request.post(
           `${state.platformApi}/courseSchedule/getCoursewarePlayTime?courseScheduleId=${route.query.courseId}`
@@ -60,15 +60,17 @@ export default defineComponent({
           saveModel.playTime = res.data
         }
       } catch (error) {}
+      saveModel.loading = false
       handleStartInterval()
     }
 
     /** 记录时长 */
-    const handleRecord = () => {
+    const handleRecord = (isOut = false) => {
       saveModel.currentTime++
       const playTime = saveModel.currentTime - saveModel.startTime
       // 1分钟记录1次
-      if (playTime >= 5) {
+      if (playTime >= 5 || isOut) {
+        console.log('isOut', isOut)
         saveModel.startTime = saveModel.currentTime
         request.post(`${state.platformApi}/courseSchedule/coursewarePlayTime`, {
           params: {
@@ -82,7 +84,7 @@ export default defineComponent({
     const timerRecord = ref()
     const handleStartInterval = () => {
       clearInterval(timerRecord.value)
-      timerRecord.value = setInterval(handleRecord, 1000)
+      timerRecord.value = setInterval(() => handleRecord(), 1000)
     }
     onMounted(() => {
       getPlayTime()
@@ -93,7 +95,7 @@ export default defineComponent({
     return () => (
       <div
         class={styles.playRecordTimeWrap}
-        style={{ display: saveModel.currentTime + saveModel.playTime > total.value ? 'none' : '' }}
+        style={{ display: saveModel.loading || (saveModel.currentTime + saveModel.playTime > total.value) ? 'none' : '' }}
       >
         <div class={styles.playRecordTime}>
           <div class={styles.timeLoad}></div>