1 line
51 KiB
Plaintext
1 line
51 KiB
Plaintext
{"version":3,"sources":["pages/mall/consumer/orders.uvue","pages/user/change-password.uvue","pages/user/login.uvue","pages/mall/consumer/settings.uvue","pages/mall/consumer/index.uvue","pages/user/center.uvue","uni_modules/ak-req/ak-req.uts"],"sourcesContent":["<!-- pages/mall/consumer/orders.uvue -->\r\n<template>\r\n <view class=\"orders-page\">\r\n <!-- 顶部标题栏 -->\r\n <view class=\"orders-header\">\r\n <view class=\"header-search full-width\">\r\n <input \r\n class=\"search-input\" \r\n type=\"text\" \r\n placeholder=\"搜索订单号或商品名称\"\r\n :value=\"searchKeyword\"\r\n @input=\"onSearchInput\"\r\n @confirm=\"onSearchConfirm\"\r\n />\r\n <text v-if=\"searchKeyword\" class=\"search-clear\" @click=\"clearSearch\">×</text>\r\n <text v-else class=\"search-icon\">🔍</text>\r\n </view>\r\n </view>\r\n \r\n <!-- 订单状态筛选 -->\r\n <view class=\"order-tabs\">\r\n <scroll-view scroll-x class=\"tab-scroll\" :show-scrollbar=\"false\">\r\n <view class=\"tab-container\">\r\n <view \r\n v-for=\"tab in orderTabs\" \r\n :key=\"tab.id\"\r\n :class=\"['tab-item', { active: activeTab === tab.id }]\"\r\n @click=\"switchTab(tab.id)\"\r\n >\r\n <text class=\"tab-name\">{{ tab.name }}</text>\r\n <text v-if=\"tab.count > 0\" class=\"tab-count\">{{ tab.count }}</text>\r\n <view v-if=\"activeTab === tab.id\" class=\"active-indicator\"></view>\r\n </view>\r\n </view>\r\n </scroll-view>\r\n </view>\r\n \r\n <!-- 订单列表 -->\r\n <scroll-view \r\n scroll-y \r\n class=\"orders-content\"\r\n refresher-enabled\r\n :refresher-triggered=\"refreshing\"\r\n @refresherrefresh=\"onRefresh\"\r\n @scrolltolower=\"loadMore\"\r\n >\r\n <!-- 空状态 -->\r\n <view v-if=\"!loading && orders.length === 0\" class=\"empty-orders\">\r\n <text class=\"empty-icon\">📦</text>\r\n <text class=\"empty-title\">暂无订单</text>\r\n <text class=\"empty-desc\">去逛逛,发现心仪的商品</text>\r\n <button class=\"go-shopping-btn\" @click=\"goShopping\">去逛逛</button>\r\n </view>\r\n \r\n <!-- 订单列表 -->\r\n <view v-else class=\"order-list\">\r\n <view \r\n v-for=\"order in orders\" \r\n :key=\"order.id\"\r\n class=\"order-card\"\r\n >\r\n <!-- 订单头部 -->\r\n <view class=\"order-header\">\r\n <text class=\"order-no\">订单号:{{ order.order_no }}</text>\r\n <text :class=\"['order-status', getStatusClass(order.status)]\">\r\n {{ getStatusText(order.status) }}\r\n </text>\r\n </view>\r\n \r\n <!-- 订单商品 -->\r\n <view class=\"order-products\">\r\n <view \r\n v-for=\"product in order.products\" \r\n :key=\"product.id\"\r\n class=\"order-product\"\r\n @click=\"navigateToProduct(product)\"\r\n >\r\n <image \r\n class=\"product-image\" \r\n :src=\"product.image\" \r\n mode=\"aspectFill\"\r\n />\r\n <view class=\"product-info\">\r\n <text class=\"product-name\">{{ product.name }}</text>\r\n <text class=\"product-spec\">{{ product.spec }}</text>\r\n <view class=\"product-footer\">\r\n <text class=\"product-price\">¥{{ product.price }}</text>\r\n <text class=\"product-quantity\">×{{ product.quantity }}</text>\r\n </view>\r\n </view>\r\n </view>\r\n </view>\r\n \r\n <!-- 订单信息 -->\r\n <view class=\"order-info\">\r\n <view class=\"info-row\">\r\n <text class=\"info-label\">商品合计</text>\r\n <text class=\"info-value\">¥{{ order.product_amount }}</text>\r\n </view>\r\n <view class=\"info-row\">\r\n <text class=\"info-label\">运费</text>\r\n <text class=\"info-value\">¥{{ order.shipping_fee }}</text>\r\n </view>\r\n <view class=\"info-row total\">\r\n <text class=\"info-label\">实付款</text>\r\n <text class=\"info-value total-price\">¥{{ order.total_amount }}</text>\r\n </view>\r\n </view>\r\n \r\n <!-- 订单操作 -->\r\n <view class=\"order-actions\">\r\n <view v-if=\"order.status === 1\" class=\"action-buttons\">\r\n <button class=\"action-btn cancel\" @click=\"cancelOrder(order.id)\">取消订单</button>\r\n <button class=\"action-btn pay\" @click=\"payOrder(order.id)\">立即支付</button>\r\n </view>\r\n \r\n <view v-if=\"order.status === 2\" class=\"action-buttons\">\r\n <button class=\"action-btn remind\" @click=\"remindShipping(order.id)\">提醒发货</button>\r\n <button class=\"action-btn refund\" @click.stop=\"onApplyRefund(order)\">申请售后</button>\r\n </view>\r\n \r\n <view v-if=\"order.status === 3\" class=\"action-buttons\">\r\n <button class=\"action-btn view\" @click=\"viewLogistics(order.id)\">查看物流</button>\r\n <button class=\"action-btn confirm\" @click=\"confirmReceipt(order.id)\">确认收货</button>\r\n <button class=\"action-btn refund\" @click.stop=\"onApplyRefund(order)\">申请售后</button>\r\n </view>\r\n \r\n <view v-if=\"order.status === 4\" class=\"action-buttons\">\r\n <button class=\"action-btn review\" @click=\"goReview(order)\">评价</button>\r\n <button class=\"action-btn refund\" @click.stop=\"onApplyRefund(order)\">申请售后</button>\r\n <button class=\"action-btn repurchase\" @click=\"repurchase(order)\">再次购买</button>\r\n </view>\r\n \r\n <view v-if=\"order.status === 5\" class=\"action-buttons\">\r\n <button class=\"action-btn view\" @click=\"viewOrderDetail(order.id)\">查看详情</button>\r\n </view>\r\n </view>\r\n </view>\r\n </view>\r\n \r\n <!-- 加载更多 -->\r\n <view v-if=\"loadingMore\" class=\"loading-more\">\r\n <view class=\"loading-spinner\"></view>\r\n <text>加载中...</text>\r\n </view>\r\n \r\n <view v-if=\"!hasMore && orders.length > 0\" class=\"no-more\">\r\n <text>没有更多订单了</text>\r\n </view>\r\n \r\n <!-- 安全区域 -->\r\n <view class=\"safe-area\"></view>\r\n </scroll-view>\r\n \r\n <!-- 底部导航 -->\r\n <view class=\"tabbar-placeholder\"></view>\r\n </view>\r\n</template>\r\n\r\n<script setup lang=\"uts\">\r\nimport { ref, reactive, onMounted, computed } from 'vue'\r\nimport { onShow, onLoad, onBackPress } from '@dcloudio/uni-app'\r\nimport { supabaseService } from '@/utils/supabaseService.uts'\r\n\r\n// 拦截返回事件,避免跳回登录页\r\nonBackPress((options) => {\r\n if (options.from === 'navigateBack') {\r\n const pages = getCurrentPages()\r\n if (pages.length > 1) {\r\n const prevPage = pages[pages.length - 2]\r\n // 如果上一页是登录页,则重定向到个人中心\r\n if (prevPage.route.includes('login')) {\r\n uni.redirectTo({\r\n url: '/pages/mall/consumer/profile'\r\n })\r\n return true\r\n }\r\n }\r\n }\r\n return false\r\n})\r\n\r\n// 定义标签页类型\r\ntype OrderTabItem = {\r\n id: string,\r\n name: string,\r\n count: number\r\n}\r\n\r\n// 定义订单产品类型\r\ntype OrderProduct = {\r\n id: string,\r\n name: string,\r\n price: number,\r\n image: string,\r\n spec: string,\r\n quantity: number\r\n}\r\n\r\n// 定义订单类型\r\ntype OrderItem = {\r\n id: string,\r\n order_no: string,\r\n status: number,\r\n create_time: string,\r\n product_amount: number,\r\n shipping_fee: number,\r\n total_amount: number,\r\n products: OrderProduct[]\r\n}\r\n\r\n// 响应式数据\r\nconst orders = ref<OrderItem[]>([])\r\nconst allOrdersList = ref<OrderItem[]>([]) // Store all fetched orders for client-side filtering\r\nconst loading = ref<boolean>(false)\r\nconst loadingMore = ref<boolean>(false)\r\nconst hasMore = ref<boolean>(true)\r\nconst refreshing = ref<boolean>(false)\r\nconst page = ref<number>(1)\r\nconst activeTab = ref<string>('all')\r\nconst searchKeyword = ref<string>('')\r\n\r\n// 订单标签页 - 使用 ref 以便整体替换\r\nconst orderTabs = ref<OrderTabItem[]>([\r\n { id: 'all', name: '全部', count: 0 },\r\n { id: 'pending', name: '待付款', count: 0 },\r\n { id: 'shipping', name: '待发货', count: 0 },\r\n { id: 'delivering', name: '待收货', count: 0 },\r\n { id: 'completed', name: '已完成', count: 0 },\r\n { id: 'cancelled', name: '已取消', count: 0 }\r\n])\r\n\r\n// Removed Mock Data\r\n\r\n\r\n// 辅助函数:获取状态码\r\nconst getStatusByTab = (tabId: string): number => {\r\n if (tabId == 'pending') return 1\r\n if (tabId == 'shipping') return 2\r\n if (tabId == 'delivering') return 3\r\n if (tabId == 'completed') return 4\r\n if (tabId == 'cancelled') return 5\r\n return 0\r\n}\r\n\r\n// 辅助函数:解析规格文本\r\nconst parseSpecText = (specs: any): string => {\r\n if (specs == null) return ''\r\n if (typeof specs === 'string') return specs\r\n // 对于对象类型,尝试转为JSON字符串或简单处理\r\n try {\r\n return JSON.stringify(specs)\r\n } catch (e) {\r\n return ''\r\n }\r\n}\r\n\r\n// 辅助函数:更新标签计数\r\nconst updateTabsCounts = (allOrders: any[]) => {\r\n // 直接重新赋值整个数组\r\n const tabsData = orderTabs.value\r\n // 计算各状态数量\r\n const countAll = allOrders.length\r\n const countPending = allOrders.filter((o: any) => {\r\n const obj = o as Record<string, any>\r\n return obj['status'] === 1\r\n }).length\r\n const countShipping = allOrders.filter((o: any) => {\r\n const obj = o as Record<string, any>\r\n return obj['status'] === 2\r\n }).length\r\n const countDelivering = allOrders.filter((o: any) => {\r\n const obj = o as Record<string, any>\r\n return obj['status'] === 3\r\n }).length\r\n const countCompleted = allOrders.filter((o: any) => {\r\n const obj = o as Record<string, any>\r\n return obj['status'] === 4\r\n }).length\r\n const countCancelled = allOrders.filter((o: any) => {\r\n const obj = o as Record<string, any>\r\n return obj['status'] === 5\r\n }).length\r\n \r\n // 更新数组元素\r\n const tabsArr = tabsData as any[]\r\n const tab0 = tabsArr[0] as Record<string, any>\r\n tab0['count'] = countAll\r\n const tab1 = tabsArr[1] as Record<string, any>\r\n tab1['count'] = countPending\r\n const tab2 = tabsArr[2] as Record<string, any>\r\n tab2['count'] = countShipping\r\n const tab3 = tabsArr[3] as Record<string, any>\r\n tab3['count'] = countDelivering\r\n const tab4 = tabsArr[4] as Record<string, any>\r\n tab4['count'] = countCompleted\r\n const tab5 = tabsArr[5] as Record<string, any>\r\n tab5['count'] = countCancelled\r\n}\r\n\r\n// 辅助函数:按标签筛选订单\r\nconst filterOrdersByTab = () => {\r\n if (activeTab.value === 'all') {\r\n orders.value = allOrdersList.value\r\n } else {\r\n const targetStatus = getStatusByTab(activeTab.value)\r\n orders.value = allOrdersList.value.filter((o: OrderItem) => {\r\n return o.status === targetStatus\r\n })\r\n }\r\n}\r\n\r\n// 加载订单数据\r\nconst loadOrders = async () => {\r\n loading.value = true\r\n \r\n try {\r\n // Fetch all orders from Supabase (status=0)\r\n const fetchedOrders = await supabaseService.getOrders(0)\r\n \r\n // Map to View Model\r\n const mappedOrders: any[] = []\r\n for (let i = 0; i < fetchedOrders.length; i++) {\r\n const order = fetchedOrders[i]\r\n const orderObj = order as Record<string, any>\r\n const items = orderObj['ml_order_items'] as any[]\r\n const productsList: any[] = []\r\n \r\n if (items != null) {\r\n for (let j = 0; j < items.length; j++) {\r\n const item = items[j]\r\n const itemObj = item as Record<string, any>\r\n const specRaw = itemObj['specifications']\r\n const specText = specRaw != null ? parseSpecText(specRaw) : ''\r\n productsList.push({\r\n id: itemObj['product_id'],\r\n name: itemObj['product_name'],\r\n price: itemObj['price'],\r\n image: itemObj['image_url'] ?? '/static/default-product.png',\r\n spec: specText,\r\n quantity: itemObj['quantity']\r\n })\r\n }\r\n }\r\n \r\n mappedOrders.push({\r\n id: orderObj['id'],\r\n order_no: orderObj['order_no'],\r\n status: orderObj['order_status'],\r\n create_time: orderObj['created_at'],\r\n product_amount: orderObj['product_amount'] ?? 0,\r\n shipping_fee: orderObj['shipping_fee'] ?? 0,\r\n total_amount: orderObj['total_amount'] ?? orderObj['paid_amount'] ?? 0,\r\n products: productsList\r\n })\r\n }\r\n\r\n // Sort by created_at desc\r\n mappedOrders.sort((a: any, b: any) => {\r\n const aObj = a as Record<string, any>\r\n const bObj = b as Record<string, any>\r\n const timeA = new Date(aObj['create_time'] as string).getTime()\r\n const timeB = new Date(bObj['create_time'] as string).getTime()\r\n return timeB - timeA\r\n })\r\n\r\n // 将 mappedOrders 转换为 OrderItem[] 类型\r\n const typedOrders: OrderItem[] = []\r\n for (let i = 0; i < mappedOrders.length; i++) {\r\n const mo = mappedOrders[i] as Record<string, any>\r\n typedOrders.push({\r\n id: mo['id'] as string,\r\n order_no: mo['order_no'] as string,\r\n status: mo['status'] as number,\r\n create_time: mo['create_time'] as string,\r\n product_amount: mo['product_amount'] as number,\r\n shipping_fee: mo['shipping_fee'] as number,\r\n total_amount: mo['total_amount'] as number,\r\n products: mo['products'] as OrderProduct[]\r\n })\r\n }\r\n allOrdersList.value = typedOrders\r\n \r\n // Update tab counts\r\n updateTabsCounts(mappedOrders)\r\n \r\n // Apply current tab filter\r\n filterOrdersByTab()\r\n \r\n } catch (err) {\r\n console.error('加载订单异常:', err)\r\n uni.showToast({ title: '加载订单失败', icon: 'none' })\r\n } finally {\r\n loading.value = false\r\n }\r\n}\r\n\r\n// 生命周期\r\nonLoad((options) => {\r\n if (options['status'] != null) {\r\n const status = options['status'] as string\r\n if (['all', 'pending', 'shipping', 'delivering', 'completed', 'cancelled'].includes(status)) {\r\n activeTab.value = status\r\n }\r\n }\r\n if (options['type'] != null) {\r\n const type = options['type'] as string\r\n if (type === 'pending') activeTab.value = 'pending'\r\n else if (type === 'shipped') activeTab.value = 'delivering' // 映射到待收货\r\n else if (type === 'review') activeTab.value = 'completed' // 映射到已完成\r\n else if (type === 'refund') activeTab.value = 'all' // 申请售后默认显示全部\r\n }\r\n})\r\n\r\nonShow(() => {\r\n loadOrders()\r\n})\r\n\r\nconst formatDate = (isoString: string): string => {\r\n if (isoString == '') return ''\r\n const date = new Date(isoString)\r\n return `${date.getFullYear()}-${(date.getMonth()+1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')} ${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`\r\n}\r\n\r\n// 辅助函数:获取当前订单数据(必须在 performSearch 之前定义)\r\nfunction getCurrentOrderData(): OrderItem[] {\r\n return allOrdersList.value\r\n}\r\n\r\n// 搜索执行函数(必须在 onSearchInput 等之前定义)\r\nconst performSearch = () => {\r\n const keyword = searchKeyword.value.trim().toLowerCase()\r\n if (keyword == '') {\r\n loadOrders()\r\n return\r\n }\r\n \r\n // 在当前订单数据中搜索\r\n const allOrders = getCurrentOrderData()\r\n const filtered = allOrders.filter((order: any) => {\r\n const orderObj = order as Record<string, any>\r\n // 搜索订单号\r\n const orderNo = orderObj['order_no'] as string\r\n if (orderNo != null && orderNo.toLowerCase().includes(keyword)) {\r\n return true\r\n }\r\n \r\n // 搜索商品名称\r\n const products = orderObj['products']\r\n if (products != null && Array.isArray(products)) {\r\n return products.some((product: any) => {\r\n const productObj = product as Record<string, any>\r\n const name = productObj['name'] as string\r\n return name != null && name.toLowerCase().includes(keyword)\r\n })\r\n }\r\n \r\n return false\r\n })\r\n \r\n orders.value = filtered\r\n}\r\n\r\n// 搜索相关函数\r\nconst onSearchInput = (e: any) => {\r\n const eObj = e as Record<string, any>\r\n const detail = eObj['detail'] as Record<string, any>\r\n searchKeyword.value = detail['value'] as string\r\n performSearch()\r\n}\r\n\r\nconst onSearchConfirm = () => {\r\n performSearch()\r\n}\r\n\r\nconst clearSearch = () => {\r\n searchKeyword.value = ''\r\n performSearch()\r\n}\r\n\r\nconst formatSpec = (specs: any): string => {\r\n if (specs == null) return ''\r\n if (typeof specs === 'string') return specs\r\n if (typeof specs === 'object') {\r\n return JSON.stringify(specs)\r\n }\r\n return ''\r\n}\r\n\r\n// 切换标签\r\nconst switchTab = (tabId: string) => {\r\n activeTab.value = tabId\r\n filterOrdersByTab()\r\n}\r\n\r\n// 获取状态文本\r\nconst getStatusText = (status: number): string => {\r\n if (status == 1) return '待付款'\r\n if (status == 2) return '待发货'\r\n if (status == 3) return '待收货'\r\n if (status == 4) return '已完成'\r\n if (status == 5) return '已取消'\r\n return '未知状态'\r\n}\r\n\r\n// 获取状态类名\r\nconst getStatusClass = (status: number): string => {\r\n if (status == 1) return 'status-pending'\r\n if (status == 2) return 'status-shipping'\r\n if (status == 3) return 'status-delivering'\r\n if (status == 4) return 'status-completed'\r\n if (status == 5) return 'status-cancelled'\r\n return 'status-unknown'\r\n}\r\n\r\n// 下拉刷新\r\nconst onRefresh = () => {\r\n refreshing.value = true\r\n setTimeout(() => {\r\n loadOrders()\r\n refreshing.value = false\r\n uni.showToast({\r\n title: '刷新成功',\r\n icon: 'success'\r\n })\r\n }, 1000)\r\n}\r\n\r\n// 上拉加载更多\r\nconst loadMore = () => {\r\n if (loadingMore.value || !hasMore.value) return\r\n \r\n // 暂未实现分页,直接返回\r\n hasMore.value = false\r\n}\r\n\r\n// 订单操作函数\r\nconst cancelOrder = (orderId: string) => {\r\n uni.showModal({\r\n title: '确认取消',\r\n content: '确定要取消此订单吗?',\r\n success: (res) => {\r\n if (res.confirm) {\r\n // 这里应该是实际的API调用\r\n uni.showToast({\r\n title: '订单已取消',\r\n icon: 'success'\r\n })\r\n \r\n // 更新订单状态\r\n const index = orders.value.findIndex((o: any) => {\r\n const obj = o as Record<string, any>\r\n return obj['id'] === orderId\r\n })\r\n if (index !== -1) {\r\n const orderObj = orders.value[index] as Record<string, any>\r\n orderObj['status'] = 5\r\n orders.value = [...orders.value]\r\n }\r\n }\r\n }\r\n })\r\n}\r\n\r\nconst payOrder = (orderId: string) => {\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/payment?orderId=${orderId}`\r\n })\r\n}\r\n\r\nconst remindShipping = (orderId: string) => {\r\n uni.showToast({\r\n title: '已提醒卖家发货',\r\n icon: 'success'\r\n })\r\n}\r\n\r\nconst viewLogistics = (orderId: string) => {\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/logistics?orderId=${orderId}`\r\n })\r\n}\r\n\r\n// goReview 必须在 doConfirmReceipt 之前定义,因为 doConfirmReceipt 会调用它\r\nconst goReview = (order: any) => {\r\n const orderObj = order as Record<string, any>\r\n const products = orderObj['products'] as any[]\r\n const productIds = products.map((p: any) => {\r\n const pObj = p as Record<string, any>\r\n const pid = pObj['id']\r\n return pid != null ? pid as string : ''\r\n }).join(',')\r\n const orderId = orderObj['id'] as string\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/review?orderId=${orderId}&productIds=${productIds}`\r\n })\r\n}\r\n\r\nconst doConfirmReceipt = async (orderId: string) => {\r\n uni.showLoading({ title: '处理中...' })\r\n try {\r\n const result = await supabaseService.confirmReceipt(orderId)\r\n uni.hideLoading()\r\n \r\n if (result.success) {\r\n uni.showToast({\r\n title: '收货成功',\r\n icon: 'success'\r\n })\r\n \r\n // 更新本地状态\r\n const index = orders.value.findIndex((o: any) => {\r\n const obj = o as Record<string, any>\r\n return obj['id'] === orderId\r\n })\r\n if (index !== -1) {\r\n const orderObj = orders.value[index] as Record<string, any>\r\n orderObj['status'] = 4\r\n orders.value = [...orders.value]\r\n }\r\n\r\n // 跳转到评价页面\r\n setTimeout(() => {\r\n const order = orders.value.find((o: any) => {\r\n const obj = o as Record<string, any>\r\n return obj['id'] === orderId\r\n })\r\n if (order != null) {\r\n goReview(order)\r\n }\r\n }, 1000)\r\n } else {\r\n uni.showToast({\r\n title: result.error ?? '确认收货失败',\r\n icon: 'none'\r\n })\r\n }\r\n } catch (e) {\r\n uni.hideLoading()\r\n uni.showToast({\r\n title: '系统异常',\r\n icon: 'none'\r\n })\r\n }\r\n}\r\n\r\nconst confirmReceipt = (orderId: string) => {\r\n uni.showModal({\r\n title: '确认收货',\r\n content: '请确认您已收到商品,且商品无误',\r\n success: (res) => {\r\n if (res.confirm) {\r\n doConfirmReceipt(orderId)\r\n }\r\n }\r\n })\r\n}\r\n\r\nconst repurchase = (order: any) => {\r\n uni.showModal({\r\n title: '再次购买',\r\n content: '确定要将这些商品加入购物车吗?',\r\n success: (res) => {\r\n if (res.confirm) {\r\n // 这里应该是实际的API调用\r\n uni.showToast({\r\n title: '已加入购物车',\r\n icon: 'success'\r\n })\r\n }\r\n }\r\n })\r\n}\r\n\r\nconst viewOrderDetail = (orderId: string) => {\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/order-detail?id=${orderId}`\r\n })\r\n}\r\n\r\nconst onApplyRefund = (order: any) => {\r\n const orderObj = order as Record<string, any>\r\n const orderId = orderObj['id']\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/apply-refund?orderId=${orderId}`\r\n })\r\n}\r\n\r\n// 导航函数\r\nconst navigateToSearch = () => {\r\n uni.navigateTo({ url: '/pages/mall/consumer/search' })\r\n}\r\n\r\nconst navigateToProduct = (product: any) => {\r\n const productObj = product as Record<string, any>\r\n const productId = productObj['id']\r\n uni.navigateTo({ url: `/pages/mall/consumer/product-detail?id=${productId}` })\r\n}\r\n\r\nconst goShopping = () => {\r\n uni.switchTab({ url: '/pages/mall/consumer/index' })\r\n}\r\n</script>\r\n\r\n<style>\r\n.orders-page {\r\n width: 100%;\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n background-color: #f5f5f5;\r\n}\r\n\r\n/* 头部 */\r\n.orders-header {\r\n background-color: white;\r\n padding: 15px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-bottom: 1px solid #eee;\r\n /* position: sticky; removed */\r\n /* top: 0; removed */\r\n z-index: 10;\r\n}\r\n\r\n.header-search.full-width {\r\n display: flex;\r\n align-items: center;\r\n position: relative;\r\n width: 100%;\r\n}\r\n\r\n.search-input {\r\n flex: 1;\r\n height: 36px;\r\n border: 1px solid #ddd;\r\n border-radius: 18px;\r\n padding: 0 40px 0 16px;\r\n font-size: 14px;\r\n background-color: #f5f5f5;\r\n color: #333;\r\n width: 100%;\r\n}\r\n\r\n.search-input::placeholder {\r\n color: #999;\r\n font-size: 12px;\r\n}\r\n.search-input:focus {\r\n border-color: #ff5000;\r\n background-color: white;\r\n}\r\n\r\n.search-icon {\r\n position: absolute;\r\n right: 12px;\r\n font-size: 18px;\r\n color: #999;\r\n}\r\n\r\n.search-clear {\r\n position: absolute;\r\n right: 12px;\r\n font-size: 20px;\r\n color: #999;\r\n width: 20px;\r\n height: 20px;\r\n line-height: 18px;\r\n text-align: center;\r\n border-radius: 10px; /* fixed 50% */\r\n background-color: #ddd;\r\n /* cursor: pointer; removed */\r\n}\r\n\r\n/* 标签页 */\r\n.order-tabs {\r\n background-color: #ffffff;\r\n border-bottom: 1px solid #e5e5e5;\r\n /* position: sticky; removed */\r\n /* top: 50px; removed */\r\n z-index: 10;\r\n}\r\n\r\n.tab-scroll {\r\n width: 100%;\r\n white-space: nowrap;\r\n}\r\n\r\n.tab-container {\r\n display: flex;\r\n flex-direction: row;\r\n padding: 0 10px;\r\n /* width: max-content; removed */\r\n /* min-width: 100%; removed */\r\n}\r\n\r\n.tab-item {\r\n /* 移除 flex: 1,改为自适应宽度或固定最小宽度 */\r\n padding: 15px 15px; /* 增加水平内边距 */\r\n text-align: center;\r\n position: relative;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n white-space: nowrap; /* 防止文字换行 */\r\n flex-shrink: 0; /* 防止被压缩 */\r\n}\r\n\r\n.tab-item.active {\r\n color: #ff5000;\r\n font-weight: bold;\r\n}\r\n\r\n.tab-item.active::after {\r\n /* content: ''; removed */\r\n/* content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n height: 2px;\r\n background-color: #ff5000; */\r\n}\r\n\r\n.active-indicator {\r\n position: absolute;\r\n bottom: 0;\r\n left: 0;\r\n right: 0;\r\n height: 2px;\r\n background-color: #ff5000;\r\n}\r\n\r\n.tab-name {\r\n font-size: 14px;\r\n}\r\n\r\n.tab-count {\r\n margin-left: 4px;\r\n background-color: #ff5000;\r\n color: white;\r\n font-size: 10px;\r\n padding: 1px 4px;\r\n border-radius: 8px;\r\n min-width: 12px;\r\n text-align: center;\r\n}\r\n\r\n/* 内容区 */\r\n.orders-content {\r\n flex: 1;\r\n}\r\n\r\n/* 空状态 */\r\n.empty-orders {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 80px 20px;\r\n text-align: center;\r\n}\r\n\r\n.empty-icon {\r\n font-size: 80px;\r\n color: #ddd;\r\n margin-bottom: 20px;\r\n}\r\n\r\n.empty-title {\r\n font-size: 18px;\r\n color: #666;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.empty-desc {\r\n font-size: 14px;\r\n color: #999;\r\n margin-bottom: 30px;\r\n}\r\n\r\n.go-shopping-btn {\r\n background-color: #ff5000;\r\n color: white;\r\n border: none;\r\n border-radius: 25px;\r\n padding: 10px 40px;\r\n font-size: 16px;\r\n}\r\n\r\n/* 订单列表 */\r\n.order-list {\r\n padding: 10px;\r\n}\r\n\r\n.order-card {\r\n background-color: white;\r\n border-radius: 10px;\r\n margin-bottom: 10px;\r\n overflow: hidden;\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\r\n}\r\n\r\n/* 订单头部 */\r\n.order-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 15px;\r\n border-bottom: 1px solid #f5f5f5;\r\n}\r\n\r\n.order-no {\r\n font-size: 14px;\r\n color: #666;\r\n}\r\n\r\n.order-status {\r\n font-size: 14px;\r\n font-weight: bold;\r\n}\r\n\r\n.status-pending {\r\n color: #ff5000;\r\n}\r\n\r\n.status-shipping {\r\n color: #ff9500;\r\n}\r\n\r\n.status-delivering {\r\n color: #007aff;\r\n}\r\n\r\n.status-completed {\r\n color: #34c759;\r\n}\r\n\r\n.status-cancelled {\r\n color: #999;\r\n}\r\n\r\n/* 订单商品 */\r\n.order-products {\r\n padding: 15px;\r\n}\r\n\r\n.order-product {\r\n display: flex;\r\n margin-bottom: 15px;\r\n}\r\n\r\n.order-product:last-child {\r\n margin-bottom: 0;\r\n}\r\n\r\n.product-image {\r\n width: 80px;\r\n height: 80px;\r\n border-radius: 8px;\r\n margin-right: 15px;\r\n}\r\n\r\n.product-info {\r\n flex: 1;\r\n}\r\n\r\n.product-name {\r\n font-size: 15px;\r\n color: #333;\r\n margin-bottom: 5px;\r\n line-height: 1.4;\r\n}\r\n\r\n.product-spec {\r\n font-size: 13px;\r\n color: #999;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.product-footer {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n}\r\n\r\n.product-price {\r\n font-size: 16px;\r\n color: #ff5000;\r\n font-weight: bold;\r\n}\r\n\r\n.product-quantity {\r\n font-size: 14px;\r\n color: #666;\r\n}\r\n\r\n/* 订单信息 */\r\n.order-info {\r\n padding: 15px;\r\n border-top: 1px solid #f5f5f5;\r\n border-bottom: 1px solid #f5f5f5;\r\n}\r\n\r\n.info-row {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-bottom: 8px;\r\n}\r\n\r\n.info-row:last-child {\r\n margin-bottom: 0;\r\n}\r\n\r\n.info-row.total {\r\n margin-top: 8px;\r\n padding-top: 8px;\r\n border-top: 1px solid #f5f5f5;\r\n}\r\n\r\n.info-label {\r\n font-size: 14px;\r\n color: #666;\r\n}\r\n\r\n.info-value {\r\n font-size: 14px;\r\n color: #333;\r\n}\r\n\r\n.total-price {\r\n font-size: 18px;\r\n color: #ff5000;\r\n font-weight: bold;\r\n}\r\n\r\n/* 订单操作 */\r\n.order-actions {\r\n padding: 15px;\r\n}\r\n\r\n.action-buttons {\r\n display: flex;\r\n justify-content: flex-end;\r\n /* gap: 10px; removed */\r\n}\r\n\r\n.action-btn {\r\n padding: 6px 15px;\r\n border-radius: 15px;\r\n font-size: 13px;\r\n border: 1px solid;\r\n background-color: transparent; /* fixed background: none */\r\n margin-left: 10px; /* alternative to gap */\r\n}\r\n\r\n.action-btn.cancel {\r\n color: #666;\r\n border-color: #ccc;\r\n}\r\n\r\n.action-btn.pay {\r\n color: #ff5000;\r\n border-color: #ff5000;\r\n}\r\n\r\n.action-btn.remind {\r\n color: #666;\r\n border-color: #ccc;\r\n}\r\n\r\n.action-btn.view {\r\n color: #666;\r\n border-color: #ccc;\r\n}\r\n\r\n.action-btn.confirm {\r\n color: #34c759;\r\n border-color: #34c759;\r\n}\r\n\r\n.action-btn.review {\r\n color: #ff9500;\r\n border-color: #ff9500;\r\n}\r\n\r\n.action-btn.repurchase {\r\n color: #ff5000;\r\n border-color: #ff5000;\r\n}\r\n\r\n/* 加载更多 */\r\n.loading-more {\r\n padding: 20px;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n\r\n.loading-spinner {\r\n width: 24px;\r\n height: 24px;\r\n border: 2px solid #f0f5ff;\r\n border-top-color: #ff5000;\r\n border-radius: 12px;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.no-more {\r\n text-align: center;\r\n color: #999;\r\n font-size: 13px;\r\n padding: 20px 0;\r\n}\r\n\r\n/* 安全区域 */\r\n.safe-area {\r\n height: 20px;\r\n}\r\n\r\n/* 底部导航占位 */\r\n.tabbar-placeholder {\r\n height: 50px;\r\n background-color: #f5f5f5;\r\n}\r\n\r\n/* 响应式适配 */\r\n@media screen and (max-width: 320px) {\r\n .tab-item {\r\n padding: 0 10px;\r\n margin-right: 5px;\r\n }\r\n \r\n .action-btn {\r\n padding: 6px 10px;\r\n font-size: 12px;\r\n }\r\n}\r\n\r\n@media screen and (min-width: 415px) {\r\n .order-card {\r\n margin-bottom: 15px;\r\n }\r\n}\r\n</style>\r\n",null,null,null,null,null,null],"names":[],"mappings":"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"} |