Browse Source

新增开发票过期验证

cuiyalong 5 years ago
parent
commit
090dc3ce95

+ 14 - 0
src/api/pay.ts

@@ -44,3 +44,17 @@ export function orderDetail (data: any) {
     data
   })
 }
+
+// 查询订单详情
+export function invokeIsOver (data: any) {
+  data = qs.stringify(data)
+  return request({
+    baseURL: '',
+    url: '/subscribepay/orderListDetails/isOver',
+    method: 'post',
+    headers: {
+      noToast: 1
+    },
+    data
+  })
+}

+ 9 - 1
src/store/modules/pay.ts

@@ -2,7 +2,8 @@ import {
   getWxSdkSign,
   paySign,
   isPaySuccess,
-  orderDetail
+  orderDetail,
+  invokeIsOver
 } from '@/api/pay'
 
 export default {
@@ -37,6 +38,13 @@ export default {
         const res = await orderDetail(data)
         return res.data
       } catch (error) {}
+    },
+    // 查询发票是否过期
+    async invokeIsOver (state, data: any) {
+      try {
+        const res = await invokeIsOver(data)
+        return res.data
+      } catch (error) {}
     }
   },
   getters: {}

+ 6 - 1
src/views/main/ReportDetail.vue

@@ -58,7 +58,8 @@ import { Skeleton } from 'vant'
   },
   methods: {
     ...mapMutations({
-      saveReportInfo: 'home/saveReportInfo'
+      saveReportInfo: 'home/saveReportInfo',
+      clearBuyState: 'home/clearBuyState'
     }),
     ...mapActions({
       getDetail: 'home/getReportDetail'
@@ -69,6 +70,8 @@ import { Skeleton } from 'vant'
 export default class Home extends Vue {
   protected getDetail!: any
   protected saveReportInfo!: any
+  protected clearBuyState!: any
+
   skeletonShow = true
   detail = {
     id: 12,
@@ -81,6 +84,8 @@ export default class Home extends Vue {
   }
 
   mounted () {
+    // 清除购买页面用户填写的信息
+    this.clearBuyState()
     this.getDetail(`id=${this.$route.params.id}`).then((res: any) => {
       if (res.error_code === 0 && res.data) {
         this.detail = res.data

+ 79 - 42
src/views/order/detail.vue

@@ -39,7 +39,7 @@
         <div>
           <div class="header-pic" :class="orderStateMap[orderInfo.state].bgcClassName">
             <div class="order-state">{{ orderStateMap[orderInfo.state].text }}</div>
-            <div class="surplus-time" v-if="orderStateMap[orderInfo.state].surplusTimeShow && orderInfo.surplusTime">
+            <div class="surplus-time" v-if="orderStateMap[orderInfo.state].surplusTimeShow && orderInfo.surplusTime > 0">
               <span>剩余支付时间:</span>
               <van-count-down @finish="onCountdowFinish" :time="orderInfo.surplusTime * 1000" />
             </div>
@@ -81,33 +81,35 @@
             </div>
             <div class="j-card report-info">
               <div class="j-card-title">订单信息</div>
-              <div class="j-card-item">
-                <span class="card-item-l">订单编号:</span>
-                <span class="card-item-r">{{ orderInfo.ordercode }}</span>
-              </div>
-              <div class="j-card-item">
-                <span class="card-item-l">下单时间:</span>
-                <span class="card-item-r">{{ orderInfo.createTime * 1000 | dateFormatter('yyyy/MM/dd HH:mm:ss') }}</span>
-              </div>
-              <div class="j-card-item" v-if="orderInfo.payTime">
-                <span class="card-item-l">支付时间:</span>
-                <span class="card-item-r">{{ orderInfo.payTime * 1000 | dateFormatter('yyyy/MM/dd HH:mm:ss') }}</span>
-              </div>
-              <div class="j-card-item" v-if="orderInfo.payWay">
-                <span class="card-item-l">支付方式:</span>
-                <span class="card-item-r">{{ payWayMap[orderInfo.payWay] }}</span>
-              </div>
-              <div class="j-card-item" v-if="orderInfo.paymentId">
-                <span class="card-item-l">支付单号:</span>
-                <span class="card-item-r">{{ orderInfo.paymentId }}</span>
-              </div>
-              <div class="j-card-item">
-                <span class="card-item-l">产品类型:</span>
-                <span class="card-item-r">{{ orderInfo.productType }}</span>
-              </div>
-              <div class="j-card-item">
-                <span class="card-item-l">支付金额:</span>
-                <span class="card-item-r">&yen; {{ orderInfo.payMoney | fen2Yuan }}</span>
+              <div class="j-card-items">
+                <div class="j-card-item">
+                  <span class="card-item-l">订单编号:</span>
+                  <span class="card-item-r">{{ orderInfo.ordercode }}</span>
+                </div>
+                <div class="j-card-item">
+                  <span class="card-item-l">下单时间:</span>
+                  <span class="card-item-r">{{ orderInfo.createTime * 1000 | dateFormatter('yyyy/MM/dd HH:mm:ss') }}</span>
+                </div>
+                <div class="j-card-item" v-if="orderInfo.payTime">
+                  <span class="card-item-l">支付时间:</span>
+                  <span class="card-item-r">{{ orderInfo.payTime * 1000 | dateFormatter('yyyy/MM/dd HH:mm:ss') }}</span>
+                </div>
+                <div class="j-card-item" v-if="orderInfo.payWay">
+                  <span class="card-item-l">支付方式:</span>
+                  <span class="card-item-r">{{ payWayMap[orderInfo.payWay] }}</span>
+                </div>
+                <div class="j-card-item" v-if="orderInfo.paymentId">
+                  <span class="card-item-l">支付单号:</span>
+                  <span class="card-item-r">{{ orderInfo.paymentId }}</span>
+                </div>
+                <div class="j-card-item">
+                  <span class="card-item-l">产品类型:</span>
+                  <span class="card-item-r">{{ orderInfo.productType }}</span>
+                </div>
+                <div class="j-card-item">
+                  <span class="card-item-l">支付金额:</span>
+                  <span class="card-item-r">&yen; {{ orderInfo.payMoney | fen2Yuan }}</span>
+                </div>
               </div>
             </div>
           </div>
@@ -137,7 +139,8 @@ import { dateFormatter } from '@/utils/globalFunctions.ts'
       updateHeader: 'updateLayoutConfig'
     }),
     ...mapActions({
-      getOrderDetail: 'pay/orderDetail'
+      getOrderDetail: 'pay/orderDetail',
+      checkInvokeIsOver: 'pay/invokeIsOver'
     })
   }
 })
@@ -145,8 +148,9 @@ import { dateFormatter } from '@/utils/globalFunctions.ts'
 export default class OrderDetail extends Vue {
   protected updateHeader!: any
   protected getOrderDetail!: any
+  protected checkInvokeIsOver!: any
 
-  loading = true
+  loading = false
 
   ordercode = ''
 
@@ -169,7 +173,7 @@ export default class OrderDetail extends Vue {
       surplusTimeShow: false,
       bottomButton: {
         show: true,
-        url: '/kfp',
+        url: '',
         text: '开发票'
       }
     },
@@ -189,7 +193,9 @@ export default class OrderDetail extends Vue {
   payWayMap = {
     wx_js: '微信支付',
     wx_app: '微信支付',
-    ali_app: '支付宝支付'
+    ali_app: '支付宝支付',
+    wx_pc: '微信支付',
+    ali_pc: '支付宝支付'
   }
 
   productInfo = {
@@ -203,7 +209,7 @@ export default class OrderDetail extends Vue {
 
   orderInfo = {
     // 0:待支付 1:已完成 -2:已取消
-    state: 0,
+    state: 1,
     ordercode: '',
     createTime: '',
     payTime: 0,
@@ -254,14 +260,11 @@ export default class OrderDetail extends Vue {
           this.$toast(res.error_msg || '查询订单信息失败')
         }
       }
-    }).catch(err => {
-      toast.clear()
-      console.log(err)
     })
   }
 
   onCountdowFinish () {
-    // console.log('onCountdowFinish')
+    console.log('onCountdowFinish')
     // this.getInfo()
   }
 
@@ -273,9 +276,39 @@ export default class OrderDetail extends Vue {
       location.href = url + this.ordercode
     } else if (this.orderInfo.state === 1) {
       // 开发票
-      location.href = url
+      this.checkInvokeIsOverFn()
     }
   }
+
+  checkInvokeIsOverFn () {
+    const toast = this.$toast.loading({
+      message: '加载中...',
+      forbidClick: true,
+      duration: 0
+    })
+    const invokeUrlMap = {
+      wx: {
+        can: `/front/invoice/showpage?order_code=${this.ordercode}`,
+        cannot: '/front/invoice/cantInvoice'
+      },
+      app: {
+        can: `/jyapp/front/invoice/showpage?order_code=${this.ordercode}`,
+        cannot: '/jyapp/front/cantInvoice'
+      }
+    }
+    this.checkInvokeIsOver({ order_code: this.ordercode }).then(res => {
+      toast.clear()
+      if (res) {
+        if (res.status === 1) {
+          location.href = invokeUrlMap[this.$env.platform].can
+        } else {
+          location.href = invokeUrlMap[this.$env.platform].cannot
+        }
+      } else {
+        this.$toast(res.error_msg || '查询发票状态失败')
+      }
+    })
+  }
 }
 </script>
 
@@ -283,8 +316,12 @@ export default class OrderDetail extends Vue {
   .j-order-detail {
     // wx微信端样式自定义
     &.wx {
-      .header-pic {
+      .content .header-pic {
         margin-top: -40px;
+        &:after {
+          height: 240px;
+          top: -20px;
+        }
       }
     }
     // 骨架屏
@@ -383,11 +420,11 @@ export default class OrderDetail extends Vue {
       }
       &:after {
         content: '';
-        width: 140%;
-        height: 230px;
+        width: 150%;
+        height: 260px;
         position: absolute;
         left: 50%;
-        top: -10px;
+        top: -40px;
         background: url(~@/assets/image/order-detail-header-mask3x.png) no-repeat top center;
         background-size: contain;
         border-radius: 0 0 50% 50%;

+ 3 - 4
src/views/pay/PaySuccess.vue

@@ -57,7 +57,9 @@ export default class PaySuccess extends Vue {
   payWayMap = {
     wx_js: '微信支付',
     wx_app: '微信支付',
-    ali_app: '支付宝支付'
+    ali_app: '支付宝支付',
+    wx_pc: '微信支付',
+    ali_pc: '支付宝支付'
   }
 
   mounted () {
@@ -82,9 +84,6 @@ export default class PaySuccess extends Vue {
           this.$toast(res.error_msg || '查询订单信息失败')
         }
       }
-    }).catch(err => {
-      toast.clear()
-      console.log(err)
     })
   }