Files
2023-11-14 17:21:03 +08:00

259 lines
5.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view>
<view
:class="['order', className]"
v-if="data"
>
<view
class="order-header"
@tap="toOrderInfo"
>
<view class="order-logo">
<view class="color-y">Y</view>
<view>SHOP商城</view>
</view>
<view
class="order-status status-2"
v-if="data._status"
>
{{ data._status._title }}
</view>
</view>
<view
class="order-goods"
@tap="toOrderInfo"
>
<view
v-for="(item, index) in data.cartInfo"
class="order-evaluate"
:class="{evaluateBtn: data._status._type == 3}"
>
<view
v-if="data._status._type == 3 && item.isReply === 0"
class="order-actions-primary order-evaluate-btn"
@tap.stop="toEvaluate(item)"
>
去评价
</view>
<goods
list
interval
desc="3"
showAction
model
:purchase="item.cartNum"
:data="item.productInfo"
>
<template #price>
{{ item.truePrice }}
</template>
</goods>
</view>
</view>
<view
class="order-info"
@tap="toOrderInfo"
>
<view class="text">总价¥{{ data.cost }}</view>
<view class="text">优惠¥{{ couponPrice }}</view>
<view class="text">运费¥{{ totalPostage }}</view>
<view class="text flex flex-ai__center">总计
<view class="total-price">¥{{ totalPrice }}</view>
</view>
</view>
<view v-if="data._status">
<view
class="order-actions"
>
<!-- 未支付 -->
<view class="order-actions-left">
</view>
<view class="order-actions-btns">
<view
v-if="data._status._type == 0"
class="order-actions-default"
@tap="handleCancel"
>
取消订单
</view>
<view
v-if="data._status._type == 0"
class="order-actions-primary"
@tap="handlePay"
>
立即付款
</view>
<view
v-if="['1','2','3','4'].includes(data._status._type)"
class="order-actions-default"
@tap="toSelectRefundGood"
>
申请退款
</view>
<view
class="order-actions-default"
v-if="data._status._type == 2"
@tap="toOrderInfo"
>
查看物流
</view>
<view
v-if="data._status._type == 2"
class="order-actions-primary"
@tap="handleOrderTake"
>
确认收货
</view>
<view
v-if="['4'].includes(data._status._type)"
class="order-actions-default"
@tap="handleDelete"
>
删除订单
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script setup>
import { ref } from 'vue';
import { orderCancel, orderDelete, orderTake } from '@/api/order'
import { useRouter } from "@/hooks/useRouter";
const {push} = useRouter()
const emit = defineEmits(['refresh', 'pay'])
const props = defineProps(['class', 'data'])
const data = ref(props.data)
// 运费金额
const totalPostage = ref(props.data.totalPostage)
// 实际支付金额
const payPrice = ref(props.data.payPrice)
// 优惠券金额
const couponPrice = ref(props.data.couponPrice)
// 订单总价
const totalPrice = ref(props.data.totalPrice)
const handleCancel = async () => {
uni.showModal({
title: '提示',
content: '确认取消订单',
success: async (res) => {
if (res.confirm) {
await orderCancel({
id: data.value.orderId
})
data.value = null
uni.showToast({
title: '已取消',
duration: 2000
});
} else if (res.cancel) {
}
}
});
}
const toSelectRefundGood = () => {
push({url: '/pages/selectRefundGood/selectRefundGood'}, {
data: {
orderId: data.value.orderId,
id: data.value.id,
status: data.value.status
}
})
}
const handlePay = () => {
emit('pay', data.value.orderId)
/* push({url: '/pages/selectPlay/selectPlay'}, {
data: {
key: data.value.unique,
orderId: data.value.orderId,
}
})*/
}
const toOrderInfo = () => {
push({url: '/pages/orderInfo/orderInfo'}, {
data: {
key: data.value.unique,
orderId: data.value.orderId,
}
})
}
const toEvaluate = (item) => {
push({url: '/pages/evaluate/evaluate'}, {
data: {
unique: item.unique,
orderId: data.value.orderId,
}
})
}
const handleDelete = async () => {
uni.showModal({
title: '提示',
content: '确认取消订单',
success: async (res) => {
if (res.confirm) {
await orderDelete({
uni: data.value.orderId
})
data.value = null
uni.showToast({
title: '已删除',
duration: 2000
});
} else if (res.cancel) {
}
}
});
}
const handleOrderTake = async () => {
uni.showModal({
title: '提示',
content: '确认收货',
success: async (res) => {
if (res.confirm) {
let option = {
uni: data.value.orderId,
}
await orderTake(option)
emit('refresh')
uni.showToast({
title: '已收货',
duration: 2000
});
} else if (res.cancel) {
}
}
});
}
</script>
<style lang="scss">
</style>