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

1 line
13 KiB
Plaintext

{"version":3,"sources":["pages/mall/consumer/logistics.uvue","pages/main/index.uvue"],"sourcesContent":["<template>\r\n <view class=\"logistics-page\">\r\n <view class=\"logistics-header\">\r\n <view class=\"product-info\">\r\n <image class=\"product-image\" :src=\"productImage\" mode=\"aspectFill\"></image>\r\n <view class=\"info-right\">\r\n <text class=\"status-text\">{{ logisticsStatus }}</text>\r\n <text class=\"courier-name\">{{ courierName }}: {{ trackingNo }}</text>\r\n <text class=\"phone-text\">官方电话: {{ courierPhone }}</text>\r\n </view>\r\n </view>\r\n </view>\r\n\r\n <view class=\"logistics-body\">\r\n <view class=\"track-list\">\r\n <view \r\n v-for=\"(item, index) in trackList\" \r\n :key=\"index\" \r\n class=\"track-item\"\r\n :class=\"{ first: index === 0 }\"\r\n >\r\n <view class=\"node-icon\">\r\n <view class=\"dot\"></view>\r\n <view class=\"line\" v-if=\"index !== trackList.length - 1\"></view>\r\n </view>\r\n <view class=\"node-content\">\r\n <text class=\"track-desc\">{{ item.desc }}</text>\r\n <text class=\"track-time\">{{ item.time }}</text>\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 } from 'vue'\r\nimport { onLoad } from '@dcloudio/uni-app'\r\nimport { supabaseService } from '@/utils/supabaseService.uts'\r\n\r\nconst orderId = ref('')\r\nconst productImage = ref('/static/product1.jpg')\r\nconst logisticsStatus = ref('暂无物流信息')\r\nconst courierName = ref('')\r\nconst courierPhone = ref('')\r\nconst trackingNo = ref('')\r\n\r\ntype TrackItem = {\r\n desc: string,\r\n time: string\r\n}\r\n\r\nconst trackList = ref<TrackItem[]>([])\r\n\r\n// 加载物流信息函数 - 必须在 onLoad 之前定义\r\nconst loadLogisticsInfo = async () => {\r\n if (orderId.value == '') return\r\n \r\n try {\r\n console.log('[logistics] 开始加载物流信息, orderId:', orderId.value)\r\n const order = await supabaseService.getOrderDetail(orderId.value)\r\n console.log('[logistics] 获取订单结果:', order != null ? '成功' : '失败')\r\n \r\n if (order != null) {\r\n const orderStr = JSON.stringify(order)\r\n console.log('[logistics] 订单JSON:', orderStr)\r\n const orderParsed = JSON.parse(orderStr)\r\n if (orderParsed == null) {\r\n console.error('[logistics] 解析订单数据失败')\r\n return\r\n }\r\n const orderObj = orderParsed as UTSJSONObject\r\n \r\n // 获取物流信息\r\n const trackingNoVal = orderObj.getString('tracking_no')\r\n const carrierNameVal = orderObj.getString('carrier_name')\r\n const shippingStatus = orderObj.getNumber('shipping_status')\r\n \r\n console.log('[logistics] tracking_no:', trackingNoVal)\r\n console.log('[logistics] carrier_name:', carrierNameVal)\r\n console.log('[logistics] shipping_status:', shippingStatus)\r\n \r\n if (trackingNoVal != null && trackingNoVal != '') {\r\n trackingNo.value = trackingNoVal\r\n } else {\r\n console.log('[logistics] 物流单号为空,订单可能未发货')\r\n // 物流单号为空时显示提示\r\n trackingNo.value = '暂无物流单号'\r\n logisticsStatus.value = '商家未填写物流信息'\r\n }\r\n \r\n if (carrierNameVal != null && carrierNameVal != '') {\r\n courierName.value = carrierNameVal\r\n // 根据快递公司设置电话\r\n if (carrierNameVal.includes('顺丰')) {\r\n courierPhone.value = '95338'\r\n } else if (carrierNameVal.includes('中通')) {\r\n courierPhone.value = '95311'\r\n } else if (carrierNameVal.includes('圆通')) {\r\n courierPhone.value = '95554'\r\n } else if (carrierNameVal.includes('韵达')) {\r\n courierPhone.value = '95546'\r\n } else if (carrierNameVal.includes('申通')) {\r\n courierPhone.value = '95543'\r\n } else {\r\n courierPhone.value = ''\r\n }\r\n }\r\n \r\n // 根据发货状态设置物流状态\r\n if (shippingStatus == 2) {\r\n logisticsStatus.value = '已签收'\r\n } else if (shippingStatus == 1) {\r\n logisticsStatus.value = '运输中'\r\n } else {\r\n logisticsStatus.value = '待发货'\r\n }\r\n \r\n // 获取商品图片\r\n const itemsRaw = orderObj.get('ml_order_items')\r\n if (itemsRaw != null && Array.isArray(itemsRaw)) {\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) {\r\n const itemObj = itemParsed as UTSJSONObject\r\n const imgUrl = itemObj.getString('image_url')\r\n if (imgUrl != null && imgUrl != '') {\r\n productImage.value = imgUrl\r\n }\r\n }\r\n }\r\n }\r\n \r\n // 构建物流轨迹(如果有发货时间)\r\n const shippedAt = orderObj.getString('shipped_at')\r\n if (shippedAt != null && shippedAt != '') {\r\n const trackItem: TrackItem = {\r\n desc: '商家已发货,等待快递揽收',\r\n time: shippedAt\r\n }\r\n trackList.value.push(trackItem)\r\n }\r\n \r\n // 如果已签收,添加签收信息\r\n const deliveredAt = orderObj.getString('delivered_at')\r\n if (deliveredAt != null && deliveredAt != '') {\r\n const trackItem: TrackItem = {\r\n desc: '快件已签收',\r\n time: deliveredAt\r\n }\r\n trackList.value.unshift(trackItem)\r\n logisticsStatus.value = '已签收'\r\n }\r\n }\r\n } catch (e) {\r\n console.error('加载物流信息失败:', e)\r\n }\r\n}\r\n\r\nonLoad((options) => {\r\n if (options == null) return\r\n const orderIdValue = options['orderId']\r\n if (orderIdValue != null) {\r\n orderId.value = orderIdValue as string\r\n loadLogisticsInfo()\r\n }\r\n})\r\n\r\nonMounted(() => {\r\n // 逻辑已移到 onLoad\r\n})\r\n</script>\r\n\r\n<style scoped>\r\n.logistics-page {\r\n /* min-height: 100vh; */\r\n flex: 1;\r\n background-color: #f5f5f5;\r\n padding-bottom: 20px;\r\n}\r\n\r\n.logistics-header {\r\n background-color: #fff;\r\n padding: 15px;\r\n margin-bottom: 10px;\r\n}\r\n\r\n.product-info {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.product-image {\r\n width: 60px;\r\n height: 60px;\r\n border-radius: 4px;\r\n margin-right: 15px;\r\n background-color: #eee;\r\n}\r\n\r\n.info-right {\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.status-text {\r\n font-size: 16px;\r\n color: #ff5000;\r\n font-weight: bold;\r\n margin-bottom: 5px;\r\n}\r\n\r\n.courier-name {\r\n font-size: 14px;\r\n color: #333;\r\n margin-bottom: 2px;\r\n}\r\n\r\n.phone-text {\r\n font-size: 12px;\r\n color: #999;\r\n}\r\n\r\n.logistics-body {\r\n background-color: #fff;\r\n padding: 20px 15px;\r\n}\r\n\r\n.track-list {\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.track-item {\r\n display: flex;\r\n position: relative;\r\n padding-bottom: 25px;\r\n}\r\n\r\n.track-item:last-child {\r\n padding-bottom: 0;\r\n}\r\n\r\n.node-icon {\r\n width: 20px;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n margin-right: 15px;\r\n}\r\n\r\n.dot {\r\n width: 8px;\r\n height: 8px;\r\n border-radius: 4px;\r\n}\r\n\r\n.first .dot {\r\n background-color: #ff5000;\r\n width: 12px;\r\n height: 12px;\r\n margin-top: 4px;\r\n box-shadow: 0 0 0 4px rgba(255, 80, 0, 0.2);\r\n}\r\n\r\n.line {\r\n width: 1px;\r\n background-color: #eee;\r\n flex: 1;\r\n margin-top: 2px;\r\n}\r\n\r\n.node-content {\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n\r\n.track-desc {\r\n font-size: 14px;\r\n color: #333;\r\n line-height: 1.5;\r\n margin-bottom: 5px;\r\n}\r\n\r\n.first .track-desc {\r\n color: #ff5000;\r\n font-weight: bold;\r\n}\r\n\r\n.track-time {\r\n font-size: 12px;\r\n color: #999;\r\n}\r\n</style>\r\n\r\n",null],"names":[],"mappings":"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"}