asd123a20 3 anos atrás
pai
commit
77b0bf2bb6
5 arquivos alterados com 89 adições e 2 exclusões
  1. 1 0
      public/index.html
  2. 6 0
      src/router/index.js
  3. 19 1
      src/store/index.js
  4. 0 1
      src/views/pay.vue
  5. 63 0
      src/views/payFulfil.vue

+ 1 - 0
public/index.html

@@ -5,6 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1.0">
     <link rel="icon" href="<%= BASE_URL %>favicon.ico">
+    <link rel="stylesheet" type="text/css" href="https://res.wx.qq.com/open/libs/weui/1.1.2/weui.min.css"></link>
     <title>佳泰医疗健康管理</title>
   </head>
   <body>

+ 6 - 0
src/router/index.js

@@ -14,6 +14,7 @@ import register from '../views/register.vue'
 import reserve from '../views/reserve.vue'
 import login from '../views/login.vue'
 import pay from '../views/pay.vue'
+import payFulfil from '../views/payFulfil.vue'
 const routes = [
   {
     path: '/',
@@ -89,6 +90,11 @@ const routes = [
     path: '/pay/:_id',
     name: 'pay',
     component: pay
+  },
+  {
+    path: '/payFulfil/:out_trade_no',
+    name: 'payFulfil',
+    component: payFulfil
   }
 ]
 

+ 19 - 1
src/store/index.js

@@ -17,7 +17,10 @@ const api = {
   userquery: '/api/user/query',
   userupdate: '/api/user/update',
   subjectquery: '/api/subject/query',
-  orderPay: '/api/weixin/orderPay'
+  orderPay: '/api/weixin/orderPay',
+  pushMould: '/api/weixin/pushMould',
+  orderClose: '/api/weixin/orderClose',
+  updatestatus: '/api/order/updatestatus'
 }
 export default createStore({
   state: {
@@ -87,6 +90,21 @@ export default createStore({
       }
       return res
     },
+    // 消息模板
+    async pushMould ({ commit }, payload) {
+      const res = await axios.post(api.pushMould, payload)
+      return res
+    },
+    // 关闭订单
+    async orderClose ({ commit }, payload) {
+      const res = await axios.post(api.orderClose, payload)
+      return res
+    },
+    // 修改订单状态
+    async updatestatus ({ commit }, payload) {
+      const res = await axios.post(api.updatestatus, payload)
+      return res
+    },
     async pagedetails ({ commit }, { code }) {
       const res = await axios.get(`${api.pagedetails}${code}`)
       if (res.errcode === 0) commit('details', res)

+ 0 - 1
src/views/pay.vue

@@ -51,7 +51,6 @@ export default {
     async pay () {
       // 预支付订单
       const res = await this.orderPay(this.orderItem)
-      console.log(res)
       if (res.errcode === 0) {
         // 支付
         window.location.replace('/api/weixin/pay')

+ 63 - 0
src/views/payFulfil.vue

@@ -0,0 +1,63 @@
+<template>
+  <div class="payFulfil">
+    <div class="weui-msg" v-if="view == 'success'">
+      <div class="weui-msg__icon-area">
+        <i class="weui-icon-success weui-icon_msg"></i>
+      </div>
+      <div class="weui-msg__text-area">
+        <h2 class="weui-msg__title">
+          微信支付成功
+        </h2>
+      </div>
+      <div class="weui-msg__opr-area">
+        <p class="weui-btn-area">
+          <a href="javascript:;" class="weui-btn weui-btn_default" @click="closeWindow">完成</a>
+        </p>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+import { mapActions } from 'vuex'
+import { Toast } from '@nutui/nutui'
+export default {
+  name: 'payFulfil',
+  data () {
+    return {
+      view: 'fail'
+    }
+  },
+  async created () {
+    const outTradeNo = this.$route.params.out_trade_no
+    const result = this.$route.query.result
+    if (result === 'fail') {
+      // 支付失败
+      const res = await this.orderClose({ out_trade_no: outTradeNo })
+      if (res.errcode === 0) {
+        // 订单关闭成功
+        this.$router.push('/reserve')
+      } else {
+        // 订单关闭失败
+        this.$router.push(`/pay/${outTradeNo}`)
+      }
+      Toast.fail('支付失败')
+    } else {
+      // 支付成功
+      const openid = sessionStorage.getItem('openid')
+      await this.pushMould({ out_trade_no: outTradeNo, openid })
+      await this.updatestatus({ out_trade_no: outTradeNo })
+      this.view = 'success'
+    }
+  },
+  computed: {},
+  methods: {
+    ...mapActions(['updatestatus', 'orderClose', 'pushMould']),
+    closeWindow () {
+      // eslint-disable-next-line no-undef
+      WeixinJSBridge.invoke('closeWindow')
+    }
+  }
+}
+</script>
+<style lang="less" scoped></style>