import OHeader from '@/components/o-header' import OPopup from '@/components/o-popup' import OSticky from '@/components/o-sticky' import { trainCourseEmnu } from '@/constant' import request from '@/helpers/request' import { verifiyNumberInteger } from '@/helpers/toolsValidate' import { state } from '@/state' import dayjs from 'dayjs' import { Button, Cell, CellGroup, Field, Popup, showToast, TimePicker } from 'vant' import { defineComponent, onMounted, reactive } from 'vue' import { useRouter } from 'vue-router' import { forms } from '../../create' import PracticeClass from '../../modal/practice-class' import styles from './index.module.less' export default defineComponent({ name: 'practice-detail', setup() { const router = useRouter() const f = reactive({ selectItem: {} as any, currentTime: [] as any, minHour: 0, minMinute: 0, maxHour: 24, maxMinute: 60, firstTime: null as any, lastTime: null as any }) const configParams = async () => { // 获取基础数据 const { data } = await request.get('/api-school/sysParamConfig/queryByParamNameList', { params: { paramNames: 'course_start_time,course_end_time' } }) const tempData = data || [] tempData.forEach((item: any) => { console.log(item.paramValue, 'paramValue') const day = dayjs(forms.trainStartDate).format('YYYY-MM-DD') if (item.paramName === 'course_start_time') { const firstTime = dayjs(day + ' ' + item.paramValue) f.minHour = Number(firstTime.format('HH')) f.minMinute = Number(firstTime.format('mm')) f.firstTime = firstTime } else if (item.paramName === 'course_end_time') { const lastTime = dayjs(day + ' ' + item.paramValue) f.maxHour = Number(lastTime.format('HH')) f.lastTime = lastTime } }) } const onChange = (val: any) => { // 判断是否选择小时 if (val.columnIndex === 1) return // 选择时间 const selectHour = Number(val.selectedValues[0]) if (selectHour === f.minHour) { f.minMinute = Number(f.firstTime.format('mm')) f.maxMinute = 60 } else if (selectHour === f.maxHour) { console.log(selectHour, 'hour') f.minMinute = 0 f.maxMinute = Number(f.lastTime.format('mm')) } else { f.minMinute = 0 f.maxMinute = 60 } } // 选择日期 const onConfirmTimer = (item: any) => { const times = dayjs( dayjs(f.lastTime).format('YYYY-MM-DD') + ' ' + item.selectedValues.join(':') + ':00' ).add(f.selectItem.trainTimer, 'minute') if (times.isAfter(f.lastTime)) { showToast('开始时间超过可选时间范围') return } f.selectItem.startTime = dayjs( dayjs(f.lastTime).format('YYYY-MM-DD') + ' ' + item.selectedValues.join(':') + ':00' ).format('YYYY-MM-DD HH:mm:ss') f.selectItem.endTime = times.format('YYYY-MM-DD HH:mm:ss') forms.timerStatus = false } const checkForms = () => { const list = forms.classPracticeList let status = false let message = '' list.forEach((item: any) => { console.log(item) if (!status && !item.trainTimer) { status = true message = '请输入训练时长' } if (!status && !item.startTime) { status = true message = '请选择开始时间' } if (!status && !item.times) { status = true message = '请输入课时数' } if (!status && item.classIdList.length <= 0) { status = true message = '请选择训练班级' } }) if (status) { showToast(message) } return status } const onSubmit = async () => { if (checkForms()) return try { const list = forms.classPracticeList const trainingPlanClassList: any = [] list.forEach((item: any) => { trainingPlanClassList.push({ classGroupIdList: item.classIdList, courseNum: item.times, startTime: dayjs(item.startTime).format('HH:mm:ss'), endTime: dayjs(item.endTime).format('HH:mm:ss'), singleCourseTime: item.trainTimer }) }) const params = { week: forms.week, schoolId: state.user.data.school.id, skipHoliday: forms.skipHoliday ? true : false, type: 'PRACTISE', startDate: dayjs(forms.trainStartDate).format('YYYY-MM-DD'), trainingPlanClassList } console.log(params) const { data } = await request.post('/api-school/orchestra/trainingPlanList', { data: { ...params } }) // 初始化 课程预览时选中的乐团编号 课程预览时选中的课程组编号 forms.selectOrchestraId = null forms.selectClassGroupId = null forms.planList = { orchestra: [] as any, // 所有的乐团 classes: {} as any, // 所有的班级 course: {} as any // 所有的课程 } console.log(data, 'date') router.push({ path: '/course-preview', query: { cacheId: data } }) } catch { // } } const onFormatterInt = (val: any) => { if (val && val >= 1) { return verifiyNumberInteger(val) } else { return '' } } onMounted(() => { configParams() }) return () => (