7 Commits

Author SHA1 Message Date
徐哼唧L
97ff3915c0 游客模式 2023-12-06 16:26:45 +08:00
徐哼唧L
52b8c4503b 1 2023-12-05 11:58:48 +08:00
徐哼唧L
7e798a84eb Merge branch 'master' of https://gitee.com/wjl2008_admin/nuttyreading-html 2023-12-05 09:11:11 +08:00
yanwenlong
1b6a64d3e6 图谱居中,最大宽度适配 2023-12-04 23:16:50 +08:00
徐哼唧L
68ffd76d78 Merge remote-tracking branch 'remotes/origin/xulu' 2023-12-04 16:14:11 +08:00
徐哼唧L
7e666e7d8b 听书评论 2023-12-04 16:03:56 +08:00
徐哼唧L
406a569335 1 2023-12-01 16:33:29 +08:00
13 changed files with 1281 additions and 439 deletions

View File

@@ -2,7 +2,7 @@
<view> <view>
<view class="footer_box" :class="{ footer_bg: bg }"> <view class="footer_box" :class="{ footer_bg: bg }">
<view v-for="(item, index) of navigationList" :key="index" class="footer_item"> <view v-for="(item, index) of navigationList" :key="index" class="footer_item">
<view class="footer_nav_item" @click="onPageJump(item.pagePath)"> <view class="footer_nav_item" @click="onPageJump(item.pagePath,index+1)">
<image v-if="item.pagePath == path" class="footer_nav_item_image footer_nav_item_image_scale" <image v-if="item.pagePath == path" class="footer_nav_item_image footer_nav_item_image_scale"
:src="'/' + item.selectedIconPath" mode="aspectFit"></image> :src="'/' + item.selectedIconPath" mode="aspectFit"></image>
<image v-else class="footer_nav_item_image" :src="'/' + item.iconPath" mode="aspectFit"></image> <image v-else class="footer_nav_item_image" :src="'/' + item.iconPath" mode="aspectFit"></image>
@@ -69,11 +69,23 @@
}, },
//方法 //方法
methods: { methods: {
onPageJump(url) { onPageJump(url,num) {
if (this.path !== url) { if (uni.getStorageSync("anonymous") == '0000000000' && (num == 2 || num == 3)) {
uni.switchTab({ uni.showToast({
url: '/' + url icon: 'none',
}); title: '请先登录'
})
// setTimeout(() => {
// uni.navigateTo({
// url: "/pages/user/login"
// });
// }, 1000)
} else {
if (this.path !== url) {
uni.switchTab({
url: '/' + url
});
}
} }
}, },
} }

View File

