feat: 添加视频模块并优化多个组件

This commit is contained in:
pikachu1995@126.com
2026-07-07 09:39:32 +08:00
parent 4e2fcbc1fe
commit 686aed848d
8 changed files with 714 additions and 469 deletions

View File

@@ -1,20 +1,30 @@
<template>
<div class="layout">
<div class="layout" v-if="goodsList.length">
<div class="join-list">
<div class="join-title">
<div class="join-title" @click="goMore">
<div class="join-title-name">{{ res.list[0].title }}</div>
<div class="join-title-more">更多</div>
</div>
<div class="join-box">
<div class="join-item" @click="modelNavigateTo(item)" v-for="item in 4" :key="item">
<div
class="join-item"
@click="goDetail(item)"
v-for="(item, index) in goodsList"
:key="index"
>
<div class="item-img-box">
<img class="item-img" src="https://picsum.photos/id/268/200/200" alt />
<u-image
class="item-img"
width="150rpx"
height="150rpx"
:src="item.goodsImage || item.thumbnail"
/>
</div>
<div class="item-price">
<span class="price-text">120.00</span>
<span class="price-text">{{ item.price }}</span>
</div>
<div class="item-line-through">
<span class="price-text">190.00</span>
<span class="price-text">{{ item.originalPrice }}</span>
</div>
</div>
</div>
@@ -22,19 +32,84 @@
</div>
</template>
<script>
// TODO 后续版本开发此功能 尽情期待
import { modelNavigateTo } from "./tpl";
import * as API_Promotions from "@/api/promotions";
export default {
props: ["res"],
title: "拼团",
data() {
return {
modelNavigateTo,
goodsList: [],
};
},
mounted() {
API_Promotions.getAssembleList({
pageNumber: 1,
pageSize: this.res.list[0].count || 3,
promotionStatus: "START",
}).then((res) => {
if (res.data.success && res.data.result && res.data.result.records) {
this.goodsList = res.data.result.records.slice(0, this.res.list[0].count || 3);
}
});
},
methods: {
goMore() {
uni.navigateTo({ url: "/pages/promotion/joinGroup" });
},
goDetail(item) {
uni.navigateTo({
url: `/pages/product/goods?id=${item.skuId}&goodsId=${item.goodsId}`,
});
},
},
};
</script>
<style lang="scss" scoped>
@import "./tpl.scss";
@import "./advertising.scss";
</style>
.join-box {
display: flex;
}
.item-price {
.price-text {
font-size: 15px;
font-weight: 500;
color: #e1212b;
}
}
.join-item {
flex: 1;
text-align: center;
}
.item-img {
width: 75px;
height: 75px;
margin: 0 auto;
display: block;
}
.item-img-box {
position: relative;
}
.item-line-through {
.price-text {
font-size: 10px;
font-weight: 400;
text-decoration: line-through;
color: #999;
}
}
.join-title {
display: flex;
justify-content: space-between;
align-items: center;
background: #fff;
height: 50px;
.join-title-name {
font-size: 16px;
font-weight: bold;
}
.join-title-more {
font-size: 12px;
color: #999;
}
}
</style>