102 lines
3.8 KiB
JavaScript
102 lines
3.8 KiB
JavaScript
const app = getApp();
|
||
|
||
Component({
|
||
properties: {
|
||
orderId: { type: String, value: '' }
|
||
},
|
||
|
||
data: {
|
||
order: null,
|
||
loading: false,
|
||
errorMsg: '',
|
||
// 跨平台字段
|
||
isCross: false, // 是否跨平台订单
|
||
dispatchType: 0, // 1-我方派单,2-对方派单
|
||
partnerClubId: '', // 对方俱乐部ID
|
||
},
|
||
|
||
lifetimes: {
|
||
attached() {
|
||
if (this.properties.orderId) {
|
||
this.fetchOrderDetail();
|
||
}
|
||
}
|
||
},
|
||
|
||
methods: {
|
||
// 获取订单详情(含跨平台字段)
|
||
fetchOrderDetail() {
|
||
if (!this.properties.orderId) return;
|
||
this.setData({ loading: true, errorMsg: '' });
|
||
const baseUrl = app.globalData.apiBaseUrl;
|
||
wx.request({
|
||
url: `${baseUrl}/dingdan/order_detail/`, // 需后端返回 is_cross, dispatch_type, partner_club_id
|
||
method: 'POST',
|
||
data: { order_id: this.properties.orderId },
|
||
header: { 'content-type': 'application/json' },
|
||
success: (res) => {
|
||
if (res.statusCode === 200 && res.data && res.data.code === 0) {
|
||
const order = res.data.data;
|
||
// 处理图片URL
|
||
if (order.tupian && !order.tupian.startsWith('http')) {
|
||
order.tupian = app.globalData.ossImageUrl + order.tupian;
|
||
}
|
||
this.setData({
|
||
order,
|
||
loading: false,
|
||
isCross: order.is_cross === 1,
|
||
dispatchType: order.dispatch_type || 0,
|
||
partnerClubId: order.partner_club_id || '',
|
||
});
|
||
// 通知父页面状态
|
||
this.triggerEvent('statusready', {
|
||
isCross: this.data.isCross,
|
||
dispatchType: this.data.dispatchType,
|
||
partnerClubId: this.data.partnerClubId
|
||
});
|
||
} else {
|
||
this.setData({ errorMsg: res.data?.msg || '获取订单失败', loading: false });
|
||
}
|
||
},
|
||
fail: () => {
|
||
this.setData({ errorMsg: '网络请求失败', loading: false });
|
||
}
|
||
});
|
||
},
|
||
|
||
// 发送订单卡片消息(原有)
|
||
sendOrderMessage() {
|
||
if (!this.data.order) return;
|
||
this.triggerEvent('sendorder', { order: this.data.order });
|
||
},
|
||
|
||
// 跨平台消息转发(供父页面调用)
|
||
forwardMessage(payload) {
|
||
const that = this;
|
||
const baseUrl = app.globalData.apiBaseUrl;
|
||
return new Promise((resolve, reject) => {
|
||
wx.request({
|
||
url: `${baseUrl}/dingdan/kptxxts`,
|
||
method: 'POST',
|
||
data: {
|
||
order_id: that.properties.orderId,
|
||
message_type: payload.type || 'text',
|
||
content: payload.content || '',
|
||
image_url: payload.imageUrl || '', // 图片等
|
||
},
|
||
header: { 'content-type': 'application/json' },
|
||
success: (res) => {
|
||
if (res.statusCode === 200 && res.data && res.data.code === 0) {
|
||
resolve(res.data);
|
||
} else {
|
||
reject(res.data);
|
||
}
|
||
},
|
||
fail: (err) => {
|
||
reject(err);
|
||
}
|
||
});
|
||
});
|
||
}
|
||
}
|
||
}); |