| <template> | |
|   <view class="page__view"> | |
| 		<navbar title="订单详情" leftClick @leftClick="$utils.navigateBack" /> | |
| 
 | |
|     <view class="main"> | |
| 
 | |
|       <productCard :data="productCardData"></productCard> | |
| 
 | |
|       <orderInfoView :data="detail"></orderInfoView> | |
| 
 | |
|       <view class="notice"> | |
|         <view class="notice-header">下单须知</view> | |
|         <view class="notice-content"> | |
| 				  <uv-parse :content="configList['order_instructions']"></uv-parse> | |
|         </view> | |
|       </view> | |
| 
 | |
|     </view> | |
|    | |
| 		<view class="bottom"> | |
|       <view class="flex bar"> | |
|         <button plain class="flex flex-column btn btn-simple" open-type="contact"> | |
|           <image class="icon" src="@/pages_order/static/product/icon-service.png" mode="widthFix"></image> | |
|           <view>联系客服</view> | |
|         </button> | |
|         <!-- 已支付 --> | |
|         <template v-if="detail.status == 1"> | |
|           <button class="col btn" @click="onContactMentor">联系导师</button> | |
|           <button class="col btn" @click.stop="onFinish">已完成</button> | |
|         </template> | |
|         <!-- 待评价 --> | |
|         <template v-else-if="data.status == 2"> | |
|           <button class="col btn" @click="onComment">立即评价</button> | |
|           <button class="col btn" @click="onApplyService">申请售后</button> | |
|         </template> | |
|         <view class="col" v-else></view> | |
|       </view> | |
|     </view> | |
|  | |
|     <contactMentorPopup ref="contactMentorPopup"></contactMentorPopup> | |
| 		 | |
|     <commentPopup ref="commentPopup" @submitted="getData"></commentPopup> | |
|      | |
|     <servicePopup ref="servicePopup"></servicePopup> | |
|  | |
|   </view> | |
| </template> | |
|  | |
| <script> | |
| 	import { mapState } from 'vuex' | |
|  | |
|   import productCard from '@/pages_order/order/components/productCard.vue' | |
|   import orderInfoView from '@/pages_order/order/components/orderInfoView.vue' | |
|   import contactMentorPopup from '@/pages_order/order/components/contactMentorPopup.vue' | |
|   import commentPopup from '@/pages_order/comment/commentPopup.vue' | |
| 	import servicePopup from '@/components/base/servicePopup.vue' | |
|  | |
|   export default { | |
|     components: { | |
|       productCard, | |
|       orderInfoView, | |
|       contactMentorPopup, | |
|       commentPopup, | |
|       servicePopup, | |
|     }, | |
|     data() { | |
|       return { | |
|         id: null, | |
|         detail: {}, | |
|       } | |
|     }, | |
|     computed: { | |
| 			...mapState(['configList', 'userInfo', 'orderInfo']), | |
|       productCardData() { | |
|         const {  | |
|           activityId, | |
|           activityTitle,   | |
|           activityBrief, | |
|           activityTag, | |
|           startDate, | |
|           endDate, | |
|         } = this.detail | |
|  | |
|         return { | |
|           time: 'time', | |
|           product: { | |
|             id: activityId, | |
|             title: activityTitle, | |
|             brief: activityBrief, | |
|             tagDetails: activityTag, | |
|             dateList: [ | |
|               { | |
|                 id: 'time', | |
|                 startDate, | |
|                 endDate, | |
|               } | |
|             ] | |
|           } | |
|         } | |
|       }, | |
|     }, | |
|     onLoad(arg) { | |
|       const { id } = arg | |
|       this.id = id | |
|  | |
|       this.getData() | |
|     }, | |
|     async onPullDownRefresh() { | |
|       await this.getData() | |
|       uni.stopPullDownRefresh() | |
|     }, | |
|     methods: { | |
|       async getData() { | |
|           try { | |
|  | |
|             this.detail = await this.$fetch('queryOrderById', { orderId: this.id }) | |
|  | |
|           } catch (err) { | |
|  | |
|           } | |
|  | |
|           uni.stopPullDownRefresh() | |
|       }, | |
|       onComment() { | |
|         this.$refs.commentPopup.open(this.id, this.detail) | |
|       }, | |
|       onApplyService() { | |
|         this.$refs.servicePopup.open() | |
|       }, | |
|       onContactMentor() { | |
|         this.$refs.contactMentorPopup.open(this.detail.teacherPhone) | |
|       }, | |
|       async onFinish() { | |
|         try { | |
|           await this.$fetch('updateOrder', { id: this.id, status: '2' }) // 订单状态 0待支付 1已支付 2已完成 | |
|           this.getData() | |
|         } catch (err) { | |
|  | |
|         } | |
|       }, | |
|     }, | |
|   } | |
| </script> | |
|  | |
| <style scoped lang="scss"> | |
| 
 | |
|   @import '../styles/style.scss'; | |
| 
 | |
|   .bottom { | |
|     .bar { | |
|       .price { | |
|         justify-content: flex-start; | |
|         column-gap: 8rpx; | |
|          | |
|         &-label { | |
|           font-size: 24rpx; | |
|           color: #626262; | |
|         } | |
| 
 | |
|         &-unit, | |
|         &-value { | |
|           font-weight: 500; | |
|           color: #FF4800; | |
|         } | |
| 
 | |
|         &-unit { | |
|           font-size: 24rpx; | |
|         } | |
| 
 | |
|         &-value { | |
|           font-size: 40rpx; | |
|         } | |
|       } | |
| 
 | |
|       .btn-simple { | |
|         flex: none; | |
|         width: auto; | |
|         font-family: PingFang SC; | |
|         font-weight: 400; | |
|         font-size: 22rpx; | |
|         line-height: 1.1; | |
|         color: #999999; | |
|         border: none; | |
|         border-radius: unset; | |
| 
 | |
|         .icon { | |
|           width: 52rpx; | |
|           height: auto; | |
|           margin-bottom: 4rpx; | |
|         } | |
|       } | |
|     } | |
|   } | |
|    | |
| </style> |