From f8673b85533151446a4ec8064ea1d230654d2ebc Mon Sep 17 00:00:00 2001 From: jqtmviyu Date: Thu, 8 May 2025 16:40:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20:sparkles:=20=E5=A1=AB=E5=86=99?= =?UTF-8?q?=E8=AE=A2=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages.json | 11 + src/pages/cart/components/cartMain.vue | 5 +- src/pagesMember/address/address.vue | 18 +- src/pagesOrder/create/create.vue | 361 +++++++++++++++++++++++++ src/services/order.ts | 38 +++ src/stores/modules/member.ts | 2 +- src/stores/modules/selectedAddress.ts | 19 ++ src/types/order.d.ts | 165 +++++++++++ 8 files changed, 614 insertions(+), 5 deletions(-) create mode 100644 src/pagesOrder/create/create.vue create mode 100644 src/services/order.ts create mode 100644 src/stores/modules/selectedAddress.ts create mode 100644 src/types/order.d.ts diff --git a/src/pages.json b/src/pages.json index dcad009..bd9744d 100644 --- a/src/pages.json +++ b/src/pages.json @@ -143,6 +143,17 @@ } } ] + }, + { + "root": "pagesOrder", + "pages": [ + { + "path": "create/create", + "style": { + "navigationBarTitleText": "新建订单" + } + } + ] } ], diff --git a/src/pages/cart/components/cartMain.vue b/src/pages/cart/components/cartMain.vue index 26b0bd5..ee8cdc2 100644 --- a/src/pages/cart/components/cartMain.vue +++ b/src/pages/cart/components/cartMain.vue @@ -213,9 +213,8 @@ const handlerPay = () => { }) return } - uni.showToast({ - title: '跳转结算页面占用', - icon: 'none', + uni.navigateTo({ + url: '/pagesOrder/create/create', }) } diff --git a/src/pagesMember/address/address.vue b/src/pagesMember/address/address.vue index c2831a3..6139237 100644 --- a/src/pagesMember/address/address.vue +++ b/src/pagesMember/address/address.vue @@ -7,7 +7,7 @@ - + {{ item.receiver }} {{ item.contact }} @@ -42,6 +42,7 @@ diff --git a/src/services/order.ts b/src/services/order.ts new file mode 100644 index 0000000..f7062ae --- /dev/null +++ b/src/services/order.ts @@ -0,0 +1,38 @@ +import type { OrderPreResult } from '@/types/order' +import { http } from '@/utils/http' + +/** 订单状态枚举 */ +export enum OrderState { + /** 待付款 */ + DaiFuKuan = 1, + /** 待发货 */ + DaiFaHuo = 2, + /** 待收货 */ + DaiShouHuo = 3, + /** 待评价 */ + DaiPingJia = 4, + /** 已完成 */ + YiWanCheng = 5, + /** 已取消 */ + YiQuXiao = 6, +} +/** 订单状态列表 */ +export const orderStateList = [ + { id: 0, text: '' }, + { id: 1, text: '待付款' }, + { id: 2, text: '待发货' }, + { id: 3, text: '待收货' }, + { id: 4, text: '待评价' }, + { id: 5, text: '已完成' }, + { id: 6, text: '已取消' }, +] + +/** + * 获取预付订单 + */ +export const getMemberOrderAPI = () => { + return http({ + url: '/member/order/pre', + method: 'GET', + }) +} diff --git a/src/stores/modules/member.ts b/src/stores/modules/member.ts index 8adc24f..63cf540 100644 --- a/src/stores/modules/member.ts +++ b/src/stores/modules/member.ts @@ -1,4 +1,4 @@ -import type { LoginResult, ProfileDetail, ProfileParams } from '@/types/member' +import type { LoginResult, ProfileDetail } from '@/types/member' import { defineStore } from 'pinia' import { ref } from 'vue' diff --git a/src/stores/modules/selectedAddress.ts b/src/stores/modules/selectedAddress.ts new file mode 100644 index 0000000..41374a3 --- /dev/null +++ b/src/stores/modules/selectedAddress.ts @@ -0,0 +1,19 @@ +import type { AddressItem } from '@/types/address' +import { defineStore } from 'pinia' +import { ref } from 'vue' + +/** + * 选中的地址 + */ +export const useSelectedAddressStore = defineStore('selectedAddress', () => { + const selectedAddress = ref(null) + + const setSelectedAddress = (address: AddressItem) => { + selectedAddress.value = address + } + + return { + selectedAddress, + setSelectedAddress, + } +}) diff --git a/src/types/order.d.ts b/src/types/order.d.ts new file mode 100644 index 0000000..153ffe5 --- /dev/null +++ b/src/types/order.d.ts @@ -0,0 +1,165 @@ +import type { OrderState } from '@/services/order' +import type { AddressItem } from './address' +import type { PageParams } from '@/types/global' + +/** 获取预付订单 返回信息 */ +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 +} + +/** 订单详情 返回信息 */ +export type OrderResult = { + /** 订单编号 */ + id: string + /** 订单状态,1为待付款、2为待发货、3为待收货、4为待评价、5为已完成、6为已取消 */ + orderState: OrderState + /** 倒计时--剩余的秒数 -1 表示已经超时,正数表示倒计时未结束 */ + countdown: number + /** 商品集合 [ 商品信息 ] */ + skus: OrderSkuItem[] + /** 收货人 */ + receiverContact: string + /** 收货人手机 */ + receiverMobile: string + /** 收货人地址 */ + receiverAddress: string + /** 下单时间 */ + createTime: string + /** 商品总价 */ + totalMoney: number + /** 运费 */ + postFee: number + /** 应付金额 */ + payMoney: number +} + +/** 商品信息 */ +export type OrderSkuItem = { + /** sku id */ + id: string + /** 商品 id */ + spuId: string + /** 商品名称 */ + name: string + /** 商品属性文字 */ + attrsText: string + /** 数量 */ + quantity: number + /** 购买时单价 */ + curPrice: number + /** 图片地址 */ + image: string +} + +/** 物流信息 返回值类型 */ +export type OrderLogisticResult = { + /** 快递公司 */ + company: { + /** 公司名称 */ + name: string + /** 快递编号 */ + number: string + /** 联系电话 */ + tel: string + } + /** 商品件数 */ + count: number + /** 物流日志 */ + list: LogisticItem[] +} + +/** 物流日志 */ +export type LogisticItem = { + /** 信息ID */ + id: string + /** 信息文字 */ + text: string + /** 时间 */ + time: string +} + +/** 订单列表参数 */ +export type OrderListParams = PageParams & { orderState: number } + +/** 订单列表 */ +export type OrderListResult = { + /** 总记录数 */ + counts: number + /** 数据集合 [ 订单信息 ] */ + items: OrderItem[] + /** 当前页码 */ + page: number + /** 总页数 */ + pages: number + /** 页尺寸 */ + pageSize: number +} + +/** 订单列表项 */ +export type OrderItem = OrderResult & { + /** 总件数 */ + totalNum: number +}