1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690 |
- import {
- Image,
- Cell,
- Tag,
- Button,
- Popup,
- showToast,
- Form,
- Field,
- CountDown,
- RadioGroup,
- Radio,
- Picker,
- closeToast
- } from 'vant';
- import {
- computed,
- defineComponent,
- nextTick,
- onMounted,
- onUnmounted,
- reactive,
- ref
- } from 'vue';
- import qs from 'query-string';
- import {
- state as baseState,
- goWechatAuth,
- setLogin,
- setLoginInit
- } from '@/state';
- import styles from './index.module.less';
- import MSticky from '@/components/m-sticky';
- // import MVideo from '@/components/m-video';
- import { useRoute, useRouter } from 'vue-router';
- import { useStudentRegisterStore } from '@/store/modules/student-register-store';
- import request from '@/helpers/request';
- import requestStudent from './request';
- import { browser, checkPhone, getUrlCode, moneyFormat } from '@/helpers/utils';
- import deepClone from '@/helpers/deep-clone';
- import OWxTip from '@/components/m-wx-tip';
- import MDialog from '@/components/m-dialog';
- // import f1 from './images/new/f-1.png';
- // import f2 from './images/new/f-2.png';
- // import f3 from './images/new/f-3.png';
- // import iconTip2 from './images/new/icon-tip2.png';
- // import functionBg from './images/new/function-bg.png';
- import tuangou from './images/new/tuangou.png';
- import icon3 from './images/new/icon-3.png';
- import icon5 from './images/new/icon-5.png';
- import icon6 from './images/new/icon-6.png';
- import giftTip from './images/new/icon-4.png';
- import iconGift from './images/new/icon-gift.png';
- import dayjs from 'dayjs';
- // import MMessageTip from '@/components/m-message-tip';
- import { CurrentTime, useCountDown } from '@vant/use';
- import Payment from '../adapay/payment';
- import QrcodePayment from './qrcode-payment';
- import MImgCode from '@/components/m-img-code';
- import { beforeSubmit } from './order-state';
- import { useInterval, useIntervalFn } from '@vueuse/core';
- import MPopup from '@/components/m-popup';
- import UserAuth from './component/user-auth';
- const classList: any = [];
- for (let i = 1; i <= 40; i++) {
- classList.push({ text: i + '班', value: i });
- }
- const GRADE_ENUM = {
- '1': '一年级',
- '2': '二年级',
- '3': '三年级',
- '4': '四年级',
- '5': '五年级',
- '6': '六年级',
- '7': '七年级',
- '8': '八年级',
- '9': '九年级'
- } as any;
- const getGradeList = (gradeYear: string, instrumentCode?: string) => {
- let tempList: any = [];
- const five = [
- { text: '一年级', value: 1, instrumentCode },
- { text: '二年级', value: 2, instrumentCode },
- { text: '三年级', value: 3, instrumentCode },
- { text: '四年级', value: 4, instrumentCode },
- { text: '五年级', value: 5, instrumentCode }
- ];
- const one = [{ text: '六年级', value: 6, instrumentCode }];
- const three = [
- { text: '七年级', value: 7, instrumentCode },
- { text: '八年级', value: 8, instrumentCode },
- { text: '九年级', value: 9, instrumentCode }
- ];
- if (gradeYear === 'FIVE_YEAR_SYSTEM') {
- tempList.push(...[...five]);
- } else if (gradeYear === 'SIX_YEAR_SYSTEM') {
- tempList.push(...[...five, ...one]);
- } else if (gradeYear === 'THREE_YEAR_SYSTEM') {
- tempList.push(...[...three]);
- } else if (gradeYear === 'FORE_YEAR_SYSTEM') {
- tempList.push(...[...one, ...three]);
- } else {
- tempList.push(...[...five, ...one, ...three]);
- }
- return tempList;
- };
- export default defineComponent({
- name: 'student-register',
- setup() {
- const route = useRoute();
- const studentRegisterStore = useStudentRegisterStore();
- const router = useRouter();
- // 初始化学校编号
- studentRegisterStore.setShoolId(route.query.sId as any);
- const countDownRef = ref();
- const mstickyRef = ref();
- const forms = reactive({
- schoolId: route.query.sId as any,
- paymentType: '', // 支付类型
- // popupShow: false,
- details: [] as any[],
- // schoolType: '', // 学校类型
- gradeYear: '', // 学制
- schoolInstrumentSetType: null as any,
- // bugGoods: false, // 是否购买AI
- registerType: '', // 报名类型
- detailVip: {} as any,
- giftVipDay: 0, // 赠送天数
- submitLoading: false,
- // showMore: true,
- showTips: false,
- showButton: false,
- showMessage: '请使用微信扫描二维码',
- countDownStatus: true,
- countDownTime: 1000 * 120, // 倒计时时间
- // modelValue: false, // 是否选中协议
- imgCodeStatus: false,
- gradeNumText: '',
- currentClassText: '',
- gradeStatus: false,
- classStatus: false,
- loading: false,
- // dialogStatusVisible: false,
- // dialogStatusMessage: '',
- dialogStatus: false,
- dialogMessage: '',
- confirmButtonText: '确定',
- cancelButtonText: '取消',
- messageAlign: 'center' as 'left' | 'center' | 'right',
- dialogConfirmStatus: false,
- contract_sign: false, // 是否实名认证
- countDownTimePay: 60 * 1000,
- dialogConfig: {} as any,
- showOtherSchool: false,
- showOtherMessage: '',
- joinType: '' as 'digitalize' | 'tradition',
- gradeList: [] as any,
- classList: [] as any,
- saveUserId: null as any,
- saveId: null as any,
- openId: null as any,
- code: null as any,
- intervalFnRef: null as any, // 页面订时器
- registerExpireTime: null as any, // 结束时间
- instrumentCode: null as any, // 乐器编码
- activeOverTime: 0, // 活动结束时间
- activeOverStatus: true, // 活动是否结束 默认已结束
- gradePopupIndex: [] as any, // 年级下拉索引
- classPopupIndex: [] as any // 班级下拉索引
- });
- const state = reactive({
- showQrcode: false,
- qrCodeUrl: '',
- pay_channel: '',
- orderInfo: {} as any, // 订单信息
- authShow: false,
- orderNo: null as any,
- config: {} as any,
- paymentStatus: false,
- orderTimer: null as any
- });
- const studentInfo = reactive({
- autoRegister: true,
- client_id: 'cooleshow-student',
- client_secret: 'cooleshow-student',
- extra: {
- nickname: '',
- currentGradeNum: '' as any,
- currentClass: '' as any,
- gender: 1 as any,
- registerType: null as any, // 报名类型
- giftVipDay: 0 // 赠送会员天数
- },
- grant_type: 'password',
- loginType: 'SMS',
- password: '',
- username: ''
- });
- // 页面定时
- const pageTimer = useInterval(1000, { controls: true });
- pageTimer.pause();
- // const countDown = useCountDown({
- // // 倒计时 60 秒
- // time: forms.countDownTimePay,
- // onChange(current: CurrentTime) {
- // forms.dialogStatusMessage = `有待支付订单,请在${Math.ceil(
- // current.total / 1000
- // )}s后重试`;
- // },
- // onFinish() {
- // forms.dialogStatusVisible = false;
- // }
- // });
- const overCountDown = useCountDown({
- time: forms.activeOverTime,
- onFinish() {
- forms.activeOverStatus = true;
- console.log(forms.submitLoading, 'forms.submitLoading');
- if (forms.submitLoading) return;
- applyOver();
- }
- });
- /** 报名结束提示 */
- const applyOver = () => {
- forms.showTips = true;
- forms.showMessage = '团购时间已截止,感谢您的参与';
- forms.showButton = false;
- forms.intervalFnRef?.pause();
- };
- 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 orderType = computed(() => {
- return state.orderInfo.orderType;
- });
- const getRegisterGoods = async () => {
- try {
- const { data } = await request.get(
- '/edu-app/open/userOrder/registerGoods/' + forms.schoolId,
- {
- noAuthorization: true // 是否请求接口的时候添加toekn
- }
- );
- // 默认选中商品
- studentRegisterStore.setVip(data.details || []);
- forms.details = deepClone(data.details || []);
- forms.registerExpireTime = data.registerExpireTime; // '2024-03-27 17:33:52'; //
- if (forms.registerExpireTime) {
- if (dayjs(new Date()).isBefore(forms.registerExpireTime)) {
- // 活动没有结束
- forms.activeOverStatus = false;
- // 默认返回毫秒
- forms.activeOverTime = dayjs(forms.registerExpireTime).diff(
- dayjs(new Date())
- );
- overCountDown.reset(forms.activeOverTime);
- overCountDown.start();
- } else {
- applyOver();
- forms.activeOverStatus = true;
- }
- }
- if (forms.details.length > 0) {
- forms.detailVip = forms.details[0];
- // forms.giftVipDay = forms.details[0].membershipDays;
- }
- forms.giftVipDay = data.giftVipDay || 0;
- forms.gradeYear = data.gradeYear;
- forms.schoolInstrumentSetType = data.schoolInstrumentSetType;
- forms.registerType = data.registerType;
- studentInfo.extra.registerType = data.registerType;
- const schoolInstrumentList = data.schoolInstrumentList || [];
- if (data.schoolInstrumentSetType === 'SCHOOL') {
- const instrumentCode = schoolInstrumentList[0]?.instrumentCode;
- forms.gradeList = getGradeList(data.gradeYear, instrumentCode);
- forms.classList = classList;
- } else if (data.schoolInstrumentSetType === 'GRADE') {
- schoolInstrumentList.forEach((item: any) => {
- forms.gradeList.push({
- text: GRADE_ENUM[item.gradeNum],
- value: item.gradeNum,
- instrumentId: item.instrumentId,
- instrumentCode: item.instrumentCode
- });
- });
- forms.gradeList.sort((a: any, b: any) => a.value - b.value);
- // console.log(
- // forms.gradeList.sort((a: any, b: any) => a.value - b.value),
- // 'forms.gradeList.sort((a: any, b: any) => a.value - b.value)'
- // );
- forms.classList = classList;
- } else if (data.schoolInstrumentSetType === 'CLASS') {
- // 班级
- const tempGradeList: any[] = [];
- schoolInstrumentList.forEach((item: any) => {
- if (!tempGradeList.includes(item.gradeNum)) {
- tempGradeList.push(item.gradeNum);
- }
- });
- const lastGradeList: any[] = [];
- tempGradeList.forEach((temp: any) => {
- const list = {
- text: GRADE_ENUM[temp],
- value: temp,
- instrumentId: '',
- instrumentCode: '',
- instrumentName: '',
- classList: [] as any
- };
- schoolInstrumentList.forEach((item: any) => {
- if (temp === item.gradeNum) {
- list.instrumentId = item.instrumentId;
- list.instrumentCode = item.instrumentCode;
- list.instrumentName = item.instrumentName;
- list.classList.push({
- text: item.classNum + '班',
- value: item.classNum,
- instrumentCode: item.instrumentCode
- });
- }
- });
- // 排序班级
- list.classList.sort((a: any, b: any) => a.value - b.value);
- lastGradeList.push(list);
- });
- lastGradeList.sort((a: any, b: any) => a.value - b.value);
- forms.gradeList = lastGradeList;
- forms.classList = [];
- } else {
- forms.gradeList = getGradeList(data.gradeYear);
- forms.classList = classList;
- }
- if (browser().weixin) {
- // if (
- // data.schoolStatus === 0 &&
- // forms.schoolId == '1770035687490105346'
- // ) {
- // forms.showTips = true;
- // forms.showMessage = '团购时间已截止,感谢您的参与';
- // forms.showButton = false;
- // return;
- // }
- if (data.registerType !== 'BUG_GOODS' || data.schoolStatus === 0) {
- forms.showTips = true;
- forms.showMessage = '二维码已经失效,详情请咨询学校老师';
- forms.showButton = false;
- return;
- }
- } else {
- forms.showTips = true;
- return;
- }
- // 判断是否有倒计时,倒计时是滞结束
- if (!forms.registerExpireTime || !forms.activeOverStatus) {
- pagePointInit();
- }
- } catch {}
- };
- // 计算金额
- const calcPrice = computed(() => {
- let amount: number = 0; //现价
- let originAmount: number = 0; // 原价
- const vipList: any[] = studentRegisterStore.getVip;
- vipList.forEach((vip: any) => {
- amount += Number(vip.currentPrice);
- originAmount += Number(vip.originalPrice);
- });
- // const goodsList: any[] = studentRegisterStore.getGoods;
- // goodsList.forEach((good: any) => {
- // amount += Number(good.price) * good.quantity;
- // originAmount += Number(good.originalPrice) * good.quantity;
- // });
- return {
- amount,
- originAmount
- };
- });
- const checkForm = (status = true) => {
- if (!checkPhone(studentInfo.username)) {
- status && showToast('请输入正确的手机号码');
- return true;
- } else if (!studentInfo.password) {
- status && showToast('请输入验证码');
- return true;
- } else if (!studentInfo.extra.nickname) {
- status && showToast('请输入学生姓名');
- return true;
- } else if (!studentInfo.extra.currentGradeNum) {
- status && showToast('请选择所在年级');
- return true;
- } else if (!studentInfo.extra.currentClass) {
- status && showToast('请选择所在班级');
- return true;
- }
- return false;
- };
- // 登记成功之后购买
- const onSubmit = async () => {
- forms.submitLoading = true;
- try {
- if (checkForm()) {
- forms.submitLoading = false;
- return;
- }
- const { extra, ...res } = studentInfo;
- const result = await request.post('/edu-app/userlogin', {
- requestType: 'form',
- data: {
- ...res,
- extra: JSON.stringify({
- ...extra,
- giftVipDay:
- forms.detailVip.membershipDays || 0 + forms.giftVipDay || 0,
- schoolId: forms.schoolId
- })
- }
- });
- if (result.code !== 200) {
- if (result.code === 5436) {
- forms.showTips = true;
- forms.showMessage = '二维码已经失效,详情请咨询学校老师';
- forms.showButton = false;
- } else if (result.code === 5435) {
- forms.showTips = true;
- forms.showMessage = result.message;
- forms.showButton = true;
- } else if (result.code === 5437) {
- forms.showTips = true;
- forms.showMessage = '团购时间已截止,感谢您的参与'; //result.message;
- forms.showButton = false;
- }
- } else {
- studentRegisterStore.setToken(
- result.data.token_type + ' ' + result.data.access_token
- );
- setLoginInit();
- let joinType = 'NOT_REGISTER';
- if (forms.joinType === 'digitalize') {
- joinType = 'SELECT_INSTRUMENT';
- }
- if (forms.joinType === 'tradition') {
- joinType = 'NOT_BUY_INSTRUMENT';
- }
- // 更新时间
- const id = await updateStat(
- pageTimer.counter.value,
- joinType,
- result.data.userId,
- forms.schoolId
- );
- forms.saveId = id;
- forms.saveUserId = id;
- pageTimer.counter.value = 0;
- // 获取用户信息
- const res = await request.get('/edu-app/user/getUserInfo', {
- requestType: 'form'
- });
- setLogin(res.data);
- await onRegisterSubmit();
- }
- } catch {
- } finally {
- forms.submitLoading = false;
- }
- };
- // 登记成功之后购买
- const onRegisterSubmit = async () => {
- try {
- // 请求是否有待支付订单,如果有则自动关闭
- const status = await paymentOrderUnpaid();
- if (status) return;
- const schoolInfo = await request.get(
- '/edu-app/userPaymentOrder/registerStatus/' + forms.schoolId
- );
- const vipList = studentRegisterStore.getVip;
- // 传统方式
- if (forms.joinType === 'tradition') {
- setTimeout(() => {
- showToast('报名成功');
- // router.push('/download');
- }, 100);
- setTimeout(() => {
- if (browser().weixin) {
- // 关闭微信
- (window as any).WeixinJSBridge.call('closeWindow');
- }
- }, 1000);
- return;
- }
- if (schoolInfo.data.hasBuyCourse && vipList.length > 0) {
- forms.dialogConfirmStatus = true;
- return;
- }
- await paymentContinue();
- } catch {
- //
- }
- };
- 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) {
- const tempGrade: any = forms.gradeList || [];
- // console.log(tempGrade, 'tempGrade');
- tempGrade?.forEach((i: any) => {
- if (i.value === data.currentGradeNum) {
- forms.instrumentCode = i.instrumentCode;
- forms.gradeNumText = i.text;
- studentInfo.extra.currentGradeNum = data.currentGradeNum;
- if (forms.schoolInstrumentSetType === 'CLASS') {
- forms.classList = i.classList;
- }
- }
- });
- }
- if (!studentInfo.extra.currentClass) {
- forms.classList.forEach((i: any) => {
- if (i.value === data.currentClass) {
- forms.currentClassText = i.text;
- studentInfo.extra.currentClass = data.currentClass;
- }
- });
- }
- studentInfo.extra.gender =
- studentInfo.extra.gender !== data.gender
- ? data.gender
- : studentInfo.extra.gender;
- }
- } catch {
- //
- }
- };
- // 查询未支付订单
- const paymentOrderUnpaid = async () => {
- let result = false;
- try {
- const { data } = await request.get(
- '/edu-app/userPaymentOrder/schoolRegisterOrder?schoolId=' +
- forms.schoolId
- );
- // 判断是否有待支付订单
- if (data && data.length > 0) {
- let isPadding = false; // 是否有待支付订单
- let paddingConfig = {} as any;
- let paddingData = {} as any;
- let isFinal = false; // 是否有完成订单
- let finalConfig = {} as any;
- data.forEach((element: any) => {
- // 判断是否待支付
- if (element.status === 'PAYING' || element.status === 'WAIT_PAY') {
- isPadding = true;
- paddingConfig = element.paymentConfig;
- paddingData = element;
- }
- if (
- element.status === 'PAID' ||
- element.status === 'PART_REFUNDED' ||
- element.status === 'REFUNDED'
- ) {
- isFinal = true;
- finalConfig = element.paymentConfig;
- }
- });
- // 判断是否有完成订单 并且选择 自备
- if (isFinal && forms.joinType === 'tradition') {
- setTimeout(() => {
- showToast('您已通过数字化方式报名成功');
- }, 100);
- return true;
- }
- // 提交报名信息时,判断该手机号是否存在待支付订单,若存则判断本次提交的报名方式,若本次提交的是团购则提示【您有待支付的报名订单,是否继续支付 重新下单/继续支付】,点击重新下单时,关闭老订单,创建新订单;若本次提交的是自备,则提示 【您有数字化方式报名的待支付订单,请关闭订单后重新报名 取消/关闭】取消则停留在当前界面,关闭则关闭订单,并停留在当前界面,用户需要再次点击报名按钮提交信息
- if (isPadding && forms.joinType === 'tradition') {
- forms.dialogStatus = true;
- forms.dialogMessage =
- '您有数字化方式报名的待支付订单,请关闭订单后重新报名';
- forms.cancelButtonText = '取消';
- forms.confirmButtonText = '关闭';
- forms.dialogConfig = paddingConfig;
- forms.messageAlign = 'left';
- return true;
- }
- if (isPadding && forms.joinType === 'digitalize') {
- // 会选判断逻辑 -
- await request.get(
- '/edu-app/userPaymentOrder/registerStatus/' + forms.schoolId
- );
- // const vipList = studentRegisterStore.getVip;
- // if (schoolInfo.data.hasBuyCourse && vipList.length > 0) {
- // forms.dialogConfirmStatus = true;
- // return true;
- // }
- // 最终确认,有待支付订单直接去支付,没有则才会创建订单
- state.config = paddingConfig?.paymentConfig;
- state.orderNo = paddingConfig?.orderNo;
- await lastSubmit();
- return true;
- // 判断是否可以取消订单
- // if (paddingData.cancelPayment) {
- // await request.post(
- // '/edu-app/userPaymentOrder/cancelPayment/' +
- // paddingConfig.orderNo
- // );
- // return false;
- // } else {
- // // forms.countDownTime = paddingData.cancelTimes;
- // // countDown.reset(Number(paddingData.cancelTimes));
- // // countDown.start();
- // // forms.dialogStatusMessage = `有待支付订单,请在${Math.ceil(
- // // countDown.current.value.total / 1000
- // // )}s后重试`;
- // // forms.dialogStatusVisible = true;
- // // forms.dialogConfig = paddingData;
- // // 继续支付
- // // const paymentConfig = forms.dialogConfig;
- // state.config = paddingConfig?.paymentConfig;
- // state.orderNo = paddingConfig?.orderNo;
- // await lastSubmit();
- // return true;
- // }
- }
- return false;
- } else {
- return false;
- }
- } catch {
- //
- }
- return result;
- };
- // 重新下单
- const resetOrderPayment = async () => {
- try {
- const orderNo = forms.dialogConfig?.orderNo;
- if (!orderNo) return;
- await request.post(
- '/edu-app/userPaymentOrder/cancelPayment/' + orderNo
- );
- await onRegisterSubmit();
- } catch {
- //
- }
- };
- // 取消订单
- const cancelPaymentOrder = async () => {
- try {
- const orderNo = forms.dialogConfig?.orderNo;
- if (!orderNo) return;
- await request.post(
- '/edu-app/userPaymentOrder/cancelPayment/' + orderNo
- );
- } catch {}
- };
- const paymentContinue = async () => {
- try {
- const vipList = studentRegisterStore.getVip;
- const goodsList = studentRegisterStore.getGoods;
- const params: any[] = [];
- vipList.forEach((vip: any) => {
- params.push({
- giftVipDay: vip.membershipDays,
- goodsId: vip.goodsId,
- goodsNum: 1,
- goodsType: vip.goodsType,
- paymentCashAmount: vip.currentPrice, // 现金支付金额
- paymentCouponAmount: 0 // 优惠券金额
- });
- });
- goodsList.forEach((goods: any) => {
- params.push({
- goodsId: goods.productId,
- goodsNum: goods.quantity,
- goodsType: 'INSTRUMENTS',
- paymentCashAmount: goods.price, // 现金支付金额
- paymentCouponAmount: 0, // 优惠券金额
- goodsSkuId: goods.productSkuId
- });
- });
- // 创建订单
- const result = await request.post(
- '/edu-app/userPaymentOrder/executeOrder',
- {
- // hideLoading: false,
- data: {
- buryId: forms.saveUserId,
- registerType: forms.registerType,
- paymentType: forms.paymentType,
- bizId: forms.schoolId, // 乐团编号
- orderType: 'SCHOOL_REGISTER',
- paymentCashAmount: calcPrice.value.amount || 0,
- paymentCouponAmount: 0,
- goodsInfos: params,
- orderName: '学生登记',
- orderDesc: '学生登记'
- }
- }
- );
- if (result.code === 5436) {
- forms.showTips = true;
- forms.showMessage = '二维码已经失效,详情请咨询学校老师';
- forms.showButton = false;
- } else if (result.code === 5435) {
- forms.showTips = true;
- forms.showMessage = result.message;
- forms.showButton = true;
- } else {
- state.config = {
- ...result.data.paymentConfig,
- paymentType: result.data.paymentType
- };
- state.orderNo = result.data.orderNo;
- await lastSubmit();
- }
- } catch (e: any) {
- console.log(e, 'any');
- }
- };
- const lastSubmit = async () => {
- try {
- const users = baseState.user.data;
- // 判断是否需要实名认证, 姓名,卡号 - 参数设置可以控制
- if (
- forms.contract_sign &&
- (!users?.account.realName || !users?.account.idCardNo)
- ) {
- state.authShow = true;
- return;
- }
- const { data } = await request.post(
- '/edu-app/userPaymentOrder/updateReceiveAddress',
- {
- // hideLoading: false,
- data: {
- orderNo: state.orderNo,
- orderType: 'SCHOOL_REGISTER'
- }
- }
- );
- state.pay_channel = data.paymentChannel;
- if (data.status !== 'WAIT_PAY' && data.status !== 'PAYING') {
- router.replace({
- path: '/payment-result',
- query: {
- orderNo: state.orderNo
- }
- });
- } else {
- onCallback();
- }
- } catch {
- //
- }
- };
- /**
- * @description 回调,判断是否有支付渠道,如果有则直接去支付
- * @returns void
- */
- const onCallback = () => {
- const pt = state.pay_channel;
- // 判断是否有支付方式
- if (pt) {
- const payCode: string = beforeSubmit(state.pay_channel);
- onConfirm({
- payCode,
- pay_channel: pt
- });
- } else {
- if (orderType.value === 'VIP') {
- state.paymentStatus = true;
- } else {
- // 直接去拉取微信支付
- onConfirm({
- payCode: 'payResult',
- pay_channel: 'wx_pub'
- });
- }
- }
- };
- const onConfirm = (val: any) => {
- const config: any = state.config;
- state.pay_channel = val.pay_channel;
- const params = qs.stringify({
- pay_channel: val.pay_channel,
- wxAppId: config.wxAppId,
- alipayAppId: config.alipayAppId,
- paymentType: forms.paymentType,
- body: config.body,
- price: config.price,
- orderNo: config.merOrderNo,
- userId: config.userId
- });
- // console.log(params, state.config);
- // return;
- if (val.payCode === 'payResult') {
- window.location.href =
- window.location.origin + '/classroom-app/#/payResult?' + params;
- } else {
- state.qrCodeUrl =
- window.location.origin + '/classroom-app/#/payDefine?' + params;
- state.showQrcode = true;
- state.paymentStatus = false;
- setTimeout(() => {
- getPaymentOrderStatus();
- }, 300);
- }
- };
- // 放弃支付时,则取消订单
- const onBackOut = async () => {
- try {
- await request.post(
- '/edu-app/userPaymentOrder/cancelPayment/' + state.orderNo
- );
- // router.back();
- } catch {
- //
- }
- };
- // 轮询查询订单状态
- const getPaymentOrderStatus = async () => {
- // 循环查询订单
- // const orderNo = state.orderNo
- const orderTimer = setInterval(async () => {
- // 判断是否在当前路由,如果不是则清除定时器
- if (route.name != 'student-register-form') {
- clearInterval(orderTimer);
- return;
- }
- state.orderTimer = orderTimer;
- try {
- const { data } = await request.post(
- '/edu-app/open/userOrder/paymentStatus/' + state.orderNo,
- {
- hideLoading: true
- }
- );
- if (data.status !== 'WAIT_PAY' && data.status !== 'PAYING') {
- // 默认关闭支付二维码弹窗
- state.showQrcode = false;
- clearInterval(state.orderTimer);
- setTimeout(() => {
- router.replace({
- path: '/payment-result',
- query: {
- orderNo: state.orderNo
- }
- });
- }, 100);
- }
- } catch {
- //
- clearInterval(state.orderTimer);
- }
- }, 5000);
- };
- // 实名认证成功
- const onAuthSuccess = () => {
- //
- state.authShow = false;
- paymentContinue(); // 实名成功后自动支付
- };
- /**
- * 页面停留时间
- * @param pageBrowseTime 停留时间
- * @param joinType 加入方式
- * @param userId 用户编号
- * @param schoolId 学校编号
- */
- const updateStat = async (
- pageBrowseTime = 5,
- joinType?: string,
- userId?: string,
- schoolId?: string
- ) => {
- try {
- const { data } = await requestStudent.post(
- '/edu-app/open/studentRegisterPointRecord/update',
- {
- data: {
- id: forms.saveId,
- useTime: pageBrowseTime, // 固定10秒
- joinType,
- userId,
- schoolId
- }
- }
- );
- forms.saveId = data;
- return data;
- } catch {
- //
- }
- };
- const getAppIdAndCode = async (url?: string) => {
- try {
- const { data } = await request.get(
- '/edu-app/open/paramConfig/wechatAppId'
- );
- // 判断是否有微信appId
- if (data) {
- closeToast();
- goWechatAuth(data, url);
- }
- } catch {
- //
- }
- };
- if (browser().weixin) {
- //授权
- const openId = sessionStorage.getItem('active-open-id');
- forms.openId = openId;
- const code = getUrlCode();
- if (!code) {
- const newUrl =
- window.location.origin +
- window.location.pathname +
- '#' +
- route.path +
- '?' +
- qs.stringify({
- ...route.query
- });
- getAppIdAndCode(newUrl);
- return '';
- } else {
- forms.code = code;
- }
- }
- const formatTimerTo = (num: number): string => {
- if (num > 9) {
- return num + '';
- } else {
- return '0' + num;
- }
- };
- const pagePointInit = async () => {
- try {
- // 判断是否获取微信code码
- if (!forms.code) return;
- const { data } = await request.post(
- '/edu-app/open/studentRegisterPointRecord/save',
- {
- data: {
- code: forms.code,
- schoolId: forms.schoolId,
- openId: forms.openId
- }
- }
- );
- forms.saveId = data.id;
- forms.openId = data.openId;
- sessionStorage.setItem('active-open-id', data.openId);
- // 间隔多少时间同步数据
- forms.intervalFnRef = useIntervalFn(async () => {
- // 页面时间恢复
- pageTimer.counter.value = 0;
- pageTimer.resume();
- // 同步数据时先进行有效时间进行保存
- await updateStat();
- }, 5000);
- } catch {}
- };
- onMounted(async () => {
- await getRegisterGoods();
- });
- onUnmounted(() => {
- forms.intervalFnRef?.pause(); // 暂停回调
- });
- return () => (
- <div class={styles['student-register']}>
- <div class={styles.studentRegisterContainer}>
- {!forms.activeOverStatus && (
- <div class={styles.countdownSection}>
- <div class={styles.timer}>
- <img src={icon3} class={styles.timerTitle} />
- <div class={styles.timerAll}>
- <span>{formatTimerTo(overCountDown.current.value.days)}</span>
- 天
- <span>
- {formatTimerTo(overCountDown.current.value.hours)}
- </span>
- 时
- <span>
- {formatTimerTo(overCountDown.current.value.minutes)}
- </span>
- 分
- <span>
- {formatTimerTo(overCountDown.current.value.seconds)}
- </span>
- 秒
- </div>
- </div>
- <div class={styles.timerTip}>
- 为了确保您能顺利参与学习,请在规定时间内报名。
- </div>
- </div>
- )}
- <div
- class={[
- styles.studentSection,
- styles.studentSectionForm,
- forms.giftVipDay <= 0 && styles.noSendDay
- ]}
- // style={{ display: 'none' }}
- >
- <div class={styles.title1}></div>
- <Form labelAlign="left" class={styles.registerForm}>
- <Field
- clearable={false}
- label="联系方式(直接监护人)"
- placeholder="请输入手机号码"
- type="tel"
- required
- autocomplete="off"
- inputAlign="right"
- class={styles.username}
- v-model={studentInfo.username}
- border={false}
- maxlength={11}>
- {{
- label: () => (
- <div>
- 联系方式
- {/* (直接监护人) */}
- <p class={styles.tips}>(直接监护人)</p>
- </div>
- )
- }}
- </Field>
- <div class={['van-hairline--bottom', styles.fieldTipsGroup]}>
- <div class={[styles.fieldTips]}>
- 手机号是音乐数字课堂的唯一登录账户
- </div>
- </div>
- <Field
- center
- clearable={false}
- required
- inputAlign="right"
- label="验证码"
- placeholder="请输入验证码"
- autocomplete="off"
- type="number"
- v-model={studentInfo.password}
- maxlength={6}
- onUpdate:modelValue={(val: any) => {
- getUserInfos();
- }}>
- {{
- button: () =>
- forms.countDownStatus ? (
- <span
- class={[
- styles.codeText,
- !validatePhone.value ? styles.codeTextDisabled : ''
- ]}
- onClick={onSendCode}>
- 获取验证码
- </span>
- ) : (
- <CountDown
- ref={(el: any) => (countDownRef.value = el)}
- auto-start={false}
- class={styles.countDown}
- time={forms.countDownTime}
- onFinish={onFinished}
- format="ss秒后重试"
- />
- )
- }}
- </Field>
- <Field
- clearable={false}
- required
- inputAlign="right"
- label="学生姓名"
- placeholder="请输入学生姓名"
- autocomplete="off"
- maxlength={14}
- v-model={studentInfo.extra.nickname}
- />
- <Field
- clearable={false}
- required
- inputAlign="right"
- label="学生性别"
- placeholder="请选择性别"
- autocomplete="off"
- // v-model={studentInfo.extra.nickname}
- >
- {{
- input: () => (
- <RadioGroup
- checked-color="linear-gradient( 135deg, #31C7FF 0%, #007AFE 100%)"
- v-model={studentInfo.extra.gender}
- direction="horizontal">
- <Tag
- size="large"
- type="primary"
- color={
- !(studentInfo.extra.gender === 1)
- ? '#F5F6FA'
- : 'linear-gradient( 135deg, #31C7FF 0%, #007AFE 100%)'
- }
- textColor={
- !(studentInfo.extra.gender === 1) ? '#626264' : '#fff'
- }
- class={styles.radioSection}>
- <Radio class={styles.radioItem} name={1}></Radio>男
- </Tag>
- <Tag
- size="large"
- type="primary"
- color={
- !(studentInfo.extra.gender === 0)
- ? '#F5F6FA'
- : 'linear-gradient( 135deg, #31C7FF 0%, #007AFE 100%)'
- }
- textColor={
- !(studentInfo.extra.gender === 0) ? '#626264' : '#fff'
- }
- class={styles.radioSection}>
- <Radio class={styles.radioItem} name={0}></Radio>女
- </Tag>
- </RadioGroup>
- )
- }}
- </Field>
- <Field
- clearable={false}
- required
- inputAlign="right"
- label="所在年级"
- placeholder="请选择年级"
- isLink
- readonly
- clickable={false}
- modelValue={forms.gradeNumText}
- onClick={() => {
- forms.gradePopupIndex = [studentInfo.extra.currentGradeNum];
- forms.gradeStatus = true;
- }}
- />
- <Field
- clearable={false}
- required
- inputAlign="right"
- label="所在班级"
- placeholder="请选择班级"
- isLink
- readonly
- clickable={false}
- modelValue={forms.currentClassText}
- onClick={() => {
- if (
- forms.schoolInstrumentSetType === 'CLASS' &&
- forms.classList.length <= 0
- ) {
- showToast('请先选择年级');
- return;
- }
- forms.classPopupIndex = [studentInfo.extra.currentClass];
- forms.classStatus = true;
- }}
- />
- {forms.giftVipDay > 0 ? (
- <div class={styles.memberNumer}>
- <img src={iconGift} class={styles.iconGift} />
- <p>
- 注册成功即可获得乐器AI学练工具
- <span>{forms.giftVipDay || 0}</span>天有效期
- </p>
- </div>
- ) : (
- ''
- )}
- </Form>
- </div>
- <div class={styles.studentSection}>
- <div class={styles.title2}></div>
- <div class={styles.goodsGroup}>
- <div
- class={[
- styles.goodsItem,
- styles.digitalize,
- forms.joinType === 'digitalize' && styles.checked
- ]}
- onClick={() => {
- //
- if (checkForm()) {
- showToast('请将资料填写完整');
- return;
- }
- forms.joinType = 'digitalize';
- nextTick(() => {
- mstickyRef.value?.onChnageHeight();
- setTimeout(() => {
- window.scrollTo(0, 1000);
- }, 50);
- });
- }}>
- <div class={styles.goodsInner}>
- <i class={styles.proposalTip}></i>
- 数字化方式
- </div>
- </div>
- <div
- class={[
- styles.goodsItem,
- styles.tradition,
- forms.joinType === 'tradition' && styles.checked1
- ]}
- onClick={() => {
- if (checkForm()) {
- showToast('请将资料填写完整');
- return;
- }
- forms.joinType = 'tradition';
- nextTick(() => {
- mstickyRef.value?.onChnageHeight();
- setTimeout(() => {
- window.scrollTo(0, 1000);
- }, 50);
- });
- }}>
- <div class={styles.goodsInner}>传统方式</div>
- </div>
- </div>
- </div>
- {forms.joinType === 'digitalize' && (
- <div class={[styles.goodsExtra]}>
- <i class={styles.iconArrow}></i>
- <Cell border={false} class={styles.goodsCell}>
- {{
- icon: () => (
- <Image
- class={styles.img}
- src={forms.detailVip.goodsUrl || tuangou}
- />
- ),
- title: () => (
- <div class={styles.section}>
- <div class={styles.sectionContent}>
- <h2>
- {/* {forms.detailVip.goodsName} */}
- <img src={icon5} class={styles.goodsName} />
- <Tag class={styles.brandName}>
- {/* {forms.detailVip.brandName} */}
- 12个月
- </Tag>
- </h2>
- <p class={[styles.model]}>
- {/* 解决学生不会练、不知练的对错、家长无法辅导、无需再额外请老师 */}
- {/* {forms.detailVip.description} */}
- <p>
- <i></i>解决学生不会练、不知练的对错
- </p>
- <p>
- <i></i>家长无法辅导、无需再额外请老师
- </p>
- </p>
- {/* <span class={styles.sendInstrument}>赠送课堂乐器</span> */}
- <img src={icon6} class={styles.sendInstrument} />
- </div>
- </div>
- )
- }}
- </Cell>
- {forms.detailVip.membershipDays ? (
- <div class={styles.memberNumer}>
- <img src={iconGift} class={styles.iconGift} />
- <p>
- 现在购买赠送乐器AI学练工具
- <span>{forms.detailVip.membershipDays || 0}</span>天有效期
- </p>
- </div>
- ) : (
- ''
- )}
- </div>
- )}
- {forms.joinType === 'tradition' && (
- <div class={styles.goodsTradition}>
- <i class={styles.iconArrow}></i>
- <div class={styles.goodsTitle}></div>
- <div class={styles.steps}>
- <div class={styles.step}>
- <span class={styles.nums}>
- <span class={styles.numInner}>1</span>
- </span>
- <div class={styles.stepContent}>
- <span>AI工具标准:</span>
- 可以学练音乐教材中的乐曲,通过手机应用商店准备。
- </div>
- </div>
- {['Panpipes', 'Ocarina', 'Tenor Recorder', 'Woodwind'].includes(
- forms.instrumentCode
- ) && (
- <div class={styles.step}>
- <span class={styles.nums}>
- <span class={styles.numInner}>2</span>
- </span>
- <div class={styles.stepContent}>
- <span>
- {forms.instrumentCode === 'Panpipes' && '排箫'}
- {forms.instrumentCode === 'Ocarina' && '陶笛'}
- {forms.instrumentCode === 'Tenor Recorder' && '竖笛'}
- {forms.instrumentCode === 'Woodwind' && '葫芦丝'}
- 标准:
- </span>
- {forms.instrumentCode === 'Panpipes' &&
- '管数不限,建议20管以上C调加嘴排箫(不需要重复更换),黑色,选择单一原调(调性多很难掌握);'}
- {forms.instrumentCode === 'Ocarina' &&
- 'C调、蓝色、十二孔高音、树脂或陶土均可;'}
- {forms.instrumentCode === 'Tenor Recorder' &&
- 'C调、木质、高音德式八孔;'}
- {forms.instrumentCode === 'Woodwind' &&
- 'C调、红木色、树脂或木质;'}
- {/* 管数不限,建议20管以上C调加嘴排箫(音域宽,能演奏更多复杂乐曲,不需要重复更换),黑色,要选择单一原调(调性多学生很难掌握),价格由学生根据自身情况确定。 */}
- </div>
- </div>
- )}
- </div>
- </div>
- )}
- {forms.joinType && (
- <MSticky position="bottom" ref={mstickyRef}>
- <div class={styles.paymentContainer}>
- {forms.joinType === 'digitalize' && (
- <>
- <div class={styles.payemntPrice}>
- <img src={giftTip} class={styles.giftTip} />
- <div>
- <span class={styles.needPrice}>
- <i style="font-style: normal">¥ </i>
- <span>{moneyFormat(calcPrice.value.amount)}</span>
- <i class={styles.unit} style="font-style: normal">
- /年
- </i>
- </span>
- {calcPrice.value.originAmount >
- calcPrice.value.amount ? (
- <del class={styles.allPrice}>
- ¥ {moneyFormat(calcPrice.value.originAmount)}
- </del>
- ) : (
- ''
- )}
- </div>
- </div>
- <div
- class={styles.paymentBtn}
- onClick={() => {
- onSubmit();
- }}>
- <Button
- round
- disabled={forms.submitLoading}
- loading={forms.submitLoading}>
- 立即支付
- </Button>
- </div>
- </>
- )}
- {forms.joinType === 'tradition' && (
- <div
- class={styles.traditionBtn}
- onClick={() => {
- onSubmit();
- }}>
- <Button
- round
- disabled={forms.submitLoading}
- loading={forms.submitLoading}>
- 提交报名
- </Button>
- </div>
- )}
- </div>
- </MSticky>
- )}
- </div>
- {forms.imgCodeStatus ? (
- <MImgCode
- v-model:value={forms.imgCodeStatus}
- phone={studentInfo.username}
- type="REGISTER"
- onClose={() => {
- forms.imgCodeStatus = false;
- }}
- onSendCode={onCodeSend}
- />
- ) : null}
- {/* 年级 */}
- <Popup
- v-model:show={forms.gradeStatus}
- position="bottom"
- round
- safeAreaInsetBottom
- lazyRender={false}
- class={'popupBottomSearch'}>
- <Picker
- showToolbar
- v-model={forms.gradePopupIndex}
- columns={forms.gradeList}
- onCancel={() => (forms.gradeStatus = false)}
- onConfirm={(val: any) => {
- const selectedOption = val.selectedOptions[0];
- studentInfo.extra.currentGradeNum = selectedOption.value;
- forms.gradeNumText = selectedOption.text;
- forms.gradeStatus = false;
- if (['SCHOOL', 'GRADE'].includes(forms.schoolInstrumentSetType)) {
- forms.instrumentCode = selectedOption.instrumentCode;
- }
- if (forms.schoolInstrumentSetType === 'CLASS') {
- forms.classList = selectedOption.classList;
- }
- if (['CLASS', 'GRADE'].includes(forms.schoolInstrumentSetType)) {
- forms.currentClassText = '';
- studentInfo.extra.currentClass = '';
- }
- }}
- />
- </Popup>
- {/* 班级 */}
- <Popup
- v-model:show={forms.classStatus}
- position="bottom"
- round
- class={'popupBottomSearch'}>
- <Picker
- showToolbar
- v-model={forms.classPopupIndex}
- columns={forms.classList}
- onCancel={() => (forms.classStatus = false)}
- onConfirm={(val: any) => {
- const selectedOption = val.selectedOptions[0];
- studentInfo.extra.currentClass = selectedOption.value;
- forms.currentClassText = selectedOption.text;
- forms.classStatus = false;
- if (['CLASS'].includes(forms.schoolInstrumentSetType)) {
- forms.instrumentCode = selectedOption.instrumentCode;
- }
- }}
- />
- </Popup>
- {/* 已经购买过样品 */}
- <MDialog
- title="提示"
- v-model:show={forms.dialogConfirmStatus}
- message={'已购买会员,是否确认购买?'}
- primaryColor="#FF8057"
- allowHtml={true}
- confirmButtonText="确定"
- showCancelButton
- onConfirm={async () => {
- await paymentContinue();
- }}
- onCancel={() => {
- //取消支付,判断是否有结束时间,是否已经结束
- if (forms.registerExpireTime && forms.activeOverStatus) {
- applyOver();
- }
- }}
- />
- {/* <MDialog
- title="提示"
- v-model:show={forms.dialogStatusVisible}
- message={forms.dialogStatusMessage}
- allowHtml={true}
- primaryColor="#FF8057"
- confirmButtonText="继续支付"
- onConfirm={async () => {
- countDown.pause();
- const paymentConfig = forms.dialogConfig.paymentConfig;
- state.config = paymentConfig?.paymentConfig;
- state.orderNo = paymentConfig?.orderNo;
- await lastSubmit();
- }}
- onCancel={(val: any) => {
- countDown.pause();
- //取消支付,判断是否有结束时间,是否已经结束
- if (forms.registerExpireTime && forms.activeOverStatus) {
- applyOver();
- }
- }}
- /> */}
- <MDialog
- title="提示"
- v-model:show={forms.dialogStatus}
- message={forms.dialogMessage}
- allowHtml={true}
- primaryColor="#FF8057"
- showCancelButton={true}
- messageAlign={forms.messageAlign}
- confirmButtonText={forms.confirmButtonText}
- cancelButtonText={forms.cancelButtonText}
- onConfirm={async () => {
- if (forms.joinType === 'tradition') {
- //
- await cancelPaymentOrder();
- //取消支付,判断是否有结束时间,是否已经结束
- if (forms.registerExpireTime && forms.activeOverStatus) {
- applyOver();
- }
- }
- if (forms.joinType === 'digitalize') {
- // 继续支付
- const paymentConfig = forms.dialogConfig;
- state.config = paymentConfig?.paymentConfig;
- state.orderNo = paymentConfig?.orderNo;
- await lastSubmit();
- }
- }}
- onCancel={(val: any) => {
- // countDown.pause();
- if (forms.joinType === 'tradition') {
- forms.dialogStatus = false;
- //取消支付,判断是否有结束时间,是否已经结束
- if (forms.registerExpireTime && forms.activeOverStatus) {
- applyOver();
- }
- }
- if (forms.joinType === 'digitalize') {
- // 重新下单 - 先关闭订单
- resetOrderPayment();
- }
- }}
- />
- <Popup
- show={state.paymentStatus}
- closeOnClickOverlay={false}
- position="bottom"
- round
- closeOnPopstate
- safeAreaInsetBottom
- style={{ minHeight: '30%' }}>
- <Payment
- paymentConfig={state.orderInfo}
- onClose={() => (state.paymentStatus = false)}
- onBackOut={onBackOut}
- onConfirm={(val: any) => onConfirm(val)}
- />
- </Popup>
- <Popup
- v-model:show={state.showQrcode}
- round
- onClose={() => {
- // 二维码关闭时清除定时器
- clearInterval(state.orderTimer);
- }}>
- <QrcodePayment
- url={state.qrCodeUrl}
- pay_channel={state.pay_channel}
- orderType={orderType.value}
- />
- </Popup>
- <MPopup v-model:modelValue={state.authShow}>
- <UserAuth onSuccess={onAuthSuccess} hideHeader={!browser().isApp} />
- </MPopup>
- {/* 是否在微信中打开 */}
- <OWxTip
- show={forms.showTips}
- message={forms.showMessage}
- showButton={forms.showButton}
- buttonText="刷新"
- onConfirm={() => window.location.reload()}
- />
- </div>
- );
- }
- });
|