@@ -6,10 +6,10 @@ if (process.env.NODE_ENV === 'development') {
// socketUrl = "ws://localhost:6001/"; // socketUrl = "ws://localhost:6001/";
// baseUrl = "https://twin-ui.com/demo/"; // baseUrl = "https://twin-ui.com/demo/";
// baseUrl = "http://59.110.212.44:9200/pb/"; // baseUrl = "http://59.110.212.44:9200/pb/";
// baseUrl = "https://testapi.nuttyreading.com/"; // 线上测试环境 baseUrl = "https://testapi.nuttyreading.com/"; // 线上测试环境
// baseUrl = "https://api.nuttyreading.com/"; // 线上正式 // baseUrl = "https://api.nuttyreading.com/"; // 线上正式
// baseUrl = "http://192.168.110.100:9100/pb/"; // 开发用电脑 // baseUrl = "http://192.168.110.100:9100/pb/"; // 开发用电脑
baseUrl = "http://192.168.110.110:9200/pb/"; // baseUrl = "http://192.168.110.110:9200/pb/";
// baseUrl = "http://192.168.110.38:9200/pb/"; // 吴春磊笔记本1 // baseUrl = "http://192.168.110.38:9200/pb/"; // 吴春磊笔记本1
// socketUrl = "ws://8.129.186.35:6001/"; // socketUrl = "ws://8.129.186.35:6001/";
} else if (process.env.NODE_ENV === 'production') { } else if (process.env.NODE_ENV === 'production') {

View File

@@ -240,13 +240,13 @@ export const h5Login = function(type = "judge", callback) {
appMutual("jumpLogin", null, function() { appMutual("jumpLogin", null, function() {
if (type == "force") { if (type == "force") {
// 没登录跳转回登录页 // 没登录跳转回登录页
uni.showToast({ // uni.showToast({
icon: 'none', // icon: 'none',
title: '用户信息失效,请重新登陆。' // title: '用户信息失效,请重新登陆。'
}) // })
uni.navigateTo({ // uni.navigateTo({
url: "/pages/user/login" // url: "/pages/user/login"
}); // });
}else{ }else{
uni.showModal({ uni.showModal({
title:"提示", title:"提示",

View File

@@ -125,9 +125,11 @@ $http.requestStart = function(options) {
let storeUserInfo = store.state.userInfo; let storeUserInfo = store.state.userInfo;
if (!storeUserInfo.token) { // nvue页面读取不到vuex里面数据将取缓存 if (!storeUserInfo.token) { // nvue页面读取不到vuex里面数据将取缓存
storeUserInfo = uni.getStorageSync("userInfo"); storeUserInfo = uni.getStorageSync("userInfo");
uni.setStorageSync('anonymous', '0000000000');
} }
if (storeUserInfo.token) { if (storeUserInfo.token) {
options.header['token'] = storeUserInfo.token; options.header['token'] = storeUserInfo.token;
uni.setStorageSync('anonymous', storeUserInfo.token);
}; };
return options; return options;
} }
@@ -161,8 +163,9 @@ $http.dataFactory = async function(res) {
// 返回正确的结果(then接受数据) // 返回正确的结果(then接受数据)
return Promise.resolve(httpData); return Promise.resolve(httpData);
} else if (httpData.code == "401") { } else if (httpData.code == "401") {
console.log(uni.getStorageSync("anonymous"))
// token失效 // token失效
if (uni.getStorageSync('guidePages') == 2) { if (uni.getStorageSync('guidePages') == 2 && uni.getStorageSync("anonymous") != '0000000000') {
uni.showToast({ uni.showToast({
title: '登录失效,请重新登录', title: '登录失效,请重新登录',
icon: 'none' icon: 'none'

View File

@@ -448,8 +448,18 @@
url: '../peanut/shopping' url: '../peanut/shopping'
}); });
}, },
// 关联商品点击按钮组件 // 关联商品点击按钮组件
buttonClickLink(e) { buttonClickLink(e) {
// 游客跳转
if (uni.getStorageSync("anonymous") == '0000000000') {
uni.showToast({
icon: 'none',
title: '请先登录'
})
return
}
console.log('点击的是关联商品的组件') console.log('点击的是关联商品的组件')
if (e.index == 0) { if (e.index == 0) {
// 点击的是加入购物车 // 点击的是加入购物车
@@ -484,6 +494,14 @@
}, },
// 点击按钮组间 // 点击按钮组间
buttonClick(e) { buttonClick(e) {
// 游客跳转
if (uni.getStorageSync("anonymous") == '0000000000') {
uni.showToast({
icon: 'none',
title: '请先登录'
})
return
}
// console.log(e) // console.log(e)
if (e.index == 0) { if (e.index == 0) {
// 点击的是加入购物车 // 点击的是加入购物车

View File

@@ -67,6 +67,7 @@
<view v-if="item.clockIn != null && item.clockIn != 2" @click="goDaKa(item)"> <view v-if="item.clockIn != null && item.clockIn != 2" @click="goDaKa(item)">
<image src="../../static/icon/home1.png" mode="aspectFit"></image> <image src="../../static/icon/home1.png" mode="aspectFit"></image>
</view> </view>
<view v-else @click="noOp()"> <view v-else @click="noOp()">
<image class="gray" src="../../static/icon/home1.png" mode="aspectFit"></image> <image class="gray" src="../../static/icon/home1.png" mode="aspectFit"></image>
</view> </view>

View File

@@ -4,16 +4,16 @@
<view class="home_bg"> <view class="home_bg">
<view class="" style=" "> <view class="" style=" ">
<view class="icon_hua"> <view class="icon_hua">
<image src="../../static/icon/home_icon_1.png" mode="aspectFit" class="icon_hua_1"></image> <image src="../../static/icon/home_icon_1.png" mode="aspectFit" class="icon_hua_1"></image>
</view> </view>
<view class="hehan"> <view class="hehan">
<image src="../../static/icon/hehan.png" mode="aspectFit" class="icon_hua_1"></image> <image src="../../static/icon/hehan.png" mode="aspectFit" class="icon_hua_1"></image>
</view> </view>
<view class="fiveIcon flexbox" style="justify-content: space-around;"> <view class="fiveIcon flexbox" style="justify-content: space-around;">
<div class="item item1" @click="onPageJump('../acupoint/acupoint')"> <div class="item item1" @click="anonymous?onYouAlert():onPageJump('../acupoint/acupoint')">
<image src="../../static/icon/five1.png" mode="aspectFit" ></image> <image src="../../static/icon/five1.png" mode="aspectFit"></image>
<text>经穴检索</text> <text>经穴检索</text>
</div> </div>
<!-- <div class="item item1"> <!-- <div class="item item1">
@@ -24,7 +24,7 @@
<image src="../../static/icon/five4.png" mode="aspectFit"></image> <image src="../../static/icon/five4.png" mode="aspectFit"></image>
<text>五运六气</text> <text>五运六气</text>
</div> --> </div> -->
<div class="item item1" @click="onPageJump('../peanut/searchFor')"> <div class="item item1" @click="anonymous?onYouAlert():onPageJump('../peanut/searchFor')">
<image src="../../static/icon/five3.png" mode="aspectFit"></image> <image src="../../static/icon/five3.png" mode="aspectFit"></image>
<text>书名检索</text> <text>书名检索</text>
</div> </div>
@@ -51,28 +51,28 @@
</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="anonymous?onYouAlert():onPageJump('../clock/index')">
<image src="../../static/icon/home1-1.png" mode="aspectFit"></image> <image src="../../static/icon/home1-1.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="anonymous?onYouAlert():onPageJump('../listen/home')">
<image src="../../static/icon/home2-1.png" mode="aspectFit"></image> <image src="../../static/icon/home2-1.png" mode="aspectFit"></image>
<!-- <text> </text> --> <!-- <text> </text> -->
</view> </view>
<!-- <view class="hn_cl_tit" @click="onPageJump('../bookShop/bookShopIndex')"> --> <!-- <view class="hn_cl_tit" @click="onPageJump('../bookShop/bookShopIndex')"> -->
<view class="hn_cl_tit shuping" @click="onPageJump('../comments/commentsList')"> <view class="hn_cl_tit shuping" @click="anonymous?onYouAlert():onPageJump('../comments/commentsList')">
<image src="../../static/icon/home3-1.png" mode="aspectFit"></image> <image src="../../static/icon/home3-1.png" mode="aspectFit"></image>
<!-- <text> </text> --> <!-- <text> </text> -->
</view> </view>
<view class="hn_cl_tit chaoshi" @click="onPageJump('../talkBook/talkBook')"> <view class="hn_cl_tit chaoshi" @click="anonymous?onYouAlert():onPageJump('../talkBook/talkBook')">
<image src="../../static/icon/home4-1.png" mode="aspectFit"></image> <image src="../../static/icon/home4-1.png" mode="aspectFit"></image>
<!-- <text> </text> --> <!-- <text> </text> -->
</view> </view>
<view class="hn_cl_tit chaoshi" @click="onPageJump('../yian/yian')"> <view class="hn_cl_tit chaoshi" @click="anonymous?onYouAlert():onPageJump('../yian/yian')">
<image src="../../static/icon/home5-1.png" mode="aspectFit"></image> <image src="../../static/icon/home5-1.png" mode="aspectFit"></image>
<!-- <text> </text> --> <!-- <text> </text> -->
</view> </view>
@@ -87,11 +87,11 @@
<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>
@@ -140,13 +140,13 @@
<view class="newBook"> <view class="newBook">
<scroll-view class="scroll-view_H " scroll-x="true" scroll-left="10" style="margin-top: 0 !important;"> <scroll-view class="scroll-view_H " scroll-x="true" scroll-left="10" style="margin-top: 0 !important;">
<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>
@@ -216,44 +216,47 @@
<!-- <view class="head_line" style="margin: 30rpx 0;"> <!-- <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> -->
<scroll-view class="scroll-view_H " scroll-x="true" scroll-left="0"> <scroll-view class="scroll-view_H " scroll-x="true" scroll-left="0">
<view class="ProTabs"> <view class="ProTabs">
<text v-for="item in tagList" :key="item.splId" :class="[tabsid == item.splId ? 'cur' :'']" @click="tabsChange(item)">{{item.labelName}}</text> <text v-for="item in tagList" :key="item.splId" :class="[tabsid == item.splId ? 'cur' :'']"
@click="tabsChange(item)">{{item.labelName}}</text>
</view> </view>
</scroll-view> </scroll-view>
<!-- 商品展示 --> <!-- 商品展示 -->
<view class="goods"> <view class="goods">
<!-- 精选 --> <!-- 精选 -->
<view class="" > <view class="">
<view v-if="tjProList.length > 0" > <view v-if="tjProList.length > 0">
<view class="flexbox" style="flex-wrap: wrap;"> <view class="flexbox" style="flex-wrap: wrap;">
<view class="goodsItem" v-for="(item,index) in tjProList" :key="index" <view class="goodsItem" v-for="(item,index) in tjProList" :key="index"
@click="goDetail(item.productId)"> @click="goDetail(item.productId)">
<image :src="item.productImages" mode="" class="goodsImg"></image> <image :src="item.productImages" mode="" class="goodsImg"></image>
<view class="goodsContent"> <view class="goodsContent">
<view class="goodsName"> <view class="goodsName">
{{item.productName}} {{item.productName}}
</view> </view>
<view class="goodsPrice"> <view class="goodsPrice">
<span class="price" v-if="item.activityPrice && item.activityPrice > 0">{{item.activityPrice}}</span> <span class="price"
<span class="price" v-else>{{item.price}}</span> v-if="item.activityPrice && item.activityPrice > 0">{{item.activityPrice}}</span>
<span class="Salesnum">已售{{item.sumSales}} </span> <span class="price" v-else>{{item.price}}</span>
<span class="Salesnum">已售{{item.sumSales}} </span>
</view>
</view>
</view> </view>
</view> </view>
</view> <view class="">
</view> <view v-if="status==0" style="text-align: center;">
<view class=""> <u-loading-icon style="display: inline-block;"></u-loading-icon>
<view v-if="status==0" style="text-align: center;"> <font style='vertical-align: super;margin-left: 10px;font-size: 26rpx;color: #909399;'>努力加载中
<u-loading-icon style="display: inline-block;"></u-loading-icon> </font>
<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 v-if="status==1">
<u-divider text="全部加载完成"></u-divider>
</view>
</view>
</view> </view>
<u-divider v-else text="暂无数据哦~"></u-divider> <u-divider v-else text="暂无数据哦~"></u-divider>
@@ -278,23 +281,24 @@
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,mapMutations mapState,
mapMutations
} from 'vuex'; } from 'vuex';
export default { export default {
data() { data() {
return { return {
myList:[], myList: [],
showEbook:false, // 显示电子书相关 showEbook: false, // 显示电子书相关
transaction: { // 成功回调 transaction: { // 成功回调
}, },
tabsNumber : null, tabsNumber: null,
scrollLeft:0, scrollLeft: 0,
maxTimes:1, // 轮询最大次数 maxTimes: 1, // 轮询最大次数
ComplateRequestInterval:null, // 轮询定时器 ComplateRequestInterval: null, // 轮询定时器
checking:false, // 正在检测 checking: false, // 正在检测
ComplateRequestArr:[], ComplateRequestArr: [],
iapChannel:null, iapChannel: null,
scrollTop: 0, scrollTop: 0,
list3: [ list3: [
// '../../static/icon/home_ban_1.jpg', // '../../static/icon/home_ban_1.jpg',
@@ -306,23 +310,24 @@
limiTist: [], limiTist: [],
jingList: [], jingList: [],
seckillList: [], seckillList: [],
offSaleList:[], // 折扣列表 offSaleList: [], // 折扣列表
goodsList: [], goodsList: [],
bgiStyle: { bgiStyle: {
background: '#fff' background: '#fff'
}, },
newBookList:[], newBookList: [],
iconStyle: { iconStyle: {
fontSize: '40rpx', fontSize: '40rpx',
fontWeight: 'bold', fontWeight: 'bold',
color: '#54a966', color: '#54a966',
}, },
tagList:[] ,// 推荐标签列表 tagList: [], // 推荐标签列表
pageSize:10, pageSize: 10,
page:1, page: 1,
totalPage:0, totalPage: 0,
tjProList:[], tjProList: [],
status : 3 status: 3,
anonymous: false, //游客
}; };
}, },
onPageScroll(e) { onPageScroll(e) {
@@ -332,7 +337,7 @@
onLoad(e) { onLoad(e) {
// 隐藏原生的tabbar // 隐藏原生的tabbar
uni.hideTabBar(); uni.hideTabBar();
// this.requestIapOrder() // this.requestIapOrder()
}, },
onHide() { onHide() {
this.page = 1 this.page = 1
@@ -347,7 +352,8 @@
this.tjProList = [] this.tjProList = []
uni.hideTabBar(); uni.hideTabBar();
this.getData(); this.getData();
this.getTags() this.getTags();
this.anonyMo();
}, },
// 页面加载完毕 // 页面加载完毕
onReady() { onReady() {
@@ -366,11 +372,11 @@
onReachBottom() { onReachBottom() {
this.loadingNow = true this.loadingNow = true
console.log('到底了') console.log('到底了')
if(this.page+1 <= this.totalPage){ if (this.page + 1 <= this.totalPage) {
this.status = 0 this.status = 0
this.page++ this.page++
this.getJtData() this.getJtData()
}else{ } else {
this.status = 1 this.status = 1
} }
@@ -392,90 +398,98 @@
computed: { computed: {
...mapState(['userInfo']), ...mapState(['userInfo']),
}, },
components:{ components: {
musicPlay musicPlay
}, },
//方法 //方法
methods: { methods: {
...mapMutations(['setUserInfo']), ...mapMutations(['setUserInfo']),
// ...mapMutations(['setLoadingShow']), // ...mapMutations(['setLoadingShow']),
// 游客模式
anonyMo() {
if (uni.getStorageSync("anonymous") == '0000000000') {
this.anonymous = true
} else {
this.anonymous = false
}
},
// 获取商品标签 // 获取商品标签
getTags() { getTags() {
this.loadingNow = false this.loadingNow = false
this.$http this.$http
.post('book/label/getLabels') .post('book/label/getLabels')
.then(res => { .then(res => {
console.log(res,'标签列表') console.log(res, '标签列表')
if(res.code == 0 && res.result.labels.length > 0){ if (res.code == 0 && res.result.labels.length > 0) {
this.tagList = res.result.labels this.tagList = res.result.labels
this.tabsid = this.tagList[0].splId this.tabsid = this.tagList[0].splId
this.getJtData() this.getJtData()
} }
}).catch(e => { }).catch(e => {
console.log(e,'e') console.log(e, 'e')
}); });
},
tabsChange(item){
this.tjProList = []
this.tabsid = item.splId
this.page = 1
// 获取推荐数据
this.getJtData()
}, },
getJtData(){ tabsChange(item) {
this.tjProList = []
this.tabsid = item.splId
this.page = 1
// 获取推荐数据
this.getJtData()
},
getJtData() {
this.$http this.$http
// .post('book/label/list',{ // .post('book/label/list',{
.post('book/label/getProductsByLabel',{ .post('book/label/getProductsByLabel', {
'splId': this.tabsid, 'splId': this.tabsid,
'limit': this.pageSize, 'limit': this.pageSize,
'page': this.page 'page': this.page
}) })
.then(res => { .then(res => {
if(res.code == 0 && res.page.records.length > 0){ if (res.code == 0 && res.page.records.length > 0) {
this.tjProList = this.tjProList.concat(res.page.records) this.tjProList = this.tjProList.concat(res.page.records)
this.totalPage = res.page.pages this.totalPage = res.page.pages
this.status = 3 this.status = 3
console.log(this.tjProList,'按标签检索结果') console.log(this.tjProList, '按标签检索结果')
}else{ } else {
this.tjProList = [] this.tjProList = []
this.totalPage = 0 this.totalPage = 0
} }
}).catch(e => { }).catch(e => {
console.log(e,'标签检索报错') console.log(e, '标签检索报错')
}); });
}, },
// 获取折扣图书 // 获取折扣图书
getOffSale(){ getOffSale() {
this.$http this.$http
.post('book/shopproduct/listactivityprice?limit=10&page=1') .post('book/shopproduct/listactivityprice?limit=10&page=1')
.then(res => { .then(res => {
console.log(res,'折扣') console.log(res, '折扣')
if(res.code == 0 && res.page.list.length > 0){ if (res.code == 0 && res.page.list.length > 0) {
this.offSaleList = res.page.list this.offSaleList = res.page.list
this.tabsNumber = 0 this.tabsNumber = 0
} }
}).catch(e => { }).catch(e => {
console.log(e,'e') console.log(e, 'e')
}); });
}, },
// 新书上市 // 新书上市
getNewBook(){ getNewBook() {
this.$http this.$http
.post('book/shopproduct/getNewBook',{ .post('book/shopproduct/getNewBook', {
'limit': 4, 'limit': 4,
'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
}).catch(e => { }).catch(e => {
console.log(e,'新书上市报错') console.log(e, '新书上市报错')
}); });
}, },
// 检测未完成订单 // 检测未完成订单
requestIapOrder(){ requestIapOrder() {
console.log('检测支付环境...') console.log('检测支付环境...')
plus.payment.getChannels((channels) => { plus.payment.getChannels((channels) => {
console.log(channels, 'channels') console.log(channels, 'channels')
@@ -485,72 +499,74 @@
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) {
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({restoreFlag:false}); this.setUserInfo({
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具体说明查看官方文档
@@ -561,51 +577,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",
@@ -616,16 +632,16 @@
}, },
}).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() {
@@ -709,7 +725,13 @@
}); });
}, },
// 游客跳转
onYouAlert() {
uni.showToast({
icon: 'none',
title: '请先登录'
})
},
}, },
@@ -717,46 +739,115 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '@/style/mixin.scss'; @import '@/style/mixin.scss';
.fiveIcon{justify-content: space-between; text-align: center;
text{ .fiveIcon {
font-size: 28rpx; color: #11a669; justify-content: space-between;
text-align: center;
text {
font-size: 28rpx;
color: #11a669;
}
image {
width: 56rpx;
height: 56rpx;
margin: 0 auto;
} }
image{width: 56rpx; height: 56rpx; margin: 0 auto; }
} }
.hehan{width: 80%; margin: 10rpx auto;}
.zhekou{ .hehan {
.goodsName{margin-bottom: 20rpx;} width: 80%;
margin: 10rpx auto;
} }
.activityPrice{font-size: 60rpx;}
.priceAndnum{ font-size: 24rpx !important; .zhekou {
.price{color: #9b9b9b !important; font-size: inherit; font-weight: normal !important; display: block;} .goodsName {
margin-bottom: 20rpx;
}
} }
.ProTabs{
.activityPrice {
font-size: 60rpx;
}
.priceAndnum {
font-size: 24rpx !important;
.price {
color: #9b9b9b !important;
font-size: inherit;
font-weight: normal !important;
display: block;
}
}
.ProTabs {
// margin: 20rpx 0; // margin: 20rpx 0;
padding:0 20rpx; padding: 0 20rpx;
text{padding: 8rpx 14rpx; font-size: 32rpx; display: inline-block; border-radius: 10rpx; overflow: hidden;
// background-color: #eee; text {
color: #55aa7f; margin-right: 10rpx;} padding: 8rpx 14rpx;
text.cur{background-color:#55aa7f ; color: #fff;} font-size: 32rpx;
display: inline-block;
border-radius: 10rpx;
overflow: hidden;
// background-color: #eee;
color: #55aa7f;
margin-right: 10rpx;
}
text.cur {
background-color: #55aa7f;
color: #fff;
}
} }
// .newBook{margin-top: 10rpx;} // .newBook{margin-top: 10rpx;}
.scroll-view_H{background-color: #fff;white-space: nowrap; .scroll-view_H {
padding:10rpx ; margin-top: 12rpx;} background-color: #fff;
.scroll-view_H{ white-space: nowrap;
.item { padding: 10rpx; overflow: hidden; display: inline-block; padding-bottom: 0; padding: 10rpx;
width: 180rpx !important; margin-right: 20rpx; border-radius: 10rpx; margin-top: 12rpx;
.videoBox{ }
image{display: block; width:150rpx;
height: 170rpx; .scroll-view_H {
.item {
padding: 10rpx;
overflow: hidden;
display: inline-block;
padding-bottom: 0;
width: 180rpx !important;
margin-right: 20rpx;
border-radius: 10rpx;
.videoBox {
image {
display: block;
width: 150rpx;
height: 170rpx;
} }
} }
.bookName{display: block; margin-top: 6rpx; color: #666; font-size: 24rpx; white-space: nowrap;
overflow-x: hidden; overflow: hidden; .bookName {
text-overflow: ellipsis;} display: block;
margin-top: 6rpx;
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 {
padding-top: 8rpx; padding-top: 8rpx;
margin: 12rpx 0 0 0; margin: 12rpx 0 0 0;
@@ -792,32 +883,56 @@
background-size: cover; background-size: cover;
padding: 20rpx; padding: 20rpx;
position: relative; position: relative;
// margin-bottom:60rpx; // 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: 100%; text-align: center; width: 100%;
height: 80rpx; text-align: center;
image{width: 150rpx; height: 80rpx;} height: 80rpx;
}
.icon_hua{width: 100%; text-align: center; display: block;
image{width: 150rpx; height: 150rpx; margin: 0 auto;}
}
.search_box { margin: 0 auto; margin-top: 20rpx; align-items: center;
width: calc(100% - 30rpx); margin-top: 0;
margin-bottom: 20rpx;
.search{height: 56upx; image {
width: 150rpx;
height: 80rpx;
}
}
.icon_hua {
width: 100%;
text-align: center;
display: block;
image {
width: 150rpx;
height: 150rpx;
margin: 0 auto;
}
}
.search_box {
margin: 0 auto;
margin-top: 20rpx;
align-items: center;
width: calc(100% - 30rpx);
margin-top: 0;
margin-bottom: 20rpx;
.search {
height: 56upx;
display: flex; display: flex;
width: 86%; margin: 0 auto; width: 86%;
margin: 0 auto;
align-items: center; align-items: center;
padding: 0upx 40upx; padding: 0upx 40upx;
background-color: #fff; background-color: #fff;
border-radius: 20upx; border-radius: 20upx;
box-shadow: 0 0px 10px 1px #54a96633; box-shadow: 0 0px 10px 1px #54a96633;
} }
.prompt { .prompt {
color: #838383; font-size: 24rpx; color: #838383;
font-size: 24rpx;
} }
@@ -826,23 +941,28 @@
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{
width: 80rpx; align-items: center; .searBtn {
font-size: 30rpx; color: #fff; width: 80rpx;
align-items: center;
font-size: 30rpx;
color: #fff;
} }
} }
.home_nar { .home_nar {
background-color: #fff; background-color: #fff;
padding: 40rpx 10rpx; padding: 40rpx 10rpx;
justify-content: space-between; justify-content: space-between;
display: flex; display: flex;
color: #333; color: #333;
margin-bottom: 0; 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;
// } // }
@@ -853,19 +973,28 @@
// width: 23%; // width: 23%;
width: 31%; width: 31%;
text-align: center; text-align: center;
border-radius: 20rpx ; border-radius: 20rpx;
// 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:120rpx; width: 120rpx;
height:120rpx; height: 120rpx;
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: 4rpx;
font-size: 36rpx;
color: #000;
font-weight: blod;
}
} }
@@ -1129,13 +1258,15 @@
.goods { .goods {
width: 100%; width: 100%;
margin:0 0 50rpx 0; background-color: #fff; margin: 0 0 50rpx 0;
background-color: #fff;
.goodsItem { .goodsItem {
display: inline-block; display: inline-block;
width: 46%; width: 46%;
border-radius: 20rpx; border-radius: 20rpx;
padding: 25rpx; padding-bottom: 5rpx; padding: 25rpx;
padding-bottom: 5rpx;
margin: 0 20rpx 20rpx 20rpx; margin: 0 20rpx 20rpx 20rpx;
background-color: #fff; background-color: #fff;
border: 1px solid #eee; border: 1px solid #eee;
@@ -1157,12 +1288,17 @@
.goodsPrice { .goodsPrice {
font-size: 28rpx; font-size: 28rpx;
margin: 5rpx 0 0 3rpx; margin: 5rpx 0 0 3rpx;
display: flex; justify-content: space-between; display: flex;
.price{ justify-content: space-between;
.price {
font-weight: bold; font-weight: bold;
color: #ff0000; color: #ff0000;
} }
.Salesnum{color: #9b9b9b;}
.Salesnum {
color: #9b9b9b;
}
} }
} }
} }

View File

@@ -5,12 +5,12 @@
<view style="height: 50rpx;"></view> <view style="height: 50rpx;"></view>
<view class="per_mes"> <view class="per_mes">
<image :src="userMes.avatar" v-if="userMes.avatar!=null" class="per_mes_img"></image> <image :src="userMes.avatar" v-if="userMes.avatar!=null" class="per_mes_img"></image>
<image src="../../static/icon/home_icon_1.png" v-if="userMes.avatar==null" class="per_mes_img"></image> <image src="../../static/icon/home_icon_1.png" v-if="userMes.avatar==null" class="per_mes_img" @click="signOut()"></image>
<view> <view>
<text class="name" v-if="userMes.nickname!=null">{{userMes.nickname}}</text> <text class="name" v-if="userMes.nickname!=null">{{userMes.nickname}}</text>
<text class="name" v-if="userMes.nickname==null">设置</text> <text class="name" v-if="userMes.nickname==null" @click="signOut()">登录</text>
<!-- <image v-if="userMes.vip==1" src="../../static/icon/mine_v.png" alt="" class="per_user_img"></image> --> <!-- <image v-if="userMes.vip==1" src="../../static/icon/mine_v.png" alt="" class="per_user_img"></image> -->
<text style="margin-left: 20rpx;font-size: 22rpx;color: #888;">({{userMes.tel}})</text> <text style="margin-left: 20rpx;font-size: 22rpx;color: #888;" v-if="userMes.tel">({{userMes.tel}})</text>
<!-- <text class="tong">累计读书5本 <!-- <text class="tong">累计读书5本
<span style="margin: 0 20upx;">|</span> 今日读50分钟 <span style="margin: 0 20upx;">|</span> 今日读50分钟
@@ -35,7 +35,7 @@
<b class="kt_btn" @click="onPageJump('./opeVip')">立即续费</b> <b class="kt_btn" @click="onPageJump('./opeVip')">立即续费</b>
</view> --> </view> -->
<view class="chong_zhi"> <view class="chong_zhi" v-if="!anonymous">
<view class="zhanghu" @click="onPageJump('../user/persCount')"> <view class="zhanghu" @click="onPageJump('../user/persCount')">
我的账户 我的账户
<text style="float: right;line-height: 85rpx;"> > </text> <text style="float: right;line-height: 85rpx;"> > </text>
@@ -55,54 +55,64 @@
</view> </view>
<view class="xiugai"> <view class="xiugai">
<view class="nav_list" @click="switchTab('../bookShop/orderList')"> <view v-if="!anonymous">
<text>我的订单</text> <view class="nav_list" @click="switchTab('../bookShop/orderList')">
</view> <text>我的订单</text>
<!-- <view class="nav_list" @click="onPageJump('../clock/clockList')"> </view>
<!-- <view class="nav_list" @click="onPageJump('../clock/clockList')">
<text>我的打卡</text> <text>我的打卡</text>
</view> --> </view> -->
<view class="nav_list" @click="onPageJump('../listen/home')"> <view class="nav_list" @click="onPageJump('../listen/home')">
<text>我的听书</text> <text>我的听书</text>
</view> </view>
<view class="nav_list" @click="onPageJump('../listen/setListen')"> <view class="nav_list" @click="onPageJump('../listen/setListen')">
<text>听书设置</text> <text>听书设置</text>
</view> </view>
<view class="nav_list" @click="onPageJump('../peanut/myComments')"> <view class="nav_list" @click="onPageJump('../peanut/myComments')">
<text>我的评价</text> <text>我的评价</text>
</view> </view>
<view class="nav_list" @click="onPageJump('../peanut/shopping')"> <view class="nav_list" @click="onPageJump('../peanut/shopping')">
<text>购物车</text> <text>购物车</text>
</view> </view>
<!-- <view v-if="showEbook" class="nav_list" @click="onPageJump('../eBook/bookBuy')"> <!-- <view v-if="showEbook" class="nav_list" @click="onPageJump('../eBook/bookBuy')">
<text>电子书购买记录</text> <text>电子书购买记录</text>
</view> --> </view> -->
<!-- <view v-if="showEbook" class="nav_list" @click="onPageJump('../eBook/bookRecord')"> <!-- <view v-if="showEbook" class="nav_list" @click="onPageJump('../eBook/bookRecord')">
<text>阅读记录</text> <text>阅读记录</text>
</view> --> </view> -->
<view class="nav_list" @click="onPageJump('../user/persData')"> <view class="nav_list" @click="onPageJump('../user/persData')">
<text>修改个人资料</text> <text>修改个人资料</text>
</view> </view>
<view class="nav_list" @click="onPageJump('../user/address')"> <view class="nav_list" @click="onPageJump('../user/address')">
<text>地址管理</text> <text>地址管理</text>
</view> </view>
<!-- <view class="nav_list" @click="onGoing()"> <!-- <view class="nav_list" @click="onGoing()">
<text>帮助与反馈11111</text> <text>帮助与反馈11111</text>
</view> --> </view> -->
<!-- <view class="nav_list" @click="newOnShare" v-if="isAndorid"> --> <!-- <view class="nav_list" @click="newOnShare" v-if="isAndorid"> -->
<view class="nav_list" @click="newOnShare"> <view class="nav_list" @click="newOnShare">
<text>分享App</text> <text>分享App</text>
</view> </view>
<view class="nav_list" @click="onPageJump('../peanut/aboutUs')"> <view class="nav_list" @click="onPageJump('../peanut/aboutUs')">
<text>关于我们</text> <text>关于我们</text>
</view> </view>
<view class="nav_list" @click="signShow=true"> <view class="nav_list" @click="signShow=true">
<text>退出登录</text> <text>退出登录</text>
</view> </view>
<view class="nav_list" @click="logout"> <view class="nav_list" @click="logout">
<text>注销帐号</text> <text>注销帐号</text>
</view>
</view> </view>
<view v-if="anonymous">
<view class="nav_list" @click="newOnShare">
<text>分享App</text>
</view>
<view class="nav_list" @click="onPageJump('../peanut/aboutUs')">
<text>关于我们</text>
</view>
</view>
</view> </view>
<u-modal :show="signShow" :content="signContent" :showCancelButton="true" @cancel="signShow=false" <u-modal :show="signShow" :content="signContent" :showCancelButton="true" @cancel="signShow=false"
@@ -115,6 +125,7 @@
<music-play :playData="playData"></music-play> <music-play :playData="playData"></music-play>
<z-navigation></z-navigation> <z-navigation></z-navigation>
</view> </view>
</template> </template>
@@ -123,18 +134,20 @@
import $http from '@/config/requestConfig.js'; import $http from '@/config/requestConfig.js';
// import appShare, { closeShare } from '@/uni_modules/zhouWei-APPshare/js_sdk/appShare'; // import appShare, { closeShare } from '@/uni_modules/zhouWei-APPshare/js_sdk/appShare';
import { import {
mapState,mapMutations mapState,
mapMutations
} from 'vuex'; } from 'vuex';
export default { export default {
data() { data() {
return { return {
showEbook:false, // 显示电子书相关 showEbook: false, // 显示电子书相关
userMes: {}, userMes: {},
signShow: false, signShow: false,
signContent: '是否要退出登录?', signContent: '是否要退出登录?',
playData:{}, playData: {},
isAndorid:true, isAndorid: true,
platform : null, // 设备系统 platform: null, // 设备系统
anonymous: false, //游客
}; };
}, },
//第一次加载 //第一次加载
@@ -155,6 +168,7 @@
// 隐藏原生的tabbar // 隐藏原生的tabbar
uni.hideTabBar(); uni.hideTabBar();
this.getData(); this.getData();
this.anonyMo();
}, },
components: { components: {
musicPlay musicPlay
@@ -163,19 +177,19 @@
methods: { methods: {
...mapMutations(['setUserInfo']), ...mapMutations(['setUserInfo']),
// 获得操作系统 // 获得操作系统
getOS(){ getOS() {
let oprateOs = '' let oprateOs = ''
oprateOs = uni.getSystemInfoSync().platform oprateOs = uni.getSystemInfoSync().platform
// console.log(oprateOs) // console.log(oprateOs)
if(oprateOs == 'android'){ if (oprateOs == 'android') {
this.isAndorid = true this.isAndorid = true
}else{ } else {
this.isAndorid = false this.isAndorid = false
} }
}, },
haveSelected(data){ haveSelected(data) {
console.log(data,' 选择的是') console.log(data, ' 选择的是')
if(data.index == 0){ if (data.index == 0) {
// 分享到好友 // 分享到好友
uni.share({ uni.share({
provider: "weixin", provider: "weixin",
@@ -185,14 +199,14 @@
title: "疯子读书", title: "疯子读书",
summary: "我正在使用疯子读书提升自己,赶紧跟我一起来体验吧!", summary: "我正在使用疯子读书提升自己,赶紧跟我一起来体验吧!",
imageUrl: "static/fengziIcon.jpg", imageUrl: "static/fengziIcon.jpg",
success: function (res) { success: function(res) {
console.log("success:" + JSON.stringify(res)); console.log("success:" + JSON.stringify(res));
}, },
fail: function (err) { fail: function(err) {
console.log("fail:" + JSON.stringify(err)); console.log("fail:" + JSON.stringify(err));
} }
}); });
}else if(data.index == 1){ } else if (data.index == 1) {
// 分享到朋友圈 // 分享到朋友圈
uni.share({ uni.share({
provider: "weixin", provider: "weixin",
@@ -202,20 +216,32 @@
title: "疯子读书", title: "疯子读书",
summary: "我正在使用疯子读书提升自己,赶紧跟我一起来体验吧!", summary: "我正在使用疯子读书提升自己,赶紧跟我一起来体验吧!",
imageUrl: "static/fengziIcon.jpg", imageUrl: "static/fengziIcon.jpg",
success: function (res) { success: function(res) {
console.log("success:" + JSON.stringify(res)); console.log("success:" + JSON.stringify(res));
}, },
fail: function (err) { fail: function(err) {
console.log("fail:" + JSON.stringify(err)); console.log("fail:" + JSON.stringify(err));
} }
}); });
} }
}, },
switchTab(url){ switchTab(url) {
uni.switchTab({ uni.switchTab({
url: url url: url
}); });
}, },
// 游客模式
anonyMo() {
if (uni.getStorageSync("anonymous") == '0000000000') {
this.anonymous = true
} else {
this.anonymous = false
}
},
getData() { getData() {
// 获取个人信息 // 获取个人信息
if (this.userInfo.id != undefined) { if (this.userInfo.id != undefined) {
@@ -234,23 +260,23 @@
}, },
// 新写分享 // 新写分享
newOnShare(){ newOnShare() {
this.$refs.share.open() this.$refs.share.open()
}, },
// 注销账户 // 注销账户
logout(){ logout() {
let that = this let that = this
uni.showModal({ uni.showModal({
title: '提示', title: '提示',
content: '确定要注销当前账户吗?', content: '确定要注销当前账户吗?',
success: function (res) { success: function(res) {
if (res.confirm) { if (res.confirm) {
uni.showModal({ uni.showModal({
title: '提示', title: '提示',
showCancel:false, showCancel: false,
content: `注销申请已提交成功,请联系客服进行后续操作022-24142321`, content: `注销申请已提交成功,请联系客服进行后续操作022-24142321`,
success: function (res1) { success: function(res1) {
if (res1.confirm) { if (res1.confirm) {
that.signOut() that.signOut()
} }
@@ -270,7 +296,7 @@
}) })
}, },
onPageJump(url) { onPageJump(url) {
console.log(url,'url') console.log(url, 'url')
uni.navigateTo({ uni.navigateTo({
url: url url: url
}); });
@@ -280,7 +306,9 @@
// 退出登录 // 退出登录
signOut() { signOut() {
this.signShow = false this.signShow = false
this.setUserInfo({'token': null}) this.setUserInfo({
'token': null
})
uni.reLaunch({ uni.reLaunch({
url: '../user/login' url: '../user/login'
}); });

View File

@@ -11,13 +11,16 @@
<view class="audiobox"> <view class="audiobox">
<view class="audioinfo"> <view class="audioinfo">
<image class="audioimg" :src="bookInfo.images" mode="aspectFit"></image> <image class="audioimg" :src="bookInfo.images" mode="aspectFit"></image>
<image class="audioimgstart" v-if="!this.paused" mode="aspectFit" src="../../static/audiostart.png" @click="start"></image> <image class="audioimgstart" v-if="!this.paused" mode="aspectFit"
<image class="audioimgstart" v-else mode="aspectFit" src="../../static/audiostop.png" @click="start"></image> src="../../static/audiostart.png" @click="start"></image>
<image class="audioimgstart" v-else mode="aspectFit" src="../../static/audiostop.png"
@click="start"></image>
<view> <view>
<view class="audiotitle">{{talkBookDetail.title}}</view> <view class="audiotitle">{{talkBookDetail.title}}</view>
<view class="audioauthor">{{bookInfo.author.authorName}}</view> <view class="audioauthor">{{bookInfo.author.authorName}}</view>
<view class="audioauthor">{{currentTime+'/'+duration}}</view> <view class="audioauthor">{{currentTime+'/'+duration}}</view>
<slider class="audioslider" block-size="12" v-model="currentTime" :max="duration" @change="changeTime"></slider> <slider class="audioslider" block-size="12" v-model="currentTime" :max="duration"
@change="changeTime"></slider>
<!-- <view @click="start">点击播放/暂停</view> --> <!-- <view @click="start">点击播放/暂停</view> -->
</view> </view>
</view> </view>
@@ -25,8 +28,21 @@
</view> </view>
<view class="content" v-if="talkBookDetail.content != ''" v-html="talkBookDetail.content"></view> <view class="content" v-if="talkBookDetail.content != ''" v-html="talkBookDetail.content"></view>
<view class="content" v-else></view> <view class="content" v-else></view>
<view class="time"> <!-- <view class="time">
<text>{{talkBookDetail.createTime}}</text> <text>{{talkBookDetail.createTime}}</text>
</view> -->
<view class="zanche flexbox" style="margin-top:15rpx;">
<span class="left">{{talkBookDetail.createTime}}</span>
<span class="right flexbox opbtns">
<image class="gzicon" v-if="contlikeYN" src="../../static/icon/gz2.png" mode="aspectFill"
@click.stop="clickLike(talkBookDetail)"></image>
<image class="gzicon" v-else src="../../static/icon/gz.png" mode="aspectFill"
@click.stop="clickLike(talkBookDetail)"></image>
<view style="color: #C0C4CC;">{{contlike}}</view>
<image class="gzicon" v-if="1" src="../../static/icon/pinglun.png" mode="aspectFill"
@click="pinglun()"></image>
<view style="color: #C0C4CC;" @click="pinglun()">{{pTotal}}</view>
</span>
</view> </view>
<view class="tuijin" v-if="!isBuy && bookInfo.productId != null"> <view class="tuijin" v-if="!isBuy && bookInfo.productId != null">
<p>觉得这本书还不错</p> <p>觉得这本书还不错</p>
@@ -52,6 +68,87 @@
<view class="">下一章</view> <view class="">下一章</view>
</view> --> </view> -->
</view> </view>
<view class="pinglunMain">
<!-- <u-button class="addPl" type='success' plain @click="pinglun()">添加评论</u-button>
<view class="">
<view style="font-weight: 700;margin:30rpx 0rpx 30rpx;font-size: 30rpx;color:#55aa00;">精彩热评</view>
</view> -->
<!-- <h4>~ 精彩热评 ~</h4> -->
<view v-if="plList.length > 0">
<view class="pl-item" v-for="item in plList" :key="item.id">
<view class="plusername">
<image :src="item.user.avatar"></image>
<span v-if="item.user.nickname!=null">{{item.user.nickname}}</span>
<span v-if="item.user.nickname==null">匿名用户</span>
</view>
<view class="content" v-html="item.content"></view>
<view class="btns flexbox" style="margin-top:10rpx;">
<span class="left" style="color: #C0C4CC;">{{formatTimeDifferenceFromT(item.createTime)}}</span>
<span class="condelt" @click="deleteCont(item)" v-if="item.deletUse">删除</span>
<!-- <span class="conhuif" @click="pinglun(item)">回复</span> -->
</view>
<!-- <view class="pl-son" v-if="item.comments.length > 0">
<view class="pl-son-item" v-for="(item1,index) in item.comments" :key="index">
<view class="pl-son-item-content">
<text class="pl-son-atob">
<text v-if="item1.user.nickname!=null">{{item1.user.nickname}}</text>
<text v-if="item1.user.nickname==null">匿名用户</text>
<text style="margin: 0 10rpx;">回复</text>
<text v-if="item.user.nickname!=null">{{item.user.nickname}}</text>
<text v-if="item.user.nickname==null">匿名用户</text>
</text>
<text v-html="item1.content"></text>
</view>
<view class="btns flexbox" style="margin-top:10rpx;">
<span class="left"
style="color: #C0C4CC;">{{formatTimeDifferenceFromT(item1.createTime)}}</span>
<span class="condelt" @click="deleteCont(item)" v-if="item.deletUse">删除</span>
<span class="conhuif" @click="pinglun(item)">回复</span>
</view>
<view style="border-bottom:2rpx solid #e9e9e9;height:20rpx;"
v-if="index<item.comments.length-1"></view>
</view>
</view> -->
<!-- </view> -->
</view>
</view>
<view class="quesheng" v-else>
<text>暂无评论内容~</text>
</view>
</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>
<u-divider v-if="status == 1" text="已加载全部评论"></u-divider>
<!-- 评论书评对话框 -->
<!-- 回复评论对话框 -->
<u-popup :show="pingjiaShow" :round="10" @close="closePingjia">
<view class="tanchu">
<view class="dp_title">添加评论</view>
<view style="max-height: 1000rpx;overflow-y: scroll;">
<view class="padding-bottom-sm flex padding-lr-sm" style="border-bottom: 1px solid #EEEEEE;">
<view class="flex-sub flexbox">
<i @click="showEmj()" :class="emojiIcon"></i>
<textarea class="textarea" v-model="Pform.comment" @focus="InputFocus" @blur="InputBlur"
@input="textareaBInput" placeholder-style="font-size:24rpx;color:#aaaaaa;"
placeholder="请输入您要发送的内容"></textarea>
</view>
<view class="">
<u-button type="success" @click="submitPJ">提交</u-button>
</view>
</view>
<view style="position: relative;">
<emotion @emotion="handleEmj" :height="220" v-if="isShowEmj" :windowWidth="windowWidth">
</emotion>
</view>
</view>
</view>
</u-popup>
<music-play :playData="playData"></music-play> <music-play :playData="playData"></music-play>
<!-- 公共组件-每个页面必须引入 --> <!-- 公共组件-每个页面必须引入 -->
<public-module></public-module> <public-module></public-module>
@@ -59,7 +156,11 @@
</template> </template>
<script> <script>
import $http from '@/config/requestConfig.js';
import emotion from '@/bkhumor-emojiplus/components/bkhumor-emojiplus/bkhumor-emojiplus.vue';
import emojiList1 from '../../bkhumor-emojiplus/emoji/biaoqin.js'
import musicPlay from '@/components/music.vue' import musicPlay from '@/components/music.vue'
import { import {
mapState, mapState,
mapMutations mapMutations
@@ -71,6 +172,10 @@
method: 'pause' method: 'pause'
}, },
audioShow: false, audioShow: false,
isShowEmj: false,
emojiIcon: 'cuIcon-emoji',
emoji: [],
windowWidth: 0,
voicesImg: '', voicesImg: '',
isBuy: false, isBuy: false,
playData: {}, playData: {},
@@ -86,7 +191,22 @@
audio: null, audio: null,
duration: 10, duration: 10,
currentTime: 0, currentTime: 0,
paused: false paused: false,
emojiIcon: 'cuIcon-emoji',
isShowEmj: false,
status: 3,
pingjiaShow: false, //添加评价
Pform: { // 评价表单
//star:0,
comment: '',
//img:[],
html: ''
},
contlike: 0,
contlikeYN: false,
pPage: 1,
pTotal: 0, // 评论的总条数
plList: [], // 书评的评论list
} }
}, },
onLoad(e) { onLoad(e) {
@@ -101,6 +221,8 @@
onShow() { onShow() {
this.getBookInfo() this.getBookInfo()
this.getTalkBookDetail() this.getTalkBookDetail()
this.getCommPL()
this.getGoodNum()
}, },
onHide() { onHide() {
// console.log('onHide----',this.paused) // console.log('onHide----',this.paused)
@@ -116,37 +238,68 @@
}, },
methods: { methods: {
...mapMutations(['setUserInfo']), ...mapMutations(['setUserInfo']),
start(){ start() {
this.initAudio() // 开始播放 this.initAudio() // 开始播放
}, },
initAudio(){ formatTimeDifferenceFromT(dateTimeT) {
this.audio.onTimeUpdate(()=>{ const now = new Date();
const t = new Date(dateTimeT);
const differenceInSeconds = Math.floor((now - t) / 1000);
if (differenceInSeconds <= 3600) {
const minutes = Math.floor(differenceInSeconds / 60);
return `${minutes} 分钟前`;
} else if (differenceInSeconds <= 86400) {
const hours = Math.floor(differenceInSeconds / 3600);
return `${hours} 小时前`;
} else if (differenceInSeconds <= 2592000) {
const days = Math.floor(differenceInSeconds / 86400);
return `${days} 天前`;
} else {
const currentYear = now.getFullYear();
const tYear = t.getFullYear();
if (currentYear === tYear) {
const month = t.getMonth() + 1;
const day = t.getDate();
return `${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;
} else {
const year = t.getFullYear();
const month = t.getMonth() + 1;
const day = t.getDate();
return `${year}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;
}
}
},
initAudio() {
this.audio.onTimeUpdate(() => {
this.duration = this.audio.duration.toFixed() this.duration = this.audio.duration.toFixed()
this.currentTime = this.audio.currentTime.toFixed() this.currentTime = this.audio.currentTime.toFixed()
}) })
this.audio.onPause(()=>{ // 用于被听书组件打断时设置播放icon状态 this.audio.onPause(() => { // 用于被听书组件打断时设置播放icon状态
this.paused = false this.paused = false
// console.log('onPause----------',this.paused) // console.log('onPause----------',this.paused)
}) })
this.paused = this.audio.paused this.paused = this.audio.paused
// console.log('paused',this.paused) // console.log('paused',this.paused)
if(this.paused){ if (this.paused) {
this.audio.play() this.audio.play()
}else{ } else {
this.audio.pause() this.audio.pause()
} }
}, },
updateTime(e){ updateTime(e) {
this.currentTime = e.detail.currentTime.toFixed() this.currentTime = e.detail.currentTime.toFixed()
this.duration = e.detail.duration.toFixed() this.duration = e.detail.duration.toFixed()
}, },
changeTime(e){ changeTime(e) {
this.audio.seek(e.detail.value) // 设置播放位置 this.audio.seek(e.detail.value) // 设置播放位置
}, },
audioPlay(){ audioPlay() {
console.log('播放讲书',this.$music) console.log('播放讲书', this.$music)
this.$music.setCloseBgm() // 关闭听书音频 this.$music.setCloseBgm() // 关闭听书音频
this.setUserInfo({'playFlag': false}) this.setUserInfo({
'playFlag': false
})
}, },
// 购买 // 购买
gotoBuy() { gotoBuy() {
@@ -199,12 +352,13 @@
this.talkBookDetail = res.bookTeach this.talkBookDetail = res.bookTeach
this.audio.src = this.talkBookDetail.voices // 设置播放资源路径 this.audio.src = this.talkBookDetail.voices // 设置播放资源路径
this.audio.onCanplay((e)=>{ this.audio.onCanplay((e) => {
this.duration = this.audio.duration.toFixed() // 初始化进度条和音频秒数 this.duration = this.audio.duration.toFixed() // 初始化进度条和音频秒数
}) })
// this.isBuy = res.book.isBuy // this.isBuy = res.book.isBuy
// this.freeChapterCount = res.book.freeChapterCount // this.freeChapterCount = res.book.freeChapterCount
} else { } else {
console.log(res.msg) console.log(res.msg)
} }
@@ -215,9 +369,291 @@
this.audioShow = true this.audioShow = true
}) })
}, },
// 表情
showEmj() {
let bool = !this.isShowEmj;
if (bool) {
this.emojiIcon = 'cuIcon-keyboard';
} else {
this.emojiIcon = 'cuIcon-emoji';
}
this.isShowEmj = bool;
this.$emit('show')
},
InputBlur(e) {
},
InputFocus(e) {
this.isShowEmj = false;
this.emojiIcon = 'cuIcon-emoji';
this.$emit('foc')
},
// 获取点赞数和是否点赞
getGoodNum() {
this.$http
.post("book/teach/getLikeCount?teachId=" + this.teachId)
.then(res => {
if (res.code == 0) {
this.contlike = res.count
}
}).catch((e) => {
console.log(e, 'e')
})
this.$http
.post("book/teach/ifLike?teachId=" + this.teachId)
.then(res => {
if (res.code == 0) {
this.contlikeYN = res.flag
}
})
.catch((e) => {
console.log(e, 'e')
})
},
// 获得书评回复列表
getCommPL() {
$http.request({
url: "book/teach/getCommentList",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
'teachId': this.teachId,
'limit': 5,
'page': this.pPage,
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
.then(res => {
console.log(res, '书评评论')
// this.plList = this.plList.concat(res.page.list)
let plList1 = res.page.records
this.pTotal = res.page.total
this.status = 3
// 评论格式化
var newarr = []
plList1.forEach((item1) => {
item1.content = this.getHtmlComment(item1.content)
if (item1.userId == this.userInfo.id) {
item1.deletUse = true
} else {
item1.deletUse = false
}
newarr.push(item1)
})
this.plList = this.plList.concat(newarr)
console.log('改变格式后', this.plList)
}).catch(e => {
console.log(e, 'e')
});
},
// 获取html格式的评论1
getHtmlComment(comment) {
// 格式化html
// console.log(comment,'comment')
// 这里处理 链接 换行符
let replacedStr = comment.replace(/\[([^(\]|\[)]*)\]/g, (item, index) => {
// console.log(item, index)
var indexss = emojiList1.findIndex(item1 => item1.alt === item)
// console.log(indexss, 'indexss')
return '<img src="https://www.nuttyreading.com/emojis/emojis/qq/' + emojiList1[indexss].url +
'" width="18rpx">';
});
// console.log(replacedStr,'replacedStr')
return replacedStr.replace(/(\r\n)|(\n)/g, '<br>');
},
// 点赞
clickLike(item) {
this.$http
.post("book/teach/addOrCancelLike?teachId=" + this.teachId)
.then(res => {
if (res.code == 0) {
uni.showToast({
title: res.msg,
icon: 'success'
})
this.getGoodNum()
}
}).catch((e) => {
console.log(e, 'e')
})
},
// 显示评论框
pinglun(val) {
console.log('pinglun-val', val)
if (val && val.user && val.user.id && val.puser && val.puser.id) {
this.Pform.name = val.user.name || ''
this.Pform.pid = val.pid
this.Pform.puserId = val.user.id || ''
} else if (val && val.user && val.user.id) {
this.Pform.name = val.user.name || ''
this.Pform.pid = val.id
this.Pform.puserId = val.user.id || ''
} else {
// this.pinglunId = val || null
this.Pform.pid = ''
this.Pform.puserId = ''
}
this.pingjiaShow = true
},
// 提交评论
submitPJ() {
if (this.Pform.comment != '') {
$http.request({
url: "book/teach/addComment",
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
teachId: this.teachId,
content: this.Pform.comment,
puserId: 0,
},
header: { //默认 无 说明:请求头
'Content-Type': 'application/json'
},
})
.then(res => {
uni.showToast({
title: '评论成功!',
icon: 'success'
})
// this.getCommPL()
this.pingjiaShow = false
this.Pform.comment = ''
this.Pform.name = ''
this.Pform.pid = ''
this.Pform.puserId = ''
// this.pinglunId = null
this.plList = []
this.pPage = 1
this.getCommPL()
}).catch(e => {
console.log(e, 'e')
});
} else {
uni.showToast({
title: '请先输入您的评价内容!',
icon: 'none'
})
}
},
// 删除评论
deleteCont(item) {
uni.showModal({
title: '提示',
content: '确定要删除评论吗?',
confirmText: "确定",
cancelText: "取消",
success: function(res) {
let _this = this
if (res.confirm) {
_this.$http
.post("book/teach/delComment?commentId=" + item.id)
.then(res => {
if (res.code == 0) {
uni.showToast({
title: '删除成功',
icon: 'success'
})
_this.plList = []
_this.pPage = 1
_this.getCommPL()
}
}).catch((e) => {
console.log(e, 'e')
})
}
}.bind(this)
});
},
closePingjia() {
this.pingjiaShow = false
this.Pform.comment = ''
this.Pform.html = ''
this.emoji = []
},
// 获得输入的表情数组
handleEmj(i) {
console.log(i, 'i---------');
this.inputValue = i
// console.log(this.inputValue);
if (i.emotioni == '[em_98]') {
//匹配最后一个表情符号并删除11。
this.Pform.comment = this.Pform.comment.replace(/(\[[^\]]+\]|[\s\S])$/, '');
if (this.emoji.length > 0) {
this.emoji = this.emoji.slice(0, -1)
}
} else {
this.emoji.push({
'tag': i.emotion,
'name': i.emotioni
})
// console.log(this.emoji,'this.emoji')
this.Pform.comment += i.emotioni;
/// this.Pform.html += i.emotion
}
},
textareaBInput(e) {
console.log(e, 'e')
this.Pform.comment = e.detail.value
/// this.Pform.html = e.detail.value
},
showEmj() {
let bool = !this.isShowEmj;
if (bool) {
this.emojiIcon = 'cuIcon-keyboard';
} else {
this.emojiIcon = 'cuIcon-emoji';
}
this.isShowEmj = bool;
this.$emit('show')
},
InputBlur(e) {
},
InputFocus(e) {
this.isShowEmj = false;
this.emojiIcon = 'cuIcon-emoji';
this.$emit('foc')
},
onReachBottom() {
console.log('到底了')
if (this.pPage + 1 <= this.pTotal) {
this.status = 0
this.pPage++
this.getCommPL()
} else {
this.status = 3
}
},
}, },
components: { components: {
musicPlay musicPlay,
emotion
}, },
} }
</script> </script>
@@ -291,6 +727,9 @@
.btn { .btn {
margin-right: 20rpx; margin-right: 20rpx;
font-size: 22rpx;
justify-content: space-between;
align-items: center;
text { text {
display: inline-block; display: inline-block;
@@ -302,37 +741,79 @@
border-radius: 5px; border-radius: 5px;
} }
} }
// 自定义播放器样式
.audiobox{
border: 2rpx solid #d6d5d5; .zanche {
border-radius: 8px; font-size: 22rpx;
.audioinfo{ justify-content: space-between;
align-items: center;
.left {
width: 300rpx;
color: #999;
font-size: 24rpx;
}
.right {
width: 300rpx;
display: flex; display: flex;
.audioimg{ justify-content: flex-end;
align-items: center;
}
.gzicon {
margin: 0 0 0 20rpx;
height: 40rpx;
width: 40rpx;
// float:left;
// border-radius: 20rpx;
// border:1rpx solid #e9e9e9;
}
.opbtns {
.pingjia {
margin-left: 10px;
}
}
}
// 自定义播放器样式
.audiobox {
border: 2rpx solid #d6d5d5;
border-radius: 8px;
.audioinfo {
display: flex;
.audioimg {
padding: 10rpx; padding: 10rpx;
width: 180rpx; width: 180rpx;
height: 220rpx; height: 220rpx;
border-radius: 5px; border-radius: 5px;
} }
.audioimgstart{
.audioimgstart {
position: absolute; position: absolute;
padding: 20rpx; padding: 20rpx;
width: 180rpx; width: 180rpx;
height: 220rpx; height: 220rpx;
border-radius: 5px; border-radius: 5px;
} }
.audiotitle{
.audiotitle {
padding: 10rpx; padding: 10rpx;
font-size: 28rpx; font-size: 28rpx;
text-align: left; text-align: left;
} }
.audioauthor{
.audioauthor {
padding: 4rpx; padding: 4rpx;
font-size: 24rpx; font-size: 24rpx;
text-align: left; text-align: left;
color: #999; color: #999;
} }
.audioslider{
.audioslider {
width: 400rpx; width: 400rpx;
} }
} }
@@ -341,4 +822,156 @@
} }
// .opbtn{font-size: 14rpx;} // .opbtn{font-size: 14rpx;}
.pinglunMain {
.pl-item {
margin: 0 0 14rpx 0;
padding: 0 0 14rpx 0;
border-bottom: 1px solid #f0f0f0;
.condelt {
color: #fd6004;
margin-right: 20rpx;
}
.conhuif {
color: #4185c1;
}
.pl-son {
margin: 14rpx 0 14rpx 60rpx;
padding: 0 14rpx 14rpx 14rpx;
background-color: #f0f0f0;
border-radius: 10rpx;
.pl-son-item {
font-size: 26rpx;
padding-top: 28rpx;
.pl-son-item-content {}
.pl-son-atob {
color: #a1a1a1;
}
}
}
}
.plusername {
font-size: 26rpx;
color: #a1a1a1;
image {
width: 40rpx;
height: 40rpx;
border-radius: 20rpx;
display: inline-block;
margin-right: 15rpx;
vertical-align: sub;
}
}
.content {
margin: 30rpx 0rpx;
line-height: 40rpx;
color: #000;
font-size: 30rpx;
}
background-color: #fff;
padding: 10px;
// h4{color: #55aa00; font-size: 40rpx; margin:30rpx 0 ; text-align: center;}
.time {
color: #888;
font-size: 24rpx;
}
.btns {
font-size: 22rpx;
// justify-content: space-between;
align-items: center;
.left {
// width: 300rpx;
margin-right: 20rpx;
color: #a1a1a1;
}
.right {
width: 300rpx;
display: flex;
justify-content: flex-end;
align-items: center;
}
.gzicon {
margin: 0 0 0 20rpx;
height: 40rpx;
width: 40rpx;
// float:left;
// border-radius: 20rpx;
// border:1rpx solid #e9e9e9;
}
.opbtns {
.pingjia {
margin-left: 10px;
}
}
}
}
.quesheng {
text-align: center;
color: #8b8a91;
padding-bottom: 20rpx;
padding-top: 20rpx;
}
.tanchu {
padding: 40rpx 30rpx 40rpx 30rpx;
position: relative;
.dp_title {
font-size: 32rpx;
margin-bottom: 50rpx;
color: #555;
text-align: center;
font-weight: bold;
}
.dp_add {
position: absolute;
top: 40rpx;
right: 30rpx;
font-size: 22rpx;
background-color: #fd6004;
color: #fff;
border-radius: 10rpx;
padding: 5rpx 10rpx;
.u-icon {
display: inline-block;
margin-right: 5rpx;
}
}
}
.cuIcon-emoji {
background: url(../../static/biaoqing.png) no-repeat;
background-size: contain;
display: block;
margin-right: 20rpx;
width: 30px;
}
.cuIcon-keyboard {
background: url(../../static/biaoqing.png) no-repeat;
background-size: contain;
display: block;
width: 30px;
}
</style> </style>

View File

@@ -150,7 +150,7 @@ import { data } from 'jquery';
this.booksetpage = 1 this.booksetpage = 1
this.yianList = [] this.yianList = []
} }
if(this.contentShow == 2){ if(this.contentShow == 1){
httpurl = "book/bookMedicalRecords/userEbookBuyList" httpurl = "book/bookMedicalRecords/userEbookBuyList"
} else { } else {
httpurl = "book/bookMedicalRecords/recommendBookList" httpurl = "book/bookMedicalRecords/recommendBookList"

View File

@@ -150,8 +150,16 @@
this.$http this.$http
.post('book/bookMedicalRecords/getById?medicalRecordsId=' + this.medicalRecordsId ) .post('book/bookMedicalRecords/getById?medicalRecordsId=' + this.medicalRecordsId )
.then(res => { .then(res => {
console.log(res,'res') // console.log(res,'res')
this.productInfo = res.entity this.productInfo = res.entity
// console.log('cursor: nwse-resize', this.productInfo.content.includes('cursor: nwse-resize'))
// if(this.productInfo.content.includes('cursor: nwse-resize')){
// // this.productInfo.content = this.productInfo.content.replaceAll('cursor: nwse-resize;', 'cursor: nwse-resize;max-width:100%;')
// }else{
this.productInfo.content = this.productInfo.content.replaceAll('img src', 'img style="max-width:100%;" src')
// }
// console.log(this.productInfo.content,'res')
uni.hideLoading(); uni.hideLoading();
}).catch((e)=>{ }).catch((e)=>{
console.log(e,'e') console.log(e,'e')
@@ -305,6 +313,9 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
/deep/.ql-align-center{
text-align: center;
}
.addPl{padding-top: 0rpx; margin-bottom: 0rpx;} .addPl{padding-top: 0rpx; margin-bottom: 0rpx;}
.pinglunMain{ .pinglunMain{
.pl-item{ .pl-item{

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB