From e83f9750ea6b2f614bb749ec1a531db7b6fbf3ab Mon Sep 17 00:00:00 2001 From: dzq Date: Fri, 27 Jun 2025 15:41:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E7=A7=9F=E7=94=A8=E6=9F=9C=E5=AD=90):=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=A7=9F=E7=94=A8=E6=9F=9C=E5=AD=90=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 实现租用柜子的完整功能流程,包括: 1. 新增租用柜子容器组件和状态管理 2. 修改商品列表组件支持租用模式 3. 调整结算页面适配租用柜子订单 4. 新增租用购物车逻辑 --- src/pages/product/ProductList.vue | 21 +- .../components/RentingCabinetContainer.vue | 397 ++++++++++++++++++ src/pages/product/components/cart.vue | 204 ++++++--- src/pages/product/components/checkout.vue | 162 ++++--- src/pinia/stores/rentingCabinet.ts | 76 ++++ 5 files changed, 749 insertions(+), 111 deletions(-) create mode 100644 src/pages/product/components/RentingCabinetContainer.vue create mode 100644 src/pinia/stores/rentingCabinet.ts diff --git a/src/pages/product/ProductList.vue b/src/pages/product/ProductList.vue index 952371b..b8c6f82 100644 --- a/src/pages/product/ProductList.vue +++ b/src/pages/product/ProductList.vue @@ -14,6 +14,8 @@ import { bindQyUserApi } from "@/common/apis/ab98" import { getShopListApi } from "@/common/apis/shop" import { ShopEntity } from "@/common/apis/shop/type" import ProductContainer from "./components/ProductContainer.vue" +import RentingCabinetContainer from "./components/RentingCabinetContainer.vue" +import { useRentingCabinetStoreOutside } from "@/pinia/stores/rentingCabinet" const router = useRouter() const route = useRoute() @@ -21,6 +23,7 @@ const route = useRoute() const productStore = useProductStore(); const cartStore = useCartStore(); const wxStore = useWxStore(); +const rentingCabinetStore = useRentingCabinetStoreOutside(); const { openid, corpidLogin, ab98User, qyUserId } = storeToRefs(wxStore); @@ -47,8 +50,13 @@ function handleShopSelect(selectedShopId: number) { shopId.value = selectedShopId; showShopList.value = false; productStore.setSelectedShop(shopList.value.find(shop => shop.shopId === selectedShopId)!); - productStore.getGoods(selectedShopId); + if(productStore.selectedShop?.mode == 3) { + rentingCabinetStore.fetchRentingCabinetDetail(selectedShopId); + } else { + productStore.getGoods(selectedShopId); + } cartStore.clearCart(); + rentingCabinetStore.clearRentingCart(); } @@ -157,10 +165,15 @@ async function handleAb98Bind() {
- + + @checkoutRenting="handleCheckout" + /> + +
请绑定汇邦云账号
diff --git a/src/pages/product/components/RentingCabinetContainer.vue b/src/pages/product/components/RentingCabinetContainer.vue new file mode 100644 index 0000000..65b7430 --- /dev/null +++ b/src/pages/product/components/RentingCabinetContainer.vue @@ -0,0 +1,397 @@ + + + + + diff --git a/src/pages/product/components/cart.vue b/src/pages/product/components/cart.vue index 9960e87..83d994a 100644 --- a/src/pages/product/components/cart.vue +++ b/src/pages/product/components/cart.vue @@ -1,45 +1,95 @@ @@ -50,54 +100,91 @@ function handleCheckout() {
清空购物车
- - + + + +
- +
- 合计:¥{{ totalPrice.toFixed(2) }} + + 合计:¥{{ isRentingMode ? rentingCabinetStore.rentingCartTotalPrice : totalPrice.toFixed(2) }}
@@ -109,6 +196,7 @@ function handleCheckout() {