import { computed, defineComponent, nextTick, onMounted, reactive, ref } from 'vue'; import styles from './index.module.less'; // import infoTitle from '../images/info-title.png'; import { Button, CountDown, Field, Form, Picker, Popup, Radio, RadioGroup, Tag, showToast } from 'vant'; import OWxTip from '@/components/m-wx-tip'; import MProtocol from '@/components/m-protocol'; import MImgCode from '@/components/m-img-code'; import { browser, checkPhone } from '@/helpers/utils'; import request from '@/helpers/request'; import { useStudentRegisterStore } from '@/store/modules/student-register-store'; import { setLoginInit, state } from '@/state'; import iconGift from '../images/icon-gift.png'; import { useRoute, useRouter } from 'vue-router'; import MSticky from '@/components/m-sticky'; import registerBgIcon from '../images/register-bg.png'; import vipGiftIcon from '../images/vip-gift-icon.png'; import agreeYes from '../images/agree-yes.png'; import agreeNo from '../images/agree-no.png'; const classList: any = []; for (let i = 1; i <= 40; i++) { classList.push({ text: i + '班', value: i }); } export default defineComponent({ name: 'register-new', emits: ['close', 'submit'], setup(props, { emit }) { const route = useRoute(); const router = useRouter(); const studentRegisterStore = useStudentRegisterStore(); // 初始化学校编号 studentRegisterStore.setShoolId(route.query.sId as any); const countDownRef = ref(); const gradeList = computed(() => { let tempList: any = []; const five = [ { text: '一年级', value: 1 }, { text: '二年级', value: 2 }, { text: '三年级', value: 3 }, { text: '四年级', value: 4 }, { text: '五年级', value: 5 } ]; const one = [{ text: '六年级', value: 6 }]; const three = [ { text: '七年级', value: 7 }, { text: '八年级', value: 8 }, { text: '九年级', value: 9 } ]; if (forms.gradeYear === 'FIVE_YEAR_SYSTEM') { tempList.push([...five]); } else if (forms.gradeYear === 'SIX_YEAR_SYSTEM') { tempList.push([...five, ...one]); } else if (forms.gradeYear === 'THREE_YEAR_SYSTEM') { tempList.push([...three]); } else if (forms.gradeYear === 'FORE_YEAR_SYSTEM') { tempList.push([...one, ...three]); } else { tempList.push([...five, ...one, ...three]); } return tempList; }); const forms = reactive({ countDownStatus: true, countDownTime: 1000 * 120, // 倒计时时间 modelValue: false, // 是否选中协议 imgCodeStatus: false, gradeNumText: '', currentClassText: '', gradeStatus: false, classStatus: false, loading: false, schoolId: route.query.sId as any, gradeYear: null, schoolType: null, giftVipDay: null, showTips: false, showButton: false, showMessage: '请使用微信扫描二维码' }); const isAgree = ref(false); const studentInfo = reactive({ autoRegister: true, client_id: 'cooleshow-student', client_secret: 'cooleshow-student', extra: { nickname: '', currentGradeNum: '', currentClass: '', gender: 1, registerType: '', // 报名类型 giftVipDay: 0, // 赠送会员天数 clientType: 'TEACHER' }, grant_type: 'password', loginType: 'SMS', password: '', username: '' }); const onCodeSend = () => { forms.countDownStatus = false; nextTick(() => { countDownRef.value.start(); }); }; const onSendCode = () => { // 发送验证码 if (!checkPhone(studentInfo.username)) { return showToast('请输入正确的手机号码'); } forms.imgCodeStatus = true; }; const getUserInfos = async () => { if ( studentInfo.password.length !== 6 || !checkPhone(studentInfo.username) ) { return; } try { // 15907120131; const { data } = await request.get( `/edu-app/open/student/studentInfo?mobile=${studentInfo.username}&code=${studentInfo.password}&type=REGISTER` ); if (data) { if (!studentInfo.extra.nickname) { studentInfo.extra.nickname = data.nickname; } if (!studentInfo.extra.currentGradeNum) { studentInfo.extra.currentGradeNum = data.currentGradeNum; } if (!studentInfo.extra.currentClass) { studentInfo.extra.currentClass = data.currentClass; } // if (!studentInfo.extra.gender) { studentInfo.extra.gender = studentInfo.extra.gender !== data.gender ? data.gender : studentInfo.extra.gender; // studentInfo.username = data.nickname; classList.forEach((i: any) => { if (i.value === data.currentClass) { forms.currentClassText = i.text; } }); const tempGrade: any = gradeList.value[0] || []; tempGrade?.forEach((i: any) => { if (i.value === data.currentGradeNum) { forms.gradeNumText = i.text; } }); } } catch { // } }; const validatePhone = computed(() => { return checkPhone(studentInfo.username) ? true : false; }); const onFinished = () => { forms.countDownStatus = true; countDownRef.value.reset(); }; const onSubmit = async () => { try { if (checkForm()) return; forms.loading = true; await request.get('/edu-app/open/student/schoolQuery', { params: { schoolId: forms.schoolId, mobile: studentInfo.username } }); const { extra, ...res } = studentInfo; const result = await request.post('/edu-app/userlogin', { hideLoading: false, requestType: 'form', data: { ...res, extra: JSON.stringify({ ...extra, schoolId: forms.schoolId }) } }); if (result.code === 5435 || result.code === 5436) { forms.showTips = true; forms.showMessage = '报名信息更新,请刷新后重新提交'; forms.showButton = true; } else { setTimeout(() => { showToast('报名成功'); router.push('/download'); }, 100); } } catch { } finally { forms.loading = false; } }; const checkForm = () => { if (!checkPhone(studentInfo.username)) { showToast('请输入正确的手机号码'); return true; } else if (!studentInfo.password) { showToast('请输入验证码'); return true; } else if (!studentInfo.extra.nickname) { showToast('请输入学生姓名'); return true; } else if (!studentInfo.extra.currentGradeNum) { showToast('请选择所在年级'); return true; } else if (!studentInfo.extra.currentClass) { showToast('请选择所在班级'); return true; } return false; }; const getRegisterGoods = async () => { try { const { data } = await request.get('/edu-app/open/school/detail', { params: { id: forms.schoolId }, noAuthorization: true // 是否请求接口的时候添加toekn }); forms.giftVipDay = data.giftVipDay; forms.schoolType = data.schoolType; forms.gradeYear = data.gradeYear; studentInfo.extra.giftVipDay = data.giftVipDay; studentInfo.extra.registerType = data.registerType; if (browser().weixin) { if (data.status === 0) { forms.showTips = true; forms.showMessage = '二维码已经失效,详情请咨询学校老师'; forms.showButton = false; } } else { forms.showTips = true; } } catch {} }; onMounted(() => { getRegisterGoods(); }); return () => (
{forms.giftVipDay ? (

现在报名立即赠送乐器AI学练工具有效期{' '} {forms.giftVipDay}

) : ( '' )}
{{ label: () => (
联系方式 {/* (直接监护人) */}

(直接监护人)

) }}
手机号是音乐数字课堂的唯一登录账户
{ getUserInfos(); }}> {{ button: () => forms.countDownStatus ? ( 获取验证码 ) : ( (countDownRef.value = el)} auto-start={false} class={styles.countDown} time={forms.countDownTime} onFinish={onFinished} format="ss秒后重试" /> ) }} {{ input: () => ( ) }} (forms.gradeStatus = true)} required input-align="right" /> (forms.classStatus = true)} required input-align="right" /> {studentInfo.extra.registerType === 'GIFT_VIP_DAY' && forms.giftVipDay && Number(forms.giftVipDay) > 0 ? (
注册成功即可获得乐器AI学练工具{forms.giftVipDay}天有效期
) : null} {/*
(isAgree.value = !isAgree.value)} />

{ e.stopPropagation(); router.push('/preview-protocol'); }}>我已阅读并同意《音乐数字课堂学生端》注册协议

*/} {/* */} {forms.imgCodeStatus ? ( { forms.imgCodeStatus = false; }} onSendCode={onCodeSend} /> ) : null} {/* 年级 */} (forms.gradeStatus = false)} onConfirm={(val: any) => { const selectedOption = val.selectedOptions[0]; studentInfo.extra.currentGradeNum = selectedOption.value; forms.gradeNumText = selectedOption.text; forms.gradeStatus = false; }} /> {/* 班级 */} (forms.classStatus = false)} onConfirm={(val: any) => { const selectedOption = val.selectedOptions[0]; studentInfo.extra.currentClass = selectedOption.value; forms.currentClassText = selectedOption.text; forms.classStatus = false; }} /> {/* 是否在微信中打开 */} { forms.showTips = false; await getRegisterGoods(); studentInfo.password = ''; window.scrollTo({ top: 0, behavior: 'smooth' }); }} />
); } });