未登录用户支付订单,未跳转至登录页面
ajax.js
import axios from 'axios' // import qs from 'qs' // 自定义请求头 export const ajax = axios.create({ headers: { source: 'h5', // 请求头,防伪校验码 icode: 'abcd', 'Content-Type': 'application/x-www-form-urlencoded' }, /** * 对请求的参数进行格式化处理 */ // transformRequest: function (data, headers) { // return qs.stringify(data) // }, // 默认携带上一次的cookie withCredentials: true }) // 请求拦截 ajax.interceptors.request.use(function (config) { // 在发送请求前做些什么 console.log('请求拦截到了') /* 获取Vue实例:加载loading动画 */ window.app.$toast.loading({ message: '加载中...', forbidClick: true, loadingType: 'spinner' }) return config }, function (error) { // 对 请求错误做些什么 /* 消失loading动画 */ window.app.$toast.clear() return Promise.reject(error) }) // 响应拦截 // (---------- response.use 是响应拦截器 -----------) ajax.interceptors.response.use(function (response) { // 对响应数据做点什么 console.log('响应拦截到了') /* 消失loading动画 */ window.app.$toast.clear() const status = response.status if (status === 401) { // window.alert('未登录,即将跳转到登录页面') window.app.$notify({ type: 'danger', message: '未登录,即将跳转到登录页面' }) window.app.$router.replace({ name: 'AccountLogin' }) } else if (status === 500) { // window.alert('服务器正忙,请稍后重试') window.app.$notify({ type: 'danger', message: '服务器正忙,请稍后重试' }) } else if (status === 400) { const data = status.data let msg = data.error_msg ? data.error_msg : '参数错误' if (data.error_list) { const keys = Object.keys(data.error_list) const errObj = data.error_list[keys[0]][0] msg = `${errObj.message}, ${errObj.code}` window.app.$notify(msg) } } /* 消失loading动画 */ window.app.$toast.clear() return response })
Submit.vue
<template> <div class="page-order-submit"> <!-- 页面导航 --> <van-nav-bar title="订单" left-text="返回" left-arrow @click-left="goBack" /> <!-- 描述信息 --> <div class="order-info"> <div class="left"> <h3>门票标题</h3> <div class="tips">23:00可订明日</div> <div class="tags"> <span> <van-icon name="clock-o"/>明日可定 </span> <span> <van-icon name="clock-o"/>条件退 </span> </div> </div> <div class="right"> <div class="text-warning">¥{{ price }}/张</div> <van-button plain hairline type="info" size="mini" @click="showPopup=true"> 预定须知 </van-button> <van-popup v-model="showPopup" round position="bottom" :style="{ height: '80%' }" /> </div> </div> <!-- 提交表单 --> <van-form @submit="onSubmit" class="form-box"> <van-cell-group inset class="form-group"> <van-cell title="选择出行日期" :value="form.play_date" @click="showCalendar = true" /> <van-calendar v-model="showCalendar" @confirm="onConfirm" /> </van-cell-group> <van-cell-group inset class="form-group"> <van-field name="stepper" label="购买数量"> <template #input> <van-stepper v-model="form.buy_count" /> </template> </van-field> </van-cell-group> <van-cell-group inset class="form-group"> <van-field v-model="form.to_user" type="text" label="收件人" placeholder="收件人" :rules="[{ required: true, message: '请填写收件人' }]" /> <van-field v-model="form.to_phone" type="text" label="手机号码" placeholder="手机号码" :rules="[{ required: true, message: '请填写手机号码' }]" /> </van-cell-group> <!-- 提交表单 --> <van-submit-bar :price="totalPrice" button-text="提交订单" @submit="onSubmit" /> </van-form> </div> </template> <script> import { ajax } from '@/utils/ajax' import { OrderApis } from '@/utils/apis' export default { data () { return { // 门票ID id: '', // 预定须知弹框显示 showPopup: false, // 日期选择弹框 showCalendar: false, price: 98, form: { play_date: '', buy_count: 1, to_user: '', to_phone: '' } } }, methods: { goBack () { // 返回上一个页面 this.$router.go(-1) }, // 选择日期 formatDate (date) { return `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}` }, onConfirm (date) { // 隐藏日历弹框 this.showCalendar = false // 保存数据 this.form.play_date = this.formatDate(date) }, // 提交表单 onSubmit () { console.log('提交表单') // ajax接口调用 ajax.post(OrderApis.ticketSubmitUrl, { ticket_id: this.id, ...this.form }).then(({ data }) => { // 提示用户 this.$notify({ type: 'success', message: '提交成功,请支付' }) // 跳转到支付页面 this.$router.replace({ name: 'OrderPay', params: { sn: data.sn } }) }) } }, created () { // 门票ID this.id = this.$route.params.id }, computed: { // 计算总价(单位为:分) totalPrice () { return this.price * this.form.buy_count * 100 } } } </script> <style lang="less"> .page-order-submit{ .order-info{ display: flex; padding: 10px; background: white; .left{ flex: 1; text-align: left; h3{ padding: 5px 0; margin: 0 auto; } .tips{ padding: 10px 0; color: #999; font-size: 12px; } } .right{ width: 20%; text-align: right; } } /* 表单区域 */ .form-box{ .form-group{ margin-top: 10px; background: white; .van-cell__title{ text-align: left; } } } } </style>
8
收起
正在回答
6回答
同学,你好!同学在vue.config.js中添加client:{overlay:false},ajax.js 文件中按照老师的代码写。可解决同学问题。
祝学习愉快~
Python全能工程师
- 参与学习 人
- 提交作业 16233 份
- 解答问题 4470 个
全新版本覆盖5大热门就业方向:Web全栈、爬虫、数据分析、软件测试、人工智能,零基础进击Python全能型工程师,从大厂挑人到我挑大厂,诱人薪资在前方!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星