diff --git a/components/RenewalPaymentPopup.vue b/components/RenewalPaymentPopup.vue
index 86d307a..609e6fd 100644
--- a/components/RenewalPaymentPopup.vue
+++ b/components/RenewalPaymentPopup.vue
@@ -334,7 +334,27 @@
}
};
- defineExpose({ open, openOrderPayment });
+ const payOrderDirectly = async (orderId, method = 'wallet') => {
+ if (!orderId || submitting.value) return;
+ submitting.value = true;
+ uni.showLoading({ title: '准备支付...', mask: true });
+
+ try {
+ await orderApi.pay(orderId, method);
+ uni.hideLoading();
+ if (method === 'wallet') {
+ await confirmOrderStatus(orderId);
+ }
+ } catch (error) {
+ uni.hideLoading();
+ console.error('直接支付订单失败', error);
+ uni.showToast({ title: error.msg || error.message || '支付失败,请稍后重试', icon: 'none' });
+ } finally {
+ submitting.value = false;
+ }
+ };
+
+ defineExpose({ open, openOrderPayment, payOrderDirectly });
diff --git a/pages/order-list/order-list.vue b/pages/order-list/order-list.vue
index a54938b..59de302 100644
--- a/pages/order-list/order-list.vue
+++ b/pages/order-list/order-list.vue
@@ -1,6 +1,7 @@
+
{{ item.label }}
-
-
+
+
+
暂无订单
@@ -66,7 +74,9 @@
上拉加载更多
-
+
+
+
@@ -106,6 +116,9 @@
const scrollViewStyle = computed(() => scrollViewHeight.value > 0
? { height: `${scrollViewHeight.value}px`, flex: 'none' }
: {});
+ const filterIndicatorStyle = computed(() => ({
+ left: `calc(${filterIndex.value * 20}% + 8rpx)`
+ }));
const updateScrollViewHeight = () => {
const windowInfo = typeof uni.getWindowInfo === 'function'
@@ -154,10 +167,18 @@
};
const onFilterChange = (index) => {
+ if (filterIndex.value === index) return;
filterIndex.value = index;
resetOrderListAndLoad();
};
+ const onFilterSwiperChange = (event) => {
+ const nextIndex = Number(event?.detail?.current);
+ if (Number.isInteger(nextIndex) && nextIndex >= 0 && nextIndex < filterOptions.length) {
+ onFilterChange(nextIndex);
+ }
+ };
+
const loadOrderList = async (append = false) => {
if (loading.value || (append && noMore.value)) return;
@@ -238,6 +259,10 @@
const showOrderPaymentMethods = (order) => {
if (!order?.order_id) return;
const packageNames = Array.isArray(order.package_names) ? order.package_names : [];
+ if (String(order.payment_method || '').toLowerCase() === 'wallet') {
+ renewalPopupRef.value?.payOrderDirectly(order.order_id, 'wallet');
+ return;
+ }
renewalPopupRef.value?.openOrderPayment(order.order_id, packageNames);
};
@@ -532,6 +557,59 @@
border-radius: 8rpx;
}
+ .container .filter-tabs {
+ position: relative;
+ margin-top: 0;
+ padding: 8rpx;
+ background: #fff;
+ border: 0;
+ border-radius: 16rpx;
+ overflow: hidden;
+ }
+
+ .container .filter-tabs .tab-item {
+ position: relative;
+ z-index: 1;
+ min-width: 0;
+ padding: 20rpx 4rpx;
+ color: var(--text-tertiary);
+ font-size: 26rpx;
+ transition: color 0.3s;
+ }
+
+ .container .filter-tabs .tab-item.active {
+ background: transparent;
+ color: #fff;
+ font-size: 26rpx;
+ font-weight: 600;
+ }
+
+ .filter-tab-indicator {
+ position: absolute;
+ top: 8rpx;
+ width: calc(20% - 16rpx);
+ height: calc(100% - 16rpx);
+ background: var(--primary);
+ border-radius: 12rpx;
+ transition: left 0.3s ease;
+ z-index: 0;
+ }
+
+ .order-swiper,
+ .order-swiper-item {
+ width: 100%;
+ min-height: 0;
+ }
+
+ .order-swiper {
+ flex: 1;
+ height: 0;
+ }
+
+ .order-swiper-item {
+ height: 100%;
+ }
+
.scroll-container {
flex: 1 1 0;
height: auto;
diff --git a/pages/package-order/package-order.vue b/pages/package-order/package-order.vue
index 3cd7429..f1165e0 100644
--- a/pages/package-order/package-order.vue
+++ b/pages/package-order/package-order.vue
@@ -1,6 +1,7 @@
+
-
-
- 暂无{{ activePackageType === 'formal' ? '正式套餐' : '加油包' }}
- 当前资产暂无适用的套餐
-
+
+
+
+
+
+ 暂无{{ activePackageType === 'formal' ? '正式套餐' : '加油包' }}
+ 当前资产暂无适用的套餐
+
-
-
-
- {{ item.package_name }}
-
-
-
- {{ formatValidity(item.validity_days) }}
-
-
-
- {{ formatData(item.data_allowance, item.data_unit) }}
+
+
+
+ {{ item.package_name }}
+
+
+
+ {{ formatValidity(item.validity_days) }}
+
+
+
+ {{ formatData(item.data_allowance, item.data_unit) }}
+
+
+ 高速流量 · 全国通用 · 不限速
+
+
+ ¥{{ formatPackagePrice(item.retail_price) }}
+
+
- 高速流量 · 全国通用 · 不限速
-
-
- ¥{{ formatPackagePrice(item.retail_price) }}
-
-
-
-
+
+
+