detailswiper
<template>
<detswiper class="fa">
<detswiperitem v-for="item in itemtopimg">
<img :src="item" alt="">
</detswiperitem>
</detswiper>
</template>
<script>
import detswiper from "../../../components/Swiper/Swiper.vue";
import detswiperitem from "../../../components/Swiper/SwiperItem.vue";
export default {
name: "detailswiper",
components: {
detswiper,
detswiperitem,
},
props: {
itemtopimg: {
type: Array,
default() {
return [];
},
},
},
};
</script>
<style scoped>
.fa{
margin-top: 5px;
}
.fa img{
width: 100%;
height: 350px;
}
</style>
detailgoods
<template>
<div>
<div style="margin: 5px 10px">{{ this.goods.title }}</div>
<div class="two">
{{ this.goods.newPrice }}
<span class="old">{{ this.goods.oldPrice }}</span>
<span class="y">{{ this.goods.discount }}</span>
</div>
<div class="three">
<span v-for="item in this.goods.columns" class="san">
{{ item }}
</span>
</div>
<div class="onefen"></div>
<div class="four">
<span class="fouritem" v-for="item in goods.services">
<img :src="item.icon" />
<span>{{ item.name }}</span></span
>
</div>
<div class="twofen"></div>
</div>
</template>
<script>
export default {
name: "goodsdetail",
props: {
goods: {
type: Object,
default() {
return {};
},
},
},
created() {
console.log(this.goods);
},
};
</script>
<style>
.two {
margin: 5px 10px;
font-size: 20px;
color: rgb(427, 188, 0);
}
.old {
font-size: 10px;
color: darkgray;
text-decoration: line-through;
}
.y {
background-color: rgb(427, 188, 0);
color: white;
font-weight: bold;
border-radius: 5px;
font-size: 12px;
margin-left: 10px;
margin-bottom: 5px;
padding: 0px 3px;
}
.three {
display: flex;
color: darkgrey;
width: 100%;
margin-top: 25px;
}
.san {
flex: 1;
margin: 5px 20px;
font-size: 10px;
}
.onefen {
background-color: rgb(236, 228, 228);
width: 100%;
height: 0.7px;
}
.four {
display: flex;
justify-content: space-between;
line-height: 40px;
padding: 10px;
margin-top: 10px;
overflow: hidden;
height: 25px;
}
.fouritem img {
width: 10px;
height: 10px;
position: relative;
top: 0px;
}
.four span {
color: #333;
font-size: 8px;
}
.twofen {
background-color: rgb(245, 239, 239);
width: 100%;
height: 6px;
}
</style>
detailshop
<template>
<div class="shop">
<img :src="this.shop.logo" alt="" class="logo" />
<span class="name">{{ this.shop.name }}</span>
<div class="sell">
<table >
<tr >
<td >{{ sell +" "}}</td>
<td>{{this.shop.goodsCount}}</td>
</tr>
<tr >
<td style="font-size:10px;color:rgb(93, 94, 94)">总销量</td>
<td style="font-size:10px;color:rgb(93, 94, 94)">商品数目</td>
</tr>
</table>
</div>
<div class="score" >
<div v-for="item in this.shop.score">
{{item.name}}    {{item.score}}    
<span :class="{ 'isbettertrue': item.isBetter }" class="isbetter">
<span>
{{item.isBetter? "高":"低"}}
</span>
</span>
</div>
</div>
<button class="detailshopbtn">进店逛逛</button>
</div>
</template>
<script>
export default {
name: "detailshop",
props: {
shop: {
type: Object,
default() {
return {};
},
},
},
created(){
console.log("shop数据");
console.log(this.shop.score);
},
computed:{
sell(){
if(this.shop.sells<10000){
return this.shop.sells
}else{
return(this.shop.sells/10000).toFixed(1)+'万'
}
},
}
};
</script>
<style>
.shop {
position: relative;
}
.logo {
width: 50px;
height: 50px;
border-radius: 40px;
margin: 20px;
display: inline-block;
}
.name {
color: rgb(93, 94, 94);
position: absolute;
top: 30px;
left: 80px;
font-size: 20px;
}
.sell{
width: 36%;
font-size: 20px;
margin-left: 25px;
margin-top: 25px;
border-right: 1px solid slategrey;
padding: 0px;
}
.sell span{
margin: 20px;
}
.score{
position: absolute;
right: 40px;
top: 105px;
line-height: 25px;
font-size: 12px ;
}
.isbetter{
background-color: rgb(55, 190, 123);
padding: 2px;
color: white;
height: 15px;
width: 15px;
border-radius: 15px;
}
.detailshopbtn{
background-color: rgb(241, 235, 235);
border-radius: 20px;
border: none;
width: 70%;
height: 40px;
color: rgb(49, 47, 47);
margin-top: 35px;
margin-left: 59px;
}
.isbettertrue{
background-color: red;
}
</style>
detail
<template>
<!-- 导入导航 -->
<detailnavbar ></detailnavbar>
<!-- 导入轮播图 -->
<detailswiper :itemtopimg="topimg"></detailswiper>
<!-- 导入商品详情 -->
<goodsdetail :goods="goods"></goodsdetail>
<!-- 导入店铺详情 -->
<detailshop :shop="shop"></detailshop>
</template>
<script>
import detailswiper from "./childcom/detailswiper.vue"
import detailnavbar from "./childcom/detailnavbar.vue";
//导入商品详情
import goodsdetail from "./childcom/goodsdetail.vue"
// 导入店铺详情
import detailshop from "./childcom/detailshop.vue"
import { detailjs,Goods,Shop} from "../../components/network/detail.js";
export default {
name: "detail",
data() {
return {
ids: null,
topimg:[],
goods:{},
shop:{}
};
},
components: {
detailnavbar,
detailswiper,
goodsdetail,
detailshop,
},
created() {
this.ids = this.$route.params.id;
detailjs(this.ids).then(res=> {
console.log(res);
const result = res.data.result;
this.topimg=result.itemInfo.topImages
// console.log(this.topimg);
// 获取商品详情信息
this.goods = new Goods(
result.itemInfo,
result.columns,
result.shopInfo.services
);
//获取店铺详情
this.shop = new Shop(result.shopInfo);
});
},
methods: {},
};
</script>
<style>
</style>
写样式真的是太肝了