| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  | <template> | 
					
						
							|  |  |  |  |   <view class="content"> | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |     <!-- 选项卡区域 - 移到外层 --> | 
					
						
							|  |  |  |  |     <view class="tab-container" v-if="wlData.length > 0"> | 
					
						
							|  |  |  |  |       <view | 
					
						
							|  |  |  |  |         v-for="(item, index) in wlData" | 
					
						
							|  |  |  |  |         :key="index" | 
					
						
							|  |  |  |  |         @click="isClick = index" | 
					
						
							|  |  |  |  |         class="tab-item" | 
					
						
							|  |  |  |  |         :class="{ active: isClick === index }" | 
					
						
							|  |  |  |  |       > | 
					
						
							| 
									
										
										
										
											2025-05-30 09:06:40 +08:00
										 |  |  |  |         <view class="tab-text">快递包裹{{ index + 1 }}</view> | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |         <view class="tab-underline" :class="{ show: isClick === index }"></view> | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |       </view> | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |     </view> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     <!-- 分隔区域 --> | 
					
						
							|  |  |  |  |     <view class="separator"></view> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     <!-- 当前选中的物流信息 --> | 
					
						
							|  |  |  |  |     <view v-if="wlData.length > 0 && wlData[isClick]"> | 
					
						
							|  |  |  |  |       <!-- 物流信息头部 --> | 
					
						
							|  |  |  |  |       <view class="logistics-header"> | 
					
						
							|  |  |  |  |         <view class="logistics-info"> | 
					
						
							|  |  |  |  |           <image src="@/static/images/wl.png" class="logistics-icon" /> | 
					
						
							|  |  |  |  |           <view class="logistics-details"> | 
					
						
							|  |  |  |  |             <view class="company-name" | 
					
						
							|  |  |  |  |               >物流公司:{{ wlData[isClick].expressName }}</view | 
					
						
							|  |  |  |  |             > | 
					
						
							|  |  |  |  |             <view class="tracking-number" | 
					
						
							|  |  |  |  |               >物流单号:{{ wlData[isClick].expressCode }}</view | 
					
						
							|  |  |  |  |             > | 
					
						
							|  |  |  |  |           </view> | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |         </view> | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |         <view class="copy-btn" @click="onCopy(wlData[isClick].expressCode)" | 
					
						
							|  |  |  |  |           >复制</view | 
					
						
							|  |  |  |  |         > | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |       </view> | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |       <!-- 物流轨迹时间线 --> | 
					
						
							|  |  |  |  |       <view class="timeline-container"> | 
					
						
							|  |  |  |  |         <view | 
					
						
							|  |  |  |  |           class="timeline-item" | 
					
						
							|  |  |  |  |           v-for="(ctem, cndex) in wlData[isClick].detailList" | 
					
						
							|  |  |  |  |           :key="cndex" | 
					
						
							|  |  |  |  |         > | 
					
						
							|  |  |  |  |           <view class="timeline-left"> | 
					
						
							|  |  |  |  |             <view class="timeline-dot" :class="{ active: cndex === 0 }"></view> | 
					
						
							|  |  |  |  |             <view | 
					
						
							|  |  |  |  |               class="timeline-line" | 
					
						
							|  |  |  |  |               v-if="cndex < wlData[isClick].detailList.length - 1" | 
					
						
							|  |  |  |  |             ></view> | 
					
						
							|  |  |  |  |           </view> | 
					
						
							|  |  |  |  |           <view class="timeline-content"> | 
					
						
							|  |  |  |  |             <view class="timeline-time" :class="{ active: cndex === 0 }">{{ | 
					
						
							|  |  |  |  |               ctem.time | 
					
						
							|  |  |  |  |             }}</view> | 
					
						
							|  |  |  |  |             <view class="timeline-desc" :class="{ active: cndex === 0 }">{{ | 
					
						
							|  |  |  |  |               ctem.context | 
					
						
							|  |  |  |  |             }}</view> | 
					
						
							|  |  |  |  |           </view> | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |         </view> | 
					
						
							|  |  |  |  |       </view> | 
					
						
							|  |  |  |  |     </view> | 
					
						
							|  |  |  |  |   </view> | 
					
						
							|  |  |  |  | </template> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <script> | 
					
						
							|  |  |  |  | import * as api from '@/config/order.js' | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | export default { | 
					
						
							|  |  |  |  |   data() { | 
					
						
							|  |  |  |  |     return { | 
					
						
							|  |  |  |  |       wlData: [], | 
					
						
							|  |  |  |  |       isClick: 0, | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   onLoad(options) { | 
					
						
							|  |  |  |  |     this.openWl(options.id) | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  |   onShow() {}, | 
					
						
							|  |  |  |  |   methods: { | 
					
						
							|  |  |  |  |     openWl(id) { | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |       api.expressList(id).then(res => { | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |         if (res.code == 200) { | 
					
						
							|  |  |  |  |           this.wlData = res.data | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |       }) | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |     onCopy(code) { | 
					
						
							|  |  |  |  |       let text = code + '' | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |       this.$copyText(text).then(res => { | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |         uni.showToast({ | 
					
						
							| 
									
										
										
										
											2025-04-01 21:35:18 +08:00
										 |  |  |  |           title: '复制成功', | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |           icon: 'none', | 
					
						
							|  |  |  |  |         }) | 
					
						
							|  |  |  |  |       }) | 
					
						
							|  |  |  |  |     }, | 
					
						
							|  |  |  |  |   }, | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | </script> | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | <style lang="scss" scoped> | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  | .content { | 
					
						
							|  |  |  |  |   background-color: #f5f5f5; | 
					
						
							|  |  |  |  |   min-height: 100vh; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* 选项卡样式 */ | 
					
						
							|  |  |  |  | .tab-container { | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   display: flex; | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |   background: #ffffff; | 
					
						
							|  |  |  |  |   padding: 20rpx 40rpx 0; | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | .tab-item { | 
					
						
							|  |  |  |  |   flex: 1; | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   text-align: center; | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |   padding-bottom: 20rpx; | 
					
						
							|  |  |  |  |   cursor: pointer; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .tab-text { | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   font-size: 28rpx; | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |   color: #999999; | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   font-weight: 400; | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |   margin-bottom: 8rpx; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .tab-item.active .tab-text { | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   color: #333333; | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |   font-weight: 500; | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | .tab-underline { | 
					
						
							|  |  |  |  |   height: 4rpx; | 
					
						
							|  |  |  |  |   background: transparent; | 
					
						
							|  |  |  |  |   margin: 0 auto; | 
					
						
							|  |  |  |  |   width: 60rpx; | 
					
						
							|  |  |  |  |   border-radius: 2rpx; | 
					
						
							|  |  |  |  |   transition: all 0.3s ease; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .tab-underline.show { | 
					
						
							|  |  |  |  |   background: #005bac; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* 分隔区域 */ | 
					
						
							|  |  |  |  | .separator { | 
					
						
							|  |  |  |  |   height: 20rpx; | 
					
						
							|  |  |  |  |   background: #f5f5f5; | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | /* 物流信息头部 */ | 
					
						
							|  |  |  |  | .logistics-header { | 
					
						
							|  |  |  |  |   background: #ffffff; | 
					
						
							|  |  |  |  |   padding: 30rpx 40rpx; | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   display: flex; | 
					
						
							|  |  |  |  |   align-items: center; | 
					
						
							|  |  |  |  |   justify-content: space-between; | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |   border-bottom: 1rpx solid #eeeeee; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .logistics-info { | 
					
						
							|  |  |  |  |   display: flex; | 
					
						
							|  |  |  |  |   align-items: center; | 
					
						
							|  |  |  |  |   flex: 1; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .logistics-icon { | 
					
						
							|  |  |  |  |   width: 88rpx; | 
					
						
							|  |  |  |  |   height: 88rpx; | 
					
						
							|  |  |  |  |   margin-right: 20rpx; | 
					
						
							|  |  |  |  |   border-radius: 50%; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .logistics-details { | 
					
						
							|  |  |  |  |   flex: 1; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .company-name { | 
					
						
							|  |  |  |  |   font-size: 28rpx; | 
					
						
							|  |  |  |  |   color: #333333; | 
					
						
							|  |  |  |  |   font-weight: 500; | 
					
						
							|  |  |  |  |   margin-bottom: 8rpx; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .tracking-number { | 
					
						
							|  |  |  |  |   font-size: 24rpx; | 
					
						
							|  |  |  |  |   color: #666666; | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   font-weight: 400; | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .copy-btn { | 
					
						
							|  |  |  |  |   padding: 12rpx 24rpx; | 
					
						
							|  |  |  |  |   background: #f8f8f8; | 
					
						
							|  |  |  |  |   border: 1rpx solid #e6e6e6; | 
					
						
							|  |  |  |  |   border-radius: 8rpx; | 
					
						
							|  |  |  |  |   font-size: 24rpx; | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   color: #666666; | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |   cursor: pointer; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .copy-btn:active { | 
					
						
							|  |  |  |  |   background: #eeeeee; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* 时间线样式 */ | 
					
						
							|  |  |  |  | .timeline-container { | 
					
						
							|  |  |  |  |   background: #ffffff; | 
					
						
							|  |  |  |  |   padding: 0 40rpx 40rpx; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .timeline-item { | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   display: flex; | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |   position: relative; | 
					
						
							|  |  |  |  |   padding: 30rpx 0; | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | .timeline-left { | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   display: flex; | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |   flex-direction: column; | 
					
						
							|  |  |  |  |   align-items: center; | 
					
						
							|  |  |  |  |   margin-right: 30rpx; | 
					
						
							|  |  |  |  |   position: relative; | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | .timeline-dot { | 
					
						
							|  |  |  |  |   width: 20rpx; | 
					
						
							|  |  |  |  |   height: 20rpx; | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  |   border-radius: 50%; | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |   background: #cccccc; | 
					
						
							|  |  |  |  |   position: relative; | 
					
						
							|  |  |  |  |   z-index: 2; | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | .timeline-dot.active { | 
					
						
							|  |  |  |  |   background: #ff4757; | 
					
						
							|  |  |  |  |   width: 24rpx; | 
					
						
							|  |  |  |  |   height: 24rpx; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .timeline-line { | 
					
						
							|  |  |  |  |   width: 2rpx; | 
					
						
							|  |  |  |  |   background: #eeeeee; | 
					
						
							|  |  |  |  |   position: absolute; | 
					
						
							|  |  |  |  |   top: 24rpx; | 
					
						
							|  |  |  |  |   bottom: -30rpx; | 
					
						
							|  |  |  |  |   left: 50%; | 
					
						
							|  |  |  |  |   transform: translateX(-50%); | 
					
						
							|  |  |  |  |   z-index: 1; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .timeline-content { | 
					
						
							|  |  |  |  |   flex: 1; | 
					
						
							|  |  |  |  |   padding-top: 2rpx; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .timeline-time { | 
					
						
							|  |  |  |  |   font-size: 24rpx; | 
					
						
							|  |  |  |  |   color: #999999; | 
					
						
							|  |  |  |  |   margin-bottom: 8rpx; | 
					
						
							|  |  |  |  |   font-weight: 400; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .timeline-time.active { | 
					
						
							|  |  |  |  |   color: #ff4757; | 
					
						
							|  |  |  |  |   font-weight: 500; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | .timeline-desc { | 
					
						
							|  |  |  |  |   font-size: 28rpx; | 
					
						
							|  |  |  |  |   color: #666666; | 
					
						
							|  |  |  |  |   line-height: 1.5; | 
					
						
							|  |  |  |  |   font-weight: 400; | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  | } | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | .timeline-desc.active { | 
					
						
							|  |  |  |  |   color: #333333; | 
					
						
							|  |  |  |  |   font-weight: 500; | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | /* 移除旧样式 */ | 
					
						
							|  |  |  |  | .tab, | 
					
						
							|  |  |  |  | .tab_i, | 
					
						
							|  |  |  |  | .heng, | 
					
						
							|  |  |  |  | .heng1, | 
					
						
							|  |  |  |  | .hui, | 
					
						
							|  |  |  |  | .head_t, | 
					
						
							|  |  |  |  | .disflex, | 
					
						
							|  |  |  |  | .wl_tree, | 
					
						
							|  |  |  |  | .zhong, | 
					
						
							|  |  |  |  | .qiu, | 
					
						
							|  |  |  |  | .gun, | 
					
						
							|  |  |  |  | .tree_r, | 
					
						
							|  |  |  |  | .tree_t, | 
					
						
							|  |  |  |  | .red1, | 
					
						
							|  |  |  |  | .red2, | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  | .red3 { | 
					
						
							| 
									
										
										
										
											2025-05-29 14:21:56 +08:00
										 |  |  |  |   display: none; | 
					
						
							| 
									
										
										
										
											2025-03-23 09:29:40 +08:00
										 |  |  |  | } | 
					
						
							|  |  |  |  | </style> |