import MHeader from '@/components/m-header'; import { defineComponent, onMounted, reactive } from 'vue'; import { Button, Cell, CellGroup, Image, Tag } from 'vant'; import styles from './index.module.less'; import iconRefunding from './images/icon_refunding.png'; import icon_success from './images/icon_success.png'; import iconClose from './images/icon_close.png'; import iconTradeing from './images/icon_tradeing.png'; import request from '@/helpers/request'; import { useRoute, useRouter } from 'vue-router'; import { browser, moneyFormat } from '@/helpers/utils'; import { useEventListener, useWindowScroll } from '@vueuse/core'; export default defineComponent({ name: 'payment-result', setup() { const route = useRoute(); const router = useRouter(); const state = reactive({ refund: route.query.refund, orders: {} as any, goodsInfos: [] as any, background: 'transparent', color: '#fff', backIconColor: 'white' as any, timer: null as any, timerCount: 0 // 执行次数 }); const form = reactive({ resionList: [] as any, refundStatus: false, resion: null, refundSelect: {} as any, checked: null as any }); const getDetails = async () => { try { if (!route.query.orderNo) return; const { data } = await request.post( '/edu-app/open/userOrder/paymentStatus/' + route.query.orderNo ); state.orders = data || {}; // state.orders.status = 'REFUNDED' const tempGoods = data.goodsInfos || []; tempGoods.forEach((item: any) => { const img = item.goodsUrl ? item.goodsUrl.split(',')[0] : ''; item.goodsUrl = img; }); state.goodsInfos = tempGoods; } catch { // } }; // 定时任务 const onTimeout = async () => { // 判断订单状态,如果未支付则刷新 if ( ['WAIT_PAY', 'PAYING'].includes(state.orders.status) && state.timerCount <= 10 ) { state.timer = setTimeout(async () => { state.timerCount += 1; await getDetails(); onTimeout(); }, 3000); } else { clearTimeout(state.timer); } }; const formatImg = (type: any) => { const template: any = { WAIT_PAY: iconTradeing, PAYING: iconTradeing, PAID: icon_success, TIMEOUT: iconClose, FAIL: iconClose, CLOSED: iconClose, REFUNDING: iconRefunding, REFUNDED: icon_success }; return template[type] || icon_success; }; const formatOrderStatus = (status: string) => { const temp: any = { WAIT_PAY: '支付中', PAYING: '支付中', PAID: '支付成功', TIMEOUT: '订单超时', FAIL: '支付失败', CLOSED: '订单关闭', REFUNDING: '退款中', REFUNDED: '已退款' }; return temp[status]; }; onMounted(async () => { await getDetails(); await onTimeout(); useEventListener(document, 'scroll', () => { const { y } = useWindowScroll(); if (y.value > 52) { state.background = '#fff'; state.color = '#323333'; state.backIconColor = 'black'; } else { state.background = 'transparent'; state.color = '#fff'; state.backIconColor = 'white'; } }); }); return () => (
{goods.goodsName}