import OPopup from '@/components/o-popup' import OSticky from '@/components/o-sticky' import request from '@/helpers/request' import { state } from '@/state' import dayjs from 'dayjs' import { Button, Cell, CellGroup, Dialog, Field, Icon, Picker, Popup, Radio, RadioGroup, showToast, Sticky, Tag } from 'vant' import { defineComponent, onMounted, reactive } from 'vue' import { useRoute, useRouter } from 'vue-router' import { weekdays, weekFormat } from '../../create' import Calendar from '../../modal/calendar' import ClassList from '../../modal/class-list' import Timer from '../../modal/timer' import styles from './index.module.less' import { forms } from '../../create' // orchestra export default defineComponent({ name: 'standard', props: { address: { type: String, default: '' } }, setup(props) { const route = useRoute() const router = useRouter() // const forms = reactive({ // status: false, // weekStatus: false, // calendarStatus: false, // classStatus: false, // timerStatus: false, // skipHoliday: 1, // week: null, // times: 16, // classList: [] as any, // 没有设置伴学指导的数据 // calendarList: [] as any, // calendarDate: null as any, // trainStartDate: null, // 开始日期 // trainStartTime: null, // 开始时间 // timerList: {} as any, // 可选和不可选时间段 // numberStatus: false, // numberDialogStatus: false, // 提示暂无训练次数提示 // pickerNum: 16, // 默认16次 // timerPickerList: [] as any // 可排课次数 // }) // 获取排课空闲时间 const getList = async (date?: any) => { try { const { data } = await request.post('/api-school/orchestra/trainingPlanTime', { data: { schoolId: state.user.data.school.id, skipHoliday: forms.skipHoliday ? true : false, type: 'STANDARD', calendarDate: dayjs(date).format('YYYY-MM-DD') } }) forms.calendarList = data || [] } catch { // } } // 查询没有设置指导老师的班级 const getClasses = async (show = true) => { try { const { data } = await request.post('/api-school/classGroup/page', { data: { page: 1, rows: 200, schoolId: state.user.data.school.id, hasTeacher: false, orchestraType: 'DELIVERY' } }) // 班级数据 forms.classList = data.rows || [] // 判断没有设置伴学指导的班级 if (forms.classList.length > 0 && show) { forms.status = true } } catch { // } } // 获取已排课次数 const getStandardCourseNum = async () => { try { const { data } = await request.get( '/api-school/orchestra/semesterStandardCourseNum/' + state.user.data.school.id ) const tempPicker = Number(forms.pickerNum - data) forms.times = tempPicker for (let i = 0; i < tempPicker; i++) { forms.timerPickerList.push({ text: i + 1 + '次', value: i + 1 }) } if (tempPicker <= 0) { forms.numberDialogStatus = true } } catch { // } } // 下一步 const onSubmit = () => { // 判断是否有训练次数 if (forms.times <= 0) { forms.numberDialogStatus = true return } // 判断是否有班级没有设置伴学指导 if (forms.classList.length > 0) { forms.status = true return } if (!forms.trainStartDate) { showToast('请选择训练开始日期') return } if (!forms.trainStartTime) { showToast('请选择训练开始时间') return } if (!forms.week) { showToast('请选择周次') return } if (!props.address) { showToast('您所在的学校暂未设置地址') return } router.push('/train-content') } onMounted(() => { getList(forms.calendarDate || new Date()) getClasses() getStandardCourseNum() }) return () => (
标准训练可对交付团进行整学期标准训练排课
(forms.calendarStatus = true)} modelValue={ forms.trainStartDate ? dayjs(forms.trainStartDate).format('YYYY年MM月DD日') : '' } /> { if (!forms.trainStartDate) { showToast('请选择训练开始日期') return } forms.timerStatus = true }} /> { if (forms.times <= 0) return forms.numberStatus = true }} > {{ value: () => ( { forms.trainStartDate = null forms.trainStartTime = null forms.calendarDate = null // 初始化日历时间 getList() }} > ) }}
(forms.weekStatus = false)} onConfirm={(val: any) => { forms.week = val.selectedValues[0] forms.weekStatus = false }} /> {/* 选择训练开始日期 */} getList(date)} prevMonth={(date: Date) => getList(date)} onSelect={(date: any) => { forms.calendarStatus = false forms.trainStartDate = date forms.trainStartTime = null const days = dayjs(date).day() const selectDays = weekdays[days === 0 ? 6 : days - 1] forms.week = selectDays.value forms.calendarList.forEach((item: any) => { if (dayjs(item.calendarDate).isSame(date)) { forms.timerList = { ...item } setTimeout(() => { forms.timerStatus = true }, 100) } }) }} onDestory={() => { if (forms.trainStartDate) { getList(forms.trainStartDate) } else { getList() } }} v-model:calendarDate={forms.calendarDate} /> {/* 选择开始时间 */} {forms.timerStatus && ( (forms.timerStatus = false)} onConfirm={(val: any) => { forms.trainStartTime = val }} /> )} { const selectedValue = val.selectedValues[0] forms.times = selectedValue forms.numberStatus = false }} /> { forms.classStatus = true }} > {{ title: () => (
指定伴学指导
) }}
{{ title: () => (
训练次数
) }}
(forms.classStatus = false)} onConfirm={() => { getClasses(false) }} />
) } })