From 5b49b3afbdf0f2aa03d03bdbd687138bdec13699 Mon Sep 17 00:00:00 2001 From: liruiqiang <3151805288@qq.com> Date: Tue, 9 Sep 2025 17:50:24 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=A8=A1=E5=9D=97=E5=A1=AB?= =?UTF-8?q?=E5=86=99=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages.json | 30 +++ src/pages/goods/goods.vue | 7 + src/pagesOrder/create/create.vue | 385 +++++++++++++++++++++++++++++++++++++++ src/services/order.ts | 39 ++++ src/types/order.d.ts | 69 +++++++ 5 files changed, 530 insertions(+) create mode 100644 src/pagesOrder/create/create.vue create mode 100644 src/services/order.ts create mode 100644 src/types/order.d.ts diff --git a/src/pages.json b/src/pages.json index 88a704c..d47afa5 100644 --- a/src/pages.json +++ b/src/pages.json @@ -144,6 +144,36 @@ } } ] + }, + { + "root": "pagesOrder", + "pages": [ + { + "path": "create/create", + "style": { + "navigationBarTitleText": "填写订单" + } + }, + { + "path": "detail/detail", + "style": { + "navigationBarTitleText": "订单详情", + "navigationStyle": "custom" + } + }, + { + "path": "payment/payment", + "style": { + "navigationBarTitleText": "支付结果" + } + }, + { + "path": "list/list", + "style": { + "navigationBarTitleText": "订单列表" + } + } + ] } ], // 分包预下载规则 diff --git a/src/pages/goods/goods.vue b/src/pages/goods/goods.vue index 70c9d9d..ada5833 100644 --- a/src/pages/goods/goods.vue +++ b/src/pages/goods/goods.vue @@ -128,6 +128,7 @@ backgroundColor: '#E9F8F5', }" @add-cart="onAddCart" + @buy-now="onBuyNow" /> @@ -249,6 +250,12 @@ const onAddCart = async (ev: SkuPopupEvent) => { uni.showToast({ title: '添加成功' }) isShowSku.value = false } + +// 立即购买 +const onBuyNow = (ev: SkuPopupEvent) => { + uni.navigateTo({ url: `/pagesOrder/create/create?skuId=${ev._id}&count=${ev.buy_num}` }) + isShowSku.value = false +} diff --git a/src/services/order.ts b/src/services/order.ts new file mode 100644 index 0000000..7ad2ba5 --- /dev/null +++ b/src/services/order.ts @@ -0,0 +1,39 @@ +import type { OrderCreateParams, OrderPreResult } from '@/types/order' +import { http } from '@/utils/http' + +/** + * 填写订单-获取预付订单 + */ +export const getMemberOrderPreAPI = () => { + return http({ + method: 'GET', + url: '/member/order/pre', + }) +} + +/** + * 填写订单-获取立即购买订单 + */ +export const getMemberOrderPreNowAPI = (data: { + skuId: string + count: string + addressId?: string +}) => { + return http({ + method: 'GET', + url: '/member/order/pre/now', + data, + }) +} + +/** + * 提交订单 + * @param data 请求参数 + */ +export const postMemberOrderAPI = (data: OrderCreateParams) => { + return http<{ id: string }>({ + method: 'POST', + url: '/member/order', + data, + }) +} diff --git a/src/types/order.d.ts b/src/types/order.d.ts new file mode 100644 index 0000000..de56d6a --- /dev/null +++ b/src/types/order.d.ts @@ -0,0 +1,69 @@ +import type { AddressItem } from './address' + +/** 获取预付订单 返回信息 */ +export type OrderPreResult = { + /** 商品集合 [ 商品信息 ] */ + goods: OrderPreGoods[] + /** 结算信息 */ + summary: { + /** 商品总价 */ + totalPrice: number + /** 邮费 */ + postFee: number + /** 应付金额 */ + totalPayPrice: number + } + /** 用户地址列表 [ 地址信息 ] */ + userAddresses: AddressItem[] +} + +/** 商品信息 */ +export type OrderPreGoods = { + /** 属性文字,例如“颜色:瓷白色 尺寸:8寸” */ + attrsText: string + /** 数量 */ + count: number + /** id */ + id: string + /** 商品名称 */ + name: string + /** 实付单价 */ + payPrice: string + /** 图片 */ + picture: string + /** 原单价 */ + price: string + /** SKUID */ + skuId: string + /** 实付价格小计 */ + totalPayPrice: string + /** 小计总价 */ + totalPrice: string +} + +/** 提交订单 请求参数 */ +export type OrderCreateParams = { + /** 所选地址Id */ + addressId: string + /** 配送时间类型,1为不限,2为工作日,3为双休或假日 */ + deliveryTimeType: number + /** 订单备注 */ + buyerMessage: string + /** 商品集合[ 商品信息 ] */ + goods: { + /** 数量 */ + count: number + /** skuId */ + skuId: string + }[] + /** 支付渠道:支付渠道,1支付宝、2微信--支付方式为在线支付时,传值,为货到付款时,不传值 */ + payChannel: 1 | 2 + /** 支付方式,1为在线支付,2为货到付款 */ + payType: 1 | 2 +} + +/** 提交订单 返回信息 */ +export type OrderCreateResult = { + /** 订单Id */ + id: string +}