Initial commit
This commit is contained in:
125
miniprogram/pages/order/comment-list/index.js
Normal file
125
miniprogram/pages/order/comment-list/index.js
Normal file
@@ -0,0 +1,125 @@
|
||||
import Toast from 'tdesign-miniprogram/toast/index';
|
||||
import config from '../../../config/index';
|
||||
|
||||
Page({
|
||||
data: {
|
||||
orderNo: '',
|
||||
orderItems: [],
|
||||
loading: true,
|
||||
},
|
||||
|
||||
onLoad(options) {
|
||||
const { orderNo } = options;
|
||||
if (orderNo) {
|
||||
this.setData({ orderNo });
|
||||
this.fetchOrderItems();
|
||||
} else {
|
||||
Toast({
|
||||
context: this,
|
||||
selector: '#t-toast',
|
||||
message: '订单号不能为空',
|
||||
icon: 'error',
|
||||
});
|
||||
setTimeout(() => {
|
||||
wx.navigateBack();
|
||||
}, 1500);
|
||||
}
|
||||
},
|
||||
|
||||
// 获取订单商品列表
|
||||
async fetchOrderItems() {
|
||||
try {
|
||||
wx.showLoading({
|
||||
title: '加载中...',
|
||||
mask: true
|
||||
});
|
||||
|
||||
const token = wx.getStorageSync('token');
|
||||
if (!token) {
|
||||
Toast({
|
||||
context: this,
|
||||
selector: '#t-toast',
|
||||
message: '请先登录',
|
||||
icon: 'error',
|
||||
});
|
||||
setTimeout(() => {
|
||||
wx.navigateTo({
|
||||
url: '/pages/login/index'
|
||||
});
|
||||
}, 1500);
|
||||
return;
|
||||
}
|
||||
|
||||
const res = await new Promise((resolve, reject) => {
|
||||
wx.request({
|
||||
url: `${config.apiBase}/api/v1/orders/${this.data.orderNo}`,
|
||||
method: 'GET',
|
||||
header: {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': `Bearer ${token}`
|
||||
},
|
||||
success: resolve,
|
||||
fail: reject
|
||||
});
|
||||
});
|
||||
|
||||
wx.hideLoading();
|
||||
|
||||
if (res.statusCode === 200 && res.data.code === 200) {
|
||||
const order = res.data.data;
|
||||
const orderItems = order.order_items || [];
|
||||
|
||||
// 过滤出可以评论的商品(已确认收货且未评论)
|
||||
const commentableItems = orderItems.filter(item =>
|
||||
order.status === 'completed' && !item.is_commented
|
||||
);
|
||||
|
||||
this.setData({
|
||||
orderItems: commentableItems,
|
||||
loading: false
|
||||
});
|
||||
|
||||
if (commentableItems.length === 0) {
|
||||
Toast({
|
||||
context: this,
|
||||
selector: '#t-toast',
|
||||
message: '暂无可评论的商品',
|
||||
icon: 'info',
|
||||
});
|
||||
}
|
||||
} else {
|
||||
throw new Error(res.data.message || '获取订单信息失败');
|
||||
}
|
||||
} catch (error) {
|
||||
wx.hideLoading();
|
||||
console.error('获取订单商品失败:', error);
|
||||
Toast({
|
||||
context: this,
|
||||
selector: '#t-toast',
|
||||
message: error.message || '网络错误,请重试',
|
||||
icon: 'error',
|
||||
});
|
||||
this.setData({ loading: false });
|
||||
}
|
||||
},
|
||||
|
||||
// 点击评论商品
|
||||
onCommentItem(e) {
|
||||
const { item } = e.currentTarget.dataset;
|
||||
wx.navigateTo({
|
||||
url: `/pages/order/comment/index?orderNo=${this.data.orderNo}&orderItemId=${item.id}`,
|
||||
});
|
||||
},
|
||||
|
||||
// 返回上一页
|
||||
onBack() {
|
||||
wx.navigateBack();
|
||||
},
|
||||
|
||||
// 下拉刷新
|
||||
onPullDownRefresh() {
|
||||
this.fetchOrderItems().finally(() => {
|
||||
wx.stopPullDownRefresh();
|
||||
});
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user