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 01/19] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E3=80=91?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E4=BF=AE=E6=94=B9bug=E5=92=8C=E5=8A=9F?= =?UTF-8?q?=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 @@ @@ -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 @@ + \ 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 @@ @@ -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 @@ \ 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 From e93322959eaad784130c854f543858324b2c7bd9 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 16 Sep 2024 08:15:54 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E3=80=90=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E3=80=91=E5=B7=AE=E6=BB=A1=E5=87=8F=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=A4=96=EF=BC=8Cfrom=20=E5=B2=B3=E7=90=B3?= =?UTF-8?q?=E7=BA=A2=20https://gitee.com/yudaocode/yudao-mall-uniapp/commi?= =?UTF-8?q?t/26a18e7e9a78af4ec49f0d07785a0aead22b00cc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/activity/seckill/list.vue | 212 ++++++++++++++++++-------------- 1 file changed, 123 insertions(+), 89 deletions(-) diff --git a/pages/activity/seckill/list.vue b/pages/activity/seckill/list.vue index a6a07d14..8d3e371a 100644 --- a/pages/activity/seckill/list.vue +++ b/pages/activity/seckill/list.vue @@ -2,11 +2,21 @@ \ No newline at end of file + From 5a66e71809704d50824bfe0fd01ed07e20f28a55 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 16 Sep 2024 08:18:32 +0800 Subject: [PATCH 03/19] =?UTF-8?q?=E3=80=90=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E3=80=91=E5=B7=AE=E6=BB=A1=E5=87=8F=E6=B4=BB=E5=8A=A8?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E5=A4=96=EF=BC=8Cfrom=20=E5=B2=B3=E7=90=B3?= =?UTF-8?q?=E7=BA=A2=20https://gitee.com/yudaocode/yudao-mall-uniapp/commi?= =?UTF-8?q?t/26a18e7e9a78af4ec49f0d07785a0aead22b00cc?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pages/coupon/detail.vue | 15 +++-- pages/goods/seckill.vue | 134 ++++++++++++++++++++++------------------ 2 files changed, 80 insertions(+), 69 deletions(-) diff --git a/pages/coupon/detail.vue b/pages/coupon/detail.vue index d7f53c31..2fca5257 100644 --- a/pages/coupon/detail.vue +++ b/pages/coupon/detail.vue @@ -38,8 +38,8 @@ state.coupon.status === 1 ? '可使用' : state.coupon.status === 2 - ? '已使用' - : '已过期' + ? '已使用' + : '已过期' }} @@ -57,7 +57,6 @@ 优惠券类型 {{ state.coupon.discountType === 1 ? '满减券' : '折扣券' }} - @@ -282,11 +281,11 @@ .detail-wrap { background: linear-gradient( - 180deg, - var(--ui-BG-Main), - var(--ui-BG-Main-gradient), - var(--ui-BG-Main), - #fff + 180deg, + var(--ui-BG-Main), + var(--ui-BG-Main-gradient), + var(--ui-BG-Main), + #fff ); } diff --git a/pages/goods/seckill.vue b/pages/goods/seckill.vue index 2e4118ed..004efc74 100644 --- a/pages/goods/seckill.vue +++ b/pages/goods/seckill.vue @@ -6,13 +6,26 @@ - + - + @@ -59,9 +72,14 @@ - + @@ -73,25 +91,36 @@ - -