From e925948dcd414f53b0b811ec2502896cf3498854 Mon Sep 17 00:00:00 2001 From: gyq <875626088@qq.com> Date: Fri, 1 Mar 2024 16:15:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E8=B4=AD=E7=89=A9=E8=BD=A6?= =?UTF-8?q?=E6=89=80=E6=9C=89=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/product.js | 53 +++++ src/components/skuModal.vue | 44 ++++- src/views/home/components/cartOperation.vue | 51 ++++- src/views/home/components/goods.vue | 24 ++- .../home/components/pendingCartModal.vue | 110 +++++++++++ src/views/home/index.vue | 183 +++++++++++++++--- 6 files changed, 417 insertions(+), 48 deletions(-) create mode 100644 src/views/home/components/pendingCartModal.vue diff --git a/src/api/product.js b/src/api/product.js index 4dd50d8..e60fa43 100644 --- a/src/api/product.js +++ b/src/api/product.js @@ -78,3 +78,56 @@ export function createCode(params) { }); } +/** + * 全部打包 + * @param {*} params + * @returns + */ +export function packall(data) { + return request({ + method: "post", + url: "/order/packall", + data + }); +} + +/** + * 删除购物车 + * @param {*} params + * @returns + */ +export function delCart(params) { + return request({ + method: "get", + url: "/order/delCart", + params + }); +} + +/** + * 挂单/j激活购物车 + * @param {*} params + * @returns + */ +export function cartStatus(data) { + return request({ + method: "post", + url: "/order/cartStatus", + data + }); +} + +/** + * 获取挂起购物车列表 + * @param {*} params + * @returns + */ +export function getCartList(params) { + return request({ + method: "get", + url: "/order/getCartList", + params + }); +} + + diff --git a/src/components/skuModal.vue b/src/components/skuModal.vue index b6d6342..c58ea38 100644 --- a/src/components/skuModal.vue +++ b/src/components/skuModal.vue @@ -40,7 +40,7 @@ import { queryProductSku } from '@/api/product' const store = useUser(); const emit = defineEmits(['success']) - +const type = ref('shop') const dialogVisible = ref(false) const goods = ref({}) @@ -54,7 +54,16 @@ const loading = ref(false) // 确认选择规格 function submitSku() { dialogVisible.value = false - emit('success', goodsInfo.value) + switch (type.value) { + case 'shop': + emit('success', goodsInfo.value) + break; + case 'cart': + emit('success', goods.value) + break; + default: + break; + } } // 选择规格 @@ -99,10 +108,13 @@ async function queryProductSkuAjax() { loading.value = true const res = await queryProductSku({ shopId: store.userInfo.shopId, - productId: goods.value.id, + productId: type.value == 'shop' ? goods.value.id : goods.value.productId, spec_tag: selectedSkuTag.value }) goodsInfo.value = res + if (type.value == 'cart') { + goods.value.skuId = res.id + } setTimeout(() => { loading.value = false }, 100) @@ -113,21 +125,37 @@ async function queryProductSkuAjax() { } // 显示规格 -function show(item) { +function show(item, t = 'shop') { goodsInfo.value = {} goods.value = {} selectedSkuNum.value = 0 dialogVisible.value = true + goods.value = "" goods.value = item + type.value = t if (typeof goods.value.tbProductSpec.specList == 'string') { goods.value.tbProductSpec.specList = JSON.parse(goods.value.tbProductSpec.specList) goods.value.tbProductSpec.specList.map(item => { let arr = [] item.value.map(val => { - arr.push({ - active: false, - name: val - }) + switch (type.value) { + case 'shop': + arr.push({ + active: false, + name: val + }) + break; + case 'cart': + // 如果从购物车选择规格需要做选中效果 + arr.push({ + active: goods.value.skuName.includes(val), + name: val + }) + break; + + default: + break; + } }) item.value = arr }) diff --git a/src/views/home/components/cartOperation.vue b/src/views/home/components/cartOperation.vue index 0e82f99..de8bfc2 100644 --- a/src/views/home/components/cartOperation.vue +++ b/src/views/home/components/cartOperation.vue @@ -13,31 +13,31 @@ -
+
规格
-
+
赠送
-
+
打包
-
+
删除
-
+
@@ -51,25 +51,40 @@
+ + \ No newline at end of file diff --git a/src/views/home/index.vue b/src/views/home/index.vue index 92f829a..a0c4996 100644 --- a/src/views/home/index.vue +++ b/src/views/home/index.vue @@ -2,14 +2,14 @@