医学道
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
video/src/pages/business/history/history.tsx

49 lines
1.7 KiB

import {Text, View} from "@tarojs/components";
import styles from './history.module.scss'
import Taro from "@tarojs/taro";
import {useEffect, useState} from "react";
import {formatMinute} from "@/utils/time";
import Empty from "@/components/empty/empty";
import {userApi} from "@/api";
import Img from "@/components/image/image";
const History = () => {
const [data, setData] = useState<HourHistory[]>([])
const [durations, setDurations] = useState<Record<number, number>>({})
async function getData() {
const res = await userApi.record()
setData(res.course)
setDurations(res.durations)
}
function jump(course_id: number) {
Taro.navigateTo({url: `/pages/business/curHistory/curHistory?course_id=${course_id}`})
}
useEffect(() => {
getData()
}, [])
return (
<View className='mt-3'>
{data.length ? data.map((d, index) =>
<View key={index} className={styles.category} onClick={() => jump(d.userCourseRecord.course_id)}>
<View className={styles.thumb}>
<Img src={d.thumb} className={styles.image} width={300} height={188}/>
<View
className={styles.count}>{d.userCourseRecord.hour_count}/{d.userCourseRecord.finished_count}</View>
</View>
<View className={styles.text}>
<View>{d.title}</View>
<View className={styles.describe}>
<Text className='mr-4'>{formatMinute(durations[d.id])}</Text>
<Text>{(d.userCourseRecord.finished_count / d.userCourseRecord.hour_count * 100).toFixed(0)}%</Text>
</View>
</View>
</View>) : <Empty name='无观看记录'/>}
</View>
)
}
export default History