import OSticky from '@/components/o-sticky' import { Button, DatePicker, Grid, GridItem, Icon, Image, List, Picker, Popover, Popup } from 'vant' import { defineComponent, nextTick, onMounted, reactive } from 'vue' import styles from './information.module.less' import iconSaveImage from '../images/icon-save-image.png' import iconWechat from '../images/icon-wechat.png' import OQrcode from '@/components/o-qrcode' import request from '@/helpers/request' import { useRoute } from 'vue-router' import { CountUp } from 'countup.js' import OEmpty from '@/components/o-empty' import dayjs from 'dayjs' export default defineComponent({ name: 'detail-information', setup() { const route = useRoute() const state = reactive({ timeShow: false, currentData: [dayjs().year() + ''], actionText: '上学期', actionType: 'up', actionTerm: [ { text: '上学期', color: 'var(--van-primary-color)', value: 'up' }, { text: '下学期', value: 'down' } ], oPopover: false, check: [], checkboxRefs: [] as any, showQrcode: false, qrcodeUrl: '', isLoading: false, list: [] as any, listState: { dataShow: true, // 判断是否有数据 loading: false, finished: false }, params: { startTime: dayjs().year() - 1 + '-09-01 00:00:00', endTime: dayjs().year() + '-03-01 00:00:00', page: 1, rows: 20 }, orchestraInfo: {} as any // 乐团详情 }) // 选择学期 const onSelect = (val: any) => { console.log(val) state.actionTerm.forEach((item: any) => { item.color = null }) val.color = 'var(--van-primary-color)' state.actionText = val.text state.actionType = val.value if (val.value === 'up') { state.params.startTime = Number(state.currentData[0]) - 1 + '-09-01 00:00:00' state.params.endTime = state.currentData[0] + '-03-01 00:00:00' } else if (val.value === 'down') { console.log(dayjs().add(1, 'year'), 'dayjs().add(1, ') state.params.startTime = state.currentData[0] + '-03-01 00:00:00' state.params.endTime = Number(state.currentData[0]) + '-09-01 00:00:00' } onSearch() } const onConfirmDate = (date: any) => { state.currentData = date.selectedValues if (state.actionType == 'up') { state.params.startTime = Number(date.selectedValues[0]) - 1 + '-09-01 00:00:00' state.params.endTime = date.selectedValues[0] + '-03-01 00:00:00' } else if (state.actionType == 'down') { state.params.startTime = date.selectedValues[0] + '-03-01 00:00:00' state.params.endTime = Number(date.selectedValues[0]) + '-09-01 00:00:00' } state.timeShow = false onSearch() } const getDetails = async () => { try { const { data } = await request.get('/api-school/orchestra/detail/' + route.query.id) state.orchestraInfo = data || {} } catch { // } } // 班级列表 const getList = async () => { try { if (state.isLoading) return state.isLoading = true const res = await request.post('/api-school/classGroup/page', { data: { ...state.params, orchestraId: route.query.id } }) state.listState.loading = false const result = res.data || {} // 处理重复请求数据 if (state.list.length > 0 && result.current === 1) { return } const rows = result.rows || [] state.list = state.list.concat(rows) state.listState.finished = result.current >= result.pages state.params.page = result.current + 1 state.listState.dataShow = state.list.length > 0 state.isLoading = false } catch { state.listState.dataShow = false state.listState.finished = true state.isLoading = false } } const onSearch = () => { state.params.page = 1 state.list = [] state.listState.dataShow = true // 判断是否有数据 state.listState.loading = false state.listState.finished = false getList() } const initNumCountUp = () => { nextTick(() => { // 在读学生 new CountUp('currentStudentNum', Math.random() * 1000).start() new CountUp('time1', Math.random() * 100).start() new CountUp('time2', Math.random() * 100).start() new CountUp('time3', Math.random() * 100).start() }) } onMounted(() => { getDetails() getList() initNumCountUp() }) return () => ( <>
(state.timeShow = true)}> {state.currentData[0]}年
{{ reference: () => (
{state.actionText}
) }}

0

在读学生

0%

到课率

0%

作业提交率

0%

练习合格率

{state.listState.dataShow ? ( {state.list.map((item: any) => (
{item.name}

{item.preStudentNum || 0}

在读学生

{item.teacherName || '-'}

伴学指导

{item.completeCourseScheduleNum || 0}/{item.courseScheduleNum || 0}

课时

))}
) : ( )} {/* */} {state.orchestraInfo.type === 'DELIVERY' && ['REGISTER', 'DOING', 'DONE'].includes(state.orchestraInfo.status) && (
)}

乐团报名

{state.orchestraInfo.name}
扫描上方二维码完成资料填写
二维码将在两小时后失效,请及时登记
(state.showQrcode = false)} />

分享方式

{{ icon: () => , text: () =>
保存图片
}}
{{ icon: () => , text: () =>
微信
}}
(state.timeShow = false)} /> ) } })