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