pension-vue/src/views/checkout/payment.vue

114 lines
4.5 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<template>
<div class="bg-gradient-to-b to-80% from-[#28BEBB] to-[#fff] flex flex-col items-center">
<img src="/images/checkout/payment-success.png" alt="payment-success" class="w-[258rpx] h-[140rpx] mt-[80rpx]" />
<p class="text-[56rpx] font-700 text-white mt-[16rpx]">支付成功</p>
<div class="px-[16rpx] my-[24rpx] w-full flex flex-col items-center">
<div class="bg-[#0b9996] w-full rounded-full p-[6rpx] h-[24rpx]">
<div class="w-full h-full bg-[#004140] rounded-full"></div>
</div>
<div class="h-[468rpx] custom-bg relative flex flex-col items-center">
<nut-price :price="money" size="large" class="font-700 price-text mt-[70rpx] flex!" />
<ul class="w-full mt-[50rpx] px-[32rpx]">
<li class="flex items-center mb-[30rpx] text-[32rpx]">
<span class="text-[#666]">订单编号</span>
<span class="mr-[10rpx]">20220308170456105610</span>
<div class="text-[#28BEBB] bg-[#e9f8f8] rounded-full px-[14rpx] py-[8rpx] text-[28rpx] font-400 border-[#28BEBB] border-solid border-[2rpx]">复制</div>
</li>
<li class="flex items-center mb-[30rpx] text-[32rpx]">
<span class="text-[#666]">下单时间</span>
<span class="">2022-03-08 17:02</span>
</li>
<li class="flex items-center text-[32rpx]">
<span class="text-[#666]">支付方式</span>
<img src="/images/checkout/wechat.png" alt="wechat" class="w-[32rpx] h-[32rpx] mr-[10rpx]">
<span class="">微信支付</span>
</li>
</ul>
</div>
</div>
<div class="px-[56rpx] w-full mt-[120rpx]">
<div class="bg-[#28BEBB] rounded-[20rpx] py-[26rpx] text-[44rpx] font-600 text-white w-full text-center">订单详情</div>
<div class="text-[#28BEBB] bg-white border-solid border-[#28BEBB] border-[4rpx] rounded-[20rpx] py-[26rpx] text-[44rpx] font-600 text-[#28BEBB] w-full text-center mt-[20rpx] mt-[40rpx]" @click="goHome"></div>
</div>
</div>
</template>
<script lang="ts" setup>
import { useShoppingCartStore } from '@/store/shoppingCart';
import { CartTypeEnum } from '@/types/cart';
import { useRouter,useRoute } from 'vue-router';
const router = useRouter();
const route = useRoute();
const type = route.query.type;
const shoppingCartStore = useShoppingCartStore();
let money = 0;
const useGetShoppingCartTotalPrice = () => {
if(type === CartTypeEnum.Restaurant){
money = shoppingCartStore.getShoppingCartByRestaurant.reduce((acc, item) => acc + Number(item.price) * Number(item.count), 0);
}else if(type === CartTypeEnum.Mall){
money = shoppingCartStore.getShoppingCartByMall.reduce((acc, item) => acc + Number(item.price) * Number(item.count), 0);
}else if(type === CartTypeEnum.Course){
money = shoppingCartStore.getShoppingCartByCourse.reduce((acc, item) => acc + Number(item.price) * Number(item.count), 0);
}else if(type === CartTypeEnum.HealthCare){
money = shoppingCartStore.getShoppingCartByHealthCare.reduce((acc, item) => acc + Number(item.price) * Number(item.count), 0);
}else if(type === CartTypeEnum.Housekeeping){
money = shoppingCartStore.getShoppingCartByHousekeeping.reduce((acc, item) => acc + Number(item.price) * Number(item.count), 0);
}
}
useGetShoppingCartTotalPrice();
const goHome = () => {
router.push('/home');
}
</script>
<style lang="scss" scoped>
.custom-bg {
margin-top: -5px;
background: linear-gradient(to bottom,#9be1e0 0%,#fff 20%);
border-bottom-left-radius: 20px;
border-bottom-right-radius: 20px;
box-shadow: 0px 4px 10px 0px rgba(0,0,0,0.03);
&::before,
&::after {
content: "";
position: absolute;
top: 0;
width: 10px; /* 设置宽度 */
height: 10px; /* 设置高度 */
background: #9be1e0; /* 设置背景色 */
}
&::before {
left: -10px; /* 设置左边位置 */
background: radial-gradient(circle at 0 10px, transparent 10px,#9be1e0 10px);
}
&::after {
right: -10px; /* 设置右边位置 */
background: radial-gradient(circle at 10px 10px, transparent 10px,#9be1e0 10px);
}
}
.price-text{
--nut-price-symbol-big-size: 32px;
--nut-price-big-size:56px;
--nut-price-decimal-big-size:32px;
:deep(.nut-price--symbol){
align-self: center;
}
:deep(.nut-price--decimal-large){
align-self: end;
padding-bottom: 5px;
}
}
</style>