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