feat: ✨ 创建订单页提交功能
This commit is contained in:
parent
1e9cd792b4
commit
fc3db08c65
@ -84,7 +84,10 @@
|
||||
</view>
|
||||
<view
|
||||
class="button"
|
||||
:class="{ disabled: orderPreList == null || orderPreList?.goods.length === 0 }"
|
||||
:class="{
|
||||
disabled: !selectedAddress || orderPreList == null || orderPreList?.goods.length === 0,
|
||||
}"
|
||||
@tap="handleSubmitOrder"
|
||||
>
|
||||
提交订单
|
||||
</view>
|
||||
@ -92,7 +95,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { getMemberOrderPreAPI, getMemberOrderPreNowAPI } from '@/services/order'
|
||||
import { getMemberOrderPreAPI, getMemberOrderPreNowAPI, postCreateOrderAPI } from '@/services/order'
|
||||
import { useSelectedAddressStore } from '@/stores/modules/selectedAddress'
|
||||
import type { OrderPreResult } from '@/types/order'
|
||||
import { onShow } from '@dcloudio/uni-app'
|
||||
@ -151,6 +154,67 @@ const selectedAddress = computed(() => {
|
||||
orderPreList.value?.userAddresses.find((item) => item.isDefault === 1)
|
||||
)
|
||||
})
|
||||
|
||||
// 提交订单
|
||||
const handleSubmitOrder = async () => {
|
||||
// 判断是否有收货地址
|
||||
if (!selectedAddress.value) {
|
||||
uni.showToast({
|
||||
title: '请选择收货地址',
|
||||
icon: 'none',
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// 判断是否有商品
|
||||
if (!orderPreList.value || orderPreList.value.goods.length === 0) {
|
||||
uni.showToast({
|
||||
title: '没有可提交的商品',
|
||||
icon: 'none',
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
try {
|
||||
// 创建订单
|
||||
const res = await postCreateOrderAPI({
|
||||
addressId: selectedAddress.value.id,
|
||||
deliveryTimeType: activeDelivery.value.type as 1 | 2 | 3,
|
||||
buyerMessage: buyerMessage.value,
|
||||
payType: 1, // 在线支付
|
||||
payChannel: 2, // 微信支付
|
||||
goods: orderPreList.value.goods.map((item) => ({
|
||||
skuId: item.skuId,
|
||||
count: item.count,
|
||||
})),
|
||||
})
|
||||
|
||||
if (res.code === '1') {
|
||||
// 提交成功,跳转到支付页面
|
||||
uni.showToast({
|
||||
title: '订单提交成功',
|
||||
icon: 'success',
|
||||
})
|
||||
console.log(res.result)
|
||||
|
||||
// 跳转到支付页面,传递订单ID
|
||||
uni.redirectTo({
|
||||
url: `/pagesOrder/detail/detail?orderId=${res.result.id}`,
|
||||
})
|
||||
} else {
|
||||
uni.showToast({
|
||||
title: res.msg || '订单提交失败',
|
||||
icon: 'error',
|
||||
})
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('提交订单失败', error)
|
||||
uni.showToast({
|
||||
title: '订单提交失败',
|
||||
icon: 'error',
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
@ -162,6 +226,11 @@ page {
|
||||
background-color: #f4f4f4;
|
||||
}
|
||||
|
||||
.viewport {
|
||||
flex: unset;
|
||||
height: calc(100vh - 100rpx);
|
||||
}
|
||||
|
||||
.symbol::before {
|
||||
content: '¥';
|
||||
font-size: 80%;
|
||||
|
@ -1,4 +1,4 @@
|
||||
import type { OrderPreResult } from '@/types/order'
|
||||
import type { OrderCreateParams, OrderCreateResult, OrderPreResult } from '@/types/order'
|
||||
import { http } from '@/utils/http'
|
||||
|
||||
/** 订单状态枚举 */
|
||||
@ -53,3 +53,15 @@ export const getMemberOrderPreNowAPI = (data: getMemberOrderPreNowParams) => {
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 提交订单
|
||||
* @param data - 订单信息
|
||||
*/
|
||||
export const postCreateOrderAPI = (data: OrderCreateParams) => {
|
||||
return http<OrderCreateResult>({
|
||||
url: '/member/order',
|
||||
method: 'POST',
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user