wujingjing
2025-02-13 4907ca66c92e1f8caa0ce2b4b61afc49334d2368
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
<template>
    <div class="container mx-auto px-4 py-8 bg-white">
        <!-- 面包屑导航 -->
        <div class="mb-6 text-gray-500">
            <el-breadcrumb separator="/">
                <el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
                <el-breadcrumb-item>订单支付</el-breadcrumb-item>
            </el-breadcrumb>
        </div>
 
        <div class="max-w-4xl mx-auto">
            <!-- 订单信息 -->
            <div class="bg-gray-50 p-6 rounded-lg mb-6">
                <div class="flex justify-between items-center mb-4">
                    <h2 class="text-xl font-medium">订单提交成功</h2>
                    <div class="text-gray-500">请在 <span class="text-red-500 font-medium">23小时59分</span> 内完成支付</div>
                </div>
                <div class="text-2xl font-bold mb-4">
                    应付金额:<span class="text-red-500">¥{{ orderInfo.totalAmount }}</span>
                </div>
                <div class="text-gray-600">
                    <p>订单编号:{{ orderInfo.orderNo }}</p>
                    <p class="mt-1">创建时间:{{ orderInfo.createTime }}</p>
                </div>
            </div>
 
            <!-- 支付方式 -->
            <div class="bg-white border rounded-lg p-6">
                <h3 class="text-lg font-medium mb-6">选择支付方式</h3>
 
                <!-- 支付方式选择 -->
                <div class="space-y-4">
                    <div
                        class="border rounded-lg p-4"
                        :class="{ 'border-blue-500 bg-blue-50': paymentMethod === 'wechat' }"
                        @click="paymentMethod = 'wechat'"
                    >
                        <div class="flex justify-between items-center">
                            <div class="flex items-center gap-3">
                                <img src="@/assets/icons/wechat-pay.svg" alt="微信支付" class="w-8 h-8" />
                                <span class="font-medium">微信支付</span>
                            </div>
                            <el-radio v-model="paymentMethod" label="wechat" />
                        </div>
                    </div>
 
                    <div
                        class="border rounded-lg p-4"
                        :class="{ 'border-blue-500 bg-blue-50': paymentMethod === 'alipay' }"
                        @click="paymentMethod = 'alipay'"
                    >
                        <div class="flex justify-between items-center">
                            <div class="flex items-center gap-3">
                                <img src="@/assets/icons/alipay.svg" alt="支付宝" class="w-8 h-8" />
                                <span class="font-medium">支付宝</span>
                            </div>
                            <el-radio v-model="paymentMethod" label="alipay" />
                        </div>
                    </div>
                </div>
 
                <!-- 二维码支付区域 -->
                <div v-if="paymentMethod" class="mt-8 flex justify-center">
                    <div class="text-center">
                        <div class="bg-white p-4 inline-block border rounded-lg">
                            <img :src="getQRCodeImage" alt="支付二维码" class="w-48 h-48" />
                        </div>
                        <p class="mt-4 text-gray-600">请使用{{ paymentMethod === 'wechat' ? '微信' : '支付宝' }}扫码支付</p>
                        <p class="text-sm text-gray-500 mt-2">扫码后请在手机上确认支付</p>
                    </div>
                </div>
 
                <!-- 支付按钮 -->
                <div class="mt-8 text-center">
                    <el-button type="primary" size="large" class="w-64" @click="handlePayment">
                        立即支付 ¥{{ orderInfo.totalAmount }}
                    </el-button>
                    <div class="mt-4">
                        <el-button text @click="cancelPayment">取消支付</el-button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>
 
<script setup lang="ts">
import { ElMessage } from 'element-plus';
import { computed, ref } from 'vue';
import { useRouter } from 'vue-router';
 
const router = useRouter();
const paymentMethod = ref('');
 
// 模拟订单信息
const orderInfo = ref({
    orderNo: 'DD' + Date.now(),
    totalAmount: '询价',
    createTime: new Date().toLocaleString(),
});
 
// 根据支付方式获取对应的二维码图片
const getQRCodeImage = computed(() => {
    return paymentMethod.value === 'wechat' ? '/src/assets/qrcode/wechat-qr.svg' : '/src/assets/qrcode/alipay-qr.svg';
});
 
// 处理支付
const handlePayment = () => {
    if (!paymentMethod.value) {
        ElMessage.warning('请选择支付方式');
        return;
    }
    ElMessage.success('支付成功');
    // 支付成功后跳转到订单详情页
    router.push('/order/detail');
};
 
// 取消支付
const cancelPayment = () => {
    ElMessage.info('取消支付');
    router.push('/');
};
</script>
 
<style scoped>
.payment-method-item {
    cursor: pointer;
    transition: all 0.3s;
}
 
.payment-method-item:hover {
    border-color: #409eff;
    background-color: #f5f7fa;
}
</style>