parent
54e581f2ae
commit
ce42bfd06f
@ -0,0 +1,71 @@ |
|||||||
|
import {Text, View} from "@tarojs/components"; |
||||||
|
import styles from "@/pages/manage/userInfo/userInfo.module.scss"; |
||||||
|
import Tabs, {OnChangOpt, TabList} from "@/components/tabs/tabs"; |
||||||
|
import {everyDay, formatTime, getMonday, getSunday, monthEnd, monthFirst} from "@/utils/time"; |
||||||
|
import LineChart from "@/components/lineChart/lineChart"; |
||||||
|
import {FC, useEffect, useState} from "react"; |
||||||
|
import {StatisticsParam, userApi} from "@/api"; |
||||||
|
|
||||||
|
const tabList: TabList<any>[] = [ |
||||||
|
{ |
||||||
|
title: '日', |
||||||
|
value: { |
||||||
|
start_time: new Date().setHours(0, 0, 0, 0), |
||||||
|
end_time: new Date().setHours(24, 0, 0, 0) |
||||||
|
} |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '周', value: { |
||||||
|
start_time: getMonday(), |
||||||
|
end_time: getSunday() |
||||||
|
} |
||||||
|
}, |
||||||
|
{ |
||||||
|
title: '月', value: { |
||||||
|
start_time: monthFirst(), |
||||||
|
end_time: monthEnd() |
||||||
|
} |
||||||
|
}, |
||||||
|
] |
||||||
|
|
||||||
|
interface Props { |
||||||
|
userId: string | number |
||||||
|
} |
||||||
|
|
||||||
|
/** |
||||||
|
* 学习记录折线图 |
||||||
|
*/ |
||||||
|
const LearningRecord: FC<Props> = ({userId}) => { |
||||||
|
const [lineData, setLineData] = useState<any[]>([]) |
||||||
|
|
||||||
|
async function getStatistics(data: StatisticsParam) { |
||||||
|
try { |
||||||
|
const res = await userApi.statistics(userId, data) |
||||||
|
const everyDayValue = everyDay(data.start_time, Number(data.end_time), res.data) |
||||||
|
setLineData(everyDayValue) |
||||||
|
} catch (e) { |
||||||
|
setLineData([]) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
function tabChange({tab}: OnChangOpt<StatisticsParam>) { |
||||||
|
getStatistics(tab?.value! as StatisticsParam) |
||||||
|
} |
||||||
|
|
||||||
|
useEffect(() => { |
||||||
|
userId && getStatistics(tabList[0].value) |
||||||
|
}, [userId]) |
||||||
|
|
||||||
|
return (<View className={`${styles.box}`} style={{display: 'block'}}> |
||||||
|
<Tabs tabList={tabList} onChange={tabChange}/> |
||||||
|
<View className='font-weight font-36 mt-5 mb-3'> |
||||||
|
总共学习 |
||||||
|
<Text style={{margin: '0 10px', color: '#00D6AC'}}> |
||||||
|
{formatTime(lineData.reduce((pre, cur) => pre + cur.value, 0) || 0)} |
||||||
|
</Text> |
||||||
|
</View> |
||||||
|
<LineChart data={lineData}/> |
||||||
|
</View>) |
||||||
|
} |
||||||
|
|
||||||
|
export default LearningRecord |
Loading…
Reference in new issue