import request from '@/helpers/request' import { Button, CellGroup, Dialog, Field, Form, Picker, Popup, Radio, RadioGroup, showToast, Tag } from 'vant' import { defineComponent, onMounted, reactive } from 'vue' import { useRoute, useRouter } from 'vue-router' import styles from '../index.module.less' import { setLogout } from '@/state' // 乐团交付,乐团停止或关闭,有新的交付团;则不允许报名 const classList: any = [] for (let i = 1; i <= 40; i++) { classList.push({ text: i + '班', value: i }) } export default defineComponent({ name: 'apply', props: { schoolSystem: { type: String, default: 'sixYearSystem' // 默认为六年制 }, registerInfo: { type: Object, defualt: {} }, code: { type: String, default: '' } }, emits: ['next'], setup(props, { slots, attrs, emit }) { const route = useRoute() const router = useRouter() const state = reactive({ // code: '' as any, // 微信授权code码 detail: {} as any, // 学员详情 currentGrade: [ { text: '一年级', value: 1 }, { text: '二年级', value: 2 }, { text: '三年级', value: 3 }, { text: '四年级', value: 4 }, { text: '五年级', value: 5 } ], // 年级数组列表 classList: classList, subjectList: [] as any, // 声部列表 gradeStatus: false, classStatus: false, subjectStatus: false, pattern: /^1(3|4|5|6|7|8|9)\d{9}$/, nameReg: /^[\u4E00-\u9FA5]+$/, subjectChangeStatus: false // 更换声部时 }) const forms = reactive({ username: null, sex: null as any, currentGrade: null, currentGradeTxt: null, // 年级编号 currentClass: '', // 班级 currentClassTxt: null, // 年级编号 registerSubjectId: '', registerSubjectTxt: null, // 所在声部 parentName: null, phone: null }) // 获取乐团报名信息 const studentRegister = async () => { try { const { data } = await request.get( '/api-student/orchestraRegister/register/' + route.query.id ) const detail = data || {} state.detail = detail const grade: any = state.currentGrade.find((item: any) => item.value == detail.currentGrade) const cls: any = state.classList.find((item: any) => item.value == detail.currentClass) const subjects: any = state.subjectList.find( (item: any) => item.value == detail.registerSubjectId ) forms.username = detail.username forms.sex = detail.sex ? 1 : 0 forms.currentGrade = detail.currentGrade forms.currentGradeTxt = grade ? grade.text : '' forms.currentClass = detail.currentClass forms.currentClassTxt = cls ? cls.text : '' forms.registerSubjectId = detail.registerSubjectId forms.registerSubjectTxt = subjects ? subjects.text : '' forms.parentName = detail.parentName forms.phone = detail.phone } catch (e) { // console.log(e) } } // 获取声部信息 const getSubjects = async () => { try { const subjects = await request.post( '/api-student/open/orchestraSubjectConfig/pageByOrchestraId', { data: { orchestraId: route.query.id, page: 1, rows: 100 } } ) const rows = subjects.data.rows || [] rows.forEach((item: any) => { state.subjectList.push({ text: item.name, value: item.subjectId }) }) } catch { // } } const validator = (val: any) => { // 校验函数返回 true 表示校验通过,false 表示不通过 return state.nameReg.test(val) && val.length >= 2 && val.length <= 15 } const message = (value: any) => { if (!value) { return '请填写学员真实姓名' } else if (!state.nameReg.test(value)) { return '学员姓名必须为中文' } else if (value.length < 2 || value.length > 15) { return '学员姓名必须为2~15个字' } else { return '' } } // 乐团报名 const onSubmit = async () => { try { const params: any = { orchestraId: route.query.id, schoolId: state.detail.schoolId, ...forms } // 判断是否已报过名 if (state.detail.id) { params.id = state.detail.id } await request.post('/api-student/orchestraRegister/save', { hideLoading: false, data: { ...params, code: props.code } }) setTimeout(() => { // showToast('报名成功') emit('next', 'payment') }, 100) } catch { // } } onMounted(async () => { // state.code = route.query.code || '' // console.log('pre register code: ' + state.code) await getSubjects() // 判断学年制 if (props.schoolSystem === 'sixYearSystem') { state.currentGrade.push({ text: '六年级', value: 6 }) } await studentRegister() // 判断是否有授权码 // if (!props.code) { // setLogout() // const query = { // returnUrl: route.path, // ...route.query // } as any // router.replace({ // path: '/loginMusic', // query: query // }) // } }) return () => (