页面美化+接口更新

This commit is contained in:
@fawn-nine
2023-09-19 17:58:35 +08:00
parent 8787e14e68
commit 2eda927c44
9 changed files with 486 additions and 460 deletions

View File

@@ -27,7 +27,7 @@
</view> </view>
<view class="pingjia" v-if="linkProducts && linkProducts.length > 0 && linkProducts[0]"> <view class="pingjia" v-if="linkProducts && linkProducts.length > 0 && linkProducts[0]">
<view class=""> <view class="">
<view style="font-weight: 600;margin-bottom: 30rpx;">其他购买套餐</view> <view style="font-weight: 600;margin-bottom: 30rpx;">商品列表</view>
<!-- <view class="icon-del rotate"></view> --> <!-- <view class="icon-del rotate"></view> -->
</view> </view>
<!-- 商品包含 --> <!-- 商品包含 -->
@@ -443,7 +443,8 @@
console.log(e) console.log(e)
if(e.index == 0){ if(e.index == 0){
// 点击的是加入购物车 // 点击的是加入购物车
this.addCart() this.upoShow = true
// this.addCart()
}else{ }else{
// 点击的是立即购买 // 点击的是立即购买
this.upoShow = true this.upoShow = true

View File

@@ -1,7 +1,9 @@
<template> <template>
<view> <view>
<z-nav-bar title="读书打卡"></z-nav-bar> <z-nav-bar title="读书打卡"></z-nav-bar>
<view class="tip">
<text>请选择要打卡的书籍</text>
</view>
<view class="listenList" v-if="bookList.length > 0"> <view class="listenList" v-if="bookList.length > 0">
<view class="wrap" > <view class="wrap" >
<u-row gutter="16" justify="flex-start"> <u-row gutter="16" justify="flex-start">
@@ -99,6 +101,10 @@
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/style/mixin.scss'; @import '@/style/mixin.scss';
.tip{
padding: 20rpx; background-color: #fff;
text{ font-size: 36rpx;}
}
.contentButton{margin: 20rpx 0;} .contentButton{margin: 20rpx 0;}
.btns{margin-top: 15rpx; background-color: #f1f1f1; border-radius: 10rpx; font-size: 28rpx; justify-content: space-between; .btns{margin-top: 15rpx; background-color: #f1f1f1; border-radius: 10rpx; font-size: 28rpx; justify-content: space-between;

View File

@@ -8,6 +8,7 @@
<image :src="productInfo.images" mode="aspectFill"></image> <image :src="productInfo.images" mode="aspectFill"></image>
<view> <view>
<span class="title">{{productInfo.name}}</span> <span class="title">{{productInfo.name}}</span>
<view class="description" v-if="productInfo.description == ''">暂无简介内容</view>
<view class="description">{{productInfo.description}}</view> <view class="description">{{productInfo.description}}</view>
</view> </view>

View File

@@ -70,8 +70,9 @@
<view class="list shupingList" v-if="shupingList.length > 0"> <view class="list shupingList" v-if="shupingList.length > 0">
<view class="item" @click.stop="toDetail(item)" v-for="item in shupingList" :key="item.id"> <view class="item" @click.stop="toDetail(item)" v-for="item in shupingList" :key="item.id">
<h4>{{item.title}}</h4> <h4>{{item.title}}</h4>
<view class="info" v-if="item.content != ''" v-html="item.content"> <view class="" v-if="item.content && item.content != '' ">
<view class="info" v-html="item.content">
</view>
</view> </view>
<view class="more" @click.stop="toDetail(item)">立即查看</view> <view class="more" @click.stop="toDetail(item)">立即查看</view>
</view> </view>
@@ -331,7 +332,9 @@
.playing{color: #1daa5c;} .playing{color: #1daa5c;}
.flexbox{display: flex;} .flexbox{display: flex;}
.tags{ .tags{
.tag{
margin-left: 0; margin-right: 10rpx;
}
} }
.moreBtn{text-align: center; margin-top: 20rpx; .moreBtn{text-align: center; margin-top: 20rpx;
text{padding: 6rpx 20rpx; border: 1px solid #27b386; color: #27b386; border-radius: 10rpx;} text{padding: 6rpx 20rpx; border: 1px solid #27b386; color: #27b386; border-radius: 10rpx;}

View File

@@ -38,7 +38,8 @@
<text>作者<text style="color: #333;">{{item.authorName}}</text></text> <text>作者<text style="color: #333;">{{item.authorName}}</text></text>
</view> </view>
<view v-if="shouTyp==1"> <view v-if="shouTyp==1">
<text>出版商<text style="color: #333;">{{item.publisherName}}</text></text> <text>简介<text style="color: #333;" v-if="item.description == ''">暂无简介内容</text>
<text style="color: #333;" class="jianjie">{{item.description}}</text></text>
</view> </view>
<view> <view>
<text style="line-height: 20rpx;">{{item.title}}</text> <text style="line-height: 20rpx;">{{item.title}}</text>
@@ -169,7 +170,13 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/style/mixin.scss'; @import '@/style/mixin.scss';
.jianjie{overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 4;
-webkit-box-orient: vertical;
text-align:justify;
}
.author_mess { .author_mess {
padding: 30rpx 30rpx; padding: 30rpx 30rpx;
box-shadow: 0 0px 10px 1px #d3d1d133; box-shadow: 0 0px 10px 1px #d3d1d133;

View File

@@ -3,25 +3,27 @@
<!-- 公共组件-每个页面必须引入 --> <!-- 公共组件-每个页面必须引入 -->
<!-- <public-module></public-module> --> <!-- <public-module></public-module> -->
<!-- <z-nav-bar title="我的图书"></z-nav-bar> --> <!-- <z-nav-bar title="我的图书"></z-nav-bar> -->
<view class="home_bg " > <view class="home_bg">
<view class="flexbox" style=" justify-content: space-between; "> <view class="" style=" ">
<view class="icon_hua"> <view class="icon_hua">
<image src="../../static/icon/home_icon_3.png" mode="aspectFit" class="icon_hua_1"></image> <image src="../../static/icon/home_icon_3.png" mode="aspectFit" class="icon_hua_1"></image>
</view> </view>
<view class="search_box flexbox" @click="onPageJump('../peanut/searchFor')"> <view class="hehan">
<image src="../../static/icon/hehan.png" mode="aspectFit" class="icon_hua_1"></image>
</view>
<view class="search_box flexbox" @click="onPageJump('./searchFor')">
<view class="search"> <view class="search">
<text class="icon_search"></text> <text class="icon_search"></text>
<text class="prompt">请输入想要搜索的书名</text> <text class="prompt">请输入想要搜索的书名</text>
</view> </view>
</view> </view>
<view class="searBtn flexbox"> <!-- <view class="searBtn flexbox">
<text>搜索</text> <text>搜索</text>
</view> </view> -->
</view> </view>
<!-- <view class="home_lunbo">
<view class="home_lunbo"> <u-swiper :list="list3" indicator indicatorMode="line" circular style="height: 180rpx;"></u-swiper>
<u-swiper :list="list3" indicator indicatorMode="line" circular style="height: 180rpx;"></u-swiper> </view> -->
</view>
</view> </view>
<!-- <view class="contentButton"> <!-- <view class="contentButton">
<u-tabs :scrollable="false" bg-color="#d4d4d4" active-color="#2979ff" inactive-color="#606266" bar-height="10" :list="contentButtonList" @click="contentButtonClick" lineWidth="42" :inactiveStyle="{fontSize:'32rpx'}" :activeStyle="{color: '#303133',fontWeight: 'bold', transform: 'scale(1.01)'}"></u-tabs> <u-tabs :scrollable="false" bg-color="#d4d4d4" active-color="#2979ff" inactive-color="#606266" bar-height="10" :list="contentButtonList" @click="contentButtonClick" lineWidth="42" :inactiveStyle="{fontSize:'32rpx'}" :activeStyle="{color: '#303133',fontWeight: 'bold', transform: 'scale(1.01)'}"></u-tabs>
@@ -109,9 +111,9 @@
<u-divider text="全部加载完成"></u-divider> <u-divider text="全部加载完成"></u-divider>
</view> </view>
</view> </view>
<view class="shuwuLink"> <!-- <view class="shuwuLink">
<image @click="" src="../../static/icon/shuwu.jpg" mode="aspectFit"></image> <image @click="" src="../../static/icon/shuwu.jpg" mode="aspectFit"></image>
</view> </view> -->
<music-play :playData="playData"></music-play> <music-play :playData="playData"></music-play>
<z-navigation></z-navigation> <z-navigation></z-navigation>
</view> </view>
@@ -431,49 +433,52 @@
} }
} }
.home_bg { .home_bg {
background-image: url('@/static/icon/home_bg1.jpg'); background-image: url('@/static/icon/home_bg.jpg');
background-position: center center; background-position: center center;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
padding: 100rpx 20rpx 40rpx 20rpx; padding: 20rpx;
position: relative; position: relative; margin-bottom:60rpx;
height: 400rpx; margin-bottom: 130rpx; // height: 400rpx; margin-bottom: 130rpx;
.icon_hua_1 { .icon_hua_1 {
// margin: 0 auto; // margin: 0 auto;
width: 150rpx; width: 100%; text-align: center;
height: 150rpx; height: 150rpx;
} image{width: 150rpx; height: 150rpx;}
.icon_hua{width: 150rpx; display: block;}
.search_box { margin-top: 20rpx; align-items: center;
width: calc(100% - 300rpx);
.search{height: 80upx;
display: flex;
width: 100%;
align-items: center;
padding: 0upx 40upx;
background-color: #fff;
border-radius: 20upx;
box-shadow: 0 0px 10px 1px #54a96633;
} }
.prompt { .icon_hua{width: 100%; text-align: center; display: block;
color: #838383; font-size: 24rpx; image{width: 150rpx; height: 150rpx; margin: 0 auto;}
} }
.search_box { margin: 0 auto; margin-top: 20rpx; align-items: center;
width: calc(100% - 30rpx); margin-bottom: -52rpx;
.icon_search { .search{height: 80upx;
background-image: url('@/static/icon/map_ic_search.png'); display: flex;
background-position: center center; width: 100%;
background-repeat: no-repeat; align-items: center;
background-size: cover; padding: 0upx 40upx;
width:36upx; background-color: #fff;
height: 36upx; border-radius: 20upx;
margin-right: 20upx; box-shadow: 0 0px 10px 1px #54a96633;
}
.prompt {
color: #838383; font-size: 24rpx;
}
.icon_search {
background-image: url('@/static/icon/map_ic_search.png');
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
width:36upx;
height: 36upx;
margin-right: 20upx;
}
}
.searBtn{
width: 80rpx; align-items: center;
font-size: 30rpx; color: #fff;
} }
}
.searBtn{
width: 80rpx; align-items: center;
font-size: 30rpx; color: #fff;
}
} }
</style> </style>

View File

@@ -54,6 +54,7 @@
</view> </view>
</view> </view>
<u-divider v-else text="暂无买书籍数据~"></u-divider>
<view> <view>
<view v-if="status==0" style="text-align: center;"> <view v-if="status==0" style="text-align: center;">
<u-loading-icon style="display: inline-block;"></u-loading-icon> <u-loading-icon style="display: inline-block;"></u-loading-icon>

View File

@@ -30,6 +30,11 @@
{{item.title}} > {{item.title}} >
</p> </p>
</view> </view>
<view class="tags">
<uni-tag class="tag" @click="toMore()" :inverted="true" text="书评" type="success"></uni-tag>
<!-- 1:打卡2不打卡 -->
<uni-tag @click="gotoclock()" v-if="bookInfo.clockIn == 1" class="tag" :inverted="true" text="签到" type="warning"></uni-tag>
</view>
<!-- <view class="price"> <!-- <view class="price">
<text class="light">98.00</text> <text class="light">98.00</text>
</view> --> </view> -->
@@ -69,7 +74,7 @@
sort:0 可以听 sort:0 可以听
sort:1 不可以听 sort:1 不可以听
--> -->
<view class="playList" > <view class="playList" v-if="libLIst.length > 0">
<view class="item" v-for="(item,index) in libLIst" :key="index" > <view class="item" v-for="(item,index) in libLIst" :key="index" >
<view > <view >
<view <view
@@ -82,6 +87,7 @@
</view> </view>
</view> </view>
</view> </view>
<u-divider v-else text="暂无听书目录"></u-divider>
<music-play :playData="playData"></music-play> <music-play :playData="playData"></music-play>
<!-- <z-navigation></z-navigation> --> <!-- <z-navigation></z-navigation> -->
@@ -185,6 +191,19 @@
}, },
methods: { methods: {
...mapMutations(['setUserInfo']), ...mapMutations(['setUserInfo']),
// 查看本书更多书评
toMore(val){
console.log(val,'val')
uni.navigateTo({
url: '../comments/comments?bookid='+ this.bookid,
});
},
// 去打卡
gotoclock(){
uni.navigateTo({
url: '../clock/clock?bookid='+ this.bookid,
});
},
getBookInfo(){ getBookInfo(){
// 获取书本基本信息 // 获取书本基本信息
this.$http this.$http
@@ -315,17 +334,6 @@
uni.navigateTo({ uni.navigateTo({
url: '../bookShop/settlementBook?type=2&list=' + this.bookid url: '../bookShop/settlementBook?type=2&list=' + this.bookid
}); });
// uni.showModal({
// title: '提示',
// cancelText: '暂不购买',
// confirmText:'立即购买',
// content: '确定花费¥95元购买本书电子版吗',
// success: function (res) {
// if (res.confirm) {
// console.log('用户点击确定');
// }
// }
// });
}, },
@@ -336,41 +344,7 @@
}); });
}, },
// 第一次加载音乐播放器
firstListen(){
this.forceRefresh = false
this.$http
.post('book/bookchaptercontent/appBooksChapterContent', {
'userId': this.userInfo.id,
'bookid': this.bookid,
'id': this.playid
})
.then(res => {
//this.tmpChapter.text = res.bookCatalogue
if(res.code == 0){
if(res.bookCatalogue.voices[0] != null){
// console.log('走这')
this.videoList = []
this.boardRemark = res.bookCatalogue.chapter[0]
this.fengImg = res.image
this.videoList.push({'recorPath':res.bookCatalogue.voices[0]})
// console.log(res.bookCatalogue.voices[0],'path')
this.forceRefresh = true
}else{
uni.showToast({
title:'暂无可播放音频~',
icon:'none',
duration:2000
})
setTimeout(()=>{
uni.navigateBack({ // 返回上一页
delta: 1
});
},2000)
}
}
}).catch((e)=>{})
},
// 存储播放进度 // 存储播放进度
saveRate(val){ saveRate(val){
this.$http this.$http
@@ -431,15 +405,16 @@
this.libLIst = res.BookCatalogue this.libLIst = res.BookCatalogue
// this.fengImg = res.images // this.fengImg = res.images
}else{ }else{
uni.showToast({ this.libLIst = []
title:'暂无可听章节哦~', // uni.showToast({
icon:'none' // title:'暂无可听章节哦~',
}) // icon:'none'
setTimeout(()=>{ // })
uni.navigateBack({ // 返回上一页 // setTimeout(()=>{
delta: 1 // uni.navigateBack({ // 返回上一页
}); // delta: 1
},2000) // });
// },2000)
} }
} }
}).catch((e)=>{ }).catch((e)=>{
@@ -541,6 +516,11 @@
.price{ margin-top: 160rpx; overflow: hidden; .price{ margin-top: 160rpx; overflow: hidden;
.light{font-size: 50rpx; font-weight: bold; color: #f05654;} .light{font-size: 50rpx; font-weight: bold; color: #f05654;}
} }
.tags{
.tag{
margin-left: 0; margin-right: 10rpx;
}
}
.charType{display: inline; width:20px !important;} .charType{display: inline; width:20px !important;}
.graytitle{color: #999;} .graytitle{color: #999;}
.yigoumai{background-color: #ffc773;} .yigoumai{background-color: #ffc773;}

View File

@@ -2,19 +2,22 @@
<view style="font-size: 28upx;"> <view style="font-size: 28upx;">
<!-- <z-nav-bar backState="2000" title="首页"></z-nav-bar> --> <!-- <z-nav-bar backState="2000" title="首页"></z-nav-bar> -->
<view class="home_bg"> <view class="home_bg">
<view class="flexbox" style=" justify-content: space-between; "> <view class="" style=" ">
<view class="icon_hua"> <view class="icon_hua">
<image src="../../static/icon/home_icon_3.png" mode="aspectFit" class="icon_hua_1"></image> <image src="../../static/icon/home_icon_3.png" mode="aspectFit" class="icon_hua_1"></image>
</view> </view>
<view class="hehan">
<image src="../../static/icon/hehan.png" mode="aspectFit" class="icon_hua_1"></image>
</view>
<view class="search_box flexbox" @click="onPageJump('./searchFor')"> <view class="search_box flexbox" @click="onPageJump('./searchFor')">
<view class="search"> <view class="search">
<text class="icon_search"></text> <text class="icon_search"></text>
<text class="prompt">请输入想要搜索的书名</text> <text class="prompt">请输入想要搜索的书名</text>
</view> </view>
</view> </view>
<view class="searBtn flexbox"> <!-- <view class="searBtn flexbox">
<text>搜索</text> <text>搜索</text>
</view> </view> -->
</view> </view>
<!-- <view class="home_lunbo"> <!-- <view class="home_lunbo">
<u-swiper :list="list3" indicator indicatorMode="line" circular style="height: 180rpx;"></u-swiper> <u-swiper :list="list3" indicator indicatorMode="line" circular style="height: 180rpx;"></u-swiper>
@@ -22,12 +25,12 @@
</view> </view>
<!-- <view class="home_nar" v-if="showEbook"> --> <!-- <view class="home_nar" v-if="showEbook"> -->
<view class="home_nar"> <view class="home_nar">
<view class="hn_cl_tit shuguan" @click="onPageJump('../clock/index')"> <view class="hn_cl_tit shuguan" @click="onPageJump('../clock/index')">
<image src="../../static/icon/home1.png" mode="aspectFit"></image> <image src="../../static/icon/home1.png" mode="aspectFit"></image>
<text>读书打卡</text> <text>读书打卡</text>
</view> </view>
<view class="hn_cl_tit dianzishu" @click="onPageJump('../listen/home')"> <view class="hn_cl_tit dianzishu" @click="onPageJump('../listen/home')">
<image src="../../static/icon/home2.png" mode="aspectFit"></image> <image src="../../static/icon/home2.png" mode="aspectFit"></image>
<text>听书</text> <text>听书</text>
</view> </view>
@@ -48,16 +51,16 @@
<u-swiper :list="list3" indicator indicatorMode="line" circular style="height: 180rpx;"></u-swiper> <u-swiper :list="list3" indicator indicatorMode="line" circular style="height: 180rpx;"></u-swiper>
</view> --> </view> -->
<view class="home_shujia" v-if="showEbook"> <!-- <view class="home_shujia" v-if="showEbook">
<view class="hn_sj" @click="onTabJump('./bookshelf')"> <view class="hn_sj" @click="onTabJump('./bookshelf')">
<image src="../../static/icon/midBtn_01.png" mode="aspectFit"></image> <image src="../../static/icon/midBtn_01.png" mode="aspectFit"></image>
我的书架 我的书架
</view> </view> -->
<!-- <view class="hn_sj"> <!-- <view class="hn_sj">
<image src="../../static/icon/midBtn_02.png" mode="aspectFit"></image> <image src="../../static/icon/midBtn_02.png" mode="aspectFit"></image>
图书推荐 图书推荐
</view> --> </view> -->
<view class="hn_sj" @click="onPageJumpData('../eBook/bookList',1)"> <!-- <view class="hn_sj" @click="onPageJumpData('../eBook/bookList',1)">
<image src="../../static/icon/midBtn_03.png" mode="aspectFit"></image> <image src="../../static/icon/midBtn_03.png" mode="aspectFit"></image>
</view> </view>
@@ -73,15 +76,15 @@
<image src="../../static/icon/midBtn_06.png" mode="aspectFit"></image> <image src="../../static/icon/midBtn_06.png" mode="aspectFit"></image>
</view> </view>
</view> </view> -->
<view class="head_line" v-if="seckillList!=null"> <!-- <view class="head_line" v-if="seckillList!=null">
<b></b> <b></b>
<text>商品秒杀</text> <text>商品秒杀</text>
<i @click="onShopMore('Sale')">查看更多 ></i> <i @click="onShopMore('Sale')">查看更多 ></i>
</view> </view>-->
<!-- 限时秒杀 --> <!-- 限时秒杀 -->
<view class="limited" v-if="seckillList!=null"> <!-- <view class="limited" v-if="seckillList!=null">
<view class="limitedSymbol"> <view class="limitedSymbol">
<image src="../../static/icon/shopping_xsh.png"></image> <image src="../../static/icon/shopping_xsh.png"></image>
</view> </view>
@@ -96,9 +99,9 @@
</view> </view>
</u-scroll-list> </u-scroll-list>
</view> </view>
</view> </view> -->
<view class="head_line"> <view class="head_line" >
<b></b> <b></b>
<text>新书上市</text> <text>新书上市</text>
<!-- <i @click="onBookMore('New')">查看更多 ></i> --> <!-- <i @click="onBookMore('New')">查看更多 ></i> -->
@@ -106,49 +109,141 @@
<view class="newBook"> <view class="newBook">
<scroll-view class="scroll-view_H " scroll-x="true" scroll-left="10"> <scroll-view class="scroll-view_H " scroll-x="true" scroll-left="10">
<view :class="['item']" v-for="(item,index) in newBookList" :key="index"> <view :class="['item']" v-for="(item,index) in newBookList" :key="index">
<view class="videoBox" @click="goDetail(item.productId)"> <view class="videoBox" @click="goDetail(item.productId)">
<image v-if="item.productImages != ''" :src="item.productImages" mode="scaleToFill"></image> <image v-if="item.productImages != ''" :src="item.productImages" mode="scaleToFill"></image>
<image v-else src="../../static/icon/wufeng.jpg" mode="scaleToFill"></image> <image v-else src="../../static/icon/wufeng.jpg" mode="scaleToFill"></image>
</view>
<text class="bookName">{{item.productName}}</text>
</view> </view>
<text class="bookName">{{item.productName}}</text>
</view>
</scroll-view> </scroll-view>
</view> </view>
<!-- end -->
<view class="head_line" style="margin-bottom: 10px;"> <!-- <view class="home_xinshu" v-if="showEbook">
<view v-for="(item, index) in xinsList" @click="onBookJump(item)" v-if="index<3" class="hx_list">
<image :src="item.image"></image>
<view class="hx_title">{{item.bookName}}</view>
<view class="hx_author">{{item.authorName}} []</view>
<b v-if="item.isVip==1" style="background: #c79119;">VIP</b>
<b v-if="item.isVip==2" style="background: #c74119;">付费</b>
</view>
<br clear='both'>
<view v-for="(item, index) in xinsList" @click="onBookJump(item)" v-if="index>2&&index<6" class="hx_list">
<image :src="item.image"></image>
<view class="hx_title">{{item.bookName}}</view>
<view class="hx_author">{{item.authorName}} []</view>
<b v-if="item.isVip==1" style="background: #c79119;">VIP</b>
<b v-if="item.isVip==2" style="background: #c74119;">付费</b>
</view>
<br clear='both'>
</view> -->
<!-- end -->
<!-- <view class="head_line" v-if="showEbook">
<b></b>
<text>限时特价</text>
<i @click="onBookMore('Sale')">查看更多 ></i>
</view>
<view class="home_limit" v-if="showEbook">
<u-scroll-list indicatorActiveColor="#27b386">
<view v-for="(item, index) in limiTist" :key="index" @click="onBookJump(item)" class="lt_list">
<image :src="item.image"></image>
<view class="lt_title">{{item.bookName}}</view>
<view class="lt_author">{{item.authorName}} []</view>
<view class="lt_yuan">{{item.price}}疯币</view>
<view class="lt_xian">{{item.salePrice}}疯币</view>
<b v-if="item.isVip==1" style="background: #c79119;">VIP</b>
<b v-if="item.isVip==2" style="background: #c74119;">付费</b>
</view>
</u-scroll-list>
</view> -->
<!-- <view class="head_line" v-if="showEbook">
<b></b>
<text>精选书单</text>
<i @click="onBookMore('Best')">查看更多 ></i>
</view>
<view class="home_jingxu" v-if="showEbook">
<view class="hj_hot" v-for="(item,index) in jingList" @click="onBookJump(item)">
<view>
<text class="bok_name">{{item.bookName}}</text>
<text style="margin-left: 50rpx;" v-if="item.authorName!=''">{{item.authorName}}</text>
</view>
<view v-if="item.publisherName!=''">
<text>出版社{{item.publisherName}}</text>
</view>
<view>
<text>{{item.introduce | ellipsis}}</text>
</view>
<image :src="item.image"></image>
<b v-if="item.isVip==0">免费</b>
<b v-if="item.isVip==1" style="background: #c79119;">VIP</b>
<b v-if="item.isVip==2" style="background: #c74119;">付费</b>
</view>
</view> -->
<view class="head_line" style="margin: 30rpx 0;">
<b></b> <b></b>
<text>精选商品</text> <text>精选商品</text>
<!-- <i @click="onShopMore('Hot')">查看更多 ></i> --> <!-- <i @click="onShopMore('Hot')">查看更多 ></i> -->
<i @click="onPageJump('../bookShop/classify')">查看更多 ></i> <i @click="onPageJump('../bookShop/classify')">查看更多 ></i>
</view> </view>
<view class="ProTabs">
<text :class="[tabsNumber == 0 ? 'cur' :'']" @click="tabsChange(0)">精选图书</text>
<text :class="[tabsNumber == 1 ? 'cur' :'']" @click="tabsChange(1)">折扣图书</text>
</view>
<!-- 商品展示 --> <!-- 商品展示 -->
<view class="goods"> <view class="goods">
<view class="goodsItem" v-for="(item,index) in goodsList" :key="item.productId" <!-- 精选 -->
@click="goDetail(item.productId)"> <view class="" v-show="tabsNumber == 0">
<image :src="item.productImages" mode="" class="goodsImg"></image> <view class="" v-if="goodsList.length > 0">
<view class="goodsContent"> <view class="goodsItem" v-for="(item,index) in goodsList" :key="item.productId"
<view class="goodsName"> @click="goDetail(item.productId)">
{{item.productName}} <image :src="item.productImages" mode="" class="goodsImg"></image>
</view> <view class="goodsContent">
<view class="goodsPrice"> <view class="goodsName">
<span class="price">{{item.price}}</span> {{item.productName}}
<span class="Salesnum">已售{{item.sumSales}} </span> </view>
<view class="goodsPrice">
<span class="price" v-if="item.activityPrice && item.activityPrice > 0">{{item.activityPrice}}</span>
<span class="price" v-else>{{item.price}}</span>
<span class="Salesnum">已售{{item.sumSales}} </span>
</view>
</view> </view>
</view> </view>
<br clear="both">
</view>
<u-divider v-else text="暂无精选书籍哦~"></u-divider>
</view>
<!-- 折扣 -->
<view class="zhekou" v-show="tabsNumber == 1">
<view v-if="offSaleList.length > 0">
<view class="goodsItem" v-for="(item,index) in offSaleList" :key="item.productId"
@click="goDetail(item.productId)">
<image :src="item.productImages" mode="" class="goodsImg"></image>
<view class="goodsContent">
<view class="goodsName">
{{item.productName}}
</view>
<view class="goodsPrice flexbox">
<view class="activityPrice">
<span class="price" v-if="item.activityPrice && item.activityPrice > 0">
<i style="font-style: normal; font-size: 28rpx;"></i>{{item.activityPrice}}</span>
</view>
<view class="priceAndnum">
<span class="price">原价<span style="text-decoration:line-through;">{{item.price}}</span></span>
<span class="Salesnum">已售{{item.sumSales}} </span>
</view>
</view>
</view>
</view>
<br clear="both">
</view>
<u-divider v-else text="暂无折扣书籍哦~"></u-divider>
</view> </view>
<br clear="both">
</view>
<view v-if="status==0" style="text-align: center;">
<u-loading-icon style="display: inline-block;"></u-loading-icon>
<font style='vertical-align: super;margin-left: 10px;font-size: 26rpx;color: #909399;'>努力加载中</font>
</view>
<view v-if="status==1">
<u-divider text="全部加载完成"></u-divider>
</view> </view>
<view> <view>
<u-back-top :scroll-top="scrollTop" bottom="60" :customStyle='bgiStyle' :iconStyle="iconStyle"></u-back-top> <u-back-top :scroll-top="scrollTop" bottom="60" :customStyle='bgiStyle' :iconStyle="iconStyle"></u-back-top>
</view> </view>
@@ -165,26 +260,23 @@
import repciptData from '@/static/json/repcipt.json' import repciptData from '@/static/json/repcipt.json'
import $http from '@/config/requestConfig.js'; import $http from '@/config/requestConfig.js';
import { import {
mapState, mapState,mapMutations
mapMutations
} from 'vuex'; } from 'vuex';
export default { export default {
data() { data() {
return { return {
myList: [], myList:[],
showEbook: false, // 显示电子书相关 showEbook:false, // 显示电子书相关
transaction: { // 成功回调 transaction: { // 成功回调
}, },
status: 3, tabsNumber : 0,
jPage: 1, scrollLeft:0,
jTotal: 0, maxTimes:1, // 轮询最大次数
scrollLeft: 0, ComplateRequestInterval:null, // 轮询定时器
maxTimes: 1, // 轮询最大次数 checking:false, // 正在检测
ComplateRequestInterval: null, // 轮询定时器 ComplateRequestArr:[],
checking: false, // 正在检测 iapChannel:null,
ComplateRequestArr: [],
iapChannel: null,
scrollTop: 0, scrollTop: 0,
list3: [ list3: [
// '../../static/icon/home_ban_1.jpg', // '../../static/icon/home_ban_1.jpg',
@@ -195,11 +287,12 @@
limiTist: [], limiTist: [],
jingList: [], jingList: [],
seckillList: [], seckillList: [],
offSaleList:[], // 折扣列表
goodsList: [], goodsList: [],
bgiStyle: { bgiStyle: {
background: '#fff' background: '#fff'
}, },
newBookList: [], newBookList:[],
iconStyle: { iconStyle: {
fontSize: '40rpx', fontSize: '40rpx',
fontWeight: 'bold', fontWeight: 'bold',
@@ -214,13 +307,12 @@
onLoad(e) { onLoad(e) {
// 隐藏原生的tabbar // 隐藏原生的tabbar
uni.hideTabBar(); uni.hideTabBar();
// this.requestIapOrder() // this.requestIapOrder()
}, },
//页面显示 //页面显示
onShow() { onShow() {
// 隐藏原生的tabbar // 隐藏原生的tabbar
uni.hideTabBar(); uni.hideTabBar();
this.goodsList = []
this.getData(); this.getData();
@@ -231,27 +323,12 @@
}, },
// 下拉刷新 // 下拉刷新
onPullDownRefresh() { onPullDownRefresh() {
console.log('下拉刷新')
this.jPage = 1
this.goodsList = []
this.getData() this.getData()
uni.stopPullDownRefresh() uni.stopPullDownRefresh()
this.requestIapOrder() this.requestIapOrder()
}, },
onHide() {
this.jPage = 1
this.goodsList = []
},
onReachBottom() {
console.log('到底了')
// if (this.jPage + 1 <= this.jTotal) {
// this.jPage++
// this.getJBook()
// } else {
// this.status = 1
// }
},
filters: { filters: {
// 控制字数 // 控制字数
ellipsis(value) { ellipsis(value) {
@@ -268,41 +345,47 @@
computed: { computed: {
...mapState(['userInfo']), ...mapState(['userInfo']),
}, },
components: { components:{
musicPlay musicPlay
}, },
//方法 //方法
methods: { methods: {
...mapMutations(['setUserInfo']), ...mapMutations(['setUserInfo']),
gotopingshu(val) { tabsChange(num){
uni.navigateTo({ if(num != this.tabsNumber){
url: '../comments/comments?bookid=' + val.id, this.tabsNumber = num
}); }
}, },
// 去打卡 // 获取折扣图书
gotoclock(item) { getOffSale(){
this.onPageJump('../clock/clock?bookid=' + item.id) this.$http
}, .post('book/shopproduct/listactivityprice?limit=10&page=1')
// 去听书 .then(res => {
gotoListen(item) { console.log(res,'折扣')
uni.navigateTo({ if(res.code == 0 && res.page.list.length > 0){
url: "../listen/listen?bookid=" + item.id this.offSaleList = res.page.list
}); this.tabsNumber = 0
}
}).catch(e => {
console.log(e,'e')
});
}, },
// 新书上市 // 新书上市
getNewBook() { getNewBook(){
this.$http this.$http
.post('book/shopproduct/getNewBook', { .post('book/shopproduct/getNewBook',{
'limit': 10, 'limit': 10,
'page': 1 'page':1
}) })
.then(res => { .then(res => {
console.log(res, 'xinshu') console.log(res,'xinshu')
this.newBookList = res.page.list this.newBookList = res.page.list
}); });
}, },
// 检测未完成订单 // 检测未完成订单
requestIapOrder() { requestIapOrder(){
console.log('检测支付环境...') console.log('检测支付环境...')
plus.payment.getChannels((channels) => { plus.payment.getChannels((channels) => {
console.log(channels, 'channels') console.log(channels, 'channels')
@@ -312,28 +395,28 @@
if (channels[i].id === 'appleiap') { if (channels[i].id === 'appleiap') {
this.iapChannel = channels[i] this.iapChannel = channels[i]
// console.log(this.userInfo.restoreFlag,'this.userInfo.restoreFlag') // console.log(this.userInfo.restoreFlag,'this.userInfo.restoreFlag')
if (this.userInfo.restoreFlag) { // 如果存在异常回调订单 if(this.userInfo.restoreFlag){ // 如果存在异常回调订单
this.restoreComplateRequest() this.restoreComplateRequest()
} }
} }
} }
}) })
}, },
// 查询未关闭订单 // 查询未关闭订单
restoreComplateRequest() { restoreComplateRequest(){
let that = this let that = this
console.log('检测未完成订单') console.log('检测未完成订单')
console.log(this.iapChannel, 'this.iapChannel') console.log(this.iapChannel,'this.iapChannel')
this.iapChannel.restoreComplateRequest({ this.iapChannel.restoreComplateRequest({
manualFinishTransaction: true manualFinishTransaction: true
}, function(results) { }, function(results) {
if (!that.checking) { if(!that.checking){
that.checking = true that.checking = true
// console.log(that.checking) // console.log(that.checking)
// results 格式为数组存放恢复的IAP商品交易信息对象 IAPTransaction通用需将返回的支付凭证传给后端进行二次认证 // results 格式为数组存放恢复的IAP商品交易信息对象 IAPTransaction通用需将返回的支付凭证传给后端进行二次认证
that.ComplateRequestArr = results that.ComplateRequestArr = results
console.log(that.ComplateRequestArr, '未完成订单数组') console.log(that.ComplateRequestArr,'未完成订单数组')
if (results && results.length > 0) { if(results && results.length>0){
// for(var j = 0; j<results.length; j++){ // for(var j = 0; j<results.length; j++){
// if(results[j].transactionState == '1'){ // if(results[j].transactionState == '1'){
// // 已经支付,但是没有走逻辑的内购订单 // // 已经支付,但是没有走逻辑的内购订单
@@ -345,51 +428,49 @@
// } // }
// } // }
results.map((item, index) => { results.map((item,index)=>{
// "0"为正在支付;"1"为支付成功;"2"为支付失败;"3"为支付已恢复。 // "0"为正在支付;"1"为支付成功;"2"为支付失败;"3"为支付已恢复。
if (item.transactionState == '1') { if(item.transactionState == '1'){
// 已经支付,但是没有走逻辑的内购订单 // 已经支付,但是没有走逻辑的内购订单
that.iapCheck(item, index) that.iapCheck(item,index)
} else { }else{
// 其他状态的内购订单 // 其他状态的内购订单
that.finishTransaction(item) that.finishTransaction(item)
} }
}) })
} }
} }
}); });
}, },
// 关闭交易订单 // 关闭交易订单
finishTransaction(trans, index) { finishTransaction(trans,index){
this.iapChannel.finishTransaction(trans, (success) => { this.iapChannel.finishTransaction(trans, (success) => {
console.log('关闭订单成功', index); console.log('关闭订单成功',index);
if (index == this.ComplateRequestArr.length - 1) { // 最后一个支付订单 if(index == this.ComplateRequestArr.length-1){ // 最后一个支付订单
this.setUserInfo({ this.setUserInfo({restoreFlag:false});
restoreFlag: false
});
// console.log(this.userInfo.restoreFlag,'this.ComplateRequestArr.length+++') // console.log(this.userInfo.restoreFlag,'this.ComplateRequestArr.length+++')
} }
}, (fail) => { }, (fail) => {
console.log('关闭订单失败'); console.log('关闭订单失败');
}); });
}, },
iapCheck(result, index) { iapCheck(result,index) {
const that = this const that = this
console.log('进入后台验证') console.log('进入后台验证')
let data = { let data = {
transactionId: result.transactionIdentifier, // 支付交易id transactionId: result.transactionIdentifier, // 支付交易id
customerOid: that.userInfo.id, customerOid: that.userInfo.id,
productId: result.payment.productid, // 产品id productId: result.payment.productid, // 产品id
orderId: result.payment.username, // 系统订单号 orderId: result.payment.username, // 系统订单号
receiptData: result.transactionReceipt, // 苹果返回收据 receiptData: result.transactionReceipt ,// 苹果返回收据
loadAnimate: 'none', // 请求加载动画 loadAnimate:'none', // 请求加载动画
} }
console.log(data, 'data') console.log(data,'data')
$http.request({ $http.request({
url: "/Ipa/veri", url: "/Ipa/veri",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档 method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
@@ -400,51 +481,51 @@
}).then(res => { }).then(res => {
console.log(JSON.stringify(res)) console.log(JSON.stringify(res))
console.log(res.code) console.log(res.code)
if (res.code == 0) { if(res.code == 0){
// uni.hideLoading() // uni.hideLoading()
console.log('充值订单已处理,请留意账户金额变动....') console.log('充值订单已处理,请留意账户金额变动....')
// 服务器验证票据有效后在客户端关闭订单 // 服务器验证票据有效后在客户端关闭订单
that.finishTransaction(result, index) that.finishTransaction(result,index)
} else if (res.code == 200) { // 重复验证订单 }else if(res.code == 200){ // 重复验证订单
console.log('重复验证....') console.log('重复验证....')
that.finishTransaction(result, index) that.finishTransaction(result,index)
} }
}).catch(e => { }).catch(e => {
console.log('支付验证失败,进入轮询程序...') console.log('支付验证失败,进入轮询程序...')
that.getIapPayResult(result, index) that.getIapPayResult(result,index)
}) })
console.log('--------------') console.log('--------------')
}, },
// 轮询验证支付结果 // 轮询验证支付结果
getIapPayResult(result, index) { getIapPayResult(result,index){
// let interval = null // let interval = null
this.ComplateRequestInterval = setTimeout(() => { this.ComplateRequestInterval = setTimeout(() => {
if (this.maxTimes <= 3) { if(this.maxTimes <= 3){
this.iapCheck(result, index) this.iapCheck(result,index)
console.log('执行1', this.maxTimes, this.ComplateRequestInterval) console.log('执行1', this.maxTimes,this.ComplateRequestInterval)
this.maxTimes += 1 this.maxTimes += 1
} else { }else{
this.maxTimes = 0 this.maxTimes = 0
console.log('停止轮询', this.maxTimes, this.ComplateRequestInterval, this.maxTimes) console.log('停止轮询', this.maxTimes,this.ComplateRequestInterval, this.maxTimes)
this.checking = false this.checking = false
this.saveErrorIapOrder(result, index) this.saveErrorIapOrder(result,index)
clearTimeout(this.ComplateRequestInterval) clearTimeout(this.ComplateRequestInterval)
} }
}, 10000) },10000)
}, },
// 轮询失败接口 // 轮询失败接口
saveErrorIapOrder(result, index) { saveErrorIapOrder(result,index){
console.log('提交到充值问题单里面...') console.log('提交到充值问题单里面...')
let data = { let data = {
transactionId: result.transactionIdentifier, transactionId : result.transactionIdentifier,
failureflag: 1, failureflag: 1,
orderId: result.payment.username, orderId:result.payment.username,
receiptData: result.transactionReceipt, receiptData:result.transactionReceipt,
productId: result.payment.productid, productId:result.payment.productid,
customerOid: this.userInfo.id customerOid:this.userInfo.id
} }
$http.request({ $http.request({
url: "Ipa/failure", url: "Ipa/failure",
@@ -455,49 +536,46 @@
}, },
}).then(res => { }).then(res => {
console.log(JSON.stringify(res)) console.log(JSON.stringify(res))
if (res.code == 200) { if(res.code == 200){
console.log('提交成功,关闭订单') console.log('提交成功,关闭订单')
this.finishTransaction(result, index) this.finishTransaction(result,index)
} }
}).catch(e => { }).catch(e => {
console.log(e) console.log(e)
if (e.statusCode == 0) { // 重复提交,直接关闭订单 if(e.statusCode == 0){ // 重复提交,直接关闭订单
this.finishTransaction(result, index) this.finishTransaction(result,index)
} }
}) })
}, },
// 获取列表数据 // 获取列表数据
getData() { getData() {
this.$http // this.$http
.post('book/book/bookIndex') // .post('book/book/bookIndex')
.then(res => { // .then(res => {
this.xinsList = res.bookIndex.newBookList // // this.xinsList = res.bookIndex.newBookList
this.limiTist = res.bookIndex.saleList // // this.limiTist = res.bookIndex.saleList
this.jingList = res.bookIndex.topBookList // // this.jingList = res.bookIndex.topBookList
}); // });
// 获取限时秒杀 // 获取限时秒杀
this.$http // this.$http
.get(`book/shopseckill/getSeckillProd`) // .get(`book/shopseckill/getSeckillProd`)
.then(res => { // .then(res => {
this.seckillList = res.list // this.seckillList = res.list
// this.seckillList = null // // this.seckillList = null
}) // })
// 获取精选图书 // 获取精选商品
this.getJBook()
this.getNewBook()
},
// 获取精选图书
getJBook() {
this.$http this.$http
.post('book/shopproduct/appGetList?limit=30&page=1&istop=1') .post('book/shopproduct/appGetList?limit=30&page=1&istop=1')
.then(res => { .then(res => {
console.log(res.page.list, '首页商品') console.log(res.page.list,'首页商品')
this.goodsList = res.page.list this.goodsList = res.page.list
}) })
this.getOffSale()
this.getNewBook()
}, },
// 跳转 // 跳转
onPageJump(url) { onPageJump(url) {
uni.navigateTo({ uni.navigateTo({
@@ -527,7 +605,7 @@
// 电子书内容跳转 // 电子书内容跳转
onBookJump(e) { onBookJump(e) {
uni.navigateTo({ uni.navigateTo({
url: '../eBook/bookContent?Id=' + e.id url: '../eBook/bookContent?Id=' + e.bookid
}); });
}, },
// 商品详情页 // 商品详情页
@@ -559,62 +637,37 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/style/mixin.scss'; @import '@/style/mixin.scss';
.zhekou{
.tags { .goodsName{margin-bottom: 20rpx;}
uni-tag {
margin-right: 10rpx;
}
} }
.activityPrice{font-size: 60rpx;}
.newBook { .priceAndnum{ font-size: 24rpx !important;
margin-top: 20rpx; .price{color: #9b9b9b !important; font-size: inherit; font-weight: normal !important; display: block;}
} }
.ProTabs{margin: 20rpx 0; padding:0 20rpx;
.scroll-view_H { text{padding: 4rpx 8rpx; font-size: 32rpx; border-radius: 10rpx; overflow: hidden; background-color: #eee; color: #55aa7f; margin-right: 10rpx;}
background-color: #fff; text.cur{background-color:#55aa7f ; color: #fff;}
white-space: nowrap;
width: 100%;
padding: 10rpx;
} }
.newBook{margin-top: 20rpx;}
.scroll-view_H { .scroll-view_H{background-color: #fff;white-space: nowrap;
.item { width: 100%; padding:10rpx ; }
padding: 10rpx; .scroll-view_H{
overflow: hidden; .item { padding: 10rpx; overflow: hidden; display: inline-block;
display: inline-block; width: 180rpx !important; margin-right: 20rpx; border-radius: 10rpx;
width: 180rpx !important; .videoBox{
margin-right: 20rpx; image{display: block; width:150rpx;
border-radius: 10rpx; height: 170rpx;
.videoBox {
image {
display: block;
width: 150rpx;
height: 170rpx;
} }
} }
.bookName{display: block; margin-top: 20rpx; color: #666; font-size: 24rpx; white-space: nowrap;
.bookName { overflow-x: hidden; overflow: hidden;
display: block; text-overflow: ellipsis;}
margin-top: 20rpx;
color: #666;
font-size: 24rpx;
white-space: nowrap;
overflow-x: hidden;
overflow: hidden;
text-overflow: ellipsis;
}
} }
// .item.active{margin-right: 20rpx; border: 1px solid #55aa00; border-radius: 10rpx;} // .item.active{margin-right: 20rpx; border: 1px solid #55aa00; border-radius: 10rpx;}
} }
.flexbox{display: flex;}
.flexbox {
display: flex;
}
.head_line { .head_line {
margin: 30rpx 0 0 0; margin: 20rpx 0 0 0;
b { b {
@@ -641,32 +694,26 @@
} }
.home_bg { .home_bg {
background-image: url('@/static/icon/home_bg1.jpg'); background-image: url('@/static/icon/home_bg.jpg');
background-position: center center; background-position: center center;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
padding: 20rpx; padding: 20rpx;
position: relative; position: relative; margin-bottom:60rpx;
// height: 400rpx; margin-bottom: 130rpx;
// height: 400rpx; margin-bottom: 130rpx;
.icon_hua_1 { .icon_hua_1 {
// margin: 0 auto; // margin: 0 auto;
width: 150rpx; width: 100%; text-align: center;
height: 150rpx; height: 150rpx;
image{width: 150rpx; height: 150rpx;}
} }
.icon_hua{width: 100%; text-align: center; display: block;
.icon_hua { image{width: 150rpx; height: 150rpx; margin: 0 auto;}
width: 150rpx;
display: block;
} }
.search_box { margin: 0 auto; margin-top: 20rpx; align-items: center;
width: calc(100% - 30rpx); margin-bottom: -52rpx;
.search_box { .search{height: 80upx;
margin-top: 20rpx;
align-items: center;
width: calc(100% - 300rpx);
.search {
height: 80upx;
display: flex; display: flex;
width: 100%; width: 100%;
align-items: center; align-items: center;
@@ -675,10 +722,8 @@
border-radius: 20upx; border-radius: 20upx;
box-shadow: 0 0px 10px 1px #54a96633; box-shadow: 0 0px 10px 1px #54a96633;
} }
.prompt { .prompt {
color: #838383; color: #838383; font-size: 24rpx;
font-size: 24rpx;
} }
@@ -687,61 +732,43 @@
background-position: center center; background-position: center center;
background-repeat: no-repeat; background-repeat: no-repeat;
background-size: cover; background-size: cover;
width: 36upx; width:36upx;
height: 36upx; height: 36upx;
margin-right: 20upx; margin-right: 20upx;
} }
} }
.searBtn{
.searBtn { width: 80rpx; align-items: center;
width: 80rpx; font-size: 30rpx; color: #fff;
align-items: center;
font-size: 30rpx;
color: #fff;
} }
} }
.home_nar { .home_nar {
padding-bottom: 20rpx; margin: 30rpx 20rpx; justify-content: space-between;
margin: 30rpx 20rpx;
justify-content: space-between;
display: flex; display: flex;
color: #333; margin-bottom: 0 !important; color: #333; margin-bottom: 0;
// .dianzishu{ margin-right:10rpx; // .dianzishu{ margin-right:10rpx;
// background-color:#f8d6f4 ; border: 2px solid #edcce9; // background-color:#f8d6f4 ; border: 2px solid #edcce9;
// } // }
// .chaoshi{background-color:#fff2d8 ; border: 2px solid #ede6d3; } // .chaoshi{background-color:#fff2d8 ; border: 2px solid #ede6d3; }
// .shuping{ background-color: #d6ffda; border: 2px solid #bae9bf;} // .shuping{ background-color: #d6ffda; border: 2px solid #bae9bf;}
// .shuguan{ background-color:#e3f9f9 ; border: 2px solid #d7eced; } // .shuguan{ background-color:#e3f9f9 ; border: 2px solid #d7eced; }
.hn_cl_tit { .hn_cl_tit { padding-bottom: 10rpx;
padding-bottom: 10rpx;
// width: 23%; // width: 23%;
width: 31%; width: 31%;
text-align: center; text-align: center;
border-radius: 20rpx; border-radius: 20rpx ; padding-top: 10rpx;
padding-top: 10rpx;
// line-height: 110upx; // line-height: 110upx;
//display: flex; //display: flex;
align-content: center; align-content: center;
justify-content: center; justify-content: center;
image { image {
width: 110upx; width: 110upx;
height: 110upx; height:110upx;
display: block; display: block;
margin: 0 auto; margin: 0 auto;
// margin: 0 20rpx; // margin: 0 20rpx;
} }
text{ display:block; text-align: center; margin-top:4rpx; font-size: 36rpx; color: #000; font-weight:blod;}
text {
display: block;
text-align: center;
margin-top: 10px;
font-size: 36rpx;
color: #000;
font-weight: blod;
}
} }
@@ -1005,7 +1032,7 @@
.goods { .goods {
width: 100%; width: 100%;
margin: 40rpx 0 50rpx 0; margin:18rpx 0 50rpx 0;
.goodsItem { .goodsItem {
display: inline-block; display: inline-block;
@@ -1033,17 +1060,12 @@
.goodsPrice { .goodsPrice {
font-size: 30rpx; font-size: 30rpx;
margin: 5rpx 0 0 3rpx; margin: 5rpx 0 0 3rpx;
display: flex; display: flex; justify-content: space-between;
justify-content: space-between; .price{
.price {
font-weight: bold; font-weight: bold;
color: #bf0c0c; color: #bf0c0c;
} }
.Salesnum{color: #9b9b9b;}
.Salesnum {
color: #9b9b9b;
}
} }
} }
} }