From 4a6fe31c87143e234d10ec9fb79347b9f2b4ccc6 Mon Sep 17 00:00:00 2001 From: liruiqiang <3151805288@qq.com> Date: Sat, 23 Aug 2025 17:36:36 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=AD=E7=89=A9=E8=BD=A6=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=8E=E5=85=A8=E9=80=89=E4=B8=8E=E7=BB=93?= =?UTF-8?q?=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../vk-data-input-number-box.d.ts | 52 +++ src/pages.json | 8 +- src/pages/cart/cart.vue | 419 +----------------- src/pages/cart/cart2.vue | 13 + src/pages/cart/components/CartMain.vue | 489 +++++++++++++++++++++ src/pages/goods/goods.vue | 2 +- src/services/cart.ts | 28 ++ 7 files changed, 597 insertions(+), 414 deletions(-) create mode 100644 src/components/vk-data-input-number-box/vk-data-input-number-box.d.ts create mode 100644 src/pages/cart/cart2.vue create mode 100644 src/pages/cart/components/CartMain.vue diff --git a/src/components/vk-data-input-number-box/vk-data-input-number-box.d.ts b/src/components/vk-data-input-number-box/vk-data-input-number-box.d.ts new file mode 100644 index 0000000..65ffbb7 --- /dev/null +++ b/src/components/vk-data-input-number-box/vk-data-input-number-box.d.ts @@ -0,0 +1,52 @@ +import { Component } from '@uni-helper/uni-app-types' + +/** 步进器 */ +export type InputNumberBox = Component + +/** 步进器实例 */ +export type InputNumberBoxInstance = InstanceType + +/** 步进器属性 */ +export type InputNumberBoxProps = { + /** 输入框初始值(默认1) */ + modelValue: number + /** 用户可输入的最小值(默认0) */ + min: number + /** 用户可输入的最大值(默认99999) */ + max: number + /** 步长,每次加或减的值(默认1) */ + step: number + /** 是否禁用操作,包括输入框,加减按钮 */ + disabled: boolean + /** 输入框宽度,单位rpx(默认80) */ + inputWidth: string | number + /** 输入框和按钮的高度,单位rpx(默认50) */ + inputHeight: string | number + /** 输入框和按钮的背景颜色(默认#F2F3F5) */ + bgColor: string + /** 步进器标识符 */ + index: string + /** 输入框内容发生变化时触发 */ + onChange: (event: InputNumberBoxEvent) => void + /** 输入框失去焦点时触发 */ + onBlur: (event: InputNumberBoxEvent) => void + /** 点击增加按钮时触发 */ + onPlus: (event: InputNumberBoxEvent) => void + /** 点击减少按钮时触发 */ + onMinus: (event: InputNumberBoxEvent) => void +} + +/** 步进器事件对象 */ +export type InputNumberBoxEvent = { + /** 输入框当前值 */ + value: number + /** 步进器标识符 */ + index: string +} + +/** 全局组件类型声明 */ +declare module 'vue' { + export interface GlobalComponents { + 'vk-data-input-number-box': InputNumberBox + } +} diff --git a/src/pages.json b/src/pages.json index 51411f7..88a704c 100644 --- a/src/pages.json +++ b/src/pages.json @@ -36,6 +36,12 @@ } }, { + "path": "pages/cart/cart2", + "style": { + "navigationBarTitleText": "购物车" + } + }, + { "path": "pages/category/category", "style": { "navigationBarTitleText": "分类" @@ -132,7 +138,7 @@ }, { "path" : "address-form/address-form", - "style" : + "style" : { "navigationBarTitleText" : "" } diff --git a/src/pages/cart/cart.vue b/src/pages/cart/cart.vue index 2b6d68e..95fe8b8 100644 --- a/src/pages/cart/cart.vue +++ b/src/pages/cart/cart.vue @@ -1,418 +1,13 @@ - - - diff --git a/src/pages/cart/cart2.vue b/src/pages/cart/cart2.vue new file mode 100644 index 0000000..95fe8b8 --- /dev/null +++ b/src/pages/cart/cart2.vue @@ -0,0 +1,13 @@ + + + + + diff --git a/src/pages/cart/components/CartMain.vue b/src/pages/cart/components/CartMain.vue new file mode 100644 index 0000000..5e6e019 --- /dev/null +++ b/src/pages/cart/components/CartMain.vue @@ -0,0 +1,489 @@ + + + + + diff --git a/src/pages/goods/goods.vue b/src/pages/goods/goods.vue index 22f1f28..70c9d9d 100644 --- a/src/pages/goods/goods.vue +++ b/src/pages/goods/goods.vue @@ -98,7 +98,7 @@ - + 购物车 diff --git a/src/services/cart.ts b/src/services/cart.ts index e22ba46..a1e3a12 100644 --- a/src/services/cart.ts +++ b/src/services/cart.ts @@ -34,3 +34,31 @@ export const deleteMemberCartAPI = (data: { ids: string[] }) => { data, }) } + +/** + * 修改购物车单品 + * @param skuId SKUID + * @param data selected 选中状态 count 商品数量 + */ +export const putMemberCartBySkuIdAPI = ( + skuId: string, + data: { selected?: boolean; count?: number }, +) => { + return http({ + method: 'PUT', + url: `/member/cart/${skuId}`, + data, + }) +} + +/** + * 购物车全选/取消全选 + * @param data selected 是否选中 + */ +export const putMemberCartSelectedAPI = (data: { selected: boolean }) => { + return http({ + method: 'PUT', + url: '/member/cart/selected', + data, + }) +}