diff --git a/app.json b/app.json
index d0ebbae..b12c6ee 100644
--- a/app.json
+++ b/app.json
@@ -29,6 +29,7 @@
"pages/cooperation/index",
"pages/goods/index",
"pages/order/index",
+ "pages/order/detail/index",
"pages/company/company"
],
"subpackages": [
@@ -57,7 +58,8 @@
"phone-test",
"clear-storage",
"gross-weight-tester",
- "fix-connection"
+ "fix-connection",
+ "order-test"
],
"independent": false
}
diff --git a/pages/order/detail/index.js b/pages/order/detail/index.js
new file mode 100644
index 0000000..b87dbd8
--- /dev/null
+++ b/pages/order/detail/index.js
@@ -0,0 +1,75 @@
+// pages/order/detail/index.js
+const API = require('../../../utils/api.js');
+
+Page({
+ // 分享给朋友/群聊
+ onShareAppMessage() {
+ return {
+ title: '鸡蛋贸易平台 - 订单详情',
+ path: '/pages/order/detail/index',
+ imageUrl: '/images/你有好蛋.png'
+ }
+ },
+
+ // 分享到朋友圈
+ onShareTimeline() {
+ return {
+ title: '鸡蛋贸易平台 - 订单详情',
+ query: '',
+ imageUrl: '/images/你有好蛋.png'
+ }
+ },
+
+ data: {
+ orderId: '',
+ orderDetail: null,
+ loading: false,
+ error: ''
+ },
+
+ onLoad(options) {
+ if (options.orderId) {
+ this.setData({ orderId: options.orderId });
+ this.loadOrderDetail();
+ }
+ },
+
+ // 加载订单详情
+ loadOrderDetail() {
+ const orderId = this.data.orderId;
+ if (!orderId) {
+ this.setData({ error: '订单ID不能为空' });
+ return;
+ }
+
+ this.setData({ loading: true, error: '' });
+
+ API.request(`/api/orders/detail/${orderId}`, 'GET', {})
+ .then(res => {
+ console.log('获取订单详情成功:', res);
+ if (res.success) {
+ this.setData({
+ orderDetail: res.data,
+ loading: false
+ });
+ } else {
+ this.setData({
+ error: res.message || '获取订单详情失败',
+ loading: false
+ });
+ }
+ })
+ .catch(err => {
+ console.error('获取订单详情失败:', err);
+ this.setData({
+ error: err.message || '网络请求失败,请稍后重试',
+ loading: false
+ });
+ });
+ },
+
+ // 返回上一页
+ goBack() {
+ wx.navigateBack();
+ }
+})
\ No newline at end of file
diff --git a/pages/order/detail/index.json b/pages/order/detail/index.json
new file mode 100644
index 0000000..95c7a35
--- /dev/null
+++ b/pages/order/detail/index.json
@@ -0,0 +1,4 @@
+{
+ "navigationBarTitleText": "订单详情",
+ "usingComponents": {}
+}
\ No newline at end of file
diff --git a/pages/order/detail/index.wxml b/pages/order/detail/index.wxml
new file mode 100644
index 0000000..0ccd5fc
--- /dev/null
+++ b/pages/order/detail/index.wxml
@@ -0,0 +1,106 @@
+
+
+
+ 加载中...
+
+
+
+
+ {{error}}
+
+
+
+
+
+
+
+
+
+
+ 客户信息
+
+
+ 公司名称:
+ {{orderDetail.customer_company}}
+
+
+ 联系人:
+ {{orderDetail.contact_person}}
+
+
+ 联系电话:
+ {{orderDetail.phone}}
+
+
+ 联系地址:
+ {{orderDetail.address}}
+
+
+
+
+
+
+ 订单摘要
+
+
+ 总金额:
+ ¥{{orderDetail.total_amount}}
+
+
+ 总件数:
+ {{orderDetail.total_pieces}}
+
+
+ 总斤数:
+ {{orderDetail.total_weight}}
+
+
+ 支付状态:
+ {{orderDetail.payment_status}}
+
+
+ 订单状态:
+ {{orderDetail.order_status}}
+
+
+
+
+
+
+ 产品详情
+
+
+
+
+
+ 销售件数:
+ {{item.sales_pieces}}
+
+
+ 销售斤数:
+ {{item.sales_weight}}
+
+
+ 单价:
+ ¥{{item.unit_price}}
+
+
+ 小计:
+ ¥{{item.sales_amount}}
+
+
+
+
+
+
+
+
+
+ 暂无订单详情
+
+
\ No newline at end of file
diff --git a/pages/order/detail/index.wxss b/pages/order/detail/index.wxss
new file mode 100644
index 0000000..89a03c2
--- /dev/null
+++ b/pages/order/detail/index.wxss
@@ -0,0 +1,206 @@
+/* pages/order/detail/index.wxss */
+.order-detail-page {
+ min-height: 100vh;
+ background-color: #f5f5f5;
+ padding: 20rpx;
+}
+
+/* 加载中 */
+.loading {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 120rpx 0;
+ background-color: #fff;
+ border-radius: 12rpx;
+ box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
+ font-size: 32rpx;
+ color: #666;
+}
+
+/* 错误提示 */
+.error {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ padding: 120rpx 40rpx;
+ background-color: #fff;
+ border-radius: 12rpx;
+ box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
+ font-size: 32rpx;
+ color: #ff4d4f;
+ text-align: center;
+}
+
+.error button {
+ margin-top: 40rpx;
+ background-color: #1677ff;
+ color: #fff;
+ border: none;
+ padding: 20rpx 80rpx;
+ border-radius: 60rpx;
+ font-size: 28rpx;
+ font-weight: bold;
+}
+
+/* 订单内容 */
+.order-content {
+ background-color: #fff;
+ border-radius: 12rpx;
+ padding: 30rpx;
+ box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
+}
+
+/* 订单头部 */
+.order-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 30rpx;
+ padding-bottom: 30rpx;
+ border-bottom: 1rpx solid #f0f0f0;
+}
+
+.order-no {
+ font-size: 28rpx;
+ color: #333;
+ font-weight: bold;
+}
+
+.order-date {
+ font-size: 26rpx;
+ color: #999;
+}
+
+/* 区块样式 */
+.section {
+ margin-bottom: 30rpx;
+}
+
+.section-title {
+ font-size: 30rpx;
+ color: #333;
+ font-weight: bold;
+ margin-bottom: 20rpx;
+ padding-left: 20rpx;
+ border-left: 6rpx solid #1677ff;
+}
+
+/* 客户信息 */
+.customer-info {
+ background-color: #f9f9f9;
+ border-radius: 8rpx;
+ padding: 20rpx;
+}
+
+/* 订单摘要 */
+.order-summary {
+ background-color: #f9f9f9;
+ border-radius: 8rpx;
+ padding: 20rpx;
+}
+
+/* 信息项 */
+.info-item {
+ display: flex;
+ margin-bottom: 16rpx;
+ align-items: flex-start;
+}
+
+.info-item:last-child {
+ margin-bottom: 0;
+}
+
+.label {
+ width: 140rpx;
+ font-size: 26rpx;
+ color: #666;
+ font-weight: bold;
+ flex-shrink: 0;
+}
+
+.value {
+ flex: 1;
+ font-size: 26rpx;
+ color: #333;
+ word-break: break-all;
+ line-height: 1.4;
+}
+
+/* 总金额样式 */
+.total-amount {
+ font-size: 28rpx;
+ color: #ff4d4f;
+ font-weight: bold;
+}
+
+/* 状态样式 */
+.payment-status {
+ color: #52c41a;
+ font-weight: bold;
+}
+
+.order-status {
+ color: #1677ff;
+ font-weight: bold;
+}
+
+/* 产品列表 */
+.products-list {
+ background-color: #f9f9f9;
+ border-radius: 8rpx;
+ padding: 20rpx;
+}
+
+/* 产品项 */
+.product-item {
+ background-color: #fff;
+ border-radius: 8rpx;
+ padding: 20rpx;
+ margin-bottom: 16rpx;
+ box-shadow: 0 1rpx 4rpx rgba(0, 0, 0, 0.05);
+}
+
+.product-item:last-child {
+ margin-bottom: 0;
+}
+
+/* 产品头部 */
+.product-header {
+ margin-bottom: 16rpx;
+ padding-bottom: 16rpx;
+ border-bottom: 1rpx solid #f0f0f0;
+}
+
+.product-name {
+ font-size: 28rpx;
+ color: #333;
+ font-weight: bold;
+}
+
+/* 产品详情 */
+.product-details {
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 16rpx;
+}
+
+@media (max-width: 375px) {
+ .product-details {
+ grid-template-columns: 1fr;
+ }
+}
+
+/* 无数据提示 */
+.no-data {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 120rpx 0;
+ background-color: #fff;
+ border-radius: 12rpx;
+ box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
+ font-size: 32rpx;
+ color: #999;
+}
diff --git a/pages/order/index.js b/pages/order/index.js
index bc7e551..a8ee3db 100644
--- a/pages/order/index.js
+++ b/pages/order/index.js
@@ -1,4 +1,6 @@
// pages/order/index.js
+const API = require('../../utils/api.js');
+
Page({
// 分享给朋友/群聊
onShareAppMessage() {
@@ -20,38 +22,293 @@ Page({
data: {
userInfo: {},
- orders: []
+ orders: [],
+ loading: false,
+ error: '',
+ // 订单状态标签
+ activeTab: 'all',
+ // 时间筛选相关
+ dateRange: {
+ start: '',
+ end: ''
+ },
+ // 分页相关
+ page: 1,
+ pageSize: 10,
+ hasMore: true,
+ loadingMore: false,
+ // 统计信息
+ statistics: {
+ totalOrders: 0,
+ totalAmount: 0,
+ totalPieces: 0,
+ totalWeight: 0,
+ unpaidAmount: 0,
+ paidAmount: 0
+ }
},
onLoad() {
// 页面加载时的初始化逻辑
- this.loadUserInfo();
+ this.loadUserInfo(() => {
+ this.loadOrders();
+ });
},
onShow() {
// 页面显示时的逻辑
- this.loadUserInfo();
- // 更新自定义tabBar状态
- if (typeof this.getTabBar === 'function' && this.getTabBar()) {
- this.getTabBar().setData({
- selected: 4 // 保持与个人中心相同的选中状态
- });
- }
+ this.loadUserInfo(() => {
+ // 更新自定义tabBar状态
+ if (typeof this.getTabBar === 'function' && this.getTabBar()) {
+ this.getTabBar().setData({
+ selected: 4 // 保持与个人中心相同的选中状态
+ });
+ }
+ });
},
// 加载用户信息
- loadUserInfo() {
+ loadUserInfo(callback) {
const app = getApp();
+ let userInfo = {};
+
if (app.globalData.userInfo) {
- this.setData({ userInfo: app.globalData.userInfo });
+ userInfo = app.globalData.userInfo;
} else {
- const localUserInfo = wx.getStorageSync('userInfo') || {};
- this.setData({ userInfo: localUserInfo });
+ userInfo = wx.getStorageSync('userInfo') || {};
}
+
+ // 同步更新用户信息,确保loadOrders能获取到最新数据
+ this.data.userInfo = userInfo;
+
+ // 同时异步更新UI
+ this.setData({ userInfo: userInfo }, () => {
+ if (callback) callback();
+ });
+ },
+
+ // 加载订单数据
+ loadOrders(isLoadMore = false, activeTab = this.data.activeTab) {
+ const userInfo = this.data.userInfo;
+ const phoneNumber = userInfo.phoneNumber;
+
+ if (!phoneNumber) {
+ this.setData({
+ error: '请先登录并绑定电话号码',
+ orders: []
+ });
+ return;
+ }
+
+ if (isLoadMore) {
+ this.setData({ loadingMore: true });
+ } else {
+ this.setData({ loading: true, error: '' });
+ }
+
+ const page = isLoadMore ? this.data.page + 1 : 1;
+ const pageSize = this.data.pageSize;
+
+ // 根据标签确定付款状态
+ let paymentStatus = '';
+ if (activeTab === 'unpaid') {
+ paymentStatus = '未收款';
+ } else if (activeTab === 'completed') {
+ paymentStatus = '全款';
+ }
+
+ console.log('loadOrders - activeTab:', activeTab, 'paymentStatus:', paymentStatus, 'page:', page);
+
+ // 并行请求订单列表和统计数据
+ const orderRequest = API.request('/api/orders/list', 'POST', {
+ phoneNumber: phoneNumber,
+ startDate: this.data.dateRange.start,
+ endDate: this.data.dateRange.end,
+ paymentStatus: paymentStatus,
+ page: page,
+ pageSize: pageSize
+ }).then(res => {
+ return { data: res };
+ }).catch(err => {
+ throw err;
+ });
+
+ // 只有在非加载更多时才请求统计数据(加载更多时统计数据不变)
+ const statisticsRequest = isLoadMore ? Promise.resolve(null) : API.request('/api/orders/statistics', 'POST', {
+ phoneNumber: phoneNumber,
+ startDate: this.data.dateRange.start,
+ endDate: this.data.dateRange.end,
+ paymentStatus: paymentStatus
+ }).then(res => {
+ return { data: res };
+ }).catch(err => {
+ throw err;
+ });
+
+ // 处理所有请求
+ Promise.all([orderRequest, statisticsRequest])
+ .then(([orderRes, statisticsRes]) => {
+ console.log('获取订单列表成功:', orderRes.data);
+ if (orderRes.data.success) {
+ const newOrders = orderRes.data.data.orders || [];
+ const totalOrders = isLoadMore ? [...this.data.orders, ...newOrders] : newOrders;
+ const hasMore = newOrders.length === pageSize;
+
+ // 处理统计数据
+ let statistics = this.data.statistics;
+ if (statisticsRes && statisticsRes.data && statisticsRes.data.success) {
+ statistics = statisticsRes.data.data;
+ console.log('获取统计数据成功:', statistics);
+ }
+
+ this.setData({
+ orders: totalOrders,
+ page: page,
+ hasMore: hasMore,
+ loading: false,
+ loadingMore: false,
+ statistics: statistics
+ });
+ } else {
+ this.setData({
+ error: orderRes.data.message || '获取订单失败',
+ loading: false,
+ loadingMore: false
+ });
+ }
+ })
+ .catch((err) => {
+ console.error('请求失败:', err);
+ this.setData({
+ error: err.message || '网络请求失败,请稍后重试',
+ loading: false,
+ loadingMore: false
+ });
+ });
},
// 返回上一页
goBack() {
wx.navigateBack();
+ },
+
+ // 查看订单详情
+ viewOrderDetail(e) {
+ const orderId = e.currentTarget.dataset.orderId;
+ wx.navigateTo({
+ url: `/pages/order/detail/index?orderId=${orderId}`
+ });
+ },
+
+ // 去首页购物
+ goToHome() {
+ wx.switchTab({
+ url: '/pages/index/index'
+ });
+ },
+
+ // 选择开始日期
+ bindStartDateChange(e) {
+ const startDate = e.detail.value;
+ this.setData({
+ 'dateRange.start': startDate
+ });
+ },
+
+ // 选择结束日期
+ bindEndDateChange(e) {
+ const endDate = e.detail.value;
+ this.setData({
+ 'dateRange.end': endDate
+ });
+ },
+
+ // 重置日期筛选
+ resetDateFilter() {
+ this.setData({
+ 'dateRange.start': '',
+ 'dateRange.end': ''
+ });
+ this.loadOrders();
+ },
+
+ // 应用日期筛选
+ applyDateFilter() {
+ this.loadOrders();
+ },
+
+ // 切换订单状态标签
+ switchTab(e) {
+ const tab = e.currentTarget.dataset.tab;
+ console.log('switchTab - tab:', tab);
+ this.setData({
+ activeTab: tab,
+ page: 1,
+ orders: []
+ }, () => {
+ console.log('switchTab - after setData, activeTab:', this.data.activeTab);
+ this.loadOrders(false, tab);
+ });
+ },
+
+ // 计算统计信息
+ calculateStatistics() {
+ const orders = this.data.orders;
+ if (!orders || orders.length === 0) {
+ this.setData({
+ statistics: {
+ totalOrders: 0,
+ totalAmount: 0,
+ totalPieces: 0,
+ unpaidAmount: 0,
+ paidAmount: 0
+ }
+ });
+ return;
+ }
+
+ let totalOrders = orders.length;
+ let totalAmount = 0;
+ let totalPieces = 0;
+ let unpaidAmount = 0;
+ let paidAmount = 0;
+
+ orders.forEach(order => {
+ // 累加总金额和总件数
+ if (order.total_amount) {
+ totalAmount += parseFloat(order.total_amount) || 0;
+ }
+ if (order.total_pieces) {
+ totalPieces += parseInt(order.total_pieces) || 0;
+ }
+
+ // 区分未付款和已付款
+ if (order.payment_status === '未收款') {
+ if (order.total_amount) {
+ unpaidAmount += parseFloat(order.total_amount) || 0;
+ }
+ } else if (order.payment_status === '全款') {
+ if (order.total_amount) {
+ paidAmount += parseFloat(order.total_amount) || 0;
+ }
+ }
+ });
+
+ this.setData({
+ statistics: {
+ totalOrders,
+ totalAmount: Math.round(totalAmount * 100) / 100,
+ totalPieces,
+ unpaidAmount: Math.round(unpaidAmount * 100) / 100,
+ paidAmount: Math.round(paidAmount * 100) / 100
+ }
+ });
+ },
+
+ // 滚动到底部的预加载逻辑
+ onReachBottom() {
+ if (!this.data.loadingMore && this.data.hasMore) {
+ this.loadOrders(true, this.data.activeTab);
+ }
}
})
diff --git a/pages/order/index.wxml b/pages/order/index.wxml
index 73b2a92..a259464 100644
--- a/pages/order/index.wxml
+++ b/pages/order/index.wxml
@@ -1,21 +1,123 @@
- 全部
- 待付款
- 待发货
- 待收货
- 已完成
+ 全部
+ 待付款
+ 已完成
+
+
+
+
+
+
+ 开始日期:
+
+
+ {{dateRange.start || '请选择'}}
+
+
+
+
+ 结束日期:
+
+
+ {{dateRange.end || '请选择'}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 总订单数
+ {{statistics.totalOrders}}
+
+
+ 总件数
+ {{statistics.totalPieces}}
+
+
+ 总斤数
+ {{statistics.totalWeight}}
+
+
+ 已消费
+ ¥{{statistics.paidAmount}}
+
+
-
-
+
+
+ 加载中...
+
+
+
+
+ {{error}}
+
+
+
+
📦
空空如也~
您还没有任何订单,快去选购吧
+
+
+
+
+
+
+
+
+
+
+ {{item.customer_company}}
+ {{item.contact_person}} {{item.phone}}
+
+
+ 总金额: ¥{{item.total_amount}}
+ 总件数: {{item.total_pieces}}
+ 总斤数: {{item.total_weight}}
+
+
+
+
+
+
+
+
+
+
+ 加载中...
+
+
+ 没有更多数据了
+
+
+
diff --git a/pages/order/index.wxss b/pages/order/index.wxss
index f357f79..539381a 100644
--- a/pages/order/index.wxss
+++ b/pages/order/index.wxss
@@ -9,23 +9,25 @@
display: flex;
background-color: #fff;
border-bottom: 1rpx solid #e0e0e0;
- overflow-x: auto;
- white-space: nowrap;
}
.tab-item {
flex: 1;
- min-width: 160rpx;
text-align: center;
- padding: 24rpx 0;
- font-size: 32rpx;
+ padding: 20rpx 0;
+ font-size: 28rpx;
color: #666;
position: relative;
+ transition: all 0.2s ease;
+}
+
+.tab-item:hover {
+ color: #1677ff;
}
.tab-item.active {
color: #1677ff;
- font-weight: bold;
+ font-weight: 500;
}
.tab-item.active::after {
@@ -34,10 +36,186 @@
bottom: 0;
left: 50%;
transform: translateX(-50%);
- width: 60rpx;
- height: 6rpx;
+ width: 50rpx;
+ height: 5rpx;
background-color: #1677ff;
border-radius: 3rpx;
+ transition: all 0.2s ease;
+}
+
+
+/* 时间筛选组件 */
+.date-filter {
+ background-color: #fff;
+ padding: 16rpx;
+ margin: 8rpx;
+ border-radius: 10rpx;
+ box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
+}
+
+.date-filter-row {
+ display: flex;
+ justify-content: space-between;
+ margin-bottom: 16rpx;
+ gap: 12rpx;
+}
+
+.date-picker {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+}
+
+.date-label {
+ font-size: 22rpx;
+ color: #666;
+ margin-bottom: 6rpx;
+ font-weight: 500;
+}
+
+.picker {
+ border: 1rpx solid #e8e8e8;
+ border-radius: 6rpx;
+ padding: 14rpx;
+ font-size: 22rpx;
+ color: #333;
+ background-color: #f9f9f9;
+ transition: all 0.2s ease;
+}
+
+.picker:hover {
+ border-color: #1677ff;
+ background-color: #f0f7ff;
+}
+
+.filter-actions {
+ display: flex;
+ justify-content: flex-end;
+ gap: 12rpx;
+ padding-top: 12rpx;
+ border-top: 1rpx solid #f5f5f5;
+}
+
+.reset-btn {
+ padding: 12rpx 32rpx;
+ border-radius: 24rpx;
+ font-size: 22rpx;
+ border: 1rpx solid #d9d9d9;
+ color: #666;
+ background-color: #f9f9f9;
+ transition: all 0.2s ease;
+}
+
+.reset-btn:hover {
+ border-color: #999;
+ background-color: #f0f0f0;
+}
+
+.apply-btn {
+ padding: 12rpx 32rpx;
+ border-radius: 24rpx;
+ font-size: 22rpx;
+ border: 1rpx solid #1677ff;
+ color: #1677ff;
+ background-color: #fff;
+ font-weight: 500;
+ transition: all 0.2s ease;
+}
+
+.apply-btn:hover {
+ background-color: #1677ff;
+ color: #fff;
+}
+
+/* 统计信息卡片 */
+.statistics-card {
+ background-color: #fff;
+ margin: 10rpx;
+ border-radius: 12rpx;
+ box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
+ overflow: hidden;
+}
+
+.statistics-header {
+ background-color: #1677ff;
+ color: #fff;
+ padding: 20rpx;
+ font-size: 28rpx;
+ font-weight: bold;
+}
+
+.statistics-body {
+ padding: 20rpx;
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ gap: 20rpx;
+}
+
+.stat-item {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 15rpx;
+ background-color: #f9f9f9;
+ border-radius: 8rpx;
+}
+
+.stat-label {
+ font-size: 24rpx;
+ color: #666;
+ font-weight: 500;
+}
+
+.stat-value {
+ font-size: 28rpx;
+ font-weight: bold;
+ color: #333;
+}
+
+.stat-value.unpaid {
+ color: #ff4d4f;
+}
+
+.stat-value.paid {
+ color: #52c41a;
+}
+
+/* 响应式设计 */
+@media (max-width: 375px) {
+ .date-filter-row {
+ flex-direction: column;
+ }
+
+ .date-picker {
+ flex-direction: row;
+ align-items: center;
+ }
+
+ .date-label {
+ margin-bottom: 0;
+ margin-right: 10rpx;
+ min-width: 120rpx;
+ }
+
+ .picker {
+ flex: 1;
+ }
+
+ .statistics-body {
+ grid-template-columns: 1fr;
+ }
+
+ .stat-item {
+ padding: 12rpx;
+ }
+
+ .stat-label {
+ font-size: 22rpx;
+ }
+
+ .stat-value {
+ font-size: 26rpx;
+ }
}
/* 订单列表 */
@@ -45,6 +223,33 @@
padding: 20rpx;
}
+/* 加载中 */
+.loading {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 120rpx 0;
+ background-color: #fff;
+ border-radius: 12rpx;
+ box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
+ font-size: 32rpx;
+ color: #666;
+}
+
+/* 错误提示 */
+.error {
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 120rpx 40rpx;
+ background-color: #fff;
+ border-radius: 12rpx;
+ box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
+ font-size: 32rpx;
+ color: #ff4d4f;
+ text-align: center;
+}
+
/* 暂无订单提示 */
.no-orders {
display: flex;
@@ -85,13 +290,19 @@
font-weight: bold;
}
-/* 订单卡片样式(预留) */
+/* 订单卡片样式 */
.order-card {
background-color: #fff;
border-radius: 12rpx;
padding: 30rpx;
margin-bottom: 20rpx;
box-shadow: 0 2rpx 10rpx rgba(0, 0, 0, 0.05);
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
+}
+
+.order-card:active {
+ transform: translateY(2rpx);
+ box-shadow: 0 1rpx 5rpx rgba(0, 0, 0, 0.05);
}
.order-header {
@@ -103,60 +314,75 @@
border-bottom: 1rpx solid #f0f0f0;
}
-.order-info {
+.order-no {
font-size: 28rpx;
- color: #666;
+ color: #333;
+ font-weight: bold;
}
-.order-status {
- font-size: 28rpx;
- color: #1677ff;
- font-weight: bold;
+.order-date {
+ font-size: 26rpx;
+ color: #999;
}
-.order-goods {
+.order-body {
margin-bottom: 20rpx;
}
-.goods-item {
- display: flex;
+.customer-info {
margin-bottom: 20rpx;
}
-.goods-image {
- width: 120rpx;
- height: 120rpx;
- border-radius: 8rpx;
- margin-right: 20rpx;
+.customer-company {
+ font-size: 30rpx;
+ color: #333;
+ font-weight: bold;
+ margin-bottom: 10rpx;
}
-.goods-info {
- flex: 1;
+.contact-person {
+ font-size: 26rpx;
+ color: #666;
+}
+
+.order-summary {
display: flex;
- flex-direction: column;
- justify-content: space-between;
+ flex-wrap: wrap;
+ gap: 30rpx;
+ padding: 20rpx;
+ background-color: #f9f9f9;
+ border-radius: 8rpx;
}
-.goods-name {
- font-size: 32rpx;
+.total-amount {
+ font-size: 28rpx;
color: #333;
- margin-bottom: 10rpx;
- display: -webkit-box;
- -webkit-line-clamp: 2;
- -webkit-box-orient: vertical;
- overflow: hidden;
+ font-weight: bold;
}
-.goods-spec {
- font-size: 26rpx;
- color: #999;
- margin-bottom: 10rpx;
+.total-amount::before {
+ content: "💰 ";
+ font-size: 24rpx;
}
-.goods-price {
- font-size: 32rpx;
- color: #ff4d4f;
- font-weight: bold;
+.total-pieces {
+ font-size: 28rpx;
+ color: #666;
+}
+
+.total-pieces::before {
+ content: "📦 ";
+ font-size: 24rpx;
+}
+
+.total-weight {
+ font-size: 28rpx;
+ color: #666;
+}
+
+.total-weight::before {
+ content: "⚖️ ";
+ font-size: 24rpx;
}
.order-footer {
@@ -167,31 +393,61 @@
border-top: 1rpx solid #f0f0f0;
}
-.total-price {
- font-size: 32rpx;
- color: #333;
+.status-container {
+ display: flex;
+ gap: 20rpx;
+ align-items: center;
}
-.total-price .price {
- color: #ff4d4f;
+.payment-status {
+ font-size: 26rpx;
+ color: #52c41a;
+ font-weight: bold;
+ padding: 6rpx 16rpx;
+ background-color: #f6ffed;
+ border-radius: 20rpx;
+ border: 1rpx solid #b7eb8f;
+}
+
+.order-status {
+ font-size: 26rpx;
+ color: #1677ff;
font-weight: bold;
+ padding: 6rpx 16rpx;
+ background-color: #e6f7ff;
+ border-radius: 20rpx;
+ border: 1rpx solid #91d5ff;
+}
+
+.arrow-icon {
+ font-size: 32rpx;
+ color: #999;
+ font-weight: bold;
+}
+
+/* 分页加载相关样式 */
+.load-more {
+ padding: 30rpx 0;
+ text-align: center;
}
-.order-actions {
+.loading-more {
display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 20rpx 0;
}
-.action-btn {
- padding: 12rpx 30rpx;
- border-radius: 40rpx;
+.loading-more text {
font-size: 28rpx;
- margin-left: 20rpx;
- border: 2rpx solid #1677ff;
- color: #1677ff;
- background-color: #fff;
+ color: #666;
}
-.action-btn.primary {
- background-color: #1677ff;
- color: #fff;
+.no-more {
+ padding: 20rpx 0;
+}
+
+.no-more text {
+ font-size: 26rpx;
+ color: #999;
}
diff --git a/project.private.config.json b/project.private.config.json
index 6b6a8c4..3d49d96 100644
--- a/project.private.config.json
+++ b/project.private.config.json
@@ -1,6 +1,6 @@
{
"libVersion": "3.10.3",
- "projectname": "wxxcx1",
+ "projectname": "Mini-Program",
"setting": {
"urlCheck": false,
"coverView": true,
@@ -19,5 +19,17 @@
"ignoreDevUnusedFiles": true,
"bigPackageSizeSupport": false
},
- "condition": {}
+ "condition": {
+ "miniprogram": {
+ "list": [
+ {
+ "name": "pages/test-tools/order-test",
+ "pathName": "pages/test-tools/order-test",
+ "query": "",
+ "scene": null,
+ "launchMode": "default"
+ }
+ ]
+ }
+ }
}
\ No newline at end of file