import { getLogisticsInfo, refreshLogisticsInfo } from './api'; import Toast from 'tdesign-miniprogram/toast/index'; Page({ data: { logisticsData: { logisticsNo: '', nodes: [], company: '', phoneNumber: '', }, active: 0, loading: false, refreshing: false, // 存储查询参数,用于刷新 queryParams: null, }, onLoad(query) { console.log('[物流详情] 页面加载', { query }); let data; try { data = JSON.parse(decodeURIComponent(query.data || '{}')); } catch (e) { console.warn('物流节点数据解析失败', e); } // 如果是从售后页面跳转过来的(source=2) if (Number(query.source) === 2) { const service = { company: data.logisticsCompanyName, logisticsNo: data.logisticsNo, nodes: data.nodes, phoneNumber: data.phoneNumber, }; this.setData({ logisticsData: service, queryParams: { logisticsNo: data.logisticsNo, logisticsCompanyCode: data.logisticsCompanyCode, rightsNo: query.rightsNo, orderNo: query.orderNo } }); // 如果有物流单号,尝试获取最新的物流信息 if (data.logisticsNo) { this.fetchLogisticsInfo(); } } else if (data) { // 直接传入的物流数据 this.setData({ logisticsData: data, queryParams: { logisticsNo: data.logisticsNo, logisticsCompanyCode: data.logisticsCompanyCode, orderNo: query.orderNo } }); // 如果有物流单号,尝试获取最新的物流信息 if (data.logisticsNo) { this.fetchLogisticsInfo(); } } else if (query.logisticsNo) { // 直接传入物流单号 this.setData({ queryParams: { logisticsNo: query.logisticsNo, logisticsCompanyCode: query.logisticsCompanyCode, orderNo: query.orderNo, rightsNo: query.rightsNo } }); this.fetchLogisticsInfo(); } }, // 获取物流信息 async fetchLogisticsInfo() { if (!this.data.queryParams?.logisticsNo) { console.warn('[物流详情] 缺少物流单号,无法获取物流信息'); return; } this.setData({ loading: true }); try { console.log('[物流详情] 开始获取物流信息', this.data.queryParams); const res = await getLogisticsInfo(this.data.queryParams); if (res.success && res.data) { console.log('[物流详情] 物流信息获取成功', res.data); this.setData({ logisticsData: { logisticsNo: res.data.logisticsNo, company: res.data.company, phoneNumber: res.data.phoneNumber, nodes: res.data.nodes || [] }, active: 0 // 默认激活第一个节点 }); } } catch (error) { console.error('[物流详情] 获取物流信息失败', error); Toast({ context: this, selector: '#t-toast', message: error.message || '获取物流信息失败', icon: 'error-circle', }); } finally { this.setData({ loading: false }); } }, // 刷新物流信息 async onRefresh() { if (!this.data.queryParams?.logisticsNo) { Toast({ context: this, selector: '#t-toast', message: '无法刷新,缺少物流单号', icon: 'error-circle', }); return; } this.setData({ refreshing: true }); try { console.log('[物流详情] 开始刷新物流信息', this.data.queryParams); const res = await refreshLogisticsInfo(this.data.queryParams); if (res.success && res.data) { console.log('[物流详情] 物流信息刷新成功', res.data); this.setData({ logisticsData: { logisticsNo: res.data.logisticsNo, company: res.data.company, phoneNumber: res.data.phoneNumber, nodes: res.data.nodes || [] }, active: 0 }); Toast({ context: this, selector: '#t-toast', message: '刷新成功', icon: 'check-circle', }); } } catch (error) { console.error('[物流详情] 刷新物流信息失败', error); Toast({ context: this, selector: '#t-toast', message: error.message || '刷新失败', icon: 'error-circle', }); } finally { this.setData({ refreshing: false }); } }, onLogisticsNoCopy() { wx.setClipboardData({ data: this.data.logisticsData.logisticsNo }); }, onCall() { const { phoneNumber } = this.data.logisticsData; wx.makePhoneCall({ phoneNumber, }); }, });