diff --git a/src/components/vk-data-goods-sku-popup/vk-data-goods-sku-popup.d.ts b/src/components/vk-data-goods-sku-popup/vk-data-goods-sku-popup.d.ts index 1ca47a6..b1e04b3 100644 --- a/src/components/vk-data-goods-sku-popup/vk-data-goods-sku-popup.d.ts +++ b/src/components/vk-data-goods-sku-popup/vk-data-goods-sku-popup.d.ts @@ -82,13 +82,13 @@ export type SkuPopupProps = { selectArr?: string[] /** 打开弹出层 */ - onOpen: () => void + open: () => void /** 关闭弹出层 */ - onClose: () => void + close: () => void /** 点击加入购物车时(需选择完SKU才会触发)*/ - onAddCart: (event: SkuPopupEvent) => void + cart: (event: SkuPopupEvent) => void /** 点击立即购买时(需选择完SKU才会触发)*/ - onBuyNow: (event: SkuPopupEvent) => void + buy: (event: SkuPopupEvent) => void } /** 商品信息本地数据源 */ diff --git a/src/pages/goods/goods.vue b/src/pages/goods/goods.vue index eba8289..5d6001b 100644 --- a/src/pages/goods/goods.vue +++ b/src/pages/goods/goods.vue @@ -32,7 +32,7 @@ 选择 - 请选择商品规格 + {{ selectedSku }} 送至 @@ -105,8 +105,8 @@ - 加入购物车 - 立即购买 + 加入购物车 + 立即购买 @@ -118,10 +118,15 @@ @@ -130,11 +135,16 @@ import { getGoodsAPI } from '@/services/goods' import type { GoodsResult } from '@/types/goods' import { onLoad } from '@dcloudio/uni-app' -import { ref } from 'vue' +import { computed, ref } from 'vue' import ServicePanel from './components/ServicePanel.vue' import AddressPanel from './components/AddressPanel.vue' import PageSkeleton from './components/PageSkeleton.vue' -import type { SkuPopupLocaldata } from '@/components/vk-data-goods-sku-popup/vk-data-goods-sku-popup' +import type { + SkuPopupEvent, + SkuPopupInstance, + SkuPopupLocaldata, +} from '@/components/vk-data-goods-sku-popup/vk-data-goods-sku-popup' +import { postMemberCart } from '@/services/cart' // 获取屏幕边界到安全区域距离 const { safeAreaInsets } = uni.getSystemInfoSync() @@ -221,7 +231,48 @@ onLoad(async () => { // SKU 商品规格弹出层 const isShowSkuPopup = ref(false) -const localdata = ref({} as SkuPopupLocaldata) +// SKU 商品规格弹出层实例 +const skuPopupRef = ref() +// SKU 商品规格弹出层数据 +const localdata = ref({} as SkuPopupLocaldata) +// SKU 商品规格弹出层模式 +enum SkuMode { + Both = 1, + AddCart = 2, + BuyNow = 3, +} +const skuMode = ref(SkuMode.Both) + +// 选中的 SKU +const selectedSku = computed(() => { + return skuPopupRef.value?.selectArr?.join(' ').trim() || '请选择商品规格' +}) + +// 点击商品页面的 购物车/立即购买 按钮弹出 SKU 商品规格弹出层 +const showSkuPopup = (mode: SkuMode) => { + skuMode.value = mode + isShowSkuPopup.value = true +} + +// 加入购物车 +const handlerAddCart = async (e: SkuPopupEvent) => { + const res = await postMemberCart({ + skuId: e._id, + count: e.buy_num, + }) + if (res.code == '1') { + await uni.showToast({ + icon: 'success', + title: '添加成功', + }) + isShowSkuPopup.value = false + } +} + +// 立即购买 +const handlerBuyNow = () => { + console.log('立即购买') +}