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 // 赠送会员天数 }, 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 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 === 5436) { forms.showTips = true; forms.showMessage = '二维码已经失效,详情请咨询学校老师'; forms.showButton = false; } else if (result.code === 5435) { forms.showTips = true; forms.showMessage = '报名信息更新,请刷新后重新提交'; forms.showButton = true; } else { setTimeout(() => { showToast('报名成功'); router.push('/download'); }, 100); } } catch { } finally { forms.loading = false; } }; const checkForm = () => { if (!studentInfo.extra.nickname) { showToast('请输入学生姓名'); return true; } else if (!studentInfo.extra.currentGradeNum) { showToast('请选择所在年级'); return true; } else if (!studentInfo.extra.currentClass) { showToast('请选择所在班级'); return true; } else if (!checkPhone(studentInfo.username)) { showToast('请输入正确的手机号码'); return true; } else if (!studentInfo.password) { showToast('请输入验证码'); return true; } else if (isAgree.value) { 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.registerType !== 'GIFT_VIP_DAY' || data.status === 0) { forms.showTips = true; forms.showMessage = '二维码已经失效,详情请咨询学校老师'; forms.showButton = false; } } else { // forms.showTips = true; } } catch {} }; onMounted(() => { getRegisterGoods(); }); return () => (
现在报名立即赠送乐器AI学练工具有效期{' '} {forms.giftVipDay} 天
{ e.stopPropagation(); router.push('/preview-protocol'); }}>我已阅读并同意《音乐数字课堂学生端》注册协议