import OHeader from '@/components/o-header' import { Cell, CellGroup, Grid, GridItem, Image, List, Picker, Popup, Tag } from 'vant' import { defineComponent, onMounted, reactive } from 'vue' import styles from './index.module.less' import iconStudent from '@/common/images/icon_student.png' import request from '@/helpers/request' import OFullRefresh from '@/components/o-full-refresh' import OEmpty from '@/components/o-empty' import { useRoute } from 'vue-router' export default defineComponent({ name: 'practice-detail', setup() { const route = useRoute() const state = reactive({ subjectStatus: false, subjectList: [] as any, isClick: false, list: [] as any, listState: { dataShow: true, // 判断是否有数据 loading: false, finished: false, refreshing: false, height: 0 // 页面头部高度,为了处理下拉刷新用的 }, subjectName: '全部声部', params: { type: null, subjectId: null, page: 1, rows: 20 } }) // 获取声部 const getSubjects = async () => { try { const { data } = await request.post('/api-school/subjectBasicConfig/page', { data: { page: 1, rows: 50 } }) state.subjectList = data.rows || [] state.subjectList.unshift({ subjectId: '', subjectName: '全部声部' }) } catch { // } } // api-school/schoolWeekSalaryRecord/detailInfo/trainingPage const getList = async () => { try { if (state.isClick) return state.isClick = true const res = await request.post( '/api-school/schoolWeekSalaryRecord/detailInfo/trainingPage', { data: { ...state.params, id: route.query.id } } ) state.listState.loading = false state.listState.refreshing = false const result = res.data || {} console.log(result) // 处理重复请求数据 if (state.list.length > 0 && result.current === 1) { return } const rows = result.rows || [] rows.forEach((item: any) => { item.subjectNameList = item.subjectNames ? item.subjectNames.split(',') : [] }) 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.isClick = false } catch { state.listState.dataShow = false state.listState.finished = true state.listState.refreshing = false state.isClick = false } } const onRefresh = () => { state.params.page = 1 state.list = [] state.listState.dataShow = true // 判断是否有数据 state.listState.loading = false state.listState.finished = false getList() } onMounted(() => { getSubjects() getList() }) return () => ( <>
{{ title: () => (
练习奖励
) }}
0 元/人
奖励标准
0
练习达标人数
0
奖励金额
{ state.subjectStatus = !state.subjectStatus }} > {state.subjectName}
{state.listState.dataShow ? ( {state.list.map((item: any) => ( {{ icon: () => , title: () => (
{item.nickname}
{item.subjectNameList.map((item: any) => ( {item} ))}
), value: () => (
{item.practiceTimes} 分钟
练习时长
) }}
))}
) : ( )} (state.subjectStatus = false)} onConfirm={(val: any) => { console.log(val) const selectOptions = val.selectedOptions[0] state.subjectName = selectOptions.subjectName state.params.subjectId = selectOptions.subjectId onRefresh() state.subjectStatus = false }} columnsFieldNames={{ text: 'subjectName', value: 'subjectId' }} /> ) } })