|
|
- <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>
|