From aa571f25f9757eb47c760dba2ed9388943620749 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=97=B4=E8=B4=A7?= <252048765@qq.com>
Date: Sun, 15 Sep 2024 17:32:29 +0800
Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E3=80=91=E6=89=B9?=
=?UTF-8?q?=E9=87=8F=E4=BF=AE=E6=94=B9bug=E5=92=8C=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pages/activity/index.vue | 195 ++++--
pages/activity/seckill/list.vue | 146 ++--
pages/coupon/detail.vue | 16 +-
pages/goods/index.vue | 373 ++++++----
pages/goods/list.vue | 61 +-
pages/goods/seckill.vue | 150 ++--
pages/order/addressSelection.vue | 263 ++++++++
pages/order/confirm.vue | 234 ++++---
sheep/api/product/spu.js | 12 +
.../s-activity-pop/s-activity-pop.vue | 254 ++++++-
.../s-discount-list/s-discount-list.vue | 69 +-
.../components/s-goods-card/s-goods-card.vue | 55 +-
.../s-goods-column/s-goods-column.vue | 361 +++++-----
.../components/s-select-sku/s-select-sku.vue | 638 +++++++++---------
sheep/hooks/useGoods.js | 108 ++-
static/images/dis.png | Bin 0 -> 16936 bytes
16 files changed, 1995 insertions(+), 940 deletions(-)
create mode 100644 pages/order/addressSelection.vue
create mode 100644 static/images/dis.png
diff --git a/pages/activity/index.vue b/pages/activity/index.vue
index 56417ed9..591d004c 100644
--- a/pages/activity/index.vue
+++ b/pages/activity/index.vue
@@ -19,13 +19,9 @@
-
+
@@ -34,13 +30,9 @@
-
+
@@ -49,23 +41,27 @@
- 0" :status="state.loadStatus" :content-text="{
contentdown: '上拉加载更多',
- }"
- @tap="loadMore"
- />
+ }" @tap="loadMore" />
+
\ No newline at end of file
diff --git a/pages/activity/seckill/list.vue b/pages/activity/seckill/list.vue
index a1714bba..a6a07d14 100644
--- a/pages/activity/seckill/list.vue
+++ b/pages/activity/seckill/list.vue
@@ -2,10 +2,7 @@
-
+
@@ -57,69 +53,89 @@
-
+
-
+
- 限量 {{ activity.stock}} {{activity.unitName}}
+ 限量 {{ activity.stock}}
+ {{activity.unitName}}
-
- 0" :status="loadStatus" :content-text="{
contentdown: '上拉加载更多',
- }"
- @tap="loadMore"
- />
+ }" @tap="loadMore" />
@@ -462,4 +504,101 @@
color: #333333;
}
}
-
+
+ // 限时折扣
+ .discount {
+ width: 750rpx;
+ height: 100rpx;
+ // background-color: red;
+ overflow: hidden;
+ position: relative;
+ }
+
+ .disImg {
+ width: 750rpx;
+ height: 100rpx;
+ position: absolute;
+ top: 0;
+ z-index: -1;
+ }
+
+ .discountCont {
+ width: 680rpx;
+ height: 90rpx;
+ margin: 10rpx auto 0 auto;
+ // background-color: gold;
+ }
+
+ .disContT {
+ width: 680rpx;
+ height: 50rpx;
+ display: flex;
+ justify-content: space-between;
+ }
+
+ .disContT1 {
+ width: 400rpx;
+ height: 50rpx;
+ // background-color: green;
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ }
+
+ .disContT2 {
+ width: 200rpx;
+ height: 50rpx;
+ line-height: 50rpx;
+ // background-color: gold;
+ font-size: 30rpx;
+ text-align: end;
+ color: white;
+ font-weight: bolder;
+ font-style: oblique 20deg;
+ letter-spacing: .1rem;
+ }
+
+ .disContT1P {
+ color: white;
+ font-weight: bold;
+ font-size: 28rpx;
+ }
+
+ .disContT1End {
+ // width: 180rpx;
+ padding: 0 10rpx;
+ height: 30rpx;
+ line-height: 28rpx;
+ text-align: center;
+ font-weight: bold;
+ background-color: white;
+ color: #ff3000;
+ font-size: 23rpx;
+ border-radius: 20rpx;
+ margin-left: 10rpx;
+ }
+
+ .disContB {
+ width: 680rpx;
+ height: 40rpx;
+ display: flex;
+ justify-content: space-between;
+ font-size: 20rpx;
+ color: white;
+ align-items: center;
+ }
+
+ .disContB1 {
+ width: 300rpx;
+ height: 40rpx;
+ line-height: 40rpx;
+ }
+
+ .disContB2 {
+ width: 300rpx;
+ height: 40rpx;
+ line-height: 40rpx;
+ display: flex;
+ justify-content: flex-end;
+ }
+
\ No newline at end of file
diff --git a/pages/goods/list.vue b/pages/goods/list.vue
index 1fdf5592..1db8b708 100644
--- a/pages/goods/list.vue
+++ b/pages/goods/list.vue
@@ -118,7 +118,7 @@
+
+
diff --git a/pages/order/confirm.vue b/pages/order/confirm.vue
index 94d78d73..260ba1e6 100644
--- a/pages/order/confirm.vue
+++ b/pages/order/confirm.vue
@@ -1,36 +1,18 @@
-
-
-
-
-
-
-
-
+
+
-
+
订单备注
-
+
@@ -46,67 +28,71 @@
-
-
- 扣除积分
+
+ 积分抵扣
-
- {{ state.orderInfo.score_amount }}
+ {{ state.pointStatus ? '剩余积分' : '当前积分' }}
+
+
+ {{ state.pointStatus ? state.orderInfo.totalPoint - state.orderInfo.usePoint : (state.orderInfo.totalPoint || 0) }}
+
+
+
+
-
+
+
运费
-
+
+¥{{ fen2yuan(state.orderInfo.price.deliveryPrice) }}
+ 免运费
+
+
+
+
+ 联系人
+
+
+
+
+
+ 联系电话
+
+
-
+
优惠券
-¥{{ fen2yuan(state.orderInfo.price.couponPrice) }}
-
+
{{
- state.couponInfo.length > 0 ? state.couponInfo.length + ' 张可用' : '暂无可用优惠券'
+ couponNumber > 0 ? couponNumber + ' 张可用' : '暂无可用优惠券'
}}
-
+
活动优惠
-
-
+
-¥{{ fen2yuan(state.orderInfo.price.discountPrice) }}
-
+
会员优惠
@@ -120,24 +106,16 @@
共{{ state.orderInfo.items.reduce((acc, item) => acc + item.count, 0) }}件
合计:
- ¥{{ fen2yuan(state.orderInfo.price.payPrice) }}
+ ¥{{ fen2yuan(state.orderInfo.price.payPrice) }}
-
+
-
+
@@ -147,10 +125,7 @@
¥{{ fen2yuan(state.orderInfo.price.payPrice) }}
-
+
提交订单
@@ -159,14 +134,20 @@
+
\ No newline at end of file
diff --git a/sheep/components/s-goods-card/s-goods-card.vue b/sheep/components/s-goods-card/s-goods-card.vue
index 59f2bf10..a4d7d9c1 100644
--- a/sheep/components/s-goods-card/s-goods-card.vue
+++ b/sheep/components/s-goods-card/s-goods-card.vue
@@ -135,7 +135,7 @@
/**
* 商品卡片
*/
- import { computed, reactive, onMounted } from 'vue';
+ import { computed, reactive, onMounted, ref } from 'vue';
import sheep from '@/sheep';
import SpuApi from '@/sheep/api/product/spu';
@@ -227,10 +227,61 @@
return data;
}
+ //获取结算信息
+ const settleData = ref()
+ async function getSettlementByIds(ids) {
+ const { data } = await SpuApi.getSettlementProduct(ids);
+ return data;
+ }
+
+ //计算展示价格的函数
+ async function enrichDataWithSkus(data, array) {
+ // 创建一个映射,以 id 为键,存储 data 数组中的对象
+ const dataMap = new Map(data.map(item => [item.id, { ...item }]));
+
+ // 遍历 array 数组
+ array.forEach(item => {
+ // 初始化 discountPrice 和 vipPrice 为 null
+ let discountPrice = null;
+ let vipPrice = null;
+ let foundType4 = false;
+ let foundType6 = false;
+
+ // 遍历 skus 数组,寻找 type 为 4 和 6 的首个条目
+ item.skus.forEach(sku => {
+ if (!foundType4 && sku.type === 4) {
+ discountPrice = sku.price;
+ foundType4 = true;
+ }
+ if (!foundType6 && sku.type === 6) {
+ vipPrice = sku.price;
+ foundType6 = true;
+ }
+
+ // 如果已经找到 type 为 4 和 6 的条目,则不需要继续遍历
+ if (foundType4 && foundType6) {
+ return;
+ }
+ });
+
+ // 更新 dataMap 中对应的对象
+ if (dataMap.has(item.id)) {
+ dataMap.get(item.id).discountPrice = discountPrice;
+ dataMap.get(item.id).vipPrice = vipPrice;
+ dataMap.get(item.id).reward = item.reward;
+ }
+ });
+
+ // 返回更新后的数据数组
+ return Array.from(dataMap.values());
+ }
+
// 初始化
onMounted(async () => {
// 加载商品列表
- state.goodsList = await getGoodsListByIds(spuIds.join(','));
+ const ms = await getGoodsListByIds(spuIds.join(','));
+ settleData.value = await getSettlementByIds(spuIds.join(','))
+ state.goodsList = await enrichDataWithSkus(ms,settleData.value)
// 只有双列布局时需要
if (layoutType === LayoutTypeEnum.TWO_COL){
// 分列
diff --git a/sheep/components/s-goods-column/s-goods-column.vue b/sheep/components/s-goods-column/s-goods-column.vue
index 228c64e1..45f3487b 100644
--- a/sheep/components/s-goods-column/s-goods-column.vue
+++ b/sheep/components/s-goods-column/s-goods-column.vue
@@ -2,38 +2,29 @@
-
+
-
-
-
+
+
+
{{ data.title || data.name }}
-
+
+
+ {{iconShow}}
+ {{data.reward.rewardActivity}}
+
+
+
{{ priceUnit }}
- {{ isArray(data.price) ? fen2yuan(data.price[0]) : fen2yuan(data.price) }}
+ {{fen2yuan(data.discountPrice)}}
+ {{fen2yuan(data.vipPrice)}}
+ {{ isArray(data.price) ? fen2yuan(data.price[0]) : fen2yuan(data.price) }}
@@ -43,30 +34,26 @@
-
+
-
-
+
+
{{ data.title || data.name }}
-
+
+
+ {{iconShow}}
+ {{data.reward.rewardActivity}}
+
+
+
{{ priceUnit }}
- {{ isArray(data.price) ? fen2yuan(data.price[0]) : fen2yuan(data.price) }}
+ {{fen2yuan(data.discountPrice)}}
+ {{fen2yuan(data.vipPrice)}}
+ {{ isArray(data.price) ? fen2yuan(data.price[0]) : fen2yuan(data.price) }}
@@ -76,58 +63,43 @@
-
-
-
+
+
+
{{ data.title || data.name }}
-
+
{{ data.subtitle || data.introduction }}
-
+
{{ item.title }}
+
+
+ {{iconShow}}
+ {{data.reward.rewardActivity}}
+
+
-
+
{{ priceUnit }}
- {{ isArray(data.price) ? fen2yuan(data.price[0]) : fen2yuan(data.price) }}
+ {{fen2yuan(data.discountPrice)}}
+ {{fen2yuan(data.vipPrice)}}
+ {{ isArray(data.price) ? fen2yuan(data.price[0]) : fen2yuan(data.price) }}
- 0 || data.marketPrice > 0)
- "
- class="goods-origin-price ss-m-t-16 font-OPPOSANS ss-flex"
- :style="[{ color: originPriceColor }]"
- >
+ " class="goods-origin-price ss-m-t-16 font-OPPOSANS ss-flex" :style="[{ color: originPriceColor }]">
{{ priceUnit }}
{{ fen2yuan(data.marketPrice) }}
@@ -146,12 +118,7 @@
-
+
@@ -159,25 +126,16 @@
拼团
-
+
-
+
{{ data.title || data.name }}
-
+
{{ data.subtitle || data.introduction }}
@@ -189,25 +147,27 @@
+
+
+ {{iconShow}}
+ {{data.reward.rewardActivity}}
+
+
-
+
{{ priceUnit }}
{{ isArray(data.price) ? fen2yuan(data.price[0]) : fen2yuan(data.price) }}
- 0 || data.marketPrice > 0)
- "
- class="goods-origin-price ss-flex ss-col-bottom font-OPPOSANS"
- :style="[{ color: originPriceColor }]"
- >
+ " class="goods-origin-price ss-flex ss-col-bottom font-OPPOSANS" :style="[{ color: originPriceColor }]">
{{ priceUnit }}
- {{ fen2yuan(data.marketPrice) }}
+ {{fen2yuan(data.discountPrice)}}
+ {{fen2yuan(data.vipPrice)}}
+ {{ isArray(data.price) ? fen2yuan(data.price[0]) : fen2yuan(data.price) }}
@@ -227,54 +187,45 @@
-
+
-
+
{{ data.title || data.name }}
-
+
{{ data.subtitle || data.introduction }}
-
+
{{ item.title }}
+
+
+ {{iconShow}}
+ {{data.reward.rewardActivity}}
+
+
{{ priceUnit }}
- {{ isArray(data.price) ? fen2yuan(data.price[0]) : fen2yuan(data.price) }}
+ {{fen2yuan(data.discountPrice)}}
+ {{fen2yuan(data.vipPrice)}}
+ {{ isArray(data.price) ? fen2yuan(data.price[0]) : fen2yuan(data.price) }}
- 0 || data.marketPrice > 0)
- "
- class="goods-origin-price ss-m-t-16 font-OPPOSANS ss-flex"
- :style="[{ color: originPriceColor }]"
- >
+ " class="goods-origin-price ss-m-t-16 font-OPPOSANS ss-flex" :style="[{ color: originPriceColor }]">
{{ priceUnit }}
{{ fen2yuan(data.marketPrice) }}
@@ -285,9 +236,9 @@
- 去购买
+
+ 去购买
+
@@ -321,13 +272,26 @@
* @event {Function()} click - 点击卡片
*
*/
- import { computed, reactive, getCurrentInstance, onMounted, nextTick } from 'vue';
+ import {
+ computed,
+ reactive,
+ getCurrentInstance,
+ onMounted,
+ nextTick,
+ ref
+ } from 'vue';
import sheep from '@/sheep';
- import { fen2yuan, formatSales } from '@/sheep/hooks/useGoods';
- import { formatStock } from '@/sheep/hooks/useGoods';
+ import {
+ fen2yuan,
+ formatSales
+ } from '@/sheep/hooks/useGoods';
+ import {
+ formatStock
+ } from '@/sheep/hooks/useGoods';
import goodsCollectVue from '@/pages/user/goods-collect.vue';
- import { isArray } from 'lodash-es';
-
+ import {
+ isArray
+ } from 'lodash-es';
// 数据
const state = reactive({});
@@ -335,20 +299,32 @@
const props = defineProps({
goodsFields: {
type: [Array, Object],
- default() {
+ default () {
return {
// 商品价格
- price: { show: true },
+ price: {
+ show: true
+ },
// 库存
- stock: { show: true },
+ stock: {
+ show: true
+ },
// 商品名称
- name: { show: true },
+ name: {
+ show: true
+ },
// 商品介绍
- introduction: { show: true },
+ introduction: {
+ show: true
+ },
// 市场价
- marketPrice: { show: true },
+ marketPrice: {
+ show: true
+ },
// 销量
- salesCount: { show: true },
+ salesCount: {
+ show: true
+ },
};
},
},
@@ -417,7 +393,25 @@
default: false,
},
});
+ //判断限时优惠和会员价标签内容暂时导致页面出错,又舍不得丢,等着把新的数据整合到商品信息中,也用起来
+ const iconShow = handle()
+ function handle() {
+ if (props.data.discountPrice === null && props.data.vipPrice === null) {
+ // 如果两个值都为 null,则不展示任何内容
+ return '';
+ } else if (props.data.discountPrice === null) {
+ // 如果 discountPrice 为 null,展示 vipPrice
+ return '会员价';
+ } else if (props.data.vipPrice === null) {
+ // 如果 vipPrice 为 null,展示 discountPrice
+ return '限时优惠';
+ } else if (props.data.discountPrice < props.data.vipPrice) {
+ return '限时优惠';
+ } else if (props.data.discountPrice > props.data.vipPrice) {
+ return '会员价';
+ }
+ }
// 组件样式
const elStyles = computed(() => {
return {
@@ -449,12 +443,18 @@
};
// 获取卡片实时高度
- const { proxy } = getCurrentInstance();
+ const {
+ proxy
+ } = getCurrentInstance();
const elId = `sheep_${Math.ceil(Math.random() * 10e5).toString(36)}`;
+
function getGoodsPriceCardWH() {
if (props.size === 'md') {
const view = uni.createSelectorQuery().in(proxy);
- view.select(`#${elId}`).fields({ size: true, scrollOffset: true });
+ view.select(`#${elId}`).fields({
+ size: true,
+ scrollOffset: true
+ });
view.exec((data) => {
let totalHeight = 0;
const goodsPriceCard = data[0];
@@ -482,11 +482,13 @@
left: 0;
top: 0;
z-index: 2;
+
.tag-icon {
width: 72rpx;
height: 44rpx;
}
}
+
.seckill-tag {
position: absolute;
left: 0;
@@ -501,6 +503,7 @@
color: #ffffff;
line-height: 32rpx;
}
+
.groupon-tag {
position: absolute;
left: 0;
@@ -515,14 +518,17 @@
color: #ffffff;
line-height: 32rpx;
}
+
.goods-img {
width: 100%;
height: 100%;
background-color: #f5f5f5;
}
+
.price-unit {
margin-right: -4px;
}
+
.sales-text {
display: table;
font-size: 24rpx;
@@ -586,10 +592,12 @@
width: 100%;
height: 208rpx;
}
+
.sm-goods-content {
padding: 20rpx 16rpx;
box-sizing: border-box;
}
+
.sm-goods-title {
font-size: 26rpx;
color: #333;
@@ -619,6 +627,7 @@
color: #333;
width: 100%;
}
+
.md-goods-subtitle {
font-size: 24rpx;
font-weight: 400;
@@ -669,6 +678,7 @@
// line-height: 36rpx;
// width: 410rpx;
}
+
.lg-goods-subtitle {
font-size: 24rpx;
font-weight: 400;
@@ -695,6 +705,7 @@
font-size: 24rpx;
color: #ffffff;
}
+
.tag-box {
width: 100%;
}
@@ -708,10 +719,12 @@
z-index: 1;
width: 100%;
background-color: $white;
+
.sl-goods-content {
padding: 20rpx 20rpx;
box-sizing: border-box;
}
+
.sl-img-box {
width: 100%;
height: 360rpx;
@@ -722,6 +735,7 @@
color: #333;
font-weight: 500;
}
+
.sl-goods-subtitle {
font-size: 24rpx;
font-weight: 400;
@@ -748,4 +762,31 @@
color: #ffffff;
}
}
-
+
+ .card {
+ width: fit-content;
+ height: fit-content;
+ padding: 2rpx 10rpx;
+ background-color: red;
+ color: #ffffff;
+ font-size: 24rpx;
+ }
+
+ .card2 {
+ width: fit-content;
+ height: fit-content;
+ padding: 2rpx 10rpx;
+ background-color: rgb(255, 242, 241);
+ color: #ff2621;
+ font-size: 24rpx;
+ margin-left: 5rpx;
+ }
+
+ .iconBox {
+ width: 100%;
+ height: fit-content;
+ margin-top: 10rpx;
+ display: flex;
+ justify-content: flex-start;
+ }
+
\ No newline at end of file
diff --git a/sheep/components/s-select-sku/s-select-sku.vue b/sheep/components/s-select-sku/s-select-sku.vue
index b339d4a1..08e0b287 100644
--- a/sheep/components/s-select-sku/s-select-sku.vue
+++ b/sheep/components/s-select-sku/s-select-sku.vue
@@ -1,34 +1,38 @@
-
-
+
+
-
-
+
+
-
-
-
- {{ property.name }}
-
-
+
+
+ {{ property.name }}
+
+
- {{ value.name }}
-
-
-
-
- 购买数量
-
+
+
+
+ 购买数量
+
-
-
-
+
+
+
-
-
-
+
+
+
\ No newline at end of file
diff --git a/sheep/hooks/useGoods.js b/sheep/hooks/useGoods.js
index 56274470..86caeb7c 100644
--- a/sheep/hooks/useGoods.js
+++ b/sheep/hooks/useGoods.js
@@ -1,7 +1,11 @@
-import { ref } from 'vue';
+import {
+ ref
+} from 'vue';
import dayjs from 'dayjs';
import $url from '@/sheep/url';
-import { formatDate } from '@/sheep/util';
+import {
+ formatDate
+} from '@/sheep/util';
/**
* 格式化销量
@@ -80,7 +84,10 @@ export function formatGoodsSwiper(urlList) {
const isVideo = VIDEO_SUFFIX_LIST.some(suffix => url.includes(suffix));
const type = isVideo ? 'video' : 'image'
const src = $url.cdn(url);
- return { type, src }
+ return {
+ type,
+ src
+ }
}) || [];
}
@@ -94,9 +101,9 @@ export function formatOrderColor(order) {
if (order.status === 0) {
return 'info-color';
}
- if (order.status === 10
- || order.status === 20
- || (order.status === 30 && !order.commentStatus)) {
+ if (order.status === 10 ||
+ order.status === 20 ||
+ (order.status === 30 && !order.commentStatus)) {
return 'warning-color';
}
if (order.status === 30 && order.commentStatus) {
@@ -387,3 +394,92 @@ export function formatRewardActivityRule(activity, rule) {
}
return '';
}
+// 新增将时间搓转换为开始时间-结束时间的格式
+export function formatDateRange(startTimestamp, endTimestamp) {
+ // 定义一个辅助函数来格式化时间戳为 YYYY.MM.DD 格式
+ const formatDate = (timestamp) => {
+ const date = new Date(timestamp);
+ const year = date.getFullYear();
+ const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,所以需要+1
+ const day = String(date.getDate()).padStart(2, '0');
+ return `${year}.${month}.${day}`;
+ };
+
+ // 格式化开始和结束时间
+ const start = formatDate(startTimestamp);
+ const end = formatDate(endTimestamp);
+
+ // 返回格式化的日期范围
+ return `${start}-${end}`;
+}
+
+//处理活动信息
+export function handList(orders) {
+ const typeMap = {
+ '1': '秒杀活动',
+ '2': '砍价活动',
+ '3': '拼团活动',
+ '4': '限时折扣',
+ '5': '满减送',
+ '6': '会员折扣',
+ '7': '优惠券',
+ '8': '积分'
+ };
+
+ // 给每个订单对象添加 typeName 属性
+ let updatedOrders = orders.map(order => {
+ return {
+ ...order, // 展开现有的订单对象属性
+ typeName: typeMap[order.type] // 添加 typeName 属性
+ };
+ });
+ return updatedOrders
+};
+//根据skuid来修改价格并添加时间
+export function handListPrice(array,array2) {
+ // 将 array2 转换为一个以 skuId 为键的对象,以便于快速查找
+ const array2Map = array2.reduce((acc, item) => {
+ acc[item.skuId] = { price: item.price, type: item.type,endTime:item.endTime };
+ return acc;
+ }, {});
+
+ // 遍历 array 数组并更新 price 和 type
+ array.forEach(item => {
+ if (array2Map[item.id]) {
+ item.oldPrice = item.price
+ // 如果在 array2Map 中找到了对应的 skuId(即 id)
+ item.price = array2Map[item.id].price;
+ item.type = array2Map[item.id].type;
+ item.endTime = array2Map[item.id].endTime;
+ }
+ });
+
+ // 返回更新后的 array
+ return array;
+};
+
+//处理活动数据
+export function handActitList(rules) {
+ const rules2 = {
+ reduc: rules.map(item => ({
+ discountPrice: item.discountPrice,
+ limit: item.limit,
+ bull: true // 默认为 true
+ })),
+ cou: rules.map(item => ({
+ discountPrice: item.discountPrice,
+ value: item.couponCounts.reduce((acc, count) => acc + count, 0), // 计算 couponCounts 中各项之和
+ bull: item.givePoint // 对应 givePoint
+ })),
+ ship: rules.map(item => ({
+ discountPrice: item.discountPrice,
+ bull: item.freeDelivery // 对应 freeDelivery
+ })),
+ scor: rules.map(item => ({
+ discountPrice: item.discountPrice,
+ value: item.point, // 直接使用 point
+ bull: item.givePoint // 对应 givePoint
+ }))
+ };
+ return rules2
+};
\ No newline at end of file
diff --git a/static/images/dis.png b/static/images/dis.png
new file mode 100644
index 0000000000000000000000000000000000000000..5deb35c29e961f5c05642b875ec2368a85f67fe5
GIT binary patch
literal 16936
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
literal 0
HcmV?d00001