统一排行榜对齐星雀UI,页面资源后台配置实时刷新

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-06-27 01:26:11 +08:00
parent 1ab2e2080a
commit 21112173f2
292 changed files with 64010 additions and 81 deletions

View File

@@ -0,0 +1,102 @@
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);
}
});
});
}
}
});

View File

@@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@@ -0,0 +1,20 @@
<view class="order-card" wx:if="{{order}}">
<view class="card-header">
<text class="card-title">关联订单</text>
<text class="card-id">{{order.dingdan_id}}</text>
<!-- 跨平台标记 -->
<text class="cross-tag" wx:if="{{isCross}}">跨平台</text>
</view>
<view class="card-body" bindtap="sendOrderMessage">
<image class="card-img" src="{{order.tupian || '/images/default-goods.png'}}" mode="aspectFill" />
<view class="card-info">
<text class="card-jieshao">{{order.jieshao || '暂无介绍'}}</text>
<text class="card-jine">¥{{order.jine}}</text>
</view>
<view class="card-send-btn">发送</view>
</view>
<view wx:if="{{errorMsg}}" class="card-error">{{errorMsg}}</view>
</view>
<view class="order-card" wx:elif="{{loading}}">
<text class="loading-text">加载订单信息...</text>
</view>

View File

@@ -0,0 +1,39 @@
.order-card {
background: #fff;
margin: 15rpx 20rpx;
border-radius: 12rpx;
overflow: hidden;
box-shadow: 0 2rpx 10rpx rgba(0,0,0,0.05);
}
.card-header {
display: flex;
align-items: center;
padding: 16rpx 20rpx;
border-bottom: 1rpx solid #f0f0f0;
}
.card-title { font-size: 26rpx; color: #666; }
.card-id { font-size: 24rpx; color: #999; margin-left: 15rpx; }
.cross-tag {
margin-left: auto;
background: #ff9900;
color: #fff;
font-size: 20rpx;
padding: 2rpx 12rpx;
border-radius: 8rpx;
}
.card-body {
display: flex;
align-items: center;
padding: 20rpx;
}
.card-img { width: 100rpx; height: 100rpx; border-radius: 8rpx; margin-right: 15rpx; }
.card-info { flex: 1; }
.card-jieshao { font-size: 28rpx; color: #333; }
.card-jine { font-size: 26rpx; color: #e74c3c; }
.card-send-btn {
width: 80rpx; height: 50rpx; line-height: 50rpx;
text-align: center; background: #07c160; color: #fff;
border-radius: 8rpx; font-size: 24rpx;
}
.card-error { padding: 20rpx; color: #e74c3c; text-align: center; }
.loading-text { display: block; padding: 20rpx; text-align: center; color: #999; }