From 9047e606219d3fa6bbeadb95f7b73b87593e47a8 Mon Sep 17 00:00:00 2001 From: "liujw155@outlook.com" Date: Thu, 31 Jul 2025 15:12:56 +0800 Subject: [PATCH] fix bug --- src/api/server.js | 2 +- src/subpackage/groupon/api/index.js | 2 + src/subpackage/groupon/components/ticket_item.vue | 5 +- .../groupon/pages/confirm_order/ticket.vue | 10 +-- .../groupon/pages/confirm_order/venue.vue | 7 +- src/subpackage/groupon/pages/exchange_success.vue | 82 ++++++++++++++++++---- src/subpackage/order/pages/detail.vue | 56 ++++++++------- src/utils/index.js | 9 +++ 8 files changed, 125 insertions(+), 48 deletions(-) diff --git a/src/api/server.js b/src/api/server.js index 969d73b..d8867ea 100644 --- a/src/api/server.js +++ b/src/api/server.js @@ -48,7 +48,7 @@ server.interceptors.response.use( // 用户异常 (response?.data?.code === 401&&response?.data?.message?.indexOf('用户') !== -1) // 参数错误,[token]不允许为空 - || (response?.data?.code === 404&&response?.data?.message?.indexOf('token') !== -1) + || (response?.data?.code === 404&&response?.data?.message?.indexOf('[token]') !== -1) )loginHandle(); // if(response?.data?.error === '704'&&response?.data?.smsg === 'ustoken不能为空')loginHandle(); } diff --git a/src/subpackage/groupon/api/index.js b/src/subpackage/groupon/api/index.js index aa53bbe..33831a2 100644 --- a/src/subpackage/groupon/api/index.js +++ b/src/subpackage/groupon/api/index.js @@ -10,6 +10,8 @@ export const stadiumFind = params => server.post({ url: '/stadium/find', ...para export const jsapiPreVerifyCertificates = params => server.post({ url: '/douyinMiniapp/202506/jsapiPreVerifyCertificates', ...params }); // 票券核销 export const orderAdd = params => server.post({ url: '/stadium/order/add', ...params }); // 生成场馆预约订单 export const orderPayMini = params => server.post({ url: '/stadium/order/pay/mini', ...params }); // A预约场馆-预约场馆-微信支付[小程序] +export const getOrder = params => server.post({ url: '/douyinMiniapp/202506/getOrder', ...params }); // 轮询获取订单号, 轮询了多久以后就直接放弃了 +export const orderGet = params => server.post({ url: '/stadium/order/get', ...params }); // 预约订单详情 diff --git a/src/subpackage/groupon/components/ticket_item.vue b/src/subpackage/groupon/components/ticket_item.vue index aadee7a..96060aa 100644 --- a/src/subpackage/groupon/components/ticket_item.vue +++ b/src/subpackage/groupon/components/ticket_item.vue @@ -1,5 +1,6 @@ diff --git a/src/subpackage/groupon/pages/confirm_order/ticket.vue b/src/subpackage/groupon/pages/confirm_order/ticket.vue index c12e5c4..2c23ede 100644 --- a/src/subpackage/groupon/pages/confirm_order/ticket.vue +++ b/src/subpackage/groupon/pages/confirm_order/ticket.vue @@ -5,6 +5,7 @@ import confirmTemplate from "../../components/confirm_template.vue"; import ticketItem from "../../components/ticket_item.vue"; import { jsapiPreVerifyCertificates } from "../../api"; import { routeTo, showModal, showLoad, hideLoad } from '@/utils/polish'; +import { formatDate } from "@/utils"; const stadiumInfo = ref({}); // 场馆信息 const ticketInfo = ref({}); // 票券信息 const verify_token = ref(''); @@ -12,7 +13,7 @@ onLoad(() => { }); const expireTimeStr = computed(() => { - return ticketInfo.expire_time ? new Date(ticketInfo.expire_time * 1000).toLocaleDateString() : ''; + return ticketInfo.value?.expire_time ? formatDate(ticketInfo.value.expire_time * 1000) : ''; }); onMounted(() =>{ @@ -53,7 +54,7 @@ function pvc_func({ } function confirmBtn(){ let _tVal = ticketInfo.value; - + let _sVal = stadiumInfo.value; const _query = { verifyToken: verify_token.value ?? '', poiId: _tVal?.poi_id ?? '', @@ -69,8 +70,9 @@ function confirmBtn(){ }, success(res){ hideLoad(); - console.warn('verifyCertificates success', res); - showModal({ content: '核销成功!' }) + // console.warn('verifyCertificates success', res); + // showModal({ content: '核销成功!' }) + routeTo(`/subpackage/groupon/pages/exchange_success?brand_id=${_sVal?.brand_id ?? ''}&verify_token=${verify_token.value ?? ''}`); }, fail(err){ hideLoad(); diff --git a/src/subpackage/groupon/pages/confirm_order/venue.vue b/src/subpackage/groupon/pages/confirm_order/venue.vue index aa27e4e..92c2e8e 100644 --- a/src/subpackage/groupon/pages/confirm_order/venue.vue +++ b/src/subpackage/groupon/pages/confirm_order/venue.vue @@ -64,8 +64,8 @@ function confirmBtn(){ }, success(res){ hideLoad(); - console.warn('verifyCertificates success', res); - showModal({ content: '核销成功!' }); + // console.warn('verifyCertificates success', res); + // showModal({ content: '核销成功!' }); return createServerOrder(); }, fail(err){ @@ -115,6 +115,9 @@ function createServerOrder(){ }) .then(oRes=>{ console.warn('orderPayMini', oRes); + if(oRes?.code === 0){ + routeTo(`/subpackage/groupon/pages/exchange_success?brand_id=${_sVal?.brand_id ?? ''}&verify_token=${verify_token.value ?? ''}`); + } }) }) } diff --git a/src/subpackage/groupon/pages/exchange_success.vue b/src/subpackage/groupon/pages/exchange_success.vue index 5ff4590..0596970 100644 --- a/src/subpackage/groupon/pages/exchange_success.vue +++ b/src/subpackage/groupon/pages/exchange_success.vue @@ -2,34 +2,91 @@ import { onLoad } from '@dcloudio/uni-app'; import { reactive, ref } from "vue"; import textLine from "../components/text_line.vue"; -onLoad(() => { - +import { getOrder, orderGet } from "../api"; +import { routeTo, showModal } from "@/utils/polish"; +const orderInfo = ref({}); +onLoad(oprions => { + getOrderNoFn({ verify_token: oprions?.verify_token ?? '' }) + .then(orderNo =>{ + orderGet({ data: { order_no: orderNo, brand_id: oprions?.brand_id ?? '' } }) + .then(oRes=>{ + orderInfo.value = oRes?.data ?? {}; + }) + }) }); +// ef5bc53a8711d876adbfac7710a03f3f + +function getOrderNoFn({ verify_token, times = 1, max = 5, interval = 300 }){ + if(times > max){ + console.warn('轮询了' + (times - 1) + '次'); + showModal({ content: '查询超时!' }); + return Promise.reject('超时') + } + times++ + return getOrder({ data: { verify_token } }) + .then(res=>{ + let _orderNo = res?.data?.order_no ?? ''; + if(_orderNo){ + return Promise.resolve(_orderNo); + }else if(res?.code === 0 && res?.data?.order_no === ''){ + return new Promise(rs=>{ + setTimeout(_=>{ + rs(getOrderNoFn({ verify_token, times, max, interval })) + }, interval) + }) + }else { + return Promise.reject(res); + } + }) +} + +function copyBtn(){ + uni.setClipboardData({ + data: `${orderInfo.value?.verify_code}` + }) +} + +// 预览核销码 +function previewCode(){ + uni.previewImage({ urls: [orderInfo.value?.verify_qrcode] }) +} + +function toOrderDetail(){ + let _oVal = orderInfo.value; + routeTo(`/subpackage/order/pages/detail?brand_id=${_oVal?.brand_id ?? ''}&order_no=${_oVal?.order_no ?? ''}`) +} + @@ -85,7 +142,6 @@ onLoad(() => { margin-right: 20upx; width: 36upx; height: 36upx; - background: skyblue; } .es-name{ flex-grow: 1; diff --git a/src/subpackage/order/pages/detail.vue b/src/subpackage/order/pages/detail.vue index 8abf9a1..79e5b0c 100644 --- a/src/subpackage/order/pages/detail.vue +++ b/src/subpackage/order/pages/detail.vue @@ -213,6 +213,17 @@ function imError(e){ :orderInfo="orderInfo" > + + + + + 点击二维码可放大查看 + 产品信息 @@ -239,24 +250,7 @@ function imError(e){ - - - - 点击二维码可放大查看 - - - - - + 金额小计 @@ -269,14 +263,15 @@ function imError(e){ 合计支付:¥{{ orderInfo?.pay_amount || '0' }} - - - - 支付信息 - {{ orderInfo?.pay_type_text ?? '-' }} - {{ orderInfo?.pay_time ?? '-' }} - {{ orderInfo?.trace_no ?? '-' }} + + + + + + + + 支付信息 + {{ orderInfo?.pay_type_text ?? '-' }} + {{ orderInfo?.pay_time ?? '-' }} + {{ orderInfo?.trace_no ?? '-' }} + +