You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

293 lines
5.7 KiB
Vue

<template>
<view class="container">
<navBar
navTitle=""
:stickyShow="stickyShow"
:backBackGroundColor="'#699A70'"
></navBar>
<image :src="seriesItem.CoverImg" mode="" class="cover"></image>
<view class="designation">
<view class="left-x">
<view class="name">{{ seriesItem.SeriesName }}</view>
<view class="line"></view>
<view class="des">
{{ seriesItem.Desc }}
</view>
</view>
<view class="right-x">
<image :src="seriesItem.BrandImg" mode="" class="img"></image>
{{ seriesItem.BrandName }}
</view>
</view>
<view class="order-box">
<view
class="item"
v-for="i in collectionsData"
:key="i.CollectionUID"
@click="goDetail(i.CollectionUID)"
>
<image :src="i.CollectionImg" mode="" class="img"> </image>
<view class="content">
<view class="title">{{ i.Name }}</view>
<view class="price">
<text v-if="i.CurrencyType === 'normal'">¥</text>
<image
src="@/static/image/home/jifen.png"
mode="scaleToFill"
style="width: 24rpx; height: 24rpx"
v-else
/>
{{ i.Price }}
</view>
</view>
</view>
</view>
<view class="bot-text">
<view class="text-line"></view>
<image
src="@/static/image/home/fontree.png"
mode="aspectFit"
class="logo"
></image>
</view>
</view>
</template>
<script>
export default {
data() {
return {
stickyShow: false,
seriesItem: {},
collectionsData: [],
};
},
onLoad: function (option) {
Object.assign(this.seriesItem, { SeriesUuid: option.SeriesUID });
this.getPageData();
this.getCollections();
},
onPageScroll(e) {
this.stickyShow = e.scrollTop > 5 ? true : false;
},
methods: {
async getPageData() {
let params = {
seriesUuid: this.seriesItem.SeriesUuid,
};
let res = await this.$api.series.getSeriesData(params);
if (res.status === 0) {
this.seriesItem = res.data;
} else {
uni.$u.toast(this.$t("load.failed"));
}
},
navigateBack() {
uni.switchTab({
url: "/pages/index/index",
});
},
goDetail(CollectionUID) {
const price = this.collectionsData.find(
(item) => item.CollectionUID === CollectionUID
).Price;
uni.navigateTo({
url:
"/pages/index/detail/detail?CollectionUID=" +
CollectionUID +
"&SeriesName=" +
this.seriesItem.SeriesName +
"&Price=" +
price,
});
},
async getCollections() {
let data = {
Page: 1,
PageSize: 99999,
SeriesUID: this.seriesItem.SeriesUuid,
};
let res = await this.$api.series.collectionsList(data);
if (res.status === 0) {
this.collectionsData = res.data.Data;
} else {
uni.$u.toast(this.$t("load.failed"));
}
},
},
};
</script>
<style lang="scss">
page {
background: url("@/static/image/home/detail-kind-bg.png?x-oss-process=image/resize,w_750,h_1580")
no-repeat;
background-size: 100% 100%;
background-position: top center;
background-attachment: fixed;
height: 100vh;
// border: 1px solid red;
}
.container {
padding-bottom: 1upx;
}
.text-box {
margin: 72upx 45upx;
background: rgba(11, 0, 0, 0.4);
border-radius: 8upx;
padding: 36upx;
text-align: center;
.title-img {
width: 300upx;
height: 44upx;
margin-bottom: 24upx;
}
.content-img {
width: 594upx;
height: 1074upx;
}
.from-img {
width: 356upx;
height: 44upx;
}
}
.cover {
width: 100%;
height: 772rpx;
object-fit: cover;
margin-top: -110rpx;
}
.designation {
margin: 20rpx;
background: #ffffff;
border-radius: 8rpx;
display: flex;
justify-content: space-between;
padding: 28rpx 26rpx;
.left-x {
width: 460rpx;
.name {
color: #000000;
font-size: 32rpx;
width: 100%;
margin-bottom: 8rpx;
}
.line {
width: 100%;
background: #878787;
height: 1px;
}
.des {
padding-top: 30rpx;
width: 100%;
font-size: 20rpx;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3;
overflow: hidden;
color: #878787;
}
}
.right-x {
color: #878787;
font-size: 24rpx;
text-align: center;
display: flex;
flex-direction: column;
.img {
width: 128rpx;
height: 128rpx;
border-radius: 50%;
margin-bottom: 10rpx;
}
}
}
.order-box {
width: 100%;
box-sizing: border-box;
width: 100%;
display: flex;
justify-content: space-between;
padding: 0 24rpx;
flex-wrap: wrap;
.item {
width: 332rpx;
height: 418rpx;
background: #797979;
border-radius: 8rpx;
overflow: hidden;
position: relative;
margin-top: 20rpx;
.img {
width: 332rpx;
height: 318rpx;
// object-fit: cover;
}
.content {
width: 100%;
height: 74rpx;
position: absolute;
bottom: 0;
text-align: center;
// border-radius: 8rpx;
padding: 10rpx 0;
.title {
font-size: 32rpx;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.price {
font-size: 24rpx;
}
}
}
}
.bot-text {
margin-top: 40rpx;
padding-bottom: 50rpx;
text-align: center;
.text-line {
width: 90%;
height: 1rpx;
background: #878787;
margin: auto;
}
.copyright {
font-size: 24rpx;
color: #878787;
margin-top: 10rpx;
}
.logo {
margin-top: 10rpx;
width: 252rpx;
height: 76rpx;
}
}
</style>