feat: 创建订单页提交功能

This commit is contained in:
jqtmviyu 2025-05-09 11:57:54 +08:00
parent 1e9cd792b4
commit fc3db08c65
2 changed files with 84 additions and 3 deletions

View File

@ -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%;

View File

@ -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,
})
}