|
@@ -27,7 +27,7 @@
|
|
|
<!-- 商品列表 -->
|
|
<!-- 商品列表 -->
|
|
|
<view v-for="(product, index) in order.products" :key="index" class="product-item">
|
|
<view v-for="(product, index) in order.products" :key="index" class="product-item">
|
|
|
<view class="product-image">
|
|
<view class="product-image">
|
|
|
- <image v-if="product.image" :src="product.image" mode="aspectFill"></image>
|
|
|
|
|
|
|
+ <image v-if="product.image" :src="product.image" mode="aspectFill" lazy-load></image>
|
|
|
<view v-else class="image-placeholder"></view>
|
|
<view v-else class="image-placeholder"></view>
|
|
|
</view>
|
|
</view>
|
|
|
<view class="product-info">
|
|
<view class="product-info">
|
|
@@ -141,7 +141,7 @@ import { checkAuth } from '../../utils/auth';
|
|
|
import { getStatusText, canRefund } from '../../utils/order';
|
|
import { getStatusText, canRefund } from '../../utils/order';
|
|
|
|
|
|
|
|
const order = ref<OrderInfo | null>(null);
|
|
const order = ref<OrderInfo | null>(null);
|
|
|
-const loading = ref(false);
|
|
|
|
|
|
|
+const loading = ref(true);
|
|
|
const orderId = ref<string | null>(null);
|
|
const orderId = ref<string | null>(null);
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -217,8 +217,7 @@ const loadOrderDetail = async () => {
|
|
|
|
|
|
|
|
try {
|
|
try {
|
|
|
uni.showLoading({
|
|
uni.showLoading({
|
|
|
- title: '加载中...',
|
|
|
|
|
- mask: true
|
|
|
|
|
|
|
+ title: '加载中...'
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
// 调用真实接口获取订单详情
|
|
// 调用真实接口获取订单详情
|
|
@@ -339,7 +338,7 @@ const viewVideo = (url: string) => {
|
|
|
min-height: 400rpx;
|
|
min-height: 400rpx;
|
|
|
font-size: 28rpx;
|
|
font-size: 28rpx;
|
|
|
color: #999;
|
|
color: #999;
|
|
|
- animation: fadeIn 0.4s cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
|
|
|
|
|
+ animation: fadeIn 0.2s ease;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* 通用卡片样式 */
|
|
/* 通用卡片样式 */
|
|
@@ -348,8 +347,8 @@ const viewVideo = (url: string) => {
|
|
|
border-radius: 24rpx;
|
|
border-radius: 24rpx;
|
|
|
padding: 32rpx;
|
|
padding: 32rpx;
|
|
|
margin-bottom: 24rpx;
|
|
margin-bottom: 24rpx;
|
|
|
- box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.04), 0 2rpx 8rpx rgba(0, 0, 0, 0.02);
|
|
|
|
|
- animation: slideUp 0.5s cubic-bezier(0.25, 0.1, 0.25, 1) both;
|
|
|
|
|
|
|
+ box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.06);
|
|
|
|
|
+ animation: slideUp 0.25s ease both;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* 订单状态卡片 */
|
|
/* 订单状态卡片 */
|
|
@@ -357,7 +356,6 @@ const viewVideo = (url: string) => {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
justify-content: space-between;
|
|
justify-content: space-between;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
- animation-delay: 0.1s;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.status-left {
|
|
.status-left {
|
|
@@ -375,7 +373,7 @@ const viewVideo = (url: string) => {
|
|
|
justify-content: center;
|
|
justify-content: center;
|
|
|
margin-right: 20rpx;
|
|
margin-right: 20rpx;
|
|
|
box-shadow: 0 4rpx 12rpx rgba(0, 204, 102, 0.3);
|
|
box-shadow: 0 4rpx 12rpx rgba(0, 204, 102, 0.3);
|
|
|
- animation: scaleIn 0.5s cubic-bezier(0.68, -0.55, 0.265, 1.55) 0.3s both;
|
|
|
|
|
|
|
+ animation: scaleIn 0.3s ease 0.1s both;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.status-icon-wrapper.status-success {
|
|
.status-icon-wrapper.status-success {
|
|
@@ -417,7 +415,6 @@ const viewVideo = (url: string) => {
|
|
|
.detail-card {
|
|
.detail-card {
|
|
|
padding: 0;
|
|
padding: 0;
|
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
|
- animation-delay: 0.2s;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.card-header {
|
|
.card-header {
|
|
@@ -435,7 +432,7 @@ const viewVideo = (url: string) => {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
padding: 32rpx;
|
|
padding: 32rpx;
|
|
|
align-items: flex-start;
|
|
align-items: flex-start;
|
|
|
- transition: background 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
|
|
|
|
|
+ transition: background 0.2s ease;
|
|
|
|
|
|
|
|
&:active {
|
|
&:active {
|
|
|
background: #FAFAFA;
|
|
background: #FAFAFA;
|
|
@@ -559,7 +556,7 @@ const viewVideo = (url: string) => {
|
|
|
margin: 0;
|
|
margin: 0;
|
|
|
padding: 16rpx 32rpx;
|
|
padding: 16rpx 32rpx;
|
|
|
line-height: 1;
|
|
line-height: 1;
|
|
|
- transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
|
|
|
|
|
+ transition: all 0.2s ease;
|
|
|
|
|
|
|
|
&:active {
|
|
&:active {
|
|
|
transform: scale(0.95);
|
|
transform: scale(0.95);
|
|
@@ -581,7 +578,7 @@ const viewVideo = (url: string) => {
|
|
|
line-height: 1;
|
|
line-height: 1;
|
|
|
font-weight: 600;
|
|
font-weight: 600;
|
|
|
box-shadow: 0 4rpx 12rpx rgba(255, 193, 7, 0.25);
|
|
box-shadow: 0 4rpx 12rpx rgba(255, 193, 7, 0.25);
|
|
|
- transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
|
|
|
|
|
+ transition: all 0.2s ease;
|
|
|
|
|
|
|
|
&:active {
|
|
&:active {
|
|
|
transform: scale(0.95);
|
|
transform: scale(0.95);
|
|
@@ -596,7 +593,6 @@ const viewVideo = (url: string) => {
|
|
|
/* 订单信息卡片 */
|
|
/* 订单信息卡片 */
|
|
|
.info-card {
|
|
.info-card {
|
|
|
padding: 0;
|
|
padding: 0;
|
|
|
- animation-delay: 0.3s;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.info-list {
|
|
.info-list {
|
|
@@ -609,7 +605,7 @@ const viewVideo = (url: string) => {
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
padding: 28rpx 0;
|
|
padding: 28rpx 0;
|
|
|
border-bottom: 1rpx solid #F5F5F5;
|
|
border-bottom: 1rpx solid #F5F5F5;
|
|
|
- transition: background 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
|
|
|
|
|
+ transition: background 0.2s ease;
|
|
|
|
|
|
|
|
&:active {
|
|
&:active {
|
|
|
background: #FAFAFA;
|
|
background: #FAFAFA;
|
|
@@ -639,7 +635,7 @@ const viewVideo = (url: string) => {
|
|
|
.copy-btn {
|
|
.copy-btn {
|
|
|
margin-left: 12rpx;
|
|
margin-left: 12rpx;
|
|
|
padding: 8rpx;
|
|
padding: 8rpx;
|
|
|
- transition: transform 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
|
|
|
|
|
+ transition: transform 0.2s ease;
|
|
|
|
|
|
|
|
&:active {
|
|
&:active {
|
|
|
transform: scale(0.9);
|
|
transform: scale(0.9);
|
|
@@ -669,7 +665,7 @@ const viewVideo = (url: string) => {
|
|
|
.info-link {
|
|
.info-link {
|
|
|
display: flex;
|
|
display: flex;
|
|
|
align-items: center;
|
|
align-items: center;
|
|
|
- transition: opacity 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
|
|
|
|
|
|
|
+ transition: opacity 0.2s ease;
|
|
|
|
|
|
|
|
&:active {
|
|
&:active {
|
|
|
opacity: 0.6;
|
|
opacity: 0.6;
|
|
@@ -692,7 +688,7 @@ const viewVideo = (url: string) => {
|
|
|
.footer-note {
|
|
.footer-note {
|
|
|
text-align: center;
|
|
text-align: center;
|
|
|
padding: 60rpx 0 40rpx;
|
|
padding: 60rpx 0 40rpx;
|
|
|
- animation: fadeIn 0.6s cubic-bezier(0.25, 0.1, 0.25, 1) 0.5s both;
|
|
|
|
|
|
|
+ animation: fadeIn 0.3s ease 0.15s both;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
.footer-note text {
|
|
.footer-note text {
|