mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-01 02:38:43 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			196 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			196 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | ||
|   <view class="container">
 | ||
|     <u-sticky style="top: 0" offset-top="0">
 | ||
|       <u-tabs :list="tabArray" :current="tabIndex" itemStyle="padding-left: 18px; padding-right: 18px; height: 36px;" @change="handleStatusChange"></u-tabs>
 | ||
|     </u-sticky>
 | ||
|     <view class="order-list">
 | ||
|       <view v-for="order in orderList" :key="order.no" class="order-item">
 | ||
|         <view class="order-header">
 | ||
|           <view class="order-no">订单编号:{{ order.no }}</view>
 | ||
|           <view class="order-status">{{ order.status | getStatusName }}</view>
 | ||
|         </view>
 | ||
| 
 | ||
|         <view v-if="order.items.length === 1" class="order-single-item" @click="handleOrderClick(order.id)">
 | ||
|           <view class="item-wrap" v-for="item in order.items" :key="item.id">
 | ||
|             <view class="item-info">
 | ||
|               <image class="item-cover" :src="item.picUrl"></image>
 | ||
|               <u--text :lines="2" size="15px" color="#333333" :text="item.spuName"></u--text>
 | ||
|             </view>
 | ||
|             <view class="item-count">共{{ item.count }}件</view>
 | ||
|           </view>
 | ||
|         </view>
 | ||
|         <view v-else class="order-multi-item" @click="handleOrderClick(order.id)">
 | ||
|           <u-scroll-list :indicator="false">
 | ||
|             <view class="item-wrap" v-for="item in order.items" :key="item.id">
 | ||
|               <image class="item-image" :src="item.picUrl"></image>
 | ||
|             </view>
 | ||
|           </u-scroll-list>
 | ||
|           <view class="product-count">共{{ order.productCount }}件</view>
 | ||
|         </view>
 | ||
| 
 | ||
|         <view class="order-btn-group">
 | ||
|           <view class="order-btn">再次购买</view>
 | ||
|           <view class="order-btn">其他操作</view>
 | ||
|         </view>
 | ||
|       </view>
 | ||
|     </view>
 | ||
|   </view>
 | ||
| </template>
 | ||
| 
 | ||
| <script>
 | ||
| import { getOrderPage } from '../../api/order'
 | ||
| import orderStatus from '@/common/orderStatus'
 | ||
| 
 | ||
| export default {
 | ||
|   name: 'orderList',
 | ||
|   filters: {
 | ||
|     getStatusName(status) {
 | ||
|       return orderStatus[status + ''].name
 | ||
|     }
 | ||
|   },
 | ||
|   data() {
 | ||
|     return {
 | ||
|       pageNo: 1,
 | ||
|       tabIndex: 0,
 | ||
|       orderList: []
 | ||
|     }
 | ||
|   },
 | ||
|   computed: {
 | ||
|     tabArray() {
 | ||
|       let tabArray = [{ name: '全部', status: 'all' }]
 | ||
|       for (let status in orderStatus) {
 | ||
|         if (status !== '40') {
 | ||
|           tabArray.push({ name: orderStatus[status].name, status: status })
 | ||
|         }
 | ||
|       }
 | ||
|       return tabArray
 | ||
|     }
 | ||
|   },
 | ||
|   onLoad(e) {
 | ||
|     const status = e.status
 | ||
|     if (status !== undefined) {
 | ||
|       this.tabArray.forEach((item, index) => {
 | ||
|         if (item.status === status) {
 | ||
|           this.tabIndex = index
 | ||
|         }
 | ||
|       })
 | ||
|     }
 | ||
|     this.loadOrderPageData()
 | ||
|   },
 | ||
|   methods: {
 | ||
|     handleStatusChange({ index }) {
 | ||
|       this.tabIndex = index
 | ||
|       this.loadOrderPageData()
 | ||
|     },
 | ||
|     loadOrderPageData() {
 | ||
|       let params = { pageNo: this.pageNo }
 | ||
|       const status = this.tabArray[this.tabIndex].status
 | ||
|       if (status !== 'all') {
 | ||
|         params.orderStatus = status
 | ||
|       }
 | ||
|       getOrderPage(params)
 | ||
|         .then(res => {
 | ||
|           this.orderList = res.data.list || []
 | ||
|         })
 | ||
|         .catch(err => {
 | ||
|           console.log(err)
 | ||
|         })
 | ||
|     },
 | ||
|     handleOrderClick(orderId) {
 | ||
|       uni.$u.route('/pages/order/detail', {
 | ||
|         orderId: orderId
 | ||
|       })
 | ||
|     }
 | ||
|   }
 | ||
| }
 | ||
| </script>
 | ||
| 
 | ||
| <style lang="scss" scoped>
 | ||
| .order-list {
 | ||
|   background-color: #f3f3f3;
 | ||
| 
 | ||
|   .order-item {
 | ||
|     padding: 20rpx;
 | ||
|     background-color: #ffffff;
 | ||
|     border-bottom: $custom-border-style;
 | ||
| 
 | ||
|     .order-header {
 | ||
|       @include flex-space-between;
 | ||
|       height: 80rpx;
 | ||
| 
 | ||
|       .order-no {
 | ||
|         font-size: 28rpx;
 | ||
|         color: #333;
 | ||
|       }
 | ||
| 
 | ||
|       .order-status {
 | ||
|         font-size: 24rpx;
 | ||
|         color: #999;
 | ||
|       }
 | ||
|     }
 | ||
| 
 | ||
|     .order-single-item {
 | ||
|       .item-wrap {
 | ||
|         @include flex-space-between();
 | ||
| 
 | ||
|         .item-info {
 | ||
|           @include flex-left();
 | ||
| 
 | ||
|           .item-cover {
 | ||
|             width: 100rpx;
 | ||
|             height: 100rpx;
 | ||
|             border-radius: 10rpx;
 | ||
|             margin-right: 15rpx;
 | ||
|           }
 | ||
|         }
 | ||
| 
 | ||
|         .item-count {
 | ||
|           color: #999;
 | ||
|           font-size: 24rpx;
 | ||
|           width: 120rpx;
 | ||
|           text-align: right;
 | ||
|         }
 | ||
|       }
 | ||
|     }
 | ||
| 
 | ||
|     .order-multi-item {
 | ||
|       @include flex-space-between();
 | ||
| 
 | ||
|       .item-wrap {
 | ||
|         margin-right: 20rpx;
 | ||
| 
 | ||
|         .item-image {
 | ||
|           width: 100rpx;
 | ||
|           height: 100rpx;
 | ||
|           border-radius: 10rpx;
 | ||
|         }
 | ||
|       }
 | ||
| 
 | ||
|       .product-count {
 | ||
|         color: #999;
 | ||
|         font-size: 24rpx;
 | ||
|         width: 120rpx;
 | ||
|         text-align: right;
 | ||
|       }
 | ||
|     }
 | ||
| 
 | ||
|     .order-btn-group {
 | ||
|       margin-top: 10rpx;
 | ||
|       @include flex-right();
 | ||
| 
 | ||
|       .order-btn {
 | ||
|         width: 120rpx;
 | ||
|         height: 36rpx;
 | ||
|         line-height: 36rpx;
 | ||
|         border-radius: 36rpx;
 | ||
|         border: 1px solid #777;
 | ||
|         color: #777;
 | ||
|         font-size: 22rpx;
 | ||
|         text-align: center;
 | ||
|         margin-left: 15rpx;
 | ||
|       }
 | ||
|     }
 | ||
|   }
 | ||
| }
 | ||
| </style>
 | 
