|
@@ -1,6 +1,14 @@
|
|
-import { defineComponent, onMounted, reactive } from 'vue';
|
|
|
|
|
|
+import { defineComponent, nextTick, onMounted, reactive, ref } from 'vue';
|
|
import styles from './index.module.less';
|
|
import styles from './index.module.less';
|
|
-import { Button, Cell, CellGroup, Field, Popup, showToast } from 'vant';
|
|
|
|
|
|
+import {
|
|
|
|
+ Button,
|
|
|
|
+ Cell,
|
|
|
|
+ CellGroup,
|
|
|
|
+ CountDown,
|
|
|
|
+ Field,
|
|
|
|
+ Popup,
|
|
|
|
+ showToast
|
|
|
|
+} from 'vant';
|
|
import banner from './images/banner.png';
|
|
import banner from './images/banner.png';
|
|
import iconSchool from './images/icon-school.png';
|
|
import iconSchool from './images/icon-school.png';
|
|
import iconTips from './images/icon-tips.png';
|
|
import iconTips from './images/icon-tips.png';
|
|
@@ -11,6 +19,7 @@ import { useRoute, useRouter } from 'vue-router';
|
|
import request from '@/helpers/request';
|
|
import request from '@/helpers/request';
|
|
import { checkPhone } from '@/helpers/utils';
|
|
import { checkPhone } from '@/helpers/utils';
|
|
import { EShoolStaffType } from '@/helpers/constant';
|
|
import { EShoolStaffType } from '@/helpers/constant';
|
|
|
|
+import MImgCode from '@/components/m-img-code';
|
|
|
|
|
|
export default defineComponent({
|
|
export default defineComponent({
|
|
name: 'school-register',
|
|
name: 'school-register',
|
|
@@ -19,13 +28,18 @@ export default defineComponent({
|
|
const router = useRouter();
|
|
const router = useRouter();
|
|
const forms = reactive({
|
|
const forms = reactive({
|
|
id: route.query.id,
|
|
id: route.query.id,
|
|
|
|
+ imgCodeStatus: false,
|
|
type: (route.query.type || '') as string,
|
|
type: (route.query.type || '') as string,
|
|
username: '',
|
|
username: '',
|
|
phone: '',
|
|
phone: '',
|
|
isAgree: false,
|
|
isAgree: false,
|
|
|
|
+ smsCode: '',
|
|
registerStatus: false,
|
|
registerStatus: false,
|
|
- schoolDetail: {} as any
|
|
|
|
|
|
+ countDownStatus: true,
|
|
|
|
+ schoolDetail: {} as any,
|
|
|
|
+ countDownTime: 1000 * 120 // 倒计时时间
|
|
});
|
|
});
|
|
|
|
+ const countDownRef = ref();
|
|
|
|
|
|
const getDetail = async () => {
|
|
const getDetail = async () => {
|
|
try {
|
|
try {
|
|
@@ -35,13 +49,17 @@ export default defineComponent({
|
|
}
|
|
}
|
|
});
|
|
});
|
|
forms.schoolDetail = data || {};
|
|
forms.schoolDetail = data || {};
|
|
- console.log(data, 'data');
|
|
|
|
} catch {
|
|
} catch {
|
|
//
|
|
//
|
|
}
|
|
}
|
|
};
|
|
};
|
|
|
|
|
|
const onSubmit = async () => {
|
|
const onSubmit = async () => {
|
|
|
|
+ console.log(forms.isAgree, 'forms.isAgree');
|
|
|
|
+ if (!forms.isAgree) {
|
|
|
|
+ showToast('请阅读并同意注册协议');
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
if (!forms.username) {
|
|
if (!forms.username) {
|
|
showToast('请输入真实姓名');
|
|
showToast('请输入真实姓名');
|
|
return;
|
|
return;
|
|
@@ -51,22 +69,30 @@ export default defineComponent({
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- if (!forms.isAgree) {
|
|
|
|
- showToast('请阅读并同意注册协议');
|
|
|
|
|
|
+ if (!forms.smsCode) {
|
|
|
|
+ showToast('请输入验证码');
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
+
|
|
try {
|
|
try {
|
|
- await request.post('/api-web/open/school/staffSave', {
|
|
|
|
|
|
+ const res = await request.post('/api-web/open/school/staffSave', {
|
|
hideLoading: false,
|
|
hideLoading: false,
|
|
data: {
|
|
data: {
|
|
- schoolId: forms.schoolDetail.id,
|
|
|
|
|
|
+ schoolId: forms.id,
|
|
userType: forms.type,
|
|
userType: forms.type,
|
|
username: forms.username,
|
|
username: forms.username,
|
|
- mobile: forms.phone
|
|
|
|
|
|
+ mobile: forms.phone,
|
|
|
|
+ code: forms.smsCode
|
|
}
|
|
}
|
|
});
|
|
});
|
|
-
|
|
|
|
- forms.registerStatus = true;
|
|
|
|
|
|
+ if (res.code === 999) {
|
|
|
|
+ setTimeout(() => {
|
|
|
|
+ showToast('您已注册');
|
|
|
|
+ router.push('/download');
|
|
|
|
+ }, 100);
|
|
|
|
+ } else {
|
|
|
|
+ forms.registerStatus = true;
|
|
|
|
+ }
|
|
} catch {
|
|
} catch {
|
|
//
|
|
//
|
|
}
|
|
}
|
|
@@ -77,6 +103,26 @@ export default defineComponent({
|
|
router.push('/download');
|
|
router.push('/download');
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+ const onCodeSend = () => {
|
|
|
|
+ forms.countDownStatus = false;
|
|
|
|
+ nextTick(() => {
|
|
|
|
+ countDownRef.value.start();
|
|
|
|
+ });
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ const onSendCode = () => {
|
|
|
|
+ // 发送验证码
|
|
|
|
+ if (!checkPhone(forms.phone)) {
|
|
|
|
+ return showToast('请输入正确的手机号码');
|
|
|
|
+ }
|
|
|
|
+ forms.imgCodeStatus = true;
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ const onFinished = () => {
|
|
|
|
+ forms.countDownStatus = true;
|
|
|
|
+ countDownRef.value.reset();
|
|
|
|
+ };
|
|
|
|
+
|
|
onMounted(() => {
|
|
onMounted(() => {
|
|
if (!forms.id) {
|
|
if (!forms.id) {
|
|
showToast('链接有误');
|
|
showToast('链接有误');
|
|
@@ -94,7 +140,9 @@ export default defineComponent({
|
|
</div>
|
|
</div>
|
|
<div class={styles.bannerSchool}>
|
|
<div class={styles.bannerSchool}>
|
|
<img src={iconSchool} class={styles.iconSchool} />
|
|
<img src={iconSchool} class={styles.iconSchool} />
|
|
- <p class={styles.schoolName}>{forms.schoolDetail.name}</p>
|
|
|
|
|
|
+ <p class={styles.schoolName}>
|
|
|
|
+ {forms.schoolDetail?.cooperation?.name}
|
|
|
|
+ </p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@@ -104,7 +152,8 @@ export default defineComponent({
|
|
labelAlign="top"
|
|
labelAlign="top"
|
|
class="border"
|
|
class="border"
|
|
v-model={forms.username}
|
|
v-model={forms.username}
|
|
- placeholder="请填写谷尚居的真实姓名"
|
|
|
|
|
|
+ placeholder="请填写您的真实姓名"
|
|
|
|
+ autocomplete="off"
|
|
maxlength={8}>
|
|
maxlength={8}>
|
|
{{
|
|
{{
|
|
label: () => (
|
|
label: () => (
|
|
@@ -118,6 +167,7 @@ export default defineComponent({
|
|
labelAlign="top"
|
|
labelAlign="top"
|
|
v-model={forms.phone}
|
|
v-model={forms.phone}
|
|
placeholder="请填写您的手机号码"
|
|
placeholder="请填写您的手机号码"
|
|
|
|
+ autocomplete="off"
|
|
maxlength={11}>
|
|
maxlength={11}>
|
|
{{
|
|
{{
|
|
label: () => (
|
|
label: () => (
|
|
@@ -134,6 +184,35 @@ export default defineComponent({
|
|
提示:手机号码将成为您管乐迷学校端登录账户
|
|
提示:手机号码将成为您管乐迷学校端登录账户
|
|
</div>
|
|
</div>
|
|
</Cell>
|
|
</Cell>
|
|
|
|
+ <Field
|
|
|
|
+ labelAlign="top"
|
|
|
|
+ class="border"
|
|
|
|
+ v-model={forms.smsCode}
|
|
|
|
+ placeholder="请输入验证码"
|
|
|
|
+ autocomplete="off"
|
|
|
|
+ maxlength={6}>
|
|
|
|
+ {{
|
|
|
|
+ label: () => (
|
|
|
|
+ <>
|
|
|
|
+ 验证码<i class={styles.required}>*</i>
|
|
|
|
+ </>
|
|
|
|
+ ),
|
|
|
|
+ button: () =>
|
|
|
|
+ forms.countDownStatus ? (
|
|
|
|
+ <span class={styles.codeText} onClick={onSendCode}>
|
|
|
|
+ 获取验证码
|
|
|
|
+ </span>
|
|
|
|
+ ) : (
|
|
|
|
+ <CountDown
|
|
|
|
+ ref={(e: any) => (countDownRef.value = e)}
|
|
|
|
+ auto-start={false}
|
|
|
|
+ time={forms.countDownTime}
|
|
|
|
+ onFinish={onFinished}
|
|
|
|
+ format="ss秒"
|
|
|
|
+ />
|
|
|
|
+ )
|
|
|
|
+ }}
|
|
|
|
+ </Field>
|
|
</CellGroup>
|
|
</CellGroup>
|
|
|
|
|
|
<MSticky position="bottom">
|
|
<MSticky position="bottom">
|
|
@@ -170,6 +249,17 @@ export default defineComponent({
|
|
</Button>
|
|
</Button>
|
|
</div>
|
|
</div>
|
|
</Popup>
|
|
</Popup>
|
|
|
|
+
|
|
|
|
+ {forms.imgCodeStatus ? (
|
|
|
|
+ <MImgCode
|
|
|
|
+ v-model:value={forms.imgCodeStatus}
|
|
|
|
+ phone={forms.phone}
|
|
|
|
+ onClose={() => {
|
|
|
|
+ forms.imgCodeStatus = false;
|
|
|
|
+ }}
|
|
|
|
+ onSendCode={onCodeSend}
|
|
|
|
+ />
|
|
|
|
+ ) : null}
|
|
</div>
|
|
</div>
|
|
);
|
|
);
|
|
}
|
|
}
|