Files
medical-mall/unpackage/cache/.app-android/sourcemap/pages/mall/consumer/order-detail.kt.map

1 line
61 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/mall/consumer/order-detail.uvue","pages/user/change-password.uvue","pages/user/login.uvue","pages/mall/consumer/settings.uvue","pages/main/index.uvue","pages/user/register.uvue","pages/mall/consumer/product-detail.uvue","pages/main/profile.uvue","pages/user/center.uvue","uni_modules/ak-req/ak-req.uts"],"sourcesContent":["<!-- 消费者端 - 订单详情页 -->\r\n<template>\r\n <view class=\"order-detail-page\">\r\n <scroll-view scroll-y=\"true\" class=\"scroll-content\">\r\n <!-- 订单状态 -->\r\n <view class=\"order-status\" :class=\"getStatusClass()\">\r\n <view class=\"status-content\">\r\n <view class=\"status-info\">\r\n <view class=\"status-title-row\">\r\n <text class=\"status-emoji\">{{ getStatusIcon() }}</text>\r\n <text class=\"status-text\">{{ getStatusText() }}</text>\r\n </view>\r\n <text class=\"status-desc\">{{ getStatusDesc() }}</text>\r\n </view>\r\n <!-- 分享免单入口 -->\r\n <view v-if=\"order?.order_status === 4\" class=\"share-free-entry\" @click=\"shareForFree\">\r\n <text class=\"share-free-icon\">🎁</text>\r\n <view class=\"share-free-info\">\r\n <text class=\"share-free-title\">分享免单</text>\r\n <text class=\"share-free-desc\">分享给好友4人购买即可免单</text>\r\n </view>\r\n <text class=\"share-free-arrow\"></text>\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <!-- 配送信息 -->\r\n <view v-if=\"order != null && (order?.order_status ?? 0) >= 2\" class=\"delivery-info card\">\r\n <view class=\"delivery-header\">\r\n <text class=\"section-title\">配送信息</text>\r\n </view>\r\n <view class=\"delivery-info-content\">\r\n <view class=\"delivery-address\">\r\n <view class=\"address-icon\">📍</view>\r\n <view class=\"address-content\">\r\n <view class=\"address-user\">\r\n <text class=\"recipient\">{{ deliveryAddress?.name ?? '' }}</text>\r\n <text class=\"phone\">{{ deliveryAddress?.phone ?? '' }}</text>\r\n </view>\r\n <text class=\"address-detail\">{{ getFullAddress(deliveryAddress as any) }}</text>\r\n </view>\r\n </view>\r\n <!-- 如果有物流信息显示 -->\r\n <view v-if=\"deliveryInfo != null && deliveryInfo?.tracking_no != ''\" class=\"courier-info\">\r\n <view class=\"courier-icon\">🚚</view>\r\n <view class=\"courier-content\">\r\n <text class=\"courier-label\">物流信息</text>\r\n <view class=\"tracking-row\">\r\n <text class=\"carrier-name\">{{ deliveryInfo?.carrier_name ?? '快递运单' }}</text>\r\n <text class=\"tracking-no\">{{ deliveryInfo?.tracking_no ?? '' }}</text>\r\n <view class=\"copy-tag\" @click=\"copyText(deliveryInfo?.tracking_no ?? '')\">\r\n <text class=\"copy-tag-text\">复制</text>\r\n </view>\r\n </view>\r\n </view>\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <!-- 商品信息 -->\r\n <view class=\"order-products card\">\r\n <view class=\"shop-header\" @click=\"goToShop\">\r\n <text class=\"shop-icon\">🏪</text>\r\n <text class=\"shop-name\">{{ shopName }}</text>\r\n <text class=\"arrow-right\"></text>\r\n </view>\r\n <view v-for=\"item in orderItems\" :key=\"item.id\" class=\"product-item\" @click=\"goToProduct(item.product_id)\">\r\n <image :src=\"item.image_url != null && item.image_url != '' ? item.image_url : '/static/default-product.png'\" class=\"product-image\" mode=\"aspectFill\"/>\r\n <view class=\"product-info\">\r\n <text class=\"product-name\">{{ item.product_name }}</text>\r\n <text v-if=\"item.specifications\" class=\"product-spec\">{{ getSpecText(item.specifications) }}</text>\r\n <view class=\"price-quantity\">\r\n <text class=\"product-price\">¥{{ item.price }}</text>\r\n <text class=\"product-quantity\">×{{ item.quantity }}</text>\r\n </view>\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <!-- 订单信息 -->\r\n <view class=\"order-info card\" v-if=\"order != null\">\r\n <view class=\"info-row\">\r\n <text class=\"info-label\">订单编号</text>\r\n <text class=\"info-value copyable\" @click=\"copyText(order?.order_no ?? '')\">{{ order?.order_no ?? '' }} <text class=\"copy-icon\">📄</text></text>\r\n </view>\r\n <view class=\"info-row\">\r\n <text class=\"info-label\">下单时间</text>\r\n <text class=\"info-value\">{{ formatTime(order?.created_at ?? '') }}</text>\r\n </view>\r\n <view class=\"info-row\" v-if=\"order?.payment_method != null && order?.payment_method != ''\">\r\n <text class=\"info-label\">支付方式</text>\r\n <text class=\"info-value\">{{ getPaymentMethodText(order?.payment_method as any) }}</text>\r\n </view>\r\n <view class=\"info-row\" v-if=\"order?.paid_at != null && order?.paid_at != ''\">\r\n <text class=\"info-label\">支付时间</text>\r\n <text class=\"info-value\">{{ formatTime(order?.paid_at ?? '') }}</text>\r\n </view>\r\n <view class=\"info-row\" v-if=\"order?.shipped_at != null && order?.shipped_at != ''\">\r\n <text class=\"info-label\">发货时间</text>\r\n <text class=\"info-value\">{{ formatTime(order?.shipped_at ?? '') }}</text>\r\n </view>\r\n <view class=\"info-row\" v-if=\"order?.completed_at != null && order?.completed_at != ''\">\r\n <text class=\"info-label\">完成时间</text>\r\n <text class=\"info-value\">{{ formatTime(order?.completed_at ?? '') }}</text>\r\n </view>\r\n </view>\r\n\r\n <!-- 费用明细 -->\r\n <view class=\"cost-detail card\" v-if=\"order != null\">\r\n <view class=\"cost-row\">\r\n <text class=\"cost-label\">商品总额</text>\r\n <text class=\"cost-value\">¥{{ order?.product_amount ?? 0 }}</text>\r\n </view>\r\n <view class=\"cost-row\">\r\n <text class=\"cost-label\">运费</text>\r\n <text class=\"cost-value\">+¥{{ order?.shipping_fee != null ? order?.shipping_fee : 0 }}</text>\r\n </view>\r\n <view class=\"cost-row\" v-if=\"(order?.discount_amount ?? 0) > 0\">\r\n <text class=\"cost-label\">优惠金额</text>\r\n <text class=\"cost-value\">-¥{{ order?.discount_amount ?? 0 }}</text>\r\n </view>\r\n <view class=\"cost-row total\">\r\n <text class=\"cost-label\">实付金额</text>\r\n <text class=\"cost-value price\">¥{{ order?.total_amount ?? 0 }}</text>\r\n </view>\r\n </view>\r\n </scroll-view>\r\n\r\n <view class=\"bottom-actions\" v-if=\"order != null\">\r\n <view class=\"action-bar-wrapper\">\r\n <view class=\"action-left\" @click=\"contactService\">\r\n <view class=\"service-item\">\r\n <text class=\"service-icon\">🎧</text>\r\n <text class=\"service-label\">客服</text>\r\n </view>\r\n </view>\r\n <view class=\"action-right\">\r\n <view v-if=\"order?.order_status === 1\" class=\"btn-group\">\r\n <button class=\"btn\" @click=\"cancelOrder\">取消订单</button>\r\n <button class=\"btn primary\" @click=\"payOrder\">立即支付</button>\r\n </view>\r\n \r\n <view v-if=\"order?.order_status === 2\" class=\"btn-group\">\r\n <button class=\"btn\" @click=\"applyRefund\">申请退款</button>\r\n <button class=\"btn primary\" @click=\"remindDelivery\">提醒发货</button>\r\n </view>\r\n \r\n <view v-if=\"order?.order_status === 3\" class=\"btn-group\">\r\n <button class=\"btn\" @click=\"viewLogistics\">查看物流</button>\r\n <button class=\"btn primary\" @click=\"confirmReceive\">确认收货</button>\r\n </view>\r\n \r\n <view v-if=\"order?.order_status === 4\" class=\"btn-group\">\r\n <button class=\"btn\" @click=\"applyAfterSales\">申请售后</button>\r\n <button class=\"btn share-free\" @click=\"shareForFree\">分享免单</button>\r\n <button class=\"btn\" @click=\"rePurchase\">再次购买</button>\r\n <button class=\"btn primary\" @click=\"goToReview\">评价订单</button>\r\n </view>\r\n \r\n <view v-if=\"order?.order_status === 5\" class=\"btn-group\">\r\n <button class=\"btn primary\" @click=\"rePurchase\">重新购买</button>\r\n </view>\r\n </view>\r\n </view>\r\n </view>\r\n </view>\r\n</template>\r\n\r\n<script setup lang=\"uts\">\r\nimport { ref, onMounted, computed } from 'vue'\r\nimport { onLoad, onBackPress } from '@dcloudio/uni-app'\r\nimport { supabaseService } from '@/utils/supabaseService.uts'\r\nimport supa from '@/components/supadb/aksupainstance.uts'\r\n\r\n// 定义订单类型\r\ntype OrderType = {\r\n\torder_no: string,\r\n\torder_status: number,\r\n\ttotal_amount: number,\r\n\tproduct_amount: number,\r\n\tshipping_fee: number,\r\n\tdiscount_amount: number,\r\n\tpayment_method: string,\r\n\tcreated_at: string,\r\n\tpaid_at: string,\r\n\tshipped_at: string,\r\n\tcompleted_at: string,\r\n\tmerchant_id: string,\r\n\tshipping_address: any | null\r\n}\r\n\r\ntype OrderItemType = {\r\n\tid: string,\r\n\tproduct_id: string,\r\n\tproduct_name: string,\r\n\timage_url: string,\r\n\tprice: number,\r\n\tquantity: number,\r\n\tspecifications: any\r\n}\r\n\r\ntype AddressType = {\r\n\tname: string,\r\n\tphone: string,\r\n\tprovince: string,\r\n\tcity: string,\r\n\tdistrict: string,\r\n\tdetail: string,\r\n\taddress: string\r\n}\r\n\r\ntype DeliveryInfoType = {\r\n\ttracking_no: string,\r\n\tcarrier_name: string\r\n}\r\n\r\nconst orderId = ref('')\r\nconst order = ref<OrderType | null>(null)\r\nconst orderItems = ref<OrderItemType[]>([])\r\nconst shopName = ref('店铺名称')\r\nconst deliveryAddress = ref<AddressType | null>(null)\r\nconst deliveryInfo = ref<DeliveryInfoType | null>(null)\r\n\r\n// 辅助函数 - 必须在调用前定义\r\nconst getStatusText = (): string => {\r\n const status = order.value?.order_status ?? 0\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 if (status == 6) return '退款中'\r\n if (status == 7) return '已退款'\r\n return '未知状态'\r\n}\r\n\r\nconst getStatusDesc = (): string => {\r\n const status = order.value?.order_status ?? 0\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 if (status == 6) return '售后处理中'\r\n if (status == 7) return '钱款已退回'\r\n return ''\r\n}\r\n\r\nconst getStatusIcon = (): string => {\r\n const status = order.value?.order_status ?? 0\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 return '📝'\r\n}\r\n\r\nconst getStatusClass = (): string => {\r\n const status = order.value?.order_status ?? 0\r\n return `status-${status}`\r\n}\r\n\r\nconst getFullAddress = (addr: any): string => {\r\n if (addr == null) return ''\r\n if (typeof addr === 'string') return addr\r\n \r\n try {\r\n const addrObj = JSON.parse(JSON.stringify(addr)) as UTSJSONObject\r\n const addressField = addrObj.getString('address')\r\n if (addressField != null && addressField != '') return addressField\r\n \r\n const province = addrObj.getString('province') ?? ''\r\n const city = addrObj.getString('city') ?? ''\r\n const district = addrObj.getString('district') ?? ''\r\n const detail = addrObj.getString('detail') ?? addrObj.getString('address_detail') ?? ''\r\n return province + city + district + detail\r\n } catch (e) {\r\n console.error('[getFullAddress] 解析地址失败:', e)\r\n return ''\r\n }\r\n}\r\n\r\nfunction formatSpecs(specs: any): string {\r\n if (specs == null) return ''\r\n if (typeof specs === 'string') {\r\n if (specs == '') return ''\r\n try {\r\n const parsed = JSON.parse(specs as string)\r\n if (parsed != null) {\r\n return formatSpecs(parsed)\r\n }\r\n return specs as string\r\n } catch (e) {\r\n return specs as string\r\n }\r\n }\r\n \r\n try {\r\n const specStr = JSON.stringify(specs)\r\n const specObj = JSON.parse(specStr) as UTSJSONObject\r\n \r\n // 定义常见的键名\r\n const keys = ['Color', 'Size', '颜色', '尺寸', '规格', '默认', 'spec', 'color', 'size']\r\n const parts : string[] = []\r\n \r\n // 尝试提取键值\r\n for (let i = 0; i < keys.length; i++) {\r\n const key = keys[i]\r\n const val = specObj.get(key)\r\n if (val != null && val != '') {\r\n parts.push(val.toString())\r\n }\r\n }\r\n \r\n // 如果提取到了内容\r\n if (parts.length > 0) {\r\n return parts.join(' | ')\r\n }\r\n \r\n // 如果没有提取到已知键,则进行通用清理\r\n return specStr.replace(/[{}\"]/g, '').replace(/:/g, ': ').replace(/,/g, ' | ')\r\n } catch (e) {\r\n return ''\r\n }\r\n}\r\n\r\nconst getSpecText = (specs: any): string => {\r\n return formatSpecs(specs)\r\n}\r\n\r\nconst formatTime = (iso: string): string => {\r\n if (iso == '') return ''\r\n const d = new Date(iso)\r\n return `${d.getFullYear()}-${d.getMonth()+1}-${d.getDate()} ${d.getHours()}:${d.getMinutes()}`\r\n}\r\n\r\nconst getPaymentMethodText = (method: any): string => {\r\n return '在线支付'\r\n}\r\n\r\nconst copyText = (text: string) => {\r\n if(text == '') return\r\n uni.setClipboardData({\r\n data: text,\r\n success: () => uni.showToast({ title: '已复制' })\r\n })\r\n}\r\n\r\nconst loadShopInfo = async (merchantId: string) => {\r\n try {\r\n const result = await supa\r\n .from('ml_shops')\r\n .select('shop_name')\r\n .eq('merchant_id', merchantId)\r\n .limit(1)\r\n .execute()\r\n \r\n if (result.error != null) {\r\n console.error('[loadShopInfo] 获取店铺信息失败:', result.error)\r\n return\r\n }\r\n \r\n const rawData = result.data\r\n if (rawData == null) return\r\n \r\n const rawList = rawData as any[]\r\n if (rawList.length == 0) return\r\n \r\n const shopData = rawList[0]\r\n const shopObj = JSON.parse(JSON.stringify(shopData)) as UTSJSONObject\r\n shopName.value = (shopObj.getString('shop_name') ?? '店铺') as string\r\n } catch (e) {\r\n console.error('[loadShopInfo] 获取店铺信息异常:', e)\r\n }\r\n}\r\n\r\nconst loadOrderDetail = async () => {\r\n uni.showLoading({ title: '加载中' })\r\n try {\r\n const data = await supabaseService.getOrderDetail(orderId.value)\r\n console.log('[loadOrderDetail] 获取到的数据:', JSON.stringify(data))\r\n \r\n if (data != null) {\r\n const dataObj = data as UTSJSONObject\r\n \r\n order.value = {\r\n order_no: (dataObj.get('order_no') ?? '') as string,\r\n order_status: (dataObj.get('order_status') ?? 1) as number,\r\n total_amount: (dataObj.get('total_amount') ?? 0) as number,\r\n product_amount: (dataObj.get('product_amount') ?? 0) as number,\r\n shipping_fee: (dataObj.get('shipping_fee') ?? 0) as number,\r\n discount_amount: (dataObj.get('discount_amount') ?? 0) as number,\r\n payment_method: (dataObj.get('payment_method') ?? '') as string,\r\n created_at: (dataObj.get('created_at') ?? '') as string,\r\n paid_at: (dataObj.get('paid_at') ?? '') as string,\r\n shipped_at: (dataObj.get('shipped_at') ?? '') as string,\r\n completed_at: (dataObj.get('completed_at') ?? '') as string,\r\n merchant_id: (dataObj.get('merchant_id') ?? '') as string,\r\n shipping_address: (dataObj.get('shipping_address') ?? null) as any\r\n } as OrderType\r\n \r\n const itemsRaw = dataObj.get('ml_order_items')\r\n console.log('[loadOrderDetail] 订单商品数据:', itemsRaw)\r\n \r\n if (itemsRaw != null && Array.isArray(itemsRaw)) {\r\n const items = itemsRaw as any[]\r\n orderItems.value = []\r\n for (let i = 0; i < items.length; i++) {\r\n const item = items[i]\r\n const itemObj = JSON.parse(JSON.stringify(item)) as UTSJSONObject\r\n \r\n const orderItem: OrderItemType = {\r\n id: (itemObj.get('id') ?? '') as string,\r\n product_id: (itemObj.get('product_id') ?? '') as string,\r\n product_name: (itemObj.get('product_name') ?? '未知商品') as string,\r\n price: (itemObj.get('price') ?? 0) as number,\r\n quantity: (itemObj.get('quantity') ?? 1) as number,\r\n image_url: (itemObj.get('image_url') ?? '') as string,\r\n specifications: (itemObj.get('specifications') ?? '') as any\r\n }\r\n orderItems.value.push(orderItem)\r\n }\r\n }\r\n \r\n const addressRaw = dataObj.get('shipping_address')\r\n console.log('[loadOrderDetail] 收货地址数据:', addressRaw)\r\n \r\n if (addressRaw != null) {\r\n let addressObj: UTSJSONObject\r\n if (addressRaw instanceof UTSJSONObject) {\r\n addressObj = addressRaw as UTSJSONObject\r\n } else if (typeof addressRaw === 'string') {\r\n addressObj = JSON.parse(addressRaw as string) as UTSJSONObject\r\n } else {\r\n addressObj = JSON.parse(JSON.stringify(addressRaw)) as UTSJSONObject\r\n }\r\n \r\n const province = (addressObj.get('province') ?? '') as string\r\n const city = (addressObj.get('city') ?? '') as string\r\n const district = (addressObj.get('district') ?? '') as string\r\n const detail = (addressObj.get('detail') ?? (addressObj.get('address_detail') ?? '')) as string\r\n \r\n deliveryAddress.value = {\r\n name: (addressObj.get('name') ?? (addressObj.get('recipient_name') ?? (addressObj.get('receiver_name') ?? ''))) as string,\r\n phone: (addressObj.get('phone') ?? (addressObj.get('recipient_phone') ?? (addressObj.get('receiver_phone') ?? ''))) as string,\r\n province: province,\r\n city: city,\r\n district: district,\r\n detail: detail,\r\n address: province + city + district + detail\r\n } as AddressType\r\n }\r\n \r\n const merchantId = (dataObj.get('merchant_id') ?? '') as string\r\n if (merchantId != '') {\r\n loadShopInfo(merchantId)\r\n }\r\n \r\n // 加载物流信息\r\n const trackingNoVal = dataObj.getString('tracking_no')\r\n const carrierNameVal = dataObj.getString('carrier_name')\r\n if (trackingNoVal != null && trackingNoVal != '') {\r\n deliveryInfo.value = {\r\n tracking_no: trackingNoVal,\r\n carrier_name: carrierNameVal ?? ''\r\n } as DeliveryInfoType\r\n }\r\n \r\n console.log('[loadOrderDetail] 订单详情加载成功,商品数量:', orderItems.value.length)\r\n } else {\r\n uni.showToast({ title: '订单不存在', icon: 'none' })\r\n }\r\n } catch (e) {\r\n console.error('[loadOrderDetail] 加载订单详情失败:', e)\r\n uni.showToast({ title: '加载失败', icon: 'none' })\r\n } finally {\r\n uni.hideLoading()\r\n }\r\n}\r\n\r\n// 动作函数\r\nconst contactService = () => {\r\n if (order.value != null && order.value?.merchant_id != '') {\r\n // 跳转到商家的聊天窗口\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/chat?merchantId=${order.value?.merchant_id}&merchantName=${encodeURIComponent(shopName.value)}`\r\n })\r\n } else {\r\n uni.showActionSheet({\r\n itemList: ['在线客服', '拨打电话'],\r\n success: (res) => {\r\n if (res.tapIndex === 1) {\r\n // 模拟拨打电话\r\n uni.makePhoneCall({ phoneNumber: '400-123-4567' })\r\n } else {\r\n uni.showToast({ title: '连接到了系统客服' })\r\n }\r\n }\r\n })\r\n }\r\n}\r\n\r\nconst payOrder = () => {\r\n const totalAmount = order.value?.total_amount ?? 0\r\n uni.navigateTo({\r\n url: `/pages/mall/consumer/payment?orderId=${orderId.value}&amount=${totalAmount}`\r\n })\r\n}\r\n\r\nconst doCancelOrder = async () => {\r\n try {\r\n const updatePayload = new UTSJSONObject()\r\n updatePayload.set('order_status', 5)\r\n updatePayload.set('updated_at', new Date().toISOString())\r\n \r\n const result = await supa\r\n .from('ml_orders')\r\n .update(updatePayload)\r\n .eq('id', orderId.value)\r\n .execute()\r\n \r\n if (result.error == null) {\r\n if (order.value != null) {\r\n order.value.order_status = 5\r\n }\r\n uni.showToast({ title: '订单已取消' })\r\n } else {\r\n console.error('[doCancelOrder] 取消订单失败:', result.error)\r\n uni.showToast({ title: '取消失败', icon: 'none' })\r\n }\r\n } catch (e) {\r\n console.error('[doCancelOrder] 取消订单异常:', e)\r\n uni.showToast({ title: '取消失败', icon: 'none' })\r\n }\r\n}\r\n\r\nconst cancelOrder = () => {\r\n uni.showModal({\r\n title: '提示',\r\n content: '确定要取消订单吗?',\r\n success: (res) => {\r\n if (res.confirm) {\r\n doCancelOrder()\r\n }\r\n }\r\n })\r\n}\r\n\r\nconst remindDelivery = async () => {\r\n const merchantId = order.value?.merchant_id\r\n if (merchantId == null || merchantId == '') {\r\n uni.showToast({ title: '商家信息不存在', icon: 'none' })\r\n return\r\n }\r\n \r\n const orderNo = order.value?.order_no ?? ''\r\n const message = `您好,订单 ${orderNo} 已付款,请尽快安排发货,谢谢!`\r\n \r\n uni.showLoading({ title: '发送中...' })\r\n const success = await supabaseService.sendChatMessage(message, merchantId, 'text')\r\n uni.hideLoading()\r\n \r\n if (success) {\r\n uni.showToast({ title: '已提醒商家尽快发货' })\r\n } else {\r\n uni.showToast({ title: '发送失败,请稍后重试', icon: 'none' })\r\n }\r\n}\r\n\r\nconst viewLogistics = () => {\r\n uni.navigateTo({ url: `/pages/mall/consumer/logistics?orderId=${orderId.value}` })\r\n}\r\n\r\nconst goToReview = () => {\r\n uni.navigateTo({ url: `/pages/mall/consumer/review?orderId=${orderId.value}` })\r\n}\r\n\r\nconst doConfirmReceive = async () => {\r\n try {\r\n const result = await supabaseService.confirmReceipt(orderId.value)\r\n if (result.success) {\r\n if (order.value != null) {\r\n order.value.order_status = 4\r\n }\r\n uni.showToast({ title: '收货成功' })\r\n setTimeout(() => goToReview(), 1500)\r\n } else {\r\n uni.showToast({ title: result.error ?? '失败', icon: 'none' })\r\n }\r\n } catch (e) {\r\n console.error('[doConfirmReceive] 确认收货异常:', e)\r\n uni.showToast({ title: '操作失败', icon: 'none' })\r\n }\r\n}\r\n\r\nconst confirmReceive = () => {\r\n uni.showModal({\r\n title: '确认收货',\r\n content: '确保您已收到货物',\r\n success: (res) => {\r\n if (res.confirm) {\r\n doConfirmReceive()\r\n }\r\n }\r\n })\r\n}\r\n\r\nconst rePurchase = async () => {\r\n uni.showLoading({ title: '处理中' })\r\n try {\r\n const items = orderItems.value\r\n if (items.length == 0) {\r\n uni.hideLoading()\r\n uni.showToast({ title: '没有可购买的商品', icon: 'none' })\r\n return\r\n }\r\n \r\n let successCount = 0\r\n for (let i = 0; i < items.length; i++) {\r\n const item = items[i]\r\n const result = await supabaseService.addToCart(\r\n item.product_id,\r\n item.quantity,\r\n '',\r\n order.value?.merchant_id ?? ''\r\n )\r\n if (result) successCount++\r\n }\r\n \r\n uni.hideLoading()\r\n \r\n if (successCount > 0) {\r\n uni.showToast({ title: '已加入购物车' })\r\n setTimeout(() => {\r\n uni.switchTab({ url: '/pages/main/cart' })\r\n }, 1000)\r\n } else {\r\n uni.showToast({ title: '操作失败', icon: 'none' })\r\n }\r\n } catch (e) {\r\n uni.hideLoading()\r\n console.error('[rePurchase] 再次购买异常:', e)\r\n uni.showToast({ title: '操作失败', icon: 'none' })\r\n }\r\n}\r\n\r\nconst doApplyRefund = async (reason: string) => {\r\n try {\r\n const success = await supabaseService.applyRefund(orderId.value, reason)\r\n if (success) {\r\n if (order.value != null) {\r\n order.value.order_status = 6\r\n }\r\n uni.showToast({ title: '申请已提交' })\r\n } else {\r\n uni.showToast({ title: '提交失败', icon: 'none' })\r\n }\r\n } catch (e) {\r\n console.error('[doApplyRefund] 申请退款异常:', e)\r\n uni.showToast({ title: '提交失败', icon: 'none' })\r\n }\r\n}\r\n\r\nconst applyRefund = () => {\r\n uni.showModal({\r\n title: '申请退款',\r\n editable: true,\r\n placeholderText: '请输入退款原因',\r\n success: (res) => {\r\n if (res.confirm) {\r\n const reason = res.content ?? '用户主动申请'\r\n doApplyRefund(reason)\r\n }\r\n }\r\n })\r\n}\r\n\r\nconst applyAfterSales = () => {\r\n // 售后逻辑类似退款,或者是跳转到专门的售后单页面\r\n applyRefund()\r\n}\r\n\r\nconst goToShop = () => {\r\n // 跳转到店铺详情\r\n const merchantId = order.value?.merchant_id ?? ''\r\n if (merchantId != '') {\r\n uni.navigateTo({ \r\n url: `/pages/mall/consumer/shop-detail?id=${merchantId}` \r\n })\r\n } else {\r\n uni.showToast({ title: '商家信息不存在', icon: 'none' })\r\n }\r\n}\r\n\r\nconst goToProduct = (pid: string) => {\r\n uni.navigateTo({ url: `/pages/mall/consumer/product-detail?id=${pid}` })\r\n}\r\n\r\nconst shareForFree = async () => {\r\n if (orderItems.value.length === 0) {\r\n uni.showToast({ title: '没有可分享的商品', icon: 'none' })\r\n return\r\n }\r\n \r\n const firstItem = orderItems.value[0]\r\n \r\n try {\r\n uni.showLoading({ title: '创建分享...' })\r\n const result = await supabaseService.createShareRecord(\r\n firstItem.product_id,\r\n orderId.value,\r\n firstItem.id,\r\n firstItem.product_name,\r\n firstItem.image_url,\r\n firstItem.price\r\n )\r\n uni.hideLoading()\r\n \r\n const shareIdRaw = result.get('id')\r\n const shareCodeRaw = result.get('share_code')\r\n \r\n if (shareIdRaw != null && shareCodeRaw != null) {\r\n const shareId = shareIdRaw as string\r\n const shareCode = shareCodeRaw as string\r\n \r\n uni.showModal({\r\n title: '分享成功',\r\n content: `您的分享码: ${shareCode}\\n分享给好友当有4人购买后即可免单`,\r\n confirmText: '查看详情',\r\n success: (res) => {\r\n if (res.confirm) {\r\n uni.navigateTo({ url: `/pages/mall/consumer/share/detail?id=${shareId}` })\r\n }\r\n }\r\n })\r\n } else {\r\n uni.showToast({ title: '分享创建失败', icon: 'none' })\r\n }\r\n } catch (e) {\r\n uni.hideLoading()\r\n console.error('[shareForFree] 创建分享失败:', e)\r\n uni.showToast({ title: '分享失败', icon: 'none' })\r\n }\r\n}\r\n\r\n// 使用 onBackPress 拦截物理返回键和系统导航栏返回\r\nonBackPress((_): boolean => {\r\n const pages = getCurrentPages()\r\n console.log('[order-detail onBackPress] pages count:', pages.length)\r\n \r\n if (pages.length > 1) {\r\n // 正常返回上一页\r\n return false\r\n }\r\n \r\n // 如果只有当前页面,跳转到 orders\r\n uni.redirectTo({ url: '/pages/mall/consumer/orders' })\r\n return true\r\n})\r\n\r\n// 生命周期 - 在所有函数定义之后\r\nonLoad((options) => {\r\n const id = options['id']\r\n const orderIdParam = options['orderId']\r\n if (id != null && id != '') {\r\n orderId.value = id as string\r\n loadOrderDetail()\r\n } else if (orderIdParam != null && orderIdParam != '') {\r\n orderId.value = orderIdParam as string\r\n loadOrderDetail()\r\n }\r\n})\r\n\r\n</script>\r\n\r\n<style scoped>\r\n.order-detail-page {\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1;\r\n background-color: #f5f5f5;\r\n}\r\n\r\n.scroll-content {\r\n flex: 1;\r\n padding-bottom: 20px;\r\n}\r\n\r\n.card {\r\n background-color: #ffffff;\r\n margin: 10px;\r\n padding: 15px;\r\n border-radius: 10px;\r\n}\r\n\r\n/* 状态栏 */\r\n.order-status {\r\n background: linear-gradient(135deg, #ff9000, #ff5000);\r\n padding: 30px 20px;\r\n color: white;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center; /* 手机端默认居中 */\r\n}\r\n\r\n.status-content {\r\n max-width: 1200px;\r\n margin: 0 auto;\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center; /* 确保内容居中 */\r\n text-align: center; /* 文字居中 */\r\n}\r\n\r\n.status-info {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n}\r\n\r\n.status-title-row {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n justify-content: center; /* 标题行居中 */\r\n margin-bottom: 8px;\r\n}\r\n\r\n.status-emoji {\r\n font-size: 28px;\r\n margin-right: 12px;\r\n}\r\n\r\n.status-text {\r\n font-size: 20px;\r\n font-weight: bold;\r\n letter-spacing: 1px;\r\n}\r\n\r\n.status-desc {\r\n font-size: 14px;\r\n opacity: 0.95;\r\n text-align: center;\r\n}\r\n\r\n/* 分享免单入口 */\r\n.share-free-entry {\r\n margin-top: 20px;\r\n background-color: rgba(255, 255, 255, 0.2);\r\n border-radius: 12px;\r\n padding: 14px 16px;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n width: 100%;\r\n max-width: 400px;\r\n}\r\n\r\n.share-free-icon {\r\n font-size: 28px;\r\n margin-right: 12px;\r\n}\r\n\r\n.share-free-info {\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: flex-start;\r\n}\r\n\r\n.share-free-title {\r\n font-size: 16px;\r\n font-weight: bold;\r\n color: white;\r\n margin-bottom: 4px;\r\n}\r\n\r\n.share-free-desc {\r\n font-size: 12px;\r\n color: rgba(255, 255, 255, 0.85);\r\n}\r\n\r\n.share-free-arrow {\r\n font-size: 20px;\r\n color: rgba(255, 255, 255, 0.8);\r\n}\r\n\r\n/* 配送信息 */\r\n.section-title {\r\n font-weight: bold;\r\n font-size: 16px;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.delivery-address {\r\n display: flex;\r\n align-items: flex-start;\r\n}\r\n\r\n.address-icon {\r\n font-size: 20px;\r\n margin-right: 10px;\r\n color: #666;\r\n}\r\n\r\n.address-user {\r\n margin-bottom: 5px;\r\n font-weight: bold;\r\n font-size: 14px;\r\n}\r\n\r\n.phone {\r\n margin-left: 10px;\r\n color: #666;\r\n font-weight: normal;\r\n}\r\n\r\n.address-detail {\r\n font-size: 13px;\r\n color: #333;\r\n line-height: 1.4;\r\n}\r\n\r\n.courier-info {\r\n margin-top: 15px;\r\n padding-top: 15px;\r\n border-top: 1px solid #f5f5f5;\r\n display: flex;\r\n flex-direction: row;\r\n align-items: flex-start;\r\n}\r\n\r\n.courier-icon {\r\n font-size: 20px;\r\n margin-right: 10px;\r\n color: #666;\r\n}\r\n\r\n.courier-content {\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.courier-label {\r\n font-size: 14px;\r\n color: #333;\r\n font-weight: bold;\r\n margin-bottom: 5px;\r\n}\r\n\r\n.tracking-row {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n flex-wrap: wrap;\r\n}\r\n\r\n.carrier-name {\r\n font-size: 12px;\r\n color: #999;\r\n margin-right: 8px;\r\n}\r\n\r\n.tracking-no {\r\n font-size: 13px;\r\n color: #666;\r\n margin-right: 10px;\r\n font-family: monospace; /* 适合单号显示 */\r\n}\r\n\r\n.copy-tag {\r\n background-color: #fff2f0;\r\n border: 1px solid #ffccc7;\r\n border-radius: 4px;\r\n padding: 1px 8px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.copy-tag-text {\r\n color: #ff4d4f;\r\n font-size: 11px;\r\n}\r\n\r\n/* 店铺与商品 */\r\n.shop-header {\r\n display: flex;\r\n flex-direction: row; /* 显式声明横向 */\r\n align-items: center;\r\n margin-bottom: 15px;\r\n padding-bottom: 10px;\r\n border-bottom: 1px solid #f5f5f5;\r\n width: 100%; /* 占满容器 */\r\n}\r\n\r\n.shop-icon {\r\n margin-right: 8px;\r\n font-size: 16px;\r\n}\r\n\r\n.shop-name {\r\n font-size: 14px;\r\n font-weight: bold;\r\n flex: 1; /* 自适应占据空间 */\r\n color: #333;\r\n}\r\n\r\n.arrow-right {\r\n color: #999;\r\n font-size: 14px;\r\n margin-left: auto; /* 确保在最后端 */\r\n}\r\n\r\n.product-item {\r\n display: flex;\r\n flex-direction: row;\r\n margin-bottom: 15px;\r\n align-items: flex-start;\r\n}\r\n\r\n.product-item:last-child {\r\n margin-bottom: 0;\r\n}\r\n\r\n.product-image {\r\n width: 90px;\r\n height: 90px;\r\n border-radius: 8px;\r\n margin-right: 12px;\r\n background-color: #f9f9f9;\r\n flex-shrink: 0;\r\n}\r\n\r\n.product-info {\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: space-between;\r\n min-height: 90px;\r\n}\r\n\r\n.product-name {\r\n font-size: 14px;\r\n line-height: 1.4;\r\n color: #333;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n lines: 2;\r\n margin-bottom: 4px;\r\n}\r\n\r\n.product-spec {\r\n font-size: 12px;\r\n color: #999;\r\n background-color: #f5f5f5;\r\n padding: 2px 5px;\r\n border-radius: 4px;\r\n align-self: flex-start;\r\n margin-top: 5px;\r\n}\r\n\r\n.price-quantity {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: 5px;\r\n width: 100%;\r\n}\r\n\r\n.product-price {\r\n font-size: 16px;\r\n font-weight: bold;\r\n color: #333;\r\n}\r\n\r\n.product-quantity {\r\n color: #999;\r\n font-size: 12px;\r\n}\r\n\r\n/* 订单详情 */\r\n.info-row {\r\n display: flex;\r\n justify-content: space-between;\r\n margin-bottom: 10px;\r\n font-size: 13px;\r\n}\r\n\r\n.info-label {\r\n color: #999;\r\n}\r\n\r\n.info-value {\r\n color: #333;\r\n}\r\n\r\n.copy-icon {\r\n font-size: 12px;\r\n}\r\n\r\n/* 费用明细 */\r\n.cost-detail {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center; /* 居中显示 */\r\n padding: 20px 15px;\r\n}\r\n\r\n.cost-row {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n margin-bottom: 12px;\r\n font-size: 14px;\r\n width: 100%;\r\n max-width: 400px; /* 控制明细区域宽度,并保持居中感 */\r\n}\r\n\r\n.cost-row.total {\r\n margin-top: 15px;\r\n padding-top: 15px;\r\n border-top: 1px solid #f5f5f5;\r\n align-items: center;\r\n}\r\n\r\n.cost-value.price {\r\n color: #ff5000;\r\n font-size: 20px;\r\n font-weight: bold;\r\n}\r\n\r\n/* 底部按钮 */\r\n.bottom-actions {\r\n background-color: #ffffff;\r\n padding: 12px 15px;\r\n padding-bottom: 30px;\r\n box-shadow: 0 -2px 15px rgba(0,0,0,0.08);\r\n}\r\n\r\n.action-bar-wrapper {\r\n max-width: 1200px;\r\n margin: 0 auto;\r\n width: 100%;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: center;\r\n}\r\n\r\n.action-left {\r\n padding: 0;\r\n margin-right: 0;\r\n}\r\n\r\n.service-item {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n min-width: 50px;\r\n}\r\n\r\n.service-icon {\r\n font-size: 20px;\r\n margin-bottom: 2px;\r\n}\r\n\r\n.service-label {\r\n font-size: 11px;\r\n color: #666;\r\n}\r\n\r\n.action-right {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.btn-group {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: flex-end;\r\n}\r\n\r\n.btn {\r\n margin: 0;\r\n margin-left: 12px;\r\n padding: 0 18px;\r\n height: 36px;\r\n line-height: 36px;\r\n font-size: 14px;\r\n border-radius: 18px;\r\n background: #ffffff;\r\n border: 1px solid #ddd;\r\n color: #444;\r\n}\r\n\r\n.btn.primary {\r\n background: linear-gradient(to right, #ff9000, #ff5000);\r\n color: #ffffff;\r\n border: none;\r\n font-weight: bold;\r\n box-shadow: 0 4px 8px rgba(255, 80, 0, 0.2);\r\n}\r\n\r\n.btn.share-free {\r\n background: linear-gradient(to right, #52c41a, #73d13d);\r\n color: #ffffff;\r\n border: none;\r\n font-weight: bold;\r\n}\r\n\r\n/* 响应式适配 */\r\n@media screen and (min-width: 768px) {\r\n .card {\r\n width: 1200px;\r\n max-width: 1080px;\r\n margin: 15px auto;\r\n padding: 25px;\r\n box-sizing: border-box;\r\n }\r\n \r\n .status-content, .action-bar-wrapper {\r\n width: 1200px;\r\n max-width: 1080px;\r\n margin: 0 auto;\r\n }\r\n\r\n /* 优化店铺头部在大屏下的自适应布局 */\r\n .shop-header {\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n padding: 15px 0;\r\n margin-bottom: 20px;\r\n border-bottom: 1px solid #f0f0f0;\r\n width: 100%;\r\n }\r\n \r\n .shop-icon {\r\n font-size: 20px;\r\n margin-right: 12px;\r\n }\r\n \r\n .shop-name {\r\n font-size: 16px;\r\n color: #333;\r\n font-weight: bold;\r\n flex: 1;\r\n }\r\n \r\n .arrow-right {\r\n font-size: 18px;\r\n color: #ccc;\r\n margin-left: auto; /* 确保箭头始终在最右侧 */\r\n }\r\n\r\n /* 费用明细在大屏下的居中对齐 */\r\n .cost-detail {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center; /* 整体板块内容在大屏下也保持水平居中 */\r\n }\r\n \r\n .cost-row {\r\n width: 100%;\r\n max-width: 500px;\r\n margin-bottom: 12px;\r\n font-size: 15px;\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: center;\r\n }\r\n \r\n .cost-row.total {\r\n width: 100%;\r\n max-width: 500px;\r\n padding-top: 20px;\r\n margin-top: 10px;\r\n border-top: 1px solid #eee;\r\n }\r\n\r\n .cost-label {\r\n font-size: 15px;\r\n color: #666;\r\n }\r\n\r\n .cost-value.price {\r\n font-size: 28px;\r\n }\r\n\r\n /* 配送信息平铺优化 */\r\n .delivery-info-content {\r\n display: flex;\r\n flex-direction: row;\r\n justify-content: space-between;\r\n align-items: flex-start;\r\n }\r\n \r\n .delivery-address {\r\n flex: 2;\r\n }\r\n \r\n .courier-info {\r\n flex: 1;\r\n border-top: none;\r\n margin-top: 0;\r\n padding-top: 0;\r\n justify-content: flex-end;\r\n }\r\n\r\n /* 订单信息在大屏下对齐展示 */\r\n .order-info {\r\n display: flex;\r\n flex-direction: row;\r\n flex-wrap: wrap;\r\n }\r\n .order-info .info-row {\r\n width: 30%;\r\n margin: 0 1.5% 10px 1.5%;\r\n border-bottom: 1px solid #f9f9f9;\r\n padding-bottom: 8px;\r\n }\r\n \r\n .status-text {\r\n font-size: 26px;\r\n }\r\n \r\n .btn {\r\n height: 42px;\r\n line-height: 42px;\r\n padding: 0 30px;\r\n font-size: 15px;\r\n }\r\n}\r\n\r\n/* 状态样式 */\r\n.status-4 .status-text { /* Completed */ }\r\n</style>\r\n",null,null,null,null,null,null,null,null,null],"names":[],"mappings":"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"}