|
@@ -1,15 +1,70 @@
|
|
|
import TheSticky from '@/components/the-sticky'
|
|
|
-import { defineComponent } from 'vue'
|
|
|
+import { defineComponent, reactive } from 'vue'
|
|
|
+import { useRoute } from 'vue-router'
|
|
|
import styles from './index.module.less'
|
|
|
import ColHeader from '@/components/col-header'
|
|
|
import bgImg from '../images/bg-image.png'
|
|
|
-import { Tabs, Tab, Image } from 'vant'
|
|
|
+import { Tabs, Tab, Image, Icon, Calendar } from 'vant'
|
|
|
+import dayjs from 'dayjs'
|
|
|
+import isBetween from 'dayjs/plugin/isBetween'
|
|
|
+dayjs.extend(isBetween)
|
|
|
|
|
|
export default defineComponent({
|
|
|
name: 'ranking-list',
|
|
|
setup() {
|
|
|
+ const route = useRoute()
|
|
|
+ const state = reactive({
|
|
|
+ showPopoverTime: false,
|
|
|
+ currentDate: [dayjs().format('YYYY'), dayjs().format('MM')],
|
|
|
+ isClick: false,
|
|
|
+ practiceMonthName: route.query.practiceMonthName
|
|
|
+ ? route.query.practiceMonthName
|
|
|
+ : dayjs().format('YYYY') + '年' + dayjs().format('MM') + '月',
|
|
|
+ userTrainOverView: {
|
|
|
+ trainDays: 0,
|
|
|
+ trainNum: 0,
|
|
|
+ trainTime: 0,
|
|
|
+ avgTrainTime: 0
|
|
|
+ },
|
|
|
+ userTrainChartData: [] as any,
|
|
|
+ myChart: null as any
|
|
|
+ })
|
|
|
+
|
|
|
+ // 初始化周一
|
|
|
+ const formatWeekDays = (time?: any) => {
|
|
|
+ const week = dayjs(time).day()
|
|
|
+ let startTime = ''
|
|
|
+ let endTime = ''
|
|
|
+ if (week === 0) {
|
|
|
+ // 星期天
|
|
|
+ startTime = dayjs(time).subtract(6, 'day').format('YYYY-MM-DD')
|
|
|
+ endTime = dayjs(time).format('YYYY-MM-DD')
|
|
|
+ } else if (week === 1) {
|
|
|
+ // 星期一
|
|
|
+ startTime = dayjs(time).format('YYYY-MM-DD')
|
|
|
+ endTime = dayjs(time).add(6, 'day').format('YYYY-MM-DD')
|
|
|
+ } else {
|
|
|
+ startTime = dayjs(time)
|
|
|
+ .subtract(week - 1, 'day')
|
|
|
+ .format('YYYY-MM-DD')
|
|
|
+ endTime = dayjs(time)
|
|
|
+ .add(7 - week, 'day')
|
|
|
+ .format('YYYY-MM-DD')
|
|
|
+ }
|
|
|
+ return {
|
|
|
+ startTime,
|
|
|
+ endTime
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ const forms = reactive({
|
|
|
+ ...formatWeekDays(),
|
|
|
+ page: 1,
|
|
|
+ rows: 20
|
|
|
+ })
|
|
|
+
|
|
|
return () => (
|
|
|
- <div class={styles.activationCode}>
|
|
|
+ <div class={styles.rankListPage}>
|
|
|
<div class={styles.sticky}>
|
|
|
<TheSticky position="top">
|
|
|
<ColHeader
|
|
@@ -18,11 +73,19 @@ export default defineComponent({
|
|
|
border={false}
|
|
|
title=" "
|
|
|
color="#131415"
|
|
|
- />
|
|
|
- <Tabs lineWidth={22} lineHeight={4}>
|
|
|
- <Tab title="时长榜" name="timeBill"></Tab>
|
|
|
- <Tab title="天数榜" name="dayBill"></Tab>
|
|
|
- </Tabs>
|
|
|
+ >
|
|
|
+ {{
|
|
|
+ content: () => (
|
|
|
+ <>
|
|
|
+ <Icon name="arrow-left" class={styles.backArrow} />
|
|
|
+ <Tabs lineWidth={22} lineHeight={4}>
|
|
|
+ <Tab title="时长榜" name="timeBill"></Tab>
|
|
|
+ <Tab title="天数榜" name="dayBill"></Tab>
|
|
|
+ </Tabs>
|
|
|
+ </>
|
|
|
+ )
|
|
|
+ }}
|
|
|
+ </ColHeader>
|
|
|
</TheSticky>
|
|
|
<img class={styles.bgImg} src={bgImg} />
|
|
|
</div>
|
|
@@ -68,7 +131,55 @@ export default defineComponent({
|
|
|
<p class={[styles.levelTime, 'van-ellipsis']}>竖笛-240分钟</p>
|
|
|
</div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <div class={styles.rankList}>
|
|
|
+ <div class={styles.rankTitle}>
|
|
|
+ <div>训练时长榜</div>
|
|
|
+ <span
|
|
|
+ class={styles.timeRange}
|
|
|
+ onClick={() => (state.showPopoverTime = true)}
|
|
|
+ >
|
|
|
+ {dayjs(forms.startTime).format('YYYY-MM-DD')}至
|
|
|
+ {dayjs(forms.endTime).format('YYYY-MM-DD')}
|
|
|
+ <i class={styles.iconArrow}></i>
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
+
|
|
|
+ <Calendar
|
|
|
+ v-model:show={state.showPopoverTime}
|
|
|
+ firstDayOfWeek={1}
|
|
|
+ showConfirm={false}
|
|
|
+ type="range"
|
|
|
+ title="周期选择"
|
|
|
+ maxRange={7}
|
|
|
+ minDate={new Date('2023-02-27')}
|
|
|
+ defaultDate={[
|
|
|
+ dayjs(forms.startTime).toDate(),
|
|
|
+ dayjs(forms.endTime).toDate()
|
|
|
+ ]}
|
|
|
+ style={{
|
|
|
+ height: '70%'
|
|
|
+ }}
|
|
|
+ onSelect={(item: any) => {
|
|
|
+ forms.startTime = ''
|
|
|
+ forms.endTime = ''
|
|
|
+ if (
|
|
|
+ !dayjs(item[0]).isBetween(
|
|
|
+ dayjs(forms.startTime),
|
|
|
+ dayjs(forms.endTime)
|
|
|
+ )
|
|
|
+ ) {
|
|
|
+ const times = formatWeekDays(item[0])
|
|
|
+ forms.startTime = times.startTime
|
|
|
+ forms.endTime = times.endTime
|
|
|
+ }
|
|
|
+ state.showPopoverTime = false
|
|
|
+ // refreshing.value = true
|
|
|
+ // getList()
|
|
|
+ }}
|
|
|
+ />
|
|
|
</div>
|
|
|
)
|
|
|
}
|