import TheSticky from '@/components/the-sticky' import { computed, defineComponent, onMounted, reactive } from 'vue' import { useRoute, useRouter } from 'vue-router' import styles from './index.module.less' import ColHeader from '@/components/col-header' import bgImg from './images/time-bg.png' import bgImg2 from './images/day-bg.png' import timeTitle from './images/time-title.png' import dayTitle from './images/day-title.png' import { Tabs, Tab, Image, Icon, Calendar, Cell } from 'vant' import dayjs from 'dayjs' import isBetween from 'dayjs/plugin/isBetween' dayjs.extend(isBetween) import request from '@/helpers/request' import { state as baseState } from '@/state' import studentLogo from '@/common/images/icon_student.png' import emptyLogo from './images/empty-logo.png' import ColResult from '@/components/col-result' import { browser } from '@/helpers/utils' import { postMessage } from '@/helpers/native-message' export default defineComponent({ name: 'ranking-list', setup() { const router = useRouter() const route = useRoute() const state = reactive({ showPopoverTime: false, tabActive: 'timeBill', firstInfo: {} as any, secondInfo: {} as any, threeInfo: {} as any, myInfo: {} as any, list: [] as any, loading: false, beforListShow: true, listShow: true // 是否显示 }) const isDayRank = computed(() => { return state.tabActive === 'dayBill' }) // 初始化周一 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(), studentIds: baseState.user.data?.userId, orderType: 0, page: 1, rows: 20 }) const getList = async () => { state.loading = true try { const { data } = await request.post( '/api-tenant/studentMusicCompareRecord/rankingList', { data: { ...forms } } ) state.beforListShow = data.detail && data.detail.length > 0 state.myInfo = data.head || {} state.list = data.detail || [] state.firstInfo = state.list.length > 0 ? state.list.splice(0, 1)[0] : {} state.secondInfo = state.list.length > 0 ? state.list.splice(0, 1)[0] : {} state.threeInfo = state.list.length > 0 ? state.list.splice(0, 1)[0] : {} state.listShow = state.list.length > 0 } catch { // } state.loading = false } onMounted(() => { getList() }) return () => (
{{ content: () => ( <> { if (browser().isApp) { postMessage({ api: 'goBack' }) } else { router.back() } }} /> { if (val === 'dayBill') { forms.orderType = 2 } else { forms.orderType = 0 } getList() }} > ) }}
{/* {state.beforListShow && ( */}
{state.secondInfo.userId ? ( <>

{state.secondInfo.studentName}

{forms.orderType === 2 ? (

{state.secondInfo.subjectName}- {state.secondInfo.trainDays}天

) : (

{state.secondInfo.subjectName}- {state.secondInfo.trainTime} 分钟

)} ) : ( <>

虚位以待

 

)}
{state.firstInfo.userId ? ( <>

{state.firstInfo.studentName}

{forms.orderType === 2 ? (

{state.firstInfo.subjectName}-{state.firstInfo.trainDays} 天

) : (

{state.firstInfo.subjectName}-{state.firstInfo.trainTime} 分钟

)} ) : ( <>

虚位以待

 

)}
{state.threeInfo.userId ? ( <>

{state.threeInfo.studentName}

{/*

{state.threeInfo.subjectName}-{state.threeInfo.trainTime} 分钟

*/} {forms.orderType === 2 ? (

{state.threeInfo.subjectName}-{state.threeInfo.trainDays} 天

) : (

{state.threeInfo.subjectName}-{state.threeInfo.trainTime} 分钟

)} ) : ( <>

虚位以待

 

)}
(state.showPopoverTime = true)} > {dayjs(forms.startTime).format('YYYY-MM-DD')}至 {dayjs(forms.endTime).format('YYYY-MM-DD')}
{state.list.map((item: any) => ( // i == 4 && styles.active {{ icon: () => ( <> {item.rankNum} ), title: () => (

{item.studentName}

{item.subjectName}

), value: () => forms.orderType === 2 ? (
{item.trainDays}
) : (
{item.trainTime}分钟
) }}
))} {!state.loading && !state.listShow && ( )}
{state.myInfo?.userId ? ( {{ icon: () => ( <> {state.myInfo.rankNum == -1 ? '-' : state.myInfo.rankNum} ), title: () => (

{state.myInfo.studentName}

{state.myInfo.subjectName}

), value: () => forms.orderType === 2 ? (
{state.myInfo.trainDays}
) : (
{state.myInfo.trainTime}分钟
) }}
) : ( '' )}
{/* )} */} {/* {!state.loading && !state.beforListShow && (
)} */} { 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 getList() }} />
) } })