Files
medical-mall/unpackage/cache/.app-android/sourcemap/pages/main/profile.kt.map

1 line
85 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"version":3,"sources":["pages/main/profile.uvue","pages/main/index.uvue","pages/user/login.uvue","pages/main/cart.uvue","uni_modules/ak-req/ak-req.uts"],"sourcesContent":["<!-- 消费者端 - 个人中心 -->\r\n<template>\r\n <view class=\"consumer-profile\">\r\n <!-- 智能顶部导航栏 - 与消息页保持一致 -->\r\n <view class=\"smart-navbar\" :style=\"{ paddingTop: statusBarHeight + 'px' }\">\r\n <view class=\"nav-container\">\r\n <!-- 基础用户信息:头像和昵称 -->\r\n <view class=\"nav-user-basic\" @click=\"editProfile\">\r\n <image \r\n :src=\"userInfo.avatar_url != '' ? userInfo.avatar_url : '/static/images/default-product.png'\" \r\n class=\"nav-avatar\" \r\n />\r\n <text class=\"nav-user-name\">{{ userInfo.nickname != '' ? userInfo.nickname : userInfo.phone }}</text>\r\n </view>\r\n \r\n <!-- 用户资产横向排列 (积分、余额、优惠券) -->\r\n <view class=\"nav-user-stats\" :style=\"{ marginRight: navBarRight + 'px' }\">\r\n <view class=\"nav-stat-item\" @click=\"goToPoints\">\r\n <text class=\"nav-stat-label\">积分</text>\r\n <text class=\"nav-stat-value\">{{ userStats.points }}</text>\r\n </view>\r\n \r\n <view class=\"nav-stat-item\" @click=\"goToWallet\">\r\n <text class=\"nav-stat-label\">余额</text>\r\n <text class=\"nav-stat-value\">¥{{ userStats.balance }}</text>\r\n </view>\r\n \r\n <view class=\"nav-stat-item\" @click=\"goToCoupons\">\r\n <text class=\"nav-stat-label\">券</text>\r\n <text class=\"nav-stat-value\">{{ serviceCounts.coupons }}</text>\r\n </view>\r\n </view>\r\n \r\n <!-- 设置按钮 (最右侧) -->\r\n <view class=\"nav-actions\">\r\n <view class=\"action-btn\" @click=\"goToSettings\">\r\n <text class=\"action-icon\">⚙️</text>\r\n </view>\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <scroll-view class=\"profile-scroll-content\" :scroll-y=\"true\">\r\n <!-- 导航栏占位符 - 需要包含statusBarHeight + 导航栏高度44px -->\r\n <view :style=\"{ height: (statusBarHeight + 44) + 'px' }\"></view>\r\n \r\n <!-- 我的服务 (移到订单上方) -->\r\n <view class=\"my-services\" style=\"margin-top: 10px;\">\r\n <view class=\"section-title\">我的服务</view>\r\n <view class=\"service-grid\">\r\n <view class=\"service-item\" @click=\"goToCoupons\">\r\n <text class=\"service-icon\">🎫</text>\r\n <text class=\"service-text\">优惠券</text>\r\n <text v-if=\"serviceCounts.coupons > 0\" class=\"service-badge\">{{ serviceCounts.coupons }}</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToAddress\">\r\n <text class=\"service-icon\">📍</text>\r\n <text class=\"service-text\">收货地址</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToFavorites\">\r\n <text class=\"service-icon\">❤️</text>\r\n <text class=\"service-text\">我的收藏</text>\r\n <text v-if=\"serviceCounts.favorites > 0\" class=\"service-badge\">{{ serviceCounts.favorites }}</text>\r\n </view>\r\n\r\n <view class=\"service-item\" @click=\"goToFootprint\">\r\n <text class=\"service-icon\">👣</text>\r\n <text class=\"service-text\">浏览足迹</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToRefund\">\r\n <text class=\"service-icon\">🔄</text>\r\n <text class=\"service-text\">退款/售后</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToOrderReviews\">\r\n <text class=\"service-icon\">📝</text>\r\n <text class=\"service-text\">评价</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToFollowedShops\">\r\n <text class=\"service-icon\">⭐</text>\r\n <text class=\"service-text\">关注店铺</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToPoints\">\r\n <text class=\"service-icon\">💰</text>\r\n <text class=\"service-text\">我的积分</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToBalance\">\r\n <text class=\"service-icon\">💵</text>\r\n <text class=\"service-text\">我的余额</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToShare\">\r\n <text class=\"service-icon\">🔗</text>\r\n <text class=\"service-text\">我的分享</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToMember\">\r\n <text class=\"service-icon\">👑</text>\r\n <text class=\"service-text\">会员中心</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToSettings\">\r\n <text class=\"service-icon\">⚙️</text>\r\n <text class=\"service-text\">设置</text>\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <!-- 订单状态快捷入口 -->\r\n <view class=\"order-shortcuts\">\r\n <view class=\"section-header-row\">\r\n <text class=\"section-title\">我的订单</text>\r\n <text class=\"view-all\" @click=\"goToOrders(currentOrderTab)\">查看更多 </text>\r\n </view>\r\n <view class=\"order-tabs\">\r\n <view class=\"order-tab\" :class=\"{ active: currentOrderTab === 'all' }\" @click=\"switchOrderTab('all')\">\r\n <text class=\"tab-icon\">📋</text>\r\n <text class=\"tab-text\">全部</text>\r\n <text v-if=\"orderCounts.total > 0\" class=\"tab-badge\">{{ orderCounts.total }}</text>\r\n </view>\r\n <view class=\"order-tab\" :class=\"{ active: currentOrderTab === 'pending' }\" @click=\"switchOrderTab('pending')\">\r\n <text class=\"tab-icon\">💰</text>\r\n <text class=\"tab-text\">待支付</text>\r\n <text v-if=\"orderCounts.pending > 0\" class=\"tab-badge\">{{ orderCounts.pending }}</text>\r\n </view>\r\n <view class=\"order-tab\" :class=\"{ active: currentOrderTab === 'toship' }\" @click=\"switchOrderTab('toship')\">\r\n <text class=\"tab-icon\">🚚</text>\r\n <text class=\"tab-text\">待发货</text>\r\n <text v-if=\"orderCounts.toship > 0\" class=\"tab-badge\">{{ orderCounts.toship }}</text>\r\n </view>\r\n <view class=\"order-tab\" :class=\"{ active: currentOrderTab === 'shipped' }\" @click=\"switchOrderTab('shipped')\">\r\n <text class=\"tab-icon\">📦</text>\r\n <text class=\"tab-text\">待收货</text>\r\n <text v-if=\"orderCounts.shipped > 0\" class=\"tab-badge\">{{ orderCounts.shipped }}</text>\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <!-- 最近订单列表 (根据Tab切换显示) -->\r\n <view class=\"recent-orders\">\r\n <view class=\"section-header\">\r\n <text class=\"section-title\">{{ getOrderSectionTitle() }}</text>\r\n </view>\r\n \r\n <view v-if=\"filteredOrders.length === 0\" class=\"empty-orders\">\r\n <text class=\"empty-text\">暂无相关订单记录</text>\r\n <button class=\"start-shopping\" @click=\"goShopping\">去逛逛</button>\r\n </view>\r\n \r\n <view v-for=\"order in filteredOrders\" :key=\"order.id\" class=\"order-item\" @click=\"viewOrderDetail(order)\">\r\n <view class=\"order-item-header\">\r\n <view class=\"order-shop\">\r\n <text class=\"shop-icon\">🏪</text>\r\n <text class=\"shop-name\">{{ getOrderShopName(order) }}</text>\r\n <text class=\"shop-arrow\"> </text>\r\n </view>\r\n <view class=\"status-row\">\r\n <text class=\"order-status-text\" :class=\"getOrderStatusClass(order.status)\">{{ getOrderStatusText(order.status) }}</text>\r\n <text class=\"more-btn\" @click.stop=\"showOrderMenu(order)\">⋯</text>\r\n </view>\r\n </view>\r\n <view class=\"order-item-content\">\r\n <image :src=\"getOrderMainImage(order)\" class=\"order-item-image\" mode=\"aspectFill\" @click.stop=\"goToProductFromOrder(order)\" />\r\n <view class=\"order-item-info\">\r\n <view class=\"order-title-row\">\r\n <text class=\"order-item-title\">{{ getOrderTitle(order) }}</text>\r\n <text class=\"order-item-price\">¥{{ order.actual_amount }}</text>\r\n </view>\r\n <view class=\"order-spec-row\">\r\n <text class=\"order-item-spec\">{{ getOrderSpec(order) }}</text>\r\n <text class=\"order-item-num\">x{{ getOrderItemCount(order) }}</text>\r\n </view>\r\n <text class=\"order-item-time\">{{ formatDateTime(order.created_at) }}</text>\r\n </view>\r\n </view>\r\n <view class=\"order-item-actions\">\r\n <button v-if=\"order.status === 1\" class=\"order-action-btn pay\" @click.stop=\"payOrder(order)\">立即支付</button>\r\n <button v-if=\"order.status === 3\" class=\"order-action-btn confirm\" @click.stop=\"confirmReceive(order)\">确认收货</button>\r\n <button v-if=\"order.status === 4\" class=\"order-action-btn review\" @click.stop=\"reviewOrder(order)\">评价</button>\r\n <button v-if=\"order.status === 2 || order.status === 3\" class=\"order-action-btn secondary\" @click.stop=\"viewOrderDetail(order)\">查看物流</button>\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <!-- 我的服务 -->\r\n <!-- <view class=\"my-services\">\r\n <view class=\"section-title\">我的服务</view>\r\n <view class=\"service-grid\">\r\n <view class=\"service-item\" @click=\"goToCoupons\">\r\n <text class=\"service-icon\">🎫</text>\r\n <text class=\"service-text\">优惠券</text>\r\n <text v-if=\"serviceCounts.coupons > 0\" class=\"service-badge\">{{ serviceCounts.coupons }}</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToAddress\">\r\n <text class=\"service-icon\">📍</text>\r\n <text class=\"service-text\">收货地址</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToFavorites\">\r\n <text class=\"service-icon\">❤️</text>\r\n <text class=\"service-text\">我的收藏</text>\r\n <text v-if=\"serviceCounts.favorites > 0\" class=\"service-badge\">{{ serviceCounts.favorites }}</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToFootprint\">\r\n <text class=\"service-icon\">👣</text>\r\n <text class=\"service-text\">浏览足迹</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToRefund\">\r\n <text class=\"service-icon\">🔄</text>\r\n <text class=\"service-text\">退款/售后</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"contactService\">\r\n <text class=\"service-icon\">💬</text>\r\n <text class=\"service-text\">在线客服</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToMySubscriptions\">\r\n <text class=\"service-icon\">🧩</text>\r\n <text class=\"service-text\">我的订阅</text>\r\n </view>\r\n <view class=\"service-item\" @click=\"goToSubscriptions\">\r\n <text class=\"service-icon\">🧩</text>\r\n <text class=\"service-text\">软件订阅</text>\r\n </view>\r\n </view>\r\n </view> -->\r\n\r\n <!-- 消费统计 -->\r\n <view class=\"consumption-stats\">\r\n <view class=\"section-title\">消费统计</view>\r\n <view class=\"stats-period\">\r\n <text v-for=\"period in statsPeriods\" :key=\"period.key\" \r\n class=\"period-tab\" \r\n :class=\"{ active: activeStatsPeriod === period.key }\"\r\n @click=\"switchStatsPeriod(period.key)\">{{ period.label }}</text>\r\n </view>\r\n \r\n <view class=\"stats-content\">\r\n <view class=\"stat-card\">\r\n <text class=\"stat-value\">¥{{ currentStats.total_amount }}</text>\r\n <text class=\"stat-label\">总消费</text>\r\n </view>\r\n <view class=\"stat-card\">\r\n <text class=\"stat-value\">{{ currentStats.order_count }}</text>\r\n <text class=\"stat-label\">订单数</text>\r\n </view>\r\n <view class=\"stat-card\">\r\n <text class=\"stat-value\">¥{{ currentStats.avg_amount }}</text>\r\n <text class=\"stat-label\">平均消费</text>\r\n </view>\r\n <view class=\"stat-card\">\r\n <text class=\"stat-value\">{{ currentStats.save_amount }}</text>\r\n <text class=\"stat-label\">节省金额</text>\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <!-- 账户安全 -->\r\n <!-- <view class=\"account-security\">\r\n <view class=\"section-title\">账户安全</view>\r\n <view class=\"security-items\">\r\n <view class=\"security-item\" @click=\"changePassword\">\r\n <text class=\"security-icon\">🔒</text>\r\n <text class=\"security-text\">修改密码</text>\r\n <text class=\"security-arrow\">></text>\r\n </view>\r\n <view class=\"security-item\" @click=\"bindPhone\">\r\n <text class=\"security-icon\">📱</text>\r\n <text class=\"security-text\">手机绑定</text>\r\n <view class=\"security-status\">\r\n <text class=\"status-text\" :class=\"{ bound: userInfo.phone }\">{{ userInfo.phone ? '已绑定' : '未绑定' }}</text>\r\n <text class=\"security-arrow\">></text>\r\n </view>\r\n </view>\r\n <view class=\"security-item\" @click=\"bindEmail\">\r\n <text class=\"security-icon\">📧</text>\r\n <text class=\"security-text\">邮箱绑定</text>\r\n <view class=\"security-status\">\r\n <text class=\"status-text\" :class=\"{ bound: userInfo.email }\">{{ userInfo.email ? '已绑定' : '未绑定' }}</text>\r\n <text class=\"security-arrow\">></text>\r\n </view>\r\n </view>\r\n </view>\r\n </view> -->\r\n </scroll-view>\r\n </view>\r\n</template>\r\n\r\n<script>\r\nimport { UserType } from '@/types/mall-types.uts'\r\nimport supabaseService from '@/utils/supabaseService.uts'\r\n\r\ntype UserStatsType = {\r\n points: number\r\n balance: number\r\n level: number\r\n}\r\n\r\ntype OrderCountsType = {\r\n total: number\r\n pending: number\r\n toship: number\r\n shipped: number\r\n review: number\r\n}\r\n\r\ntype ServiceCountsType = {\r\n coupons: number\r\n favorites: number\r\n}\r\n\r\ntype ConsumptionStatsType = {\r\n total_amount: number\r\n order_count: number\r\n avg_amount: number\r\n save_amount: number\r\n}\r\n\r\ntype StatsPeriodType = {\r\n key: string\r\n label: string\r\n}\r\n\r\ntype OrderItemType = {\r\n id: string\r\n order_no: string\r\n status: number\r\n actual_amount: number\r\n created_at: string\r\n ml_order_items: any | null\r\n ml_shops: any | null\r\n items_count: number\r\n}\r\n\r\nexport default {\r\n data() {\r\n return {\r\n userInfo: {\r\n id: '',\r\n phone: '',\r\n email: '',\r\n nickname: '',\r\n avatar_url: '',\r\n gender: 0,\r\n user_type: 0,\r\n status: 0,\r\n created_at: ''\r\n } as UserType,\r\n userStats: {\r\n points: 0,\r\n balance: 0,\r\n level: 1\r\n } as UserStatsType,\r\n orderCounts: {\r\n total: 0,\r\n pending: 0,\r\n toship: 0,\r\n shipped: 0,\r\n review: 0\r\n } as OrderCountsType,\r\n serviceCounts: {\r\n coupons: 0,\r\n favorites: 0\r\n } as ServiceCountsType,\r\n recentOrders: [] as Array<OrderItemType>,\r\n statsPeriods: [\r\n { key: 'month', label: '本月' },\r\n { key: 'quarter', label: '本季度' },\r\n { key: 'year', label: '本年' },\r\n { key: 'all', label: '全部' }\r\n ] as Array<StatsPeriodType>,\r\n activeStatsPeriod: 'month',\r\n currentStats: {\r\n total_amount: 0,\r\n order_count: 0,\r\n avg_amount: 0,\r\n save_amount: 0\r\n } as ConsumptionStatsType,\r\n statusBarHeight: 0,\r\n navBarRight: 0, // 导航栏右侧预留空间(小程序胶囊按钮)\r\n currentOrderTab: 'all' as string,\r\n allOrders: [] as Array<OrderItemType>\r\n }\r\n },\r\n onLoad() {\r\n this.initPage()\r\n this.loadUserProfile()\r\n this.loadOrders()\r\n \r\n // 监听订单更新事件\r\n uni.$on('orderUpdated', this.handleOrderUpdated)\r\n },\r\n onShow() {\r\n this.refreshData()\r\n },\r\n onUnload() {\r\n // 移除事件监听\r\n uni.$off('orderUpdated', this.handleOrderUpdated)\r\n },\r\n computed: {\r\n filteredOrders(): Array<OrderItemType> {\r\n const result: Array<OrderItemType> = []\r\n if (this.currentOrderTab === 'all') {\r\n for (let i: number = 0; i < this.allOrders.length; i++) {\r\n result.push(this.allOrders[i])\r\n }\r\n return result\r\n }\r\n let targetStatus: number = 0\r\n if (this.currentOrderTab === 'pending') {\r\n targetStatus = 1\r\n } else if (this.currentOrderTab === 'toship') {\r\n targetStatus = 2\r\n } else if (this.currentOrderTab === 'shipped') {\r\n targetStatus = 3\r\n } else if (this.currentOrderTab === 'review') {\r\n targetStatus = 4\r\n } else {\r\n return result\r\n }\r\n for (let i: number = 0; i < this.allOrders.length; i++) {\r\n if (this.allOrders[i].status === targetStatus) {\r\n result.push(this.allOrders[i])\r\n }\r\n }\r\n return result\r\n }\r\n },\r\n methods: {\r\n async loadOrders() {\r\n try {\r\n const orders = await supabaseService.getOrders()\r\n \r\n const mappedOrders: Array<OrderItemType> = []\r\n for (let i: number = 0; i < orders.length; i++) {\r\n const rawItem = orders[i]\r\n const o = JSON.parse(JSON.stringify(rawItem)) as UTSJSONObject\r\n \r\n let status = o.getNumber('status')\r\n if (status == null) {\r\n const orderStatus = o.getNumber('order_status')\r\n status = orderStatus != null ? orderStatus : 0\r\n }\r\n \r\n let actualAmount = o.getNumber('actual_amount')\r\n if (actualAmount == null) {\r\n const totalAmount = o.getNumber('total_amount')\r\n actualAmount = totalAmount != null ? totalAmount : 0\r\n }\r\n \r\n const mlOrderItems = o.get('ml_order_items')\r\n \r\n let itemsCount = 0\r\n if (mlOrderItems != null && Array.isArray(mlOrderItems)) {\r\n itemsCount = (mlOrderItems as any[]).length\r\n }\r\n \r\n const orderItem: OrderItemType = {\r\n id: o.getString('id') ?? '',\r\n order_no: o.getString('order_no') ?? '',\r\n status: status,\r\n actual_amount: actualAmount,\r\n created_at: o.getString('created_at') ?? '',\r\n ml_order_items: mlOrderItems,\r\n ml_shops: o.get('ml_shops'),\r\n items_count: itemsCount\r\n }\r\n \r\n mappedOrders.push(orderItem)\r\n }\r\n \r\n for (let i: number = 0; i < mappedOrders.length; i++) {\r\n for (let j: number = i + 1; j < mappedOrders.length; j++) {\r\n const dateA = mappedOrders[i]['created_at'] as string\r\n const dateB = mappedOrders[j]['created_at'] as string\r\n const timeA = new Date(dateA != null ? dateA : '1970-01-01').getTime()\r\n const timeB = new Date(dateB != null ? dateB : '1970-01-01').getTime()\r\n if (timeA < timeB) {\r\n const temp = mappedOrders[i]\r\n mappedOrders[i] = mappedOrders[j]\r\n mappedOrders[j] = temp\r\n }\r\n }\r\n }\r\n \r\n this.allOrders = mappedOrders\r\n \r\n const recentList: Array<OrderItemType> = []\r\n const limit = mappedOrders.length < 5 ? mappedOrders.length : 5\r\n for (let i: number = 0; i < limit; i++) {\r\n recentList.push(mappedOrders[i])\r\n }\r\n this.recentOrders = recentList\r\n \r\n let total = 0\r\n let pending = 0\r\n let toship = 0\r\n let shipped = 0\r\n let review = 0\r\n \r\n for (let i: number = 0; i < mappedOrders.length; i++) {\r\n total++\r\n const status = mappedOrders[i].status\r\n if (status === 1) pending++\r\n else if (status === 2) toship++\r\n else if (status === 3) shipped++\r\n else if (status === 4) review++\r\n }\r\n \r\n this.orderCounts = {\r\n total: total,\r\n pending: pending,\r\n toship: toship,\r\n shipped: shipped,\r\n review: review\r\n }\r\n } catch (e) {\r\n console.error('加载订单异常', e)\r\n }\r\n },\r\n \r\n // 切换订单Tab\r\n switchOrderTab(tab: string) {\r\n this.currentOrderTab = tab\r\n },\r\n \r\n // 获取当前订单部分标题\r\n getOrderSectionTitle(): string {\r\n if (this.currentOrderTab === 'all') return '全部订单'\r\n if (this.currentOrderTab === 'pending') return '待支付订单'\r\n if (this.currentOrderTab === 'shipped') return '待收货订单'\r\n if (this.currentOrderTab === 'review') return '待评价订单'\r\n return '我的订单'\r\n },\r\n\r\n initPage() {\r\n const systemInfo = uni.getSystemInfoSync()\r\n this.statusBarHeight = systemInfo.statusBarHeight ?? 0\r\n \r\n // 获取小程序胶囊按钮信息\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n },\r\n async loadUserProfile() {\r\n try {\r\n // 获取用户资料\r\n const profile = await supabaseService.getUserProfile()\r\n if (profile != null) {\r\n // 映射字段\r\n let uId = ''\r\n let uPhone = ''\r\n let uEmail = ''\r\n let uNickname = ''\r\n let uAvatar = ''\r\n let uGender = 0\r\n \r\n if (profile instanceof UTSJSONObject) {\r\n uId = profile.getString('user_id') ?? ''\r\n uPhone = profile.getString('phone') ?? ''\r\n uEmail = profile.getString('email') ?? ''\r\n uNickname = profile.getString('nickname') ?? ''\r\n uAvatar = profile.getString('avatar_url') ?? ''\r\n uGender = profile.getNumber('gender') ?? 0\r\n } else {\r\n // 必须使用 JSON.parse(JSON.stringify()) 转换为 UTSJSONObject\r\n const profileObj = JSON.parse(JSON.stringify(profile)) as UTSJSONObject\r\n uId = profileObj.getString('user_id') ?? ''\r\n uPhone = profileObj.getString('phone') ?? ''\r\n uEmail = profileObj.getString('email') ?? ''\r\n uNickname = profileObj.getString('nickname') ?? ''\r\n uAvatar = profileObj.getString('avatar_url') ?? ''\r\n uGender = profileObj.getNumber('gender') ?? 0\r\n }\r\n \r\n if (uNickname === '' && uPhone !== '') {\r\n uNickname = uPhone.substring(0, 3) + '****' + uPhone.substring(7)\r\n }\r\n\r\n this.userInfo = {\r\n id: uId,\r\n phone: uPhone,\r\n email: uEmail,\r\n nickname: uNickname != '' ? uNickname : '微信用户',\r\n avatar_url: uAvatar != '' ? uAvatar : '/static/images/default-product.png',\r\n gender: uGender,\r\n user_type: 1,\r\n status: 1,\r\n created_at: new Date().toISOString()\r\n } as UserType\r\n } else {\r\n // 如果获取失败未登录或无档案尝试获取当前登录ID\r\n const userId = supabaseService.getCurrentUserId()\r\n if (userId != null) {\r\n this.userInfo.id = userId\r\n this.userInfo.nickname = '用户' + userId.substring(0, 4)\r\n } else {\r\n this.userInfo.nickname = '未登录'\r\n }\r\n }\r\n\r\n // 获取积分和余额顺序获取UTS不支持Promise.all数组解构\r\n const balanceResult = await supabaseService.getUserBalance()\r\n const points = await supabaseService.getUserPoints()\r\n\r\n const balanceValue = balanceResult.getNumber('balance') ?? 0\r\n\r\n this.userStats = {\r\n points: points,\r\n balance: balanceValue,\r\n level: this.calculateLevel(points) // 根据积分计算等级\r\n } as UserStatsType\r\n\r\n } catch (e) {\r\n console.error('加载用户信息失败', e)\r\n // 保持默认或显示错误\r\n }\r\n },\r\n \r\n calculateLevel(points: number): number {\r\n if (points < 1000) return 0\r\n if (points < 5000) return 1\r\n if (points < 20000) return 2\r\n if (points < 50000) return 3\r\n return 4\r\n },\r\n \r\n loadConsumptionStats() {\r\n if (this.activeStatsPeriod === 'month') {\r\n this.currentStats = {\r\n total_amount: 1280.50,\r\n order_count: 8,\r\n avg_amount: 160.06,\r\n save_amount: 85.20\r\n } as ConsumptionStatsType\r\n } else if (this.activeStatsPeriod === 'quarter') {\r\n this.currentStats = {\r\n total_amount: 3680.80,\r\n order_count: 18,\r\n avg_amount: 204.49,\r\n save_amount: 256.30\r\n } as ConsumptionStatsType\r\n } else if (this.activeStatsPeriod === 'year') {\r\n this.currentStats = {\r\n total_amount: 15680.90,\r\n order_count: 56,\r\n avg_amount: 280.02,\r\n save_amount: 986.50\r\n } as ConsumptionStatsType\r\n } else {\r\n this.currentStats = {\r\n total_amount: 25680.50,\r\n order_count: 89,\r\n avg_amount: 288.55,\r\n save_amount: 1580.20\r\n } as ConsumptionStatsType\r\n }\r\n },\r\n \r\n refreshData() {\r\n // 刷新页面数据\r\n this.loadUserProfile()\r\n this.loadOrders()\r\n this.updateCouponCount() // 更新优惠券数量\r\n },\r\n \r\n async updateCouponCount() {\r\n // 从 Supabase 获取真实的优惠券数量\r\n try {\r\n const count = await supabaseService.getUserCouponCount()\r\n this.serviceCounts.coupons = count\r\n } catch (e) {\r\n console.error('获取优惠券数量失败', e)\r\n this.serviceCounts.coupons = 0\r\n }\r\n },\r\n \r\n getUserLevel(): string {\r\n const levels = ['新手', '铜牌会员', '银牌会员', '金牌会员', '钻石会员']\r\n if (this.userStats.level >= 0 && this.userStats.level < levels.length) {\r\n return levels[this.userStats.level]\r\n }\r\n return '新手'\r\n },\r\n \r\n getOrderStatusText(status: number): string {\r\n if (status === 6) return '退款中'\r\n if (status === 7) return '已退款'\r\n const statusTexts = ['异常', '待支付', '待发货', '待收货', '已完成', '已取消']\r\n if (status >= 0 && status < statusTexts.length) {\r\n return statusTexts[status]\r\n }\r\n return '未知'\r\n },\r\n \r\n getOrderStatusClass(status: number): string {\r\n if (status === 6) return 'refunding'\r\n if (status === 7) return 'refunded'\r\n const statusClasses = ['error', 'pending', 'processing', 'shipping', 'completed', 'cancelled']\r\n if (status >= 0 && status < statusClasses.length) {\r\n return statusClasses[status]\r\n }\r\n return 'error'\r\n },\r\n \r\n showOrderMenu(order: OrderItemType) {\r\n const status = order.status\r\n let actions: string[] = []\r\n \r\n if (status === 1) {\r\n actions = ['取消订单', '联系卖家']\r\n } else if (status === 2) {\r\n actions = ['提醒发货', '申请退款', '联系卖家']\r\n } else if (status === 3) {\r\n actions = ['查看物流', '确认收货', '申请退款', '联系卖家']\r\n } else if (status === 4) {\r\n actions = ['申请售后', '再次购买', '联系卖家']\r\n } else if (status === 5) {\r\n actions = ['删除订单', '再次购买', '联系卖家']\r\n } else if (status === 6) {\r\n actions = ['退款进度', '联系卖家']\r\n } else if (status === 7) {\r\n actions = ['再次购买', '联系卖家']\r\n }\r\n \r\n uni.showActionSheet({\r\n itemList: actions,\r\n success: (res) => {\r\n const action = actions[res.tapIndex]\r\n this.handleOrderAction(order, action)\r\n }\r\n })\r\n },\r\n \r\n handleOrderAction(order: OrderItemType, action: string) {\r\n if (action === '取消订单') {\r\n this.cancelOrderAction(order)\r\n } else if (action === '联系卖家') {\r\n this.contactSeller(order)\r\n } else if (action === '提醒发货') {\r\n this.remindShipping(order)\r\n } else if (action === '申请退款' || action === '申请售后') {\r\n this.applyRefund(order)\r\n } else if (action === '查看物流') {\r\n this.viewLogistics(order.id)\r\n } else if (action === '确认收货') {\r\n this.confirmReceive(order)\r\n } else if (action === '再次购买') {\r\n this.repurchase(order)\r\n } else if (action === '删除订单') {\r\n this.deleteOrder(order.id)\r\n } else if (action === '退款进度') {\r\n this.viewRefundProgress(order.id)\r\n }\r\n },\r\n \r\n cancelOrderAction(order: OrderItemType) {\r\n uni.showModal({\r\n title: '确认取消',\r\n content: '确定要取消此订单吗?',\r\n success: (res) => {\r\n if (res.confirm) {\r\n uni.showLoading({ title: '取消中...' })\r\n supabaseService.cancelOrder(order.id).then(() => {\r\n uni.hideLoading()\r\n uni.showToast({ title: '订单已取消', icon: 'success' })\r\n this.loadOrders()\r\n }).catch(() => {\r\n uni.hideLoading()\r\n uni.showToast({ title: '取消失败', icon: 'none' })\r\n })\r\n }\r\n }\r\n })\r\n },\r\n \r\n contactSeller(order: OrderItemType) {\r\n const merchantId = order.ml_shops != null ? this.getMerchantIdFromOrder(order) : ''\r\n if (merchantId !== '') {\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/chat?merchantId=${merchantId}`\r\n })\r\n } else {\r\n uni.showToast({ title: '暂无卖家联系方式', icon: 'none' })\r\n }\r\n },\r\n \r\n getMerchantIdFromOrder(order: OrderItemType): string {\r\n const shopsRaw = order.ml_shops\r\n if (shopsRaw != null) {\r\n const shopStr = JSON.stringify(shopsRaw)\r\n const shopParsed = JSON.parse(shopStr)\r\n if (shopParsed != null) {\r\n const shopObj = shopParsed as UTSJSONObject\r\n return shopObj.getString('merchant_id') ?? ''\r\n }\r\n }\r\n return ''\r\n },\r\n \r\n remindShipping(order: OrderItemType) {\r\n uni.showLoading({ title: '提醒中...' })\r\n const merchantId = order.ml_shops != null ? this.getMerchantIdFromOrder(order) : ''\r\n if (merchantId !== '') {\r\n const message = `你好,我的订单[${order.order_no}]还没有发货,请尽快安排,谢谢。`\r\n supabaseService.sendChatMessage(message, merchantId).then(() => {\r\n uni.hideLoading()\r\n uni.showToast({ title: '已提醒卖家发货', icon: 'success' })\r\n }).catch(() => {\r\n uni.hideLoading()\r\n uni.showToast({ title: '提醒失败', icon: 'none' })\r\n })\r\n } else {\r\n uni.hideLoading()\r\n uni.showToast({ title: '无法联系卖家', icon: 'none' })\r\n }\r\n },\r\n \r\n applyRefund(order: OrderItemType) {\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/apply-refund?orderId=${order.id}`\r\n })\r\n },\r\n \r\n viewLogistics(orderId: string) {\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/logistics?orderId=${orderId}`\r\n })\r\n },\r\n \r\n repurchase(order: OrderItemType) {\r\n uni.showLoading({ title: '处理中...' })\r\n const itemsRaw = order.ml_order_items\r\n if (itemsRaw == null || (itemsRaw as any[]).length === 0) {\r\n uni.hideLoading()\r\n uni.showToast({ title: '订单无商品', icon: 'none' })\r\n return\r\n }\r\n \r\n const items = itemsRaw as any[]\r\n let completed = 0\r\n const total = items.length\r\n let successCount = 0\r\n \r\n for (let i = 0; i < items.length; i++) {\r\n const itemStr = JSON.stringify(items[i])\r\n const itemParsed = JSON.parse(itemStr)\r\n if (itemParsed == null) {\r\n completed++\r\n if (completed === total) {\r\n uni.hideLoading()\r\n if (successCount > 0) {\r\n uni.showToast({ title: `已添加${successCount}件商品`, icon: 'success' })\r\n } else {\r\n uni.showToast({ title: '添加失败', icon: 'none' })\r\n }\r\n }\r\n continue\r\n }\r\n \r\n const itemObj = itemParsed as UTSJSONObject\r\n const productId = itemObj.getString('product_id') ?? ''\r\n const merchantId = order.ml_shops != null ? this.getMerchantIdFromOrder(order) : ''\r\n \r\n if (productId !== '') {\r\n supabaseService.addToCart(productId, 1, '', merchantId).then((success) => {\r\n completed++\r\n if (success) successCount++\r\n if (completed === total) {\r\n uni.hideLoading()\r\n if (successCount > 0) {\r\n uni.showToast({ title: `已添加${successCount}件商品`, icon: 'success' })\r\n } else {\r\n uni.showToast({ title: '添加失败', icon: 'none' })\r\n }\r\n }\r\n }).catch(() => {\r\n completed++\r\n if (completed === total) {\r\n uni.hideLoading()\r\n if (successCount > 0) {\r\n uni.showToast({ title: `已添加${successCount}件商品`, icon: 'success' })\r\n } else {\r\n uni.showToast({ title: '添加失败', icon: 'none' })\r\n }\r\n }\r\n })\r\n } else {\r\n completed++\r\n if (completed === total) {\r\n uni.hideLoading()\r\n if (successCount > 0) {\r\n uni.showToast({ title: `已添加${successCount}件商品`, icon: 'success' })\r\n } else {\r\n uni.showToast({ title: '添加失败', icon: 'none' })\r\n }\r\n }\r\n }\r\n }\r\n },\r\n \r\n deleteOrder(orderId: string) {\r\n uni.showModal({\r\n title: '删除订单',\r\n content: '确定要删除此订单吗?',\r\n success: (res) => {\r\n if (res.confirm) {\r\n uni.showLoading({ title: '删除中...' })\r\n supabaseService.deleteOrder(orderId).then(() => {\r\n uni.hideLoading()\r\n uni.showToast({ title: '订单已删除', icon: 'success' })\r\n this.loadOrders()\r\n }).catch(() => {\r\n uni.hideLoading()\r\n uni.showToast({ title: '删除失败', icon: 'none' })\r\n })\r\n }\r\n }\r\n })\r\n },\r\n \r\n viewRefundProgress(orderId: string) {\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/refund?orderId=${orderId}`\r\n })\r\n },\r\n \r\n getOrderShopName(order: OrderItemType): string {\r\n const shopsRaw = order.ml_shops\r\n if (shopsRaw != null) {\r\n const shopStr = JSON.stringify(shopsRaw)\r\n const shopParsed = JSON.parse(shopStr)\r\n if (shopParsed != null) {\r\n const shopObj = shopParsed as UTSJSONObject\r\n const name = shopObj.getString('shop_name')\r\n if (name != null && name !== '') return name\r\n }\r\n }\r\n return '自营店铺'\r\n },\r\n \r\n getOrderMainImage(order: OrderItemType): string {\r\n const itemsRaw = order.ml_order_items\r\n if (itemsRaw == null) return '/static/images/default-product.png'\r\n const items = itemsRaw as any[]\r\n if (items.length > 0) {\r\n const firstItem = items[0]\r\n const itemStr = JSON.stringify(firstItem)\r\n const itemParsed = JSON.parse(itemStr)\r\n if (itemParsed == null) return '/static/images/default-product.png'\r\n const itemObj = itemParsed as UTSJSONObject\r\n const imgUrl = itemObj.getString('image_url')\r\n const prodImg = itemObj.getString('product_image')\r\n const img = (imgUrl != null && imgUrl !== '') ? imgUrl : prodImg\r\n if (img != null && img !== '') return img\r\n }\r\n return '/static/images/default-product.png'\r\n },\r\n \r\n getOrderTitle(order: OrderItemType): string {\r\n const itemsRaw = order.ml_order_items\r\n if (itemsRaw == null) return '精选商品'\r\n const items = itemsRaw as any[]\r\n if (items.length > 0) {\r\n const firstItem = items[0]\r\n const itemStr = JSON.stringify(firstItem)\r\n const itemParsed = JSON.parse(itemStr)\r\n if (itemParsed == null) return '精选商品'\r\n const itemObj = itemParsed as UTSJSONObject\r\n const pName = itemObj.getString('product_name')\r\n const name = (pName != null && pName !== '') ? pName : '商品'\r\n \r\n return name\r\n }\r\n return '精选商品'\r\n },\r\n \r\n getOrderSpec(order: OrderItemType): string {\r\n const itemsRaw = order.ml_order_items\r\n if (itemsRaw == null) return ''\r\n const items = itemsRaw as any[]\r\n if (items.length > 0) {\r\n const firstItem = items[0]\r\n const itemStr = JSON.stringify(firstItem)\r\n const itemParsed = JSON.parse(itemStr)\r\n if (itemParsed == null) return ''\r\n const itemObj = itemParsed as UTSJSONObject\r\n const specRaw = itemObj.get('specifications')\r\n if (specRaw == null) return ''\r\n \r\n if (typeof specRaw === 'string') {\r\n const specStr = specRaw as string\r\n if (specStr.startsWith('{')) {\r\n try {\r\n const specObj = JSON.parse(specStr) as UTSJSONObject\r\n const parts: string[] = []\r\n const color = specObj.get('Color')\r\n if (color != null) parts.push('颜色: ' + color)\r\n const size = specObj.get('Size')\r\n if (size != null) parts.push('尺码: ' + size)\r\n \r\n if (parts.length > 0) return parts.join(' ')\r\n return specStr.replace(/[{}\"]/g, '')\r\n } catch (e) {\r\n return specStr\r\n }\r\n }\r\n return specStr\r\n }\r\n return JSON.stringify(specRaw).replace(/[{}\"]/g, '')\r\n }\r\n return ''\r\n },\r\n\r\n getOrderItemCount(order: OrderItemType): number {\r\n if (order.items_count != null && order.items_count > 0) {\r\n return order.items_count\r\n }\r\n return 1\r\n },\r\n\r\n getOrderShopName(order: OrderItemType): string {\r\n const shopsRaw = order.ml_shops\r\n if (shopsRaw != null) {\r\n const shopStr = JSON.stringify(shopsRaw)\r\n const shopParsed = JSON.parse(shopStr)\r\n if (shopParsed != null) {\r\n const shopObj = shopParsed as UTSJSONObject\r\n const name = shopObj.getString('shop_name')\r\n if (name != null && name !== '') return name\r\n }\r\n }\r\n return '自营店铺'\r\n },\r\n \r\n formatDateTime(timeStr: string): string {\r\n if (timeStr == null || timeStr === '') return ''\r\n const date = new Date(timeStr)\r\n const y = date.getFullYear()\r\n const m = (date.getMonth() + 1).toString().padStart(2, '0')\r\n const d = date.getDate().toString().padStart(2, '0')\r\n const h = date.getHours().toString().padStart(2, '0')\r\n const i = date.getMinutes().toString().padStart(2, '0')\r\n return `${y}-${m}-${d} ${h}:${i}`\r\n },\r\n\r\n formatTime(timeStr: string): string {\r\n const date = new Date(timeStr)\r\n const now = new Date()\r\n const diff = now.getTime() - date.getTime()\r\n const days = Math.floor(diff / (1000 * 60 * 60 * 24))\r\n \r\n if (days === 0) {\r\n return '今天'\r\n } else if (days === 1) {\r\n return '昨天'\r\n } else {\r\n return `${days}天前`\r\n }\r\n },\r\n \r\n switchStatsPeriod(period: string) {\r\n this.activeStatsPeriod = period\r\n this.loadConsumptionStats()\r\n },\r\n \r\n editProfile() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/edit-profile'\r\n })\r\n },\r\n \r\n // 跳转设置\r\n goToSettings() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/settings'\r\n })\r\n },\r\n \r\n // 跳转钱包\r\n goToWallet() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/wallet'\r\n })\r\n },\r\n \r\n goToOrders(type: string) {\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/orders?type=${type}`\r\n })\r\n },\r\n \r\n goShopping() {\r\n uni.switchTab({\r\n url: '/pages/main/index'\r\n })\r\n },\r\n \r\n viewOrderDetail(order: OrderItemType) {\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/order-detail?orderId=${order.id}`\r\n })\r\n },\r\n \r\n goToProductFromOrder(order: OrderItemType) {\r\n const itemsRaw = order.ml_order_items\r\n if (itemsRaw == null) return\r\n const items = itemsRaw as any[]\r\n if (items.length > 0) {\r\n const firstItem = items[0]\r\n const itemStr = JSON.stringify(firstItem)\r\n const itemParsed = JSON.parse(itemStr)\r\n if (itemParsed == null) return\r\n const itemObj = itemParsed as UTSJSONObject\r\n const productId = itemObj.getString('product_id')\r\n if (productId != null && productId !== '') {\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/product-detail?id=${productId}`\r\n })\r\n }\r\n }\r\n },\r\n \r\n payOrder(order: OrderItemType) {\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/payment?orderId=${order.id}`\r\n })\r\n },\r\n \r\n confirmReceive(order: OrderItemType) {\r\n uni.showModal({\r\n title: '确认收货',\r\n content: '确认已收到商品吗?',\r\n success: (res) => {\r\n if (res.confirm) {\r\n uni.showLoading({ title: '处理中...' })\r\n supabaseService.confirmOrderReceived(order.id).then(() => {\r\n uni.hideLoading()\r\n uni.showToast({\r\n title: '确认收货成功',\r\n icon: 'success'\r\n })\r\n this.loadOrders()\r\n }).catch(() => {\r\n uni.hideLoading()\r\n uni.showToast({\r\n title: '操作失败',\r\n icon: 'none'\r\n })\r\n })\r\n }\r\n }\r\n })\r\n },\r\n \r\n reviewOrder(order: OrderItemType) {\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/review?orderId=${order.id}`\r\n })\r\n },\r\n \r\n goToCoupons() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/coupons'\r\n })\r\n },\r\n\r\n goToPoints() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/points/index'\r\n })\r\n },\r\n \r\n goToAddress() {\r\n // 暂时跳转到设置页的地址管理\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/address-list'\r\n })\r\n },\r\n \r\n goToFavorites() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/favorites'\r\n })\r\n },\r\n \r\n goToFootprint() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/footprint'\r\n })\r\n },\r\n \r\n goToRefund() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/orders?type=refund'\r\n })\r\n },\r\n \r\n contactService() {\r\n uni.navigateTo({\r\n url: '/pages/mall/service/chat'\r\n })\r\n },\r\n goToOrderReviews() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/orders?type=review'\r\n })\r\n },\r\n goToMySubscriptions() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/subscription/my-subscriptions'\r\n })\r\n },\r\n goToFollowedShops() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/subscription/followed-shops'\r\n })\r\n },\r\n goToPoints() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/points/index'\r\n })\r\n },\r\n \r\n goToBalance() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/balance/index'\r\n })\r\n },\r\n \r\n goToShare() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/share/index'\r\n })\r\n },\r\n \r\n goToMember() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/member/index'\r\n })\r\n },\r\n \r\n changePassword() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/change-password'\r\n })\r\n },\r\n \r\n bindPhone() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/bind-phone'\r\n })\r\n },\r\n \r\n bindEmail() {\r\n uni.navigateTo({\r\n url: '/pages/mall/consumer/bind-email'\r\n })\r\n },\r\n \r\n handleOrderUpdated(data: any) {\r\n console.log('收到订单更新事件:', data)\r\n this.refreshData()\r\n \r\n const dataObj = data as UTSJSONObject\r\n const status = dataObj.getNumber('status')\r\n if (status === 1) {\r\n uni.showToast({\r\n title: '订单已保存到待支付',\r\n icon: 'success'\r\n })\r\n } else if (status === 2) {\r\n uni.showToast({\r\n title: '支付成功,订单待发货',\r\n icon: 'success'\r\n })\r\n }\r\n }\r\n }\r\n}\r\n</script>\r\n\r\n<style>\r\n.consumer-profile {\r\n background-color: #f5f5f5;\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n height: 100%;\r\n width: 100%;\r\n}\r\n\r\n.profile-scroll-content {\r\n flex: 1;\r\n}\r\n/* 智能顶部导航栏 */\r\n.smart-navbar {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n background-color: #ff5000;\r\n z-index: 1000;\r\n box-shadow: 0 2px 12px rgba(255, 80, 0, 0.15);\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: flex-start;\r\n}\r\n\r\n.nav-container {\r\n padding: 0 16px;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: space-between;\r\n width: 100%;\r\n max-width: 1400px;\r\n margin: 0 auto;\r\n height: 44px;\r\n}\r\n\r\n/* 导航栏用户信息区域 */\r\n.nav-user-basic {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n flex-shrink: 0;\r\n margin-right: 8px;\r\n}\r\n\r\n.nav-user-stats {\r\n flex: 1;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: flex-end; /* 将积分、余额、券推向右侧,但在设置按钮之前 */\r\n margin-right: 8px;\r\n}\r\n\r\n.nav-user-name {\r\n font-size: 14px;\r\n font-weight: bold;\r\n color: white;\r\n width: 70px; /* 进一步压缩名字宽度 */\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n.nav-stat-item {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n background: rgba(255, 255, 255, 0.15); /* 降低透明度更清爽 */\r\n border-radius: 10px;\r\n padding: 2px 6px;\r\n margin-right: 4px; /* 减小间距 */\r\n flex-shrink: 0;\r\n}\r\n\r\n.nav-stat-label {\r\n font-size: 10px; /* 调小字体 */\r\n color: rgba(255, 255, 255, 0.85);\r\n margin-right: 2px;\r\n}\r\n\r\n.nav-stat-value {\r\n font-size: 11px; /* 调小字体 */\r\n font-weight: bold;\r\n color: white;\r\n}\r\n\r\n.nav-avatar {\r\n width: 32px; /* 缩小头像 */\r\n height: 32px;\r\n border-radius: 16px;\r\n border: 1.5px solid rgba(255, 255, 255, 0.8);\r\n margin-right: 6px;\r\n flex-shrink: 0;\r\n}\r\n\r\n.nav-actions {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n flex-shrink: 0;\r\n}\r\n\r\n.action-btn {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 32px;\r\n height: 32px;\r\n background: rgba(255, 255, 255, 0.2);\r\n border-radius: 16px;\r\n /* cursor: pointer; REMOVED */\r\n}\r\n\r\n.action-icon {\r\n font-size: 18px;\r\n color: white;\r\n}\r\n\r\n/* 导航栏占位符 */\r\n.navbar-placeholder {\r\n width: 100%;\r\n flex-shrink: 0;\r\n}\r\n\r\n.order-shortcuts, .recent-orders, .my-services, .consumption-stats, .account-security {\r\n background-color: #fff;\r\n margin: 15px 15px; /* 顶部恢复 margin */\r\n border-radius: 12px; /* 统一圆角 */\r\n padding: 20px;\r\n box-shadow: 0 2px 8px rgba(0,0,0,0.05);\r\n}\r\n\r\n.section-title {\r\n font-size: 16px;\r\n font-weight: bold;\r\n color: #333;\r\n margin-bottom: 16px;\r\n}\r\n\r\n.section-header-row {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: space-between;\r\n margin-bottom: 16px;\r\n}\r\n\r\n.section-header-row .section-title {\r\n margin-bottom: 0;\r\n}\r\n\r\n.view-all {\r\n font-size: 14px;\r\n color: #999;\r\n}\r\n\r\n.order-tabs {\r\n display: flex;\r\n flex-direction: row; /* 显式横向排列 */\r\n justify-content: space-between;\r\n width: 100%;\r\n}\r\n\r\n.order-tab {\r\n flex: 1;\r\n display: flex;\r\n flex-direction: row; /* 关键:改为横向排列 */\r\n align-items: center;\r\n justify-content: center; /* 居中 */\r\n position: relative;\r\n padding: 8px 0;\r\n}\r\n\r\n.tab-icon {\r\n font-size: 20px;\r\n margin-right: 6px; /* 图标和文字间距 */\r\n margin-bottom: 0; /* 移除底部间距 */\r\n}\r\n\r\n.tab-text {\r\n font-size: 14px;\r\n color: #333;\r\n}\r\n\r\n/* 选中状态的Tab */\r\n.order-tab.active .tab-icon,\r\n.order-tab.active .tab-text {\r\n color: #ff5000;\r\n font-weight: bold;\r\n}\r\n\r\n.order-tab.active {\r\n background-color: #fff8f5;\r\n border-radius: 8px;\r\n}\r\n\r\n.tab-badge {\r\n position: absolute;\r\n top: 0;\r\n right: 10%; /* 调整位置 */\r\n background-color: #ff5000;\r\n color: #fff;\r\n font-size: 10px;\r\n padding: 1px 5px;\r\n border-radius: 8px;\r\n min-width: 14px;\r\n text-align: center;\r\n line-height: 1.2;\r\n}\r\n\r\n.empty-orders {\r\n text-align: center;\r\n padding: 80rpx 0;\r\n}\r\n\r\n.empty-text {\r\n font-size: 28rpx;\r\n color: #999;\r\n margin-bottom: 30rpx;\r\n}\r\n\r\n.start-shopping {\r\n background-color: #007aff;\r\n color: #fff;\r\n padding: 20rpx 40rpx;\r\n border-radius: 25rpx;\r\n font-size: 26rpx;\r\n border: none;\r\n}\r\n\r\n.order-item {\r\n background-color: #fff;\r\n border-radius: 16rpx;\r\n padding: 24rpx;\r\n margin-bottom: 20rpx;\r\n box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.05);\r\n}\r\n\r\n.order-item-header {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 20rpx;\r\n}\r\n\r\n.status-row {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n}\r\n\r\n.more-btn {\r\n font-size: 18px;\r\n color: #999;\r\n margin-left: 8px;\r\n padding: 0 5px;\r\n}\r\n\r\n.order-shop {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n}\r\n\r\n.shop-icon {\r\n font-size: 32rpx;\r\n margin-right: 8rpx;\r\n}\r\n\r\n.shop-name {\r\n font-size: 28rpx;\r\n font-weight: bold;\r\n color: #333;\r\n}\r\n\r\n.shop-arrow {\r\n font-size: 28rpx;\r\n color: #ccc;\r\n margin-left: 4rpx;\r\n}\r\n\r\n.order-status-text {\r\n font-size: 26rpx;\r\n font-weight: bold;\r\n}\r\n\r\n.order-status-text.pending {\r\n color: #ff5000;\r\n}\r\n\r\n.order-status-text.processing {\r\n color: #ff9500;\r\n}\r\n\r\n.order-status-text.shipping {\r\n color: #007aff;\r\n}\r\n\r\n.order-status-text.completed {\r\n color: #34c759;\r\n}\r\n\r\n.order-status-text.refunding {\r\n color: #ff9500;\r\n}\r\n\r\n.order-status-text.refunded {\r\n color: #999;\r\n}\r\n\r\n.order-status-text.cancelled {\r\n color: #999;\r\n}\r\n\r\n.order-item-content {\r\n display: flex;\r\n flex-direction: row;\r\n margin-bottom: 24rpx;\r\n}\r\n\r\n.order-item-image {\r\n width: 140rpx;\r\n height: 140rpx;\r\n border-radius: 12rpx;\r\n margin-right: 20rpx;\r\n background-color: #f8f8f8;\r\n}\r\n\r\n.order-item-info {\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: flex-start;\r\n}\r\n\r\n.order-title-row {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: flex-start;\r\n margin-bottom: 12rpx;\r\n}\r\n\r\n.order-item-title {\r\n flex: 1;\r\n font-size: 28rpx;\r\n color: #333;\r\n line-height: 1.4;\r\n margin-right: 20rpx;\r\n lines: 2;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n.order-item-price {\r\n font-size: 32rpx;\r\n color: #333;\r\n font-weight: bold;\r\n text-align: right;\r\n}\r\n\r\n.order-spec-row {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: 4rpx;\r\n margin-bottom: 8rpx;\r\n}\r\n\r\n.order-item-spec {\r\n flex: 1;\r\n font-size: 24rpx;\r\n color: #999;\r\n margin-right: 12rpx;\r\n lines: 1;\r\n text-overflow: ellipsis;\r\n}\r\n\r\n.order-item-time {\r\n font-size: 22rpx;\r\n color: #999;\r\n margin-top: auto;\r\n}\r\n\r\n.order-item-num {\r\n font-size: 24rpx;\r\n color: #999;\r\n}\r\n\r\n.order-item-actions {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-end;\r\n}\r\n\r\n.order-action-btn {\r\n margin-left: 16rpx;\r\n padding: 10rpx 28rpx;\r\n border-radius: 30rpx;\r\n font-size: 24rpx;\r\n border: 1px solid #ddd;\r\n background-color: #fff;\r\n}\r\n\r\n.order-action-btn.pay {\r\n background-color: #ff5000;\r\n color: #fff;\r\n border-color: #ff5000;\r\n}\r\n\r\n.order-action-btn.confirm {\r\n background-color: #ff5000;\r\n color: #fff;\r\n border-color: #ff5000;\r\n}\r\n\r\n.order-action-btn.review {\r\n color: #ff5000;\r\n border-color: #ff5000;\r\n}\r\n\r\n.order-action-btn.secondary {\r\n color: #666;\r\n border-color: #ddd;\r\n}\r\n\r\n.service-grid {\r\n display: flex;\r\n flex-direction: row;\r\n flex-wrap: wrap; /* 允许换行 */\r\n /* gap: 16px 0; REMOVED */\r\n justify-content: flex-start; /* 从左开始排列 */\r\n}\r\n\r\n.service-item {\r\n width: 25%; /* 每行4个 */\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n position: relative;\r\n box-sizing: border-box; /* 确保 padding 不影响宽度 */\r\n margin-bottom: 16px; /* Replace gap row */\r\n}\r\n\r\n.service-icon {\r\n font-size: 48rpx;\r\n margin-bottom: 15rpx;\r\n}\r\n\r\n.service-text {\r\n font-size: 24rpx;\r\n color: #333;\r\n}\r\n\r\n.service-badge {\r\n position: absolute;\r\n top: -5rpx;\r\n right: 10rpx;\r\n background-color: #ff5000;\r\n color: #fff;\r\n font-size: 18rpx;\r\n padding: 4rpx 6rpx;\r\n border-radius: 8rpx;\r\n min-width: 24rpx;\r\n text-align: center;\r\n}\r\n\r\n.stats-period {\r\n display: flex;\r\n /* gap: 30rpx; REMOVED */\r\n margin-bottom: 30rpx;\r\n}\r\n\r\n.period-tab {\r\n font-size: 26rpx;\r\n color: #666;\r\n padding: 12rpx 24rpx;\r\n border-radius: 20rpx;\r\n margin-right: 30rpx; /* Replace gap */\r\n background-color: #f0f0f0;\r\n}\r\n\r\n.period-tab.active {\r\n background-color: #007aff;\r\n color: #fff;\r\n}\r\n\r\n.stats-content {\r\n display: flex;\r\n /* gap: 20rpx; REMOVED */\r\n}\r\n\r\n.stat-card {\r\n flex: 1;\r\n text-align: center;\r\n padding: 30rpx 0;\r\n background-color: #f8f9fa;\r\n border-radius: 10rpx;\r\n margin-right: 20rpx; /* Replace gap */\r\n}\r\n\r\n.stat-card:last-child {\r\n margin-right: 0;\r\n}\r\n\r\n.stat-value {\r\n font-size: 32rpx;\r\n font-weight: bold;\r\n color: #333;\r\n margin-bottom: 8rpx;\r\n}\r\n\r\n.stat-label {\r\n font-size: 22rpx;\r\n color: #666;\r\n}\r\n\r\n.security-items {\r\n margin-top: 25rpx;\r\n}\r\n\r\n.security-item {\r\n display: flex;\r\n align-items: center;\r\n padding: 25rpx 0;\r\n border-bottom: 1rpx solid #f5f5f5;\r\n}\r\n\r\n.security-item:last-child {\r\n border-bottom: none;\r\n}\r\n\r\n.security-icon {\r\n font-size: 32rpx;\r\n margin-right: 20rpx;\r\n}\r\n\r\n.security-text {\r\n flex: 1;\r\n font-size: 28rpx;\r\n color: #333;\r\n}\r\n\r\n.security-status {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.status-text {\r\n font-size: 24rpx;\r\n color: #999;\r\n margin-right: 10rpx;\r\n}\r\n\r\n.status-text.bound {\r\n color: #4caf50;\r\n}\r\n\r\n.security-arrow {\r\n font-size: 24rpx;\r\n color: #999;\r\n}\r\n</style>\r\n\r\n",null,null,null,null],"names":[],"mappings":"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"}