consumer模块完成90%,前端完成supabase对接
This commit is contained in:
@@ -70,9 +70,9 @@
|
||||
<text class="service-icon">🔄</text>
|
||||
<text class="service-text">退款/售后</text>
|
||||
</view>
|
||||
<view class="service-item" @click="contactService">
|
||||
<text class="service-icon">💬</text>
|
||||
<text class="service-text">在线客服</text>
|
||||
<view class="service-item" @click="goToOrderReviews">
|
||||
<text class="service-icon">📝</text>
|
||||
<text class="service-text">评价</text>
|
||||
</view>
|
||||
<view class="service-item" @click="goToMySubscriptions">
|
||||
<text class="service-icon">🧩</text>
|
||||
@@ -248,7 +248,7 @@
|
||||
|
||||
<script>
|
||||
import { UserType, OrderType } from '@/types/mall-types.uts'
|
||||
// import { supabase as supa } from '@/components/supadb/aksupainstance.uts'
|
||||
import supabaseService from '@/utils/supabaseService.uts'
|
||||
|
||||
type UserStatsType = {
|
||||
points: number
|
||||
@@ -363,22 +363,27 @@ export default {
|
||||
methods: {
|
||||
// 加载订单数据
|
||||
async loadOrders() {
|
||||
const userStore = uni.getStorageSync('userInfo')
|
||||
// const userId = userStore?.id
|
||||
// if (!userId) return
|
||||
|
||||
try {
|
||||
// 从本地存储加载订单数据
|
||||
const storedOrders = uni.getStorageSync('orders')
|
||||
let orders: any[] = []
|
||||
if (storedOrders) {
|
||||
orders = JSON.parse(storedOrders as string) as any[]
|
||||
}
|
||||
const orders = await supabaseService.getOrders()
|
||||
|
||||
this.allOrders = orders
|
||||
// 按时间倒序
|
||||
// 映射数据库字段到前端类型
|
||||
this.allOrders = orders.map((o: any): OrderType => {
|
||||
// 确保 status 字段存在
|
||||
if (o['status'] == null && o['order_status'] != null) {
|
||||
o['status'] = o['order_status']
|
||||
}
|
||||
// 确保 actual_amount 存在
|
||||
if (o['actual_amount'] == null && o['total_amount'] != null) {
|
||||
o['actual_amount'] = o['total_amount']
|
||||
}
|
||||
return o as OrderType
|
||||
})
|
||||
|
||||
// 按时间倒序 (created_at)
|
||||
this.allOrders.sort((a: any, b: any) => {
|
||||
return new Date(b.created_at).getTime() - new Date(a.created_at).getTime()
|
||||
const timeA = new Date(a.created_at || 0).getTime()
|
||||
const timeB = new Date(b.created_at || 0).getTime()
|
||||
return timeB - timeA
|
||||
})
|
||||
|
||||
// 过滤最近的订单
|
||||
@@ -388,8 +393,8 @@ export default {
|
||||
this.orderCounts = {
|
||||
total: this.allOrders.length,
|
||||
pending: this.allOrders.filter((o: any) => o.status === 1).length,
|
||||
toship: this.allOrders.filter((o: any) => o.status === 2).length, // 修复:仅计算状态2为待发货
|
||||
shipped: this.allOrders.filter((o: any) => o.status === 3).length, // 修复:仅计算状态3为待收货
|
||||
toship: this.allOrders.filter((o: any) => o.status === 2).length,
|
||||
shipped: this.allOrders.filter((o: any) => o.status === 3).length,
|
||||
review: this.allOrders.filter((o: any) => o.status === 4).length
|
||||
}
|
||||
} catch (e) {
|
||||
@@ -437,11 +442,14 @@ export default {
|
||||
level: 3
|
||||
}
|
||||
|
||||
// orderCounts 将通过 loadOrders 从真实数据获取
|
||||
// init with zeros
|
||||
this.orderCounts = {
|
||||
total: 23,
|
||||
pending: 2,
|
||||
shipped: 1,
|
||||
review: 3
|
||||
total: 0,
|
||||
pending: 0,
|
||||
toship: 0,
|
||||
shipped: 0,
|
||||
review: 0
|
||||
}
|
||||
|
||||
this.serviceCounts = {
|
||||
@@ -449,38 +457,8 @@ export default {
|
||||
favorites: 12
|
||||
}
|
||||
|
||||
this.recentOrders = [
|
||||
{
|
||||
id: 'order_001',
|
||||
order_no: 'ORD202401150001',
|
||||
user_id: 'user_001',
|
||||
merchant_id: 'merchant_001',
|
||||
status: 3,
|
||||
total_amount: 299.98,
|
||||
discount_amount: 30.00,
|
||||
delivery_fee: 8.00,
|
||||
actual_amount: 277.98,
|
||||
payment_method: 1,
|
||||
payment_status: 1,
|
||||
delivery_address: {},
|
||||
created_at: '2024-01-15T14:30:00'
|
||||
},
|
||||
{
|
||||
id: 'order_002',
|
||||
order_no: 'ORD202401140002',
|
||||
user_id: 'user_001',
|
||||
merchant_id: 'merchant_002',
|
||||
status: 4,
|
||||
total_amount: 158.00,
|
||||
discount_amount: 0,
|
||||
delivery_fee: 6.00,
|
||||
actual_amount: 164.00,
|
||||
payment_method: 1,
|
||||
payment_status: 1,
|
||||
delivery_address: {},
|
||||
created_at: '2024-01-14T09:20:00'
|
||||
}
|
||||
]
|
||||
// recentOrders 将通过 loadOrders 从真实数据获取
|
||||
this.recentOrders = []
|
||||
|
||||
this.loadConsumptionStats()
|
||||
},
|
||||
@@ -546,14 +524,29 @@ export default {
|
||||
return statusClasses[status] || 'error'
|
||||
},
|
||||
|
||||
getOrderMainImage(order: OrderType): string {
|
||||
// 模拟获取订单主图
|
||||
getOrderMainImage(order: any): string {
|
||||
// 尝试从 ml_order_items 获取第一张图
|
||||
const items = order['ml_order_items'] as any[]
|
||||
if (items && items.length > 0) {
|
||||
const firstItem = items[0]
|
||||
// 数据库字段通常是 image_url
|
||||
const img = firstItem['image_url'] || firstItem['product_image']
|
||||
if (img) return img as string
|
||||
}
|
||||
return '/static/product1.jpg'
|
||||
},
|
||||
|
||||
getOrderTitle(order: OrderType): string {
|
||||
// 模拟获取订单标题
|
||||
return '精选商品等多件商品'
|
||||
getOrderTitle(order: any): string {
|
||||
const items = order['ml_order_items'] as any[]
|
||||
if (items && items.length > 0) {
|
||||
const firstItem = items[0]
|
||||
const name = (firstItem['product_name'] || '商品') as string
|
||||
if (items.length > 1) {
|
||||
return `${name} 等${items.length}件商品`
|
||||
}
|
||||
return name
|
||||
}
|
||||
return '精选商品'
|
||||
},
|
||||
|
||||
formatTime(timeStr: string): string {
|
||||
@@ -669,7 +662,7 @@ export default {
|
||||
|
||||
goToRefund() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/mall/consumer/refund'
|
||||
url: '/pages/mall/consumer/orders?type=refund'
|
||||
})
|
||||
},
|
||||
|
||||
@@ -678,6 +671,11 @@ export default {
|
||||
url: '/pages/mall/service/chat'
|
||||
})
|
||||
},
|
||||
goToOrderReviews() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/mall/consumer/orders?type=review'
|
||||
})
|
||||
},
|
||||
goToMySubscriptions() {
|
||||
uni.navigateTo({
|
||||
url: '/pages/mall/consumer/subscription/my-subscriptions'
|
||||
|
||||
Reference in New Issue
Block a user