【代码优化】拼团重构
parent
82a82a4bed
commit
089e0197cd
|
|
@ -126,7 +126,12 @@
|
||||||
:disabled="state.goodsInfo.stock === 0 || state.activity.status !== 0"
|
:disabled="state.goodsInfo.stock === 0 || state.activity.status !== 0"
|
||||||
>
|
>
|
||||||
<view class="btn-price">{{
|
<view class="btn-price">{{
|
||||||
fen2yuan(state.selectedSku.price * state.selectedSku.count || state.activity.price * state.selectedSku.count || state.goodsInfo.price * state.selectedSku.count || state.goodsInfo.price)
|
fen2yuan(
|
||||||
|
state.selectedSku.price * state.selectedSku.count ||
|
||||||
|
state.activity.price * state.selectedSku.count ||
|
||||||
|
state.goodsInfo.price * state.selectedSku.count ||
|
||||||
|
state.goodsInfo.price,
|
||||||
|
)
|
||||||
}}</view>
|
}}</view>
|
||||||
<view v-if="state.activity.startTime > new Date().getTime()">未开始</view>
|
<view v-if="state.activity.startTime > new Date().getTime()">未开始</view>
|
||||||
<view v-else-if="state.activity.endTime <= new Date().getTime()">已结束</view>
|
<view v-else-if="state.activity.endTime <= new Date().getTime()">已结束</view>
|
||||||
|
|
@ -263,10 +268,12 @@
|
||||||
// 加载商品信息
|
// 加载商品信息
|
||||||
const { data: spu } = await SpuApi.getSpuDetail(activity.spuId);
|
const { data: spu } = await SpuApi.getSpuDetail(activity.spuId);
|
||||||
state.goodsId = spu.id;
|
state.goodsId = spu.id;
|
||||||
|
|
||||||
// 默认显示最低价
|
// 默认显示最低价
|
||||||
activity.products.forEach((product) => {
|
spu.price = activity.products.reduce((min, product) => {
|
||||||
state.activity.price = Math.min(spu.price, product.combinationPrice); // 设置 SPU 的最低价格
|
return Math.min(min, product.combinationPrice || Infinity);
|
||||||
});
|
}, Infinity);
|
||||||
|
|
||||||
// 价格、库存使用活动的
|
// 价格、库存使用活动的
|
||||||
spu.skus.forEach((sku) => {
|
spu.skus.forEach((sku) => {
|
||||||
const product = activity.products.find((product) => product.skuId === sku.id);
|
const product = activity.products.find((product) => product.skuId === sku.id);
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ const CombinationApi = {
|
||||||
url: '/promotion/combination-activity/list-by-ids',
|
url: '/promotion/combination-activity/list-by-ids',
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
@ -58,9 +58,9 @@ const CombinationApi = {
|
||||||
// 获得我的拼团记录分页
|
// 获得我的拼团记录分页
|
||||||
getCombinationRecordPage: (params) => {
|
getCombinationRecordPage: (params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/promotion/combination-record/page',
|
url: "/promotion/combination-record/page",
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
params,
|
params
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
:subTitleColor="data.fields.introduction.color"
|
:subTitleColor="data.fields.introduction.color"
|
||||||
:topRadius="data.borderRadiusTop"
|
:topRadius="data.borderRadiusTop"
|
||||||
:bottomRadius="data.borderRadiusBottom"
|
:bottomRadius="data.borderRadiusBottom"
|
||||||
@click="sheep.$router.go('/pages/goods/index', { id: item.id })"
|
@click="sheep.$router.go('/pages/goods/groupon', { id: item.activityId })"
|
||||||
>
|
>
|
||||||
<!-- 购买按钮 -->
|
<!-- 购买按钮 -->
|
||||||
<template v-slot:cart>
|
<template v-slot:cart>
|
||||||
|
|
@ -35,7 +35,40 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 布局2. 双列(每一列:上图,下内容)-->
|
<!-- 布局2. 单列小图(左图,右内容) -->
|
||||||
|
<view
|
||||||
|
v-if="layoutType === LayoutTypeEnum.ONE_COL_SMALL_IMG && state.spuList.length"
|
||||||
|
class="goods-lg-box"
|
||||||
|
>
|
||||||
|
<view
|
||||||
|
class="goods-box"
|
||||||
|
:style="[{ marginBottom: data.space + 'px' }]"
|
||||||
|
v-for="item in state.spuList"
|
||||||
|
:key="item.id"
|
||||||
|
>
|
||||||
|
<s-goods-column
|
||||||
|
class="goods-card"
|
||||||
|
size="lg"
|
||||||
|
:goodsFields="data.fields"
|
||||||
|
:data="item"
|
||||||
|
:tagStyle="data.badge"
|
||||||
|
:titleColor="data.fields.name?.color"
|
||||||
|
:subTitleColor="data.fields.introduction.color"
|
||||||
|
:topRadius="data.borderRadiusTop"
|
||||||
|
:bottomRadius="data.borderRadiusBottom"
|
||||||
|
@tap="sheep.$router.go('/pages/goods/groupon', { id: item.activityId })"
|
||||||
|
>
|
||||||
|
<!-- 购买按钮 -->
|
||||||
|
<template v-slot:cart>
|
||||||
|
<button class="ss-reset-button cart-btn" :style="[buyStyle]">
|
||||||
|
{{ btnBuy.type === 'text' ? btnBuy.text : '' }}
|
||||||
|
</button>
|
||||||
|
</template>
|
||||||
|
</s-goods-column>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 布局3. 双列(每一列:上图,下内容)-->
|
||||||
<view
|
<view
|
||||||
v-if="layoutType === LayoutTypeEnum.TWO_COL && state.spuList.length"
|
v-if="layoutType === LayoutTypeEnum.TWO_COL && state.spuList.length"
|
||||||
class="goods-md-wrap ss-flex ss-flex-wrap ss-col-top"
|
class="goods-md-wrap ss-flex ss-flex-wrap ss-col-top"
|
||||||
|
|
@ -58,7 +91,7 @@
|
||||||
:topRadius="data.borderRadiusTop"
|
:topRadius="data.borderRadiusTop"
|
||||||
:bottomRadius="data.borderRadiusBottom"
|
:bottomRadius="data.borderRadiusBottom"
|
||||||
:titleWidth="330 - marginLeft - marginRight"
|
:titleWidth="330 - marginLeft - marginRight"
|
||||||
@click="sheep.$router.go('/pages/goods/index', { id: item.id })"
|
@click="sheep.$router.go('/pages/goods/groupon', { id: item.activityId })"
|
||||||
@getHeight="calculateGoodsColumn($event, 'left')"
|
@getHeight="calculateGoodsColumn($event, 'left')"
|
||||||
>
|
>
|
||||||
<!-- 购买按钮 -->
|
<!-- 购买按钮 -->
|
||||||
|
|
@ -88,7 +121,7 @@
|
||||||
:topRadius="data.borderRadiusTop"
|
:topRadius="data.borderRadiusTop"
|
||||||
:bottomRadius="data.borderRadiusBottom"
|
:bottomRadius="data.borderRadiusBottom"
|
||||||
:titleWidth="330 - marginLeft - marginRight"
|
:titleWidth="330 - marginLeft - marginRight"
|
||||||
@click="sheep.$router.go('/pages/goods/index', { id: item.id })"
|
@click="sheep.$router.go('/pages/goods/groupon', { id: item.activityId })"
|
||||||
@getHeight="calculateGoodsColumn($event, 'right')"
|
@getHeight="calculateGoodsColumn($event, 'right')"
|
||||||
>
|
>
|
||||||
<!-- 购买按钮 -->
|
<!-- 购买按钮 -->
|
||||||
|
|
@ -101,39 +134,6 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- 布局3. 单列小图(左图,右内容) -->
|
|
||||||
<view
|
|
||||||
v-if="layoutType === LayoutTypeEnum.ONE_COL_SMALL_IMG && state.spuList.length"
|
|
||||||
class="goods-lg-box"
|
|
||||||
>
|
|
||||||
<view
|
|
||||||
class="goods-box"
|
|
||||||
:style="[{ marginBottom: data.space + 'px' }]"
|
|
||||||
v-for="item in state.spuList"
|
|
||||||
:key="item.id"
|
|
||||||
>
|
|
||||||
<s-goods-column
|
|
||||||
class="goods-card"
|
|
||||||
size="lg"
|
|
||||||
:goodsFields="data.fields"
|
|
||||||
:data="item"
|
|
||||||
:tagStyle="data.badge"
|
|
||||||
:titleColor="data.fields.name?.color"
|
|
||||||
:subTitleColor="data.fields.introduction.color"
|
|
||||||
:topRadius="data.borderRadiusTop"
|
|
||||||
:bottomRadius="data.borderRadiusBottom"
|
|
||||||
@tap="sheep.$router.go('/pages/goods/index', { id: item.id })"
|
|
||||||
>
|
|
||||||
<!-- 购买按钮 -->
|
|
||||||
<template v-slot:cart>
|
|
||||||
<button class="ss-reset-button cart-btn" :style="[buyStyle]">
|
|
||||||
{{ btnBuy.type === 'text' ? btnBuy.text : '' }}
|
|
||||||
</button>
|
|
||||||
</template>
|
|
||||||
</s-goods-column>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
@ -257,17 +257,17 @@
|
||||||
|
|
||||||
// 循环活动列表
|
// 循环活动列表
|
||||||
activityList.forEach((activity) => {
|
activityList.forEach((activity) => {
|
||||||
// 获取活动商品的最低价格
|
// 提取活动价格
|
||||||
activity.products.forEach((product) => {
|
const combinationPrice = activity.combinationPrice || Infinity;
|
||||||
const combinationPrice = product.combinationPrice || Infinity;
|
// 查找对应的 spu 并更新价格
|
||||||
|
|
||||||
// 找到对应的 spu 并更新价格
|
|
||||||
const spu = state.spuList.find((spu) => activity.spuId === spu.id);
|
const spu = state.spuList.find((spu) => activity.spuId === spu.id);
|
||||||
if (spu) {
|
if (spu) {
|
||||||
spu.price = Math.min(combinationPrice, spu.price || Infinity);
|
// 赋值最低价格
|
||||||
|
spu.price = Math.min(combinationPrice, spu.price);
|
||||||
|
// 赋值活动ID,为了点击跳转详情页
|
||||||
|
spu.activityId = activity.id;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
// 只有双列布局时需要
|
// 只有双列布局时需要
|
||||||
if (layoutType === LayoutTypeEnum.TWO_COL) {
|
if (layoutType === LayoutTypeEnum.TWO_COL) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue