This commit is contained in:
2024-09-09 11:21:05 +08:00
parent 85c2782b8a
commit cebe7d7021
7 changed files with 5686 additions and 5503 deletions

View File

@@ -24,7 +24,7 @@
"type" : "uni-app:app-ios" "type" : "uni-app:app-ios"
}, },
{ {
"playground" : "custom", "playground" : "standard",
"type" : "uni-app:app-android" "type" : "uni-app:app-android"
}, },
{ {

View File

@@ -6,7 +6,8 @@ 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 = "https://testapi.nuttyreading.com/"; // 线上测试环境 // baseUrl = "https://testapi.nuttyreading.com/"; // 线上测试环境
baseUrl = "https://api.nuttyreading.com/"; // 线上正式 // baseUrl = "https://api.nuttyreading.com/"; // 线上正式
baseUrl = "http://192.168.110.110:9200/pb/"; // 磊哥
// baseUrl = "http://192.168.110.100:9200/pb/"; // 开发用电脑 // baseUrl = "http://192.168.110.100:9200/pb/"; // 开发用电脑
// baseUrl = "http://59.110.212.44:9200/pb/"; // baseUrl = "http://59.110.212.44:9200/pb/";
// baseUrl = "http://192.168.110.100:9100/pb/"; // 开发用电脑 // baseUrl = "http://192.168.110.100:9100/pb/"; // 开发用电脑
@@ -17,7 +18,8 @@ if (process.env.NODE_ENV === 'development') {
// 生产环境11 // 生产环境11
// baseUrl = "http://59.110.212.44:9100/pb/"; // baseUrl = "http://59.110.212.44:9100/pb/";
// baseUrl = "https://testapi.nuttyreading.com/"; // baseUrl = "https://testapi.nuttyreading.com/";
baseUrl = "https://api.nuttyreading.com/"; //1 baseUrl = "http://192.168.110.110:9200/pb/";//磊哥
// baseUrl = "https://api.nuttyreading.com/"; //1
// baseUrl = "ws://twin-ui.com:6001/"; // baseUrl = "ws://twin-ui.com:6001/";
// socketUrl = "ws://twin-ui.com:6001/"; // socketUrl = "ws://twin-ui.com:6001/";
} }

View File

@@ -6,14 +6,12 @@
"request": 15000 "request": 15000
}, },
"transformPx": false, "transformPx": false,
"icons" : [ "icons": [{
{
"sizes": "分辨率192x192", "sizes": "分辨率192x192",
"src": "图片路径" "src": "图片路径"
} }],
], "versionName": "1.0.18",
"versionName" : "1.0.16", "versionCode": 1018,
"versionCode" : 1016,
"app-plus": { "app-plus": {
"nvueCompiler": "weex", "nvueCompiler": "weex",
"compatible": { "compatible": {
@@ -270,4 +268,3 @@
} }
} }
// //

View File

@@ -13,14 +13,14 @@
</view> </view>
<view v-if="show" <view v-if="show"
style="height: 100%;display: flex;align-items:center;justify-content:center;color: #fff;font-size: 38rpx;text-align: center;"> style="height: 100%;display: flex;align-items:center;justify-content:center;color: #fff;font-size: 38rpx;text-align: center;">
{{errorTxt}}</view> {{errorTxt}}
</view>
<div class="" v-else style="background-color: #000" ref="videoContent" @tap="renderScript.handleClick" <div class="" v-else style="background-color: #000" ref="videoContent" @tap="renderScript.handleClick"
id="url-player-test" :videoData="videoData" :winWidth="winWidth" :winHeight="winHeight" id="url-player-test" :videoData="videoData" :winWidth="winWidth" :winHeight="winHeight"
:currentVideoList="currentVideoList" :firstTime="firstTime" :isfresh="isfresh" :platform="platform" :currentVideoList="currentVideoList" :firstTime="firstTime" :isfresh="isfresh" :platform="platform"
:isSetFirstTime="isSetFirstTime" :isChange="isChange" :change:videoData="renderScript.receiveMsg" :isSetFirstTime="isSetFirstTime" :isChange="isChange" :change:videoData="renderScript.receiveMsg"
:replayVideoFlag="replayVideoFlag" :replayVideoFlag="replayVideoFlag" :change:winWidth="renderScript.receiveWinWidth"
:change:winWidth="renderScript.receiveWinWidth" :change:winHeight="renderScript.receiveWinHeight" :change:winHeight="renderScript.receiveWinHeight" :change:firstTime="renderScript.receiveFirstTime"
:change:firstTime="renderScript.receiveFirstTime"
:change:replayVideoFlag="renderScript.receiveReplayVideoFlag" :change:replayVideoFlag="renderScript.receiveReplayVideoFlag"
:change:isSetFirstTime="renderScript.receiveisSetFirstTime" :change:isSetFirstTime="renderScript.receiveisSetFirstTime"
:change:isfresh="renderScript.receiveIsfresh" :change:platform="renderScript.receiveplatform" :change:isfresh="renderScript.receiveIsfresh" :change:platform="renderScript.receiveplatform"
@@ -165,7 +165,9 @@
loadNextVideo() { loadNextVideo() {
this.playEndBlank = true this.playEndBlank = true
var _list = [...this.currentVideoList] var _list = [...this.currentVideoList]
_list = _list.map(item => { return item.id}) _list = _list.map(item => {
return item.id
})
var thisIndex = _list.findIndex(item => { var thisIndex = _list.findIndex(item => {
return item == this.currentVideo.id return item == this.currentVideo.id
@@ -303,7 +305,7 @@
}, },
// 获取播放凭证 // 获取播放凭证
async getLive(isChange, newVideoData) { async getLive(isChange, newVideoData) {
console.log('获取播放凭证',newVideoData.id); console.log('获取播放凭证11111111111111', newVideoData);
if (this.reaquestFlag) { if (this.reaquestFlag) {
uni.showToast({ uni.showToast({
title: '操作太快了,歇一下吧', title: '操作太快了,歇一下吧',
@@ -942,15 +944,26 @@
} }
</script> </script>
<style> <style>
.cancelNext{display: inline-block; margin-right: 20rpx; .cancelNext {
border-radius: 10rpx; margin-top: 10rpx; display: inline-block;
padding: 10rpx 20rpx !important; background-color: #fff !important; margin-right: 20rpx;
color: #000; text-align: center; line-height: 50rpx;} border-radius: 10rpx;
margin-top: 10rpx;
padding: 10rpx 20rpx !important;
background-color: #fff !important;
color: #000;
text-align: center;
line-height: 50rpx;
}
/* .cancelNext:last-child{margin-left: 10rpx;} */ /* .cancelNext:last-child{margin-left: 10rpx;} */
.nextText {} .nextText {}
.showCountDownd { .showCountDownd {
box-sizing: border-box; box-sizing: border-box;
height: 100%; width: 100%; background-color: rgba(0, 0, 0, 0.6); height: 100%;
width: 100%;
background-color: rgba(0, 0, 0, 0.6);
display: flex; display: flex;
align-items: center; align-items: center;
@@ -959,11 +972,11 @@
font-size: 38rpx; font-size: 38rpx;
text-align: center; text-align: center;
position: absolute; position: absolute;
top: 0; right: 10rpx; top: 0;
right: 10rpx;
z-index: 4; z-index: 4;
text{
} text {}
} }

View File

@@ -1,5 +1,8 @@
<template> <template>
<view class="container commonPageBox commonDetailPage" style="height: auto !important"> <view
class="container commonPageBox commonDetailPage"
style="height: auto !important"
>
<!-- 公共组件-每个页面必须引入 --> <!-- 公共组件-每个页面必须引入 -->
<public-module></public-module> <public-module></public-module>
<!-- <z-nav-bar :title="pageTitle ? pageTitle : '课程详情'"> --> <!-- <z-nav-bar :title="pageTitle ? pageTitle : '课程详情'"> -->
@@ -10,13 +13,20 @@
</z-nav-bar> </z-nav-bar>
<view class="contentBox commonPageContentBox"> <view class="contentBox commonPageContentBox">
<u-alert v-if="goBuyTitle && isAndorid" style=" <u-alert
v-if="goBuyTitle && isAndorid"
style="
background: linear-gradient(90deg, #258feb 0%, #00e1ec 100%); background: linear-gradient(90deg, #258feb 0%, #00e1ec 100%);
position: fixed; position: fixed;
left: 0; left: 0;
width: 100%; width: 100%;
z-index: 10; z-index: 10;
" type="warning" @click="handleClickGetVip" :title="goBuyTitle" :show-icon="true"></u-alert> "
type="warning"
@click="handleClickGetVip"
:title="goBuyTitle"
:show-icon="true"
>
<template slot="rightSlot" slot-scope="slotProps"> <template slot="rightSlot" slot-scope="slotProps">
<text class="saveBtn vipBtn flexbox buyBtn" v-if="goBuyType == 0"> <text class="saveBtn vipBtn flexbox buyBtn" v-if="goBuyType == 0">
立即购买 立即购买
@@ -24,7 +34,10 @@
<text class="flexbox" style="color: #f0f0f0" v-if="goBuyType == 1"> <text class="flexbox" style="color: #f0f0f0" v-if="goBuyType == 1">
立即续费 立即续费
</text> </text>
<text class="saveBtn vipBtn flexbox" v-if="goBuyType == 2"> <text class="saveBtn vipBtn flexbox" style="padding: 8rpx;font-size: 24rpx;" v-if="goBuyType == 2">
立即升级
</text>
<text class="saveBtn vipBtn flexbox" style="padding: 8rpx;font-size: 24rpx;" v-if="goBuyType == 3">
立即升级 立即升级
</text> </text>
@@ -34,7 +47,11 @@
<!-- <scroll-view scroll-y="true" class="scroll-Y"> --> <!-- <scroll-view scroll-y="true" class="scroll-Y"> -->
<view class="curseImg" style="padding-top: 80rpx"> <view class="curseImg" style="padding-top: 80rpx">
<image v-if="!course.image" src="/static/nobg.jpg" mode="widthFix"></image> <image
v-if="!course.image"
src="/static/nobg.jpg"
mode="widthFix"
></image>
<image v-else :src="course.image" mode="widthFix"></image> <image v-else :src="course.image" mode="widthFix"></image>
</view> </view>
<view class="containerBg1"> <view class="containerBg1">
@@ -46,17 +63,22 @@
<!-- <view class="start_learn_btn PM_font" <!-- <view class="start_learn_btn PM_font"
@click="onPageJump('/pages/course/myCourseLearn', course.id)">进入学习</view> --> @click="onPageJump('/pages/course/myCourseLearn', course.id)">进入学习</view> -->
</view> </view>
<view class="containerBg" v-if="course.content && course.content != ''"> <view
class="containerBg"
v-if="course.content && course.content != ''"
>
<view class="prof"> <view class="prof">
<view style=" <view
position: relative; style="position: relative; display: flex; align-items: center"
display: flex; >
align-items: center; <view
" > :class="`${isHideCourseInfo ? 'hidden2' : ''}`"
<view :class="`${isHideCourseInfo ? 'hidden2' : ''}`" style="width: calc(100% - 50rpx); font-size: 30rpx"
style="width: calc(100% - 50rpx); font-size: 30rpx;" v-html="course.content"> v-html="course.content"
>
</view> </view>
<text @click="isHideCourseInfo = !isHideCourseInfo" <text
@click="isHideCourseInfo = !isHideCourseInfo"
style=" style="
position: absolute; position: absolute;
bottom: 0; bottom: 0;
@@ -75,23 +97,38 @@
<view class="containerBg2"> <view class="containerBg2">
<!-- 目录 --> <!-- 目录 -->
<view :class="['coursePart','flexbox', userMsg.vip != 0 ? 'vipBgColor':'']" <view
v-if="librayList.length > 1"> :class="[
<view :class="['item','flexbox',curId == item.id? 'active': '' ]" 'coursePart',
v-for="(item, index) in librayList" :key="index" @click="clicklib(item,index)"> 'flexbox',
<view class=""><text>{{item.title}}</text></view> userMsg.vip != 0 ? 'vipBgColor' : '',
]"
v-if="librayList.length > 1"
>
<view
:class="['item', 'flexbox', curId == item.id ? 'active' : '']"
v-for="(item, index) in librayList"
:key="index"
@click="clicklib(item, index)"
>
<view class=""
><text>{{ item.title }}</text></view
>
</view> </view>
</view> </view>
<!-- end --> <!-- end -->
<template v-if="librayList[curIndex]"> <template v-if="librayList[curIndex]">
<view :class="['endBox',userMsg.vip != 0 ? 'vipBgColor':'']" <view
v-if="librayList[curIndex].isBuy == 1 || userMsg.vip != 0"> :class="['endBox', userMsg.vip != 0 ? 'vipBgColor' : '']"
v-if="librayList[curIndex].isBuy == 1 || userMsg.vip != 0"
>
<!-- 已经可以观看的情况 --> <!-- 已经可以观看的情况 -->
<view class="box"> <view class="box">
<view class="flexbox" v-if="userMsg.vip != 0"> <view class="flexbox" v-if="userMsg.vip != 0">
<!-- vip到期时间 --> <!-- vip到期时间 -->
<text>VIP畅学权益有效期截止到{{userMsg.userVip.endTime}} </text> <text
>VIP畅学权益有效期截止到{{ userMsg.userVip.endTime }}
</text>
<!-- <uni-tag type="warning" text="去学习"></uni-tag> --> <!-- <uni-tag type="warning" text="去学习"></uni-tag> -->
</view> </view>
<view class="flexbox" v-else> <view class="flexbox" v-else>
@@ -100,25 +137,42 @@
</template> </template>
<template v-else> <template v-else>
<!-- 实际购买课程到期时间 --> <!-- 实际购买课程到期时间 -->
<text style="line-height: 50rpx;">课程有效期截止到{{librayList[curIndex].endTime}} </text> <text style="line-height: 50rpx"
>课程有效期截止到{{ librayList[curIndex].endTime }}
</text>
<!-- 自己买的可以续费 --> <!-- 自己买的可以续费 -->
<text class="xufeiBtn" <text
@click="handleClickGetGoodsList(librayList[curIndex])">续费</text> class="xufeiBtn"
@click="handleClickGetGoodsList(librayList[curIndex])"
>续费</text
>
</template> </template>
</view> </view>
</view> </view>
</view> </view>
<view v-else style="padding: 20rpx; padding-bottom: 0;"> <view v-else style="padding: 20rpx; padding-bottom: 0">
<view class="libOther"> <view class="libOther">
<!-- 没有观看权限的时候 --> <!-- 没有观看权限的时候 -->
<view class="text"> <view class="text">
您未购买此目录课程或已到期购买后或开通超级VIP 即可学习本目录课程 您未购买此目录课程或已到期购买后或开通超级VIP
即可学习本目录课程
</view> </view>
<view class="tag-view flex_box"> <view class="tag-view flex_box">
<u-button class="btn" type="warning" size="small" <u-button
@click="handleClickGetGoodsList(librayList[curIndex])" text="购买课程"></u-button> class="btn"
<u-button size="small" v-if="isAndorid" class="btn" type="primary" type="warning"
@click="onPageJump('/pages/mine/vip/index')" text="开通VIP"></u-button> size="small"
@click="handleClickGetGoodsList(librayList[curIndex])"
text="购买课程"
></u-button>
<u-button
size="small"
v-if="isAndorid"
class="btn"
type="primary"
@click="onPageJump('/pages/mine/vip/index')"
text="开通VIP"
></u-button>
<!-- <uni-tag size="normal" style="margin-left: 20rpx;" text="" type="success" /> --> <!-- <uni-tag size="normal" style="margin-left: 20rpx;" text="" type="success" /> -->
</view> </view>
</view> </view>
@@ -126,38 +180,82 @@
</template> </template>
<view class="shiting_content"> <view class="shiting_content">
<view :class="['chapter_content',userMsg.vip != 0 ? 'vipchapter_content' : '']" <view
v-if="chapterList.length > 0"> :class="[
'chapter_content',
userMsg.vip != 0 ? 'vipchapter_content' : '',
]"
v-if="chapterList.length > 0"
>
<view class="vipSee" v-if="userMsg && userMsg.vip != 0"> <view class="vipSee" v-if="userMsg && userMsg.vip != 0">
<text>VIP畅学权益生效中</text> <text>VIP畅学权益生效中</text>
</view> </view>
<view @click="gotoDetail(item, index)" class="item" v-for="(item, index) in chapterList"
:key="index">
<view class="item_videoList">
<view class="flexbox" style="align-items: center;">
<view <view
:class="['textBox','flex_box', librayList[curIndex].isBuy == 0 ? 'lock' : '']"> @click="gotoDetail(item, index)"
class="item"
v-for="(item, index) in chapterList"
:key="index"
>
<view class="item_videoList">
<view class="flexbox" style="align-items: center">
<view
:class="[
'textBox',
'flex_box',
librayList[curIndex].isBuy == 0 ? 'lock' : '',
]"
>
<text class="hidden1">{{ item.title }}</text> <text class="hidden1">{{ item.title }}</text>
<!-- {{item.isAudition}}-{{librayList[curIndex].isBuy}}-{{userMsg.vip}} --> <!-- {{item.isAudition}}-{{librayList[curIndex].isBuy}}-{{userMsg.vip}} -->
<uni-tag <uni-tag
v-if="item.isAudition == 1 && librayList[curIndex].isBuy == 0 && userMsg.vip == 0" v-if="
style="margin-left: 10rpx" :inverted="true" text="试听" size="mini" item.isAudition == 1 &&
type="success" /> librayList[curIndex].isBuy == 0 &&
userMsg.vip == 0
"
style="margin-left: 10rpx"
:inverted="true"
text="试听"
size="mini"
type="success"
/>
<template <template
v-if="librayList[curIndex] && librayList[curIndex].isBuy == 1 || userMsg.vip != 0"> v-if="
<uni-tag v-if="item.isLearned == 0" style="margin-left: 10rpx;" (librayList[curIndex] &&
:inverted="true" text="未学" size="mini" type="primary" /> librayList[curIndex].isBuy == 1) ||
<uni-tag v-if="item.isLearned == 1" style="margin-left: 10rpx;" userMsg.vip != 0
:inverted="true" text="已学" size="mini" type="success" /> "
>
<uni-tag
v-if="item.isLearned == 0"
style="margin-left: 10rpx"
:inverted="true"
text="未学"
size="mini"
type="primary"
/>
<uni-tag
v-if="item.isLearned == 1"
style="margin-left: 10rpx"
:inverted="true"
text="已学"
size="mini"
type="success"
/>
</template> </template>
</view> </view>
<view class="shitingTag"> <view class="shitingTag">
<u-icon <u-icon
v-if="librayList[curIndex].isBuy == 0 && userMsg.vip == 0 && item.isAudition == 0" v-if="
name="lock" color="#258feb" size="28"></u-icon> librayList[curIndex].isBuy == 0 &&
userMsg.vip == 0 &&
item.isAudition == 0
"
name="lock"
color="#258feb"
size="28"
></u-icon>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
@@ -166,22 +264,41 @@
</view> </view>
</view> </view>
<view class="completionBg"> <view class="completionBg">
<uni-section class="mb-10" style="padding: 0 20rpx" title="学习进度" type="line" <uni-section
v-if="librayList.length > 0 && librayList[curIndex].completion > 0"> class="mb-10"
style="padding: 0 20rpx"
title="学习进度"
type="line"
v-if="librayList.length > 0 && librayList[curIndex].completion > 0"
>
<view class="progress-box"> <view class="progress-box">
<progress :percent="librayList[curIndex].completion" show-info stroke-width="3" /> <progress
:percent="librayList[curIndex].completion"
show-info
stroke-width="3"
/>
</view> </view>
</uni-section> </uni-section>
</view> </view>
<view class="linkPro" v-if="tjProList.length > 0"> <view class="linkPro" v-if="tjProList.length > 0">
<uni-section style="padding: 0 20rpx" class="mb-10 graybg" title="相关书籍" type="line"> <uni-section
style="padding: 0 20rpx"
class="mb-10 graybg"
title="相关书籍"
type="line"
>
<!-- <template v-slot:right> <!-- <template v-slot:right>
<span class="more" @click="pageJupm()">查看更多 >></span> <span class="more" @click="pageJupm()">查看更多 >></span>
</template> --> </template> -->
</uni-section> </uni-section>
<view class="list supermarketBox"> <view class="list supermarketBox">
<scroll-view class="scroll-view_H" scroll-x="true"> <scroll-view class="scroll-view_H" scroll-x="true">
<view class="item" v-for="(item, index) in tjProList" :key="index" @click="goToGoodsList(item)"> <view
class="item"
v-for="(item, index) in tjProList"
:key="index"
@click="goToGoodsList(item)"
>
<view class="imgcontainer"> <view class="imgcontainer">
<image :src="item.productImages" mode="aspectFit"></image> <image :src="item.productImages" mode="aspectFit"></image>
</view> </view>
@@ -189,7 +306,10 @@
{{ item.productName }} {{ item.productName }}
</view> </view>
<view class="price" v-if="item.activityPrice && item.activityPrice > 0"> <view
class="price"
v-if="item.activityPrice && item.activityPrice > 0"
>
¥{{ item.activityPrice }} ¥{{ item.activityPrice }}
</view> </view>
<view class="price" v-else> ¥{{ item.price }} </view> <view class="price" v-else> ¥{{ item.price }} </view>
@@ -198,7 +318,12 @@
</view> </view>
</view> </view>
<view style="background: rgba(255, 255, 255, 0.85) !important"> <view style="background: rgba(255, 255, 255, 0.85) !important">
<uni-section style="padding: 0 20rpx" class="mb-10 graybg" title="留言板" type="line"> <uni-section
style="padding: 0 20rpx"
class="mb-10 graybg"
title="留言板"
type="line"
>
<template v-slot:right> <template v-slot:right>
<view class="flexbox" style="align-items: center" @click="addSay()"> <view class="flexbox" style="align-items: center" @click="addSay()">
<u-icon name="edit-pen" color="#2979ff" size="28"></u-icon> <u-icon name="edit-pen" color="#2979ff" size="28"></u-icon>
@@ -208,7 +333,11 @@
</uni-section> </uni-section>
<view class="liuyanBox"> <view class="liuyanBox">
<view class="" v-if="sayList.length > 0"> <view class="" v-if="sayList.length > 0">
<commentsList :sayList="sayList" @support="support" @showSayModule="showSayModule"> <commentsList
:sayList="sayList"
@support="support"
@showSayModule="showSayModule"
>
</commentsList> </commentsList>
</view> </view>
<u-divider v-show="status == 2" text="已加载全部"></u-divider> <u-divider v-show="status == 2" text="已加载全部"></u-divider>
@@ -221,8 +350,12 @@
<view class="proListPrice" v-if="proPriceList.length > 0"> <view class="proListPrice" v-if="proPriceList.length > 0">
<view class="title"> 请选择 </view> <view class="title"> 请选择 </view>
<view class="list"> <view class="list">
<view :class="['item', curProId == item.productId ? 'active' : '']" <view
v-for="(item, index) in proPriceList" :key="index" @click="choosePrice(item)"> :class="['item', curProId == item.productId ? 'active' : '']"
v-for="(item, index) in proPriceList"
:key="index"
@click="choosePrice(item)"
>
{{ item.productName }} - ¥{{ item.price }} {{ item.productName }} - ¥{{ item.price }}
</view> </view>
</view> </view>
@@ -231,7 +364,11 @@
<uni-icons type="cart" size="28" style="color: #666"></uni-icons> <uni-icons type="cart" size="28" style="color: #666"></uni-icons>
<text>加入购物车</text> <text>加入购物车</text>
</view> </view>
<view style="margin-left: 40rpx" class="saveBtnss buybtn flexbox" @click="openBuyInfoModal"> <view
style="margin-left: 40rpx"
class="saveBtnss buybtn flexbox"
@click="openBuyInfoModal"
>
<u-icon name="bag" color="#fff" size="28"></u-icon> <u-icon name="bag" color="#fff" size="28"></u-icon>
<text>立即购买</text> <text>立即购买</text>
</view> </view>
@@ -239,8 +376,12 @@
</view> </view>
</u-popup> </u-popup>
<view> <view>
<u-back-top :scroll-top="scrollTop" bottom="150" :customStyle="bgiStyle" <u-back-top
:iconStyle="iconStyle"></u-back-top> :scroll-top="scrollTop"
bottom="150"
:customStyle="bgiStyle"
:iconStyle="iconStyle"
></u-back-top>
</view> </view>
<!-- </view> --> <!-- </view> -->
<!-- 评论弹出 --> <!-- 评论弹出 -->
@@ -253,16 +394,34 @@
</view> </view>
<view class="input_addIcon flexbox"> <view class="input_addIcon flexbox">
<view class="editorBox"> <view class="editorBox">
<editor id="editor" class="ql-container" placeholder="~ 和谐社会 友善发言 ~" show-img-size <editor
show-img-toolbar show-img-resize @statuschange="onStatusChange" :read-only="readOnly" id="editor"
@ready="onEditorReady"> class="ql-container"
placeholder="~ 和谐社会 友善发言 ~"
show-img-size
show-img-toolbar
show-img-resize
@statuschange="onStatusChange"
:read-only="readOnly"
@ready="onEditorReady"
>
</editor> </editor>
</view> </view>
<view class="icon flexbox"> <view class="icon flexbox">
<u-icon v-show="!showEdit" @click="chooseImg" name="plus" color="#2979ff" <u-icon
size="28"></u-icon> v-show="!showEdit"
<u-icon v-show="showEdit" @click="editEditor" name="edit-pen" color="#2979ff" @click="chooseImg"
size="28"></u-icon> name="plus"
color="#2979ff"
size="28"
></u-icon>
<u-icon
v-show="showEdit"
@click="editEditor"
name="edit-pen"
color="#2979ff"
size="28"
></u-icon>
</view> </view>
</view> </view>
<!-- 选择表情还是图片 --> <!-- 选择表情还是图片 -->
@@ -277,10 +436,21 @@
</view> </view>
</view> </view>
</view> </view>
<view @click="checkPermision" class="picBtn item flexbox" v-show="uploadPicLIst.length < 3"> <view
@click="checkPermision"
class="picBtn item flexbox"
v-show="uploadPicLIst.length < 3"
>
<view class="" style=""> <view class="" style="">
<u-upload @afterRead="addPic" @delete="deletePic" multiple :maxCount="3" width="40" <u-upload
height="40" :previewFullImage="true"> @afterRead="addPic"
@delete="deletePic"
multiple
:maxCount="3"
width="40"
height="40"
:previewFullImage="true"
>
</u-upload> </u-upload>
</view> </view>
@@ -295,13 +465,23 @@
<!-- 上传的图片 --> <!-- 上传的图片 -->
<view class="" v-if="uploadPicLIst.length > 0"> <view class="" v-if="uploadPicLIst.length > 0">
<view class="" style="text-align: right"> <view class="" style="text-align: right">
<text style="font-size: 24rpx; color: #999">最多可上传3张图片哦</text> <text style="font-size: 24rpx; color: #999"
>最多可上传3张图片哦</text
>
</view> </view>
<view class="upimgList flexbox"> <view class="upimgList flexbox">
<view class="item" v-for="(item, index) in uploadPicLIst" :key="index"> <view
class="item"
v-for="(item, index) in uploadPicLIst"
:key="index"
>
<view class="imgbox" style="overflow: hidden"> <view class="imgbox" style="overflow: hidden">
<image @click="previewImage(item.url)" :src="item.url" mode="widthFix"> <image
@click="previewImage(item.url)"
:src="item.url"
mode="widthFix"
>
</image> </image>
</view> </view>
<span @click="deletePic(item, index)">×</span> <span @click="deletePic(item, index)">×</span>
@@ -311,7 +491,11 @@
<!-- 表情 --> <!-- 表情 -->
<view class="emoji" v-if="showEmoji"> <view class="emoji" v-if="showEmoji">
<!-- <text class="" @click="closeEmoji">关闭</text> --> <!-- <text class="" @click="closeEmoji">关闭</text> -->
<emotion @emotion="handleEmj" :height="220" :windowWidth="windowWidth"> <emotion
@emotion="handleEmj"
:height="220"
:windowWidth="windowWidth"
>
</emotion> </emotion>
</view> </view>
<view class="sbmitBox"> <view class="sbmitBox">
@@ -319,15 +503,20 @@
</view> </view>
</view> </view>
</u-popup> </u-popup>
</view> </view>
<common-select-goods ref="commonSelectGoods" :selectGoodsData="selectGoodsData" :goodsList="goodsList" <common-select-goods
:buyOptions="buyOptions" :customButtonGroup1="customButtonGroup1" @selectGoods="handleClickSelectGoods" ref="commonSelectGoods"
:selectGoodsData="selectGoodsData"
:goodsList="goodsList"
:buyOptions="buyOptions"
:customButtonGroup1="customButtonGroup1"
@selectGoods="handleClickSelectGoods"
@onHandleClickBuy=" @onHandleClickBuy="
$refs.commonSelectGoods.close(); $refs.commonSelectGoods.close();
protocolShow = true; protocolShow = true;
"></common-select-goods> "
></common-select-goods>
<u-popup :show="protocolShow" mode="center" round="6"> <u-popup :show="protocolShow" mode="center" round="6">
<view class="popup_box"> <view class="popup_box">
<view class="title">温馨提示</view> <view class="title">温馨提示</view>
@@ -349,8 +538,17 @@
</view> </view>
<view class="bottom"> <view class="bottom">
<view class="button_box"> <view class="button_box">
<u-button size="small" text="不同意" @click="protocolShow = false"></u-button> <u-button
<u-button text="同意" color="#258feb" size="small" @click="onHandleClickBuy"></u-button> size="small"
text="不同意"
@click="protocolShow = false"
></u-button>
<u-button
text="同意"
color="#258feb"
size="small"
@click="onHandleClickBuy"
></u-button>
</view> </view>
</view> </view>
</view> </view>
@@ -370,18 +568,17 @@
import emojiList1 from "../../bkhumor-emojiplus/emoji/biaoqin.js"; import emojiList1 from "../../bkhumor-emojiplus/emoji/biaoqin.js";
import emotion from "@/bkhumor-emojiplus/components/bkhumor-emojiplus/bkhumor-emojiplus.vue"; import emotion from "@/bkhumor-emojiplus/components/bkhumor-emojiplus/bkhumor-emojiplus.vue";
import $http from "@/config/requestConfig.js"; import $http from "@/config/requestConfig.js";
import permission from "@/js_sdk/wa-permission/permission.js" import permission from "@/js_sdk/wa-permission/permission.js";
var clear; var clear;
import { import { mapState } from "vuex";
mapState
} from "vuex";
export default { export default {
data() { data() {
return { return {
goodsList: [], goodsList: [],
currentCateIndex: 0, currentCateIndex: 0,
protocolShow: false, protocolShow: false,
ordersTabs: [{ ordersTabs: [
{
name: "简介", name: "简介",
value: 0, value: 0,
}, },
@@ -471,19 +668,21 @@
// info: 2 // info: 2
// } // }
], ],
customButtonGroup1: [{ customButtonGroup1: [
{
with: 200, with: 200,
text: "立即购买", text: "立即购买",
backgroundColor: "linear-gradient(90deg, #3C77BE 0%,#258feb 100%)", backgroundColor: "linear-gradient(90deg, #3C77BE 0%,#258feb 100%)",
color: "#fff", color: "#fff",
}, ], },
],
urlList: { urlList: {
list: "sociology/course/getCourseDetail", list: "sociology/course/getCourseDetail",
goodsList: "sociology/product/getProductListForCourse", goodsList: "sociology/product/getProductListForCourse",
startStudyForMF: "sociology/course/startStudyForMF", startStudyForMF: "sociology/course/startStudyForMF",
}, },
isAndorid: true, isAndorid: true,
oprateOsName:'', oprateOsName: "",
}; };
}, },
//第一次加载 //第一次加载
@@ -498,9 +697,7 @@
// this.getCateList(this.courseId) // this.getCateList(this.courseId)
// await this.getData(e.id); // await this.getData(e.id);
this.getSayList(); this.getSayList();
this.getOS() this.getOS();
}, },
onPageScroll(e) { onPageScroll(e) {
this.scrollTop = e.scrollTop; this.scrollTop = e.scrollTop;
@@ -517,7 +714,7 @@
async onShow() { async onShow() {
// 隐藏原生的tabbar // 隐藏原生的tabbar
uni.hideTabBar(); uni.hideTabBar();
console.log('this.courseId', this.courseId); console.log("this.courseId", this.courseId);
await this.getData(this.courseId); await this.getData(this.courseId);
// #ifdef APP-PLUS // #ifdef APP-PLUS
plus.screen.unlockOrientation(); plus.screen.unlockOrientation();
@@ -540,7 +737,7 @@
// this.searchList = [] // this.searchList = []
}, },
onPullDownRefresh() { onPullDownRefresh() {
uni.stopPullDownRefresh() uni.stopPullDownRefresh();
}, },
onReachBottom() { onReachBottom() {
console.log("触底"); console.log("触底");
@@ -560,7 +757,7 @@
let oprateOs = ""; let oprateOs = "";
oprateOs = uni.getSystemInfoSync().platform; oprateOs = uni.getSystemInfoSync().platform;
this.oprateOsName = uni.getSystemInfoSync().platform; this.oprateOsName = uni.getSystemInfoSync().platform;
console.log('oprateOs',oprateOs) console.log("oprateOs", oprateOs);
if (oprateOs == "android") { if (oprateOs == "android") {
this.isAndorid = true; this.isAndorid = true;
} else { } else {
@@ -568,9 +765,9 @@
} }
}, },
async checkPermision() { async checkPermision() {
var result = await permission.premissionCheck("CAMERA_EXTERNAL_STORAGE") var result = await permission.premissionCheck("CAMERA_EXTERNAL_STORAGE");
if (result != 1) { if (result != 1) {
return false return false;
} }
}, },
haveSelected(data) { haveSelected(data) {
@@ -640,18 +837,25 @@
async gotoDetail(v, courseIndex) { async gotoDetail(v, courseIndex) {
console.log("准备进入学习页面", v); console.log("准备进入学习页面", v);
this.currentCateIndex = courseIndex; this.currentCateIndex = courseIndex;
let _myurl = '' let _myurl = "";
// if(this.oprateOsName == 'ios'){ // if(this.oprateOsName == 'ios'){
// _myurl = '/pages/course/chapterDetail' // _myurl = '/pages/course/chapterDetail'
// }else{ // }else{
// h5 和安卓 // h5 和安卓
_myurl = '/pages/course/chapterDetailAndorid' _myurl = "/pages/course/chapterDetailAndorid";
// } // }
if (this.librayList[this.curIndex].isBuy == 1 || v.isAudition == 1 || if (
this.vip.type != "0") { this.librayList[this.curIndex].isBuy == 1 ||
let noRecored = false v.isAudition == 1 ||
v.isAudition == 1 && this.userMsg.vip == 0 && this.librayList[this.curIndex].isBuy == 0 ? this.vip.type == "1" ||
noRecored = true : '' this.vip.type == "2"
) {
let noRecored = false;
v.isAudition == 1 &&
this.userMsg.vip == 0 &&
this.librayList[this.curIndex].isBuy == 0
? (noRecored = true)
: "";
uni.navigateTo({ uni.navigateTo({
url: `${_myurl}?navTitle=${this.pageTitle}&title=${v.title}&id=${v.id}&conditions=${v.conditions}&noRecored=${noRecored}`, url: `${_myurl}?navTitle=${this.pageTitle}&title=${v.title}&id=${v.id}&conditions=${v.conditions}&noRecored=${noRecored}`,
}); });
@@ -733,18 +937,18 @@
} }
this.$forceUpdate(); this.$forceUpdate();
}) });
} }
}, },
getUserInfo() { getUserInfo() {
this.$http.post("common/user/getUserInfo").then((res) => { this.$http.post("common/user/getUserInfo").then((res) => {
console.log("res at line 505:", res); console.log("res at line 505:", res);
this.userMsg = res.result this.userMsg = res.result;
if (res.result.userVip) { if (res.result.userVip) {
this.vip = res.result.userVip; this.vip = res.result.userVip;
} else { } else {
this.vip = { this.vip = {
type: 0 type: 0,
}; };
} }
}); });
@@ -1173,11 +1377,21 @@
this.goBuyTitle = "购买VIP,即可免费观看吴门医述所有课程"; this.goBuyTitle = "购买VIP,即可免费观看吴门医述所有课程";
this.goBuyType = 0; this.goBuyType = 0;
break; break;
case 1 || 2: case 1:
var vipName = ""; var vipName = "";
if (this.vip.type == 1) { if (this.vip.type == 1) {
vipName = "超级VIP"; vipName = "超级VIP";
} }
//超级VIP
this.goBuyTitle = `尊贵的${vipName},您的有效期到 ${
this.vip.endTime && this.vip.endTime.split(" ")[0]
}`;
this.goBuyType = 1;
break;
case 2:
var vipName = "";
if (this.vip.type == 2) { if (this.vip.type == 2) {
vipName = "吴门医述VIP"; vipName = "吴门医述VIP";
} }
@@ -1185,7 +1399,7 @@
this.goBuyTitle = `尊贵的${vipName},您的有效期到 ${ this.goBuyTitle = `尊贵的${vipName},您的有效期到 ${
this.vip.endTime && this.vip.endTime.split(" ")[0] this.vip.endTime && this.vip.endTime.split(" ")[0]
}`; }`;
this.goBuyType = 1; this.goBuyType = 2;
break; break;
case 3: case 3:
@@ -1199,7 +1413,7 @@
this.$forceUpdate(); this.$forceUpdate();
this.pageTitle = this.course.title; this.pageTitle = this.course.title;
this.librayList = [...res.data.catalogues]; this.librayList = [...res.data.catalogues];
console.log('获取课程详情=》',res.data); console.log("获取课程详情=》", res.data);
// for (let i = 0; i < that.librayList.length; i++) { // for (let i = 0; i < that.librayList.length; i++) {
// var list = await that.getChapterList(that.librayList[i]); // var list = await that.getChapterList(that.librayList[i]);
// console.log("list at line 1222:", list); // console.log("list at line 1222:", list);
@@ -1209,20 +1423,26 @@
that.$forceUpdate(); that.$forceUpdate();
if (this.librayList.length > 0) { if (this.librayList.length > 0) {
if (this.catalogueId) { if (this.catalogueId) {
this.curId = this.catalogueId this.curId = this.catalogueId;
let _list = this.librayList let _list = this.librayList;
_list = _list.map( item => item.id) _list = _list.map((item) => item.id);
// console.log('_list过滤后的_list',_list); // console.log('_list过滤后的_list',_list);
this.curIndex = _list.findIndex((element) => element == this.catalogueId) this.curIndex = _list.findIndex(
console.log('其他页面返回来_list过滤后的curIndex',this.curIndex,this.catalogueId); (element) => element == this.catalogueId
);
console.log(
"其他页面返回来_list过滤后的curIndex",
this.curIndex,
this.catalogueId
);
} else { } else {
this.catalogueId = this.librayList[0].id; this.catalogueId = this.librayList[0].id;
this.curId = this.librayList[0].id; this.curId = this.librayList[0].id;
this.curIndex = 0 this.curIndex = 0;
console.log('首次加载'); console.log("首次加载");
} }
this.chapterList = await this.getChapterList(this.catalogueId) this.chapterList = await this.getChapterList(this.catalogueId);
// console.log('目录列表', this.librayList) // console.log('目录列表', this.librayList)
// console.log('外面得到的方法列表', this.chapterList); // console.log('外面得到的方法列表', this.chapterList);
if ( if (
@@ -1318,7 +1538,7 @@
if (item.id == this.curId) { if (item.id == this.curId) {
return; return;
} }
this.catalogueId = item.id this.catalogueId = item.id;
this.curIndex = index; this.curIndex = index;
this.curId = item.id; this.curId = item.id;
this.chapterList = await this.getChapterList(item.id); this.chapterList = await this.getChapterList(item.id);
@@ -1347,7 +1567,6 @@
}) })
.then(async (res) => { .then(async (res) => {
if (res.code == 0 && res.chapterList.length > 0) { if (res.code == 0 && res.chapterList.length > 0) {
list = res.chapterList; list = res.chapterList;
// console.log("方法里面得到的章节列表:", list); // console.log("方法里面得到的章节列表:", list);
} else { } else {
@@ -1370,8 +1589,10 @@
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/style/mixin.scss"; @import "@/style/mixin.scss";
.completionBg { padding: 10rpx 0; .completionBg {
background-color: #fff; border-bottom: 1px solid #eee; padding: 10rpx 0;
background-color: #fff;
border-bottom: 1px solid #eee;
} }
.endBox { .endBox {
// @include theme("vipbtnbg"); // @include theme("vipbtnbg");
@@ -1478,7 +1699,9 @@
} }
.xufeiBtn { .xufeiBtn {
display: block; line-height: 50rpx; height: 50rpx; display: block;
line-height: 50rpx;
height: 50rpx;
padding: 0 10rpx; padding: 0 10rpx;
border: 1px solid #333; border: 1px solid #333;
border-radius: 10rpx; border-radius: 10rpx;
@@ -1488,7 +1711,7 @@
border: 1px solid #fff; border: 1px solid #fff;
border-radius: 10rpx; border-radius: 10rpx;
text-align: center; text-align: center;
background-color: rgba(0, 0, 0, .4); background-color: rgba(0, 0, 0, 0.4);
padding: 10rpx; padding: 10rpx;
.text { .text {
@@ -1627,7 +1850,6 @@
color: #fff; color: #fff;
padding: 10rpx; padding: 10rpx;
border-radius: 0 50rpx 50rpx 0; border-radius: 0 50rpx 50rpx 0;
} }
.leve { .leve {
@@ -1862,11 +2084,13 @@
width: 100%; width: 100%;
font-size: 28rpx; font-size: 28rpx;
flex-wrap: wrap; flex-wrap: wrap;
background-image: linear-gradient(60deg, background-image: linear-gradient(
60deg,
#e0e9f6 0%, #e0e9f6 0%,
#ece6fa 30%, #ece6fa 30%,
#d7e8f0 60%, #d7e8f0 60%,
#fff 100%); #fff 100%
);
// background: rgba(255, 255, 255, 0.9); // background: rgba(255, 255, 255, 0.9);
.item { .item {
@@ -1902,7 +2126,6 @@
} }
.price { .price {
// text-align: center; // text-align: center;
font-size: 26rpx; font-size: 26rpx;
font-weight: bold; font-weight: bold;
@@ -1970,7 +2193,8 @@
padding-bottom: 40rpx; padding-bottom: 40rpx;
} }
.buyBox {} .buyBox {
}
.vipBgColor { .vipBgColor {
// background-color: #8265f9 !important; // background-color: #8265f9 !important;
@@ -1999,7 +2223,7 @@
border-radius: 20rpx 20rpx 0 0; border-radius: 20rpx 20rpx 0 0;
border: 1px solid #fff; border: 1px solid #fff;
border-bottom: none; border-bottom: none;
background-color: rgba(0, 0, 0, .4); background-color: rgba(0, 0, 0, 0.4);
text { text {
font-size: 30rpx; font-size: 30rpx;
@@ -2192,7 +2416,9 @@
/deep/.u-icon__icon--warning { /deep/.u-icon__icon--warning {
color: #fff !important; color: #fff !important;
} }
/deep/.uni-tag{border-width: 2rpx !important;} /deep/.uni-tag {
border-width: 2rpx !important;
}
/deep/.uni-section { /deep/.uni-section {
background: transparent !important; background: transparent !important;
} }
@@ -2382,8 +2608,8 @@
} }
} }
.commonDetailPage {
.commonDetailPage {} }
.course_info_box { .course_info_box {
margin-bottom: 10rpx; margin-bottom: 10rpx;

View File

@@ -10,55 +10,35 @@
--> -->
</z-nav-bar> </z-nav-bar>
<view <view class="contentBox commonPageContentBox" :style="`margin-top: ${
class="contentBox commonPageContentBox"
:style="`margin-top: ${
(40 + statusBarHeight) * 2 (40 + statusBarHeight) * 2
}rpx;height: calc(100% - ${(50 + statusBarHeight) * 2}rpx) !important;`" }rpx;height: calc(100% - ${(50 + statusBarHeight) * 2}rpx) !important;`">
>
<view class="flash_sale_content"> <view class="flash_sale_content">
<scroll-view scroll-y="true" class="scroll-Y" style=""> <scroll-view scroll-y="true" class="scroll-Y" style="">
<view <view class="scroll-view-item flash_sale_content_item color_shandow" v-for="(v, i) in dataList"
class="scroll-view-item flash_sale_content_item color_shandow" :style="`background:${v.background ? v.background : '#f6f6f6'};`">
v-for="(v, i) in dataList" <view class="book_name PM_font" v-html="v.title" :style="`background: ${v.color};
:style="`background:${v.background ? v.background : '#f6f6f6'};`"
>
<view
class="book_name PM_font"
v-html="v.title"
:style="`background: ${v.color};
;-webkit-background-clip: text; ;-webkit-background-clip: text;
-webkit-text-fill-color: transparent; -webkit-text-fill-color: transparent;
`" `"></view>
></view>
<view class="vip_content"> <view class="vip_content">
<view class="vip_image_box" <view class="vip_image_box">
><image <image class="vip_image" src="@/static/icon/quanyi.png" mode="aspectFit">
class="vip_image" </image>
src="@/static/icon/quanyi.png" </view>
mode="aspectFit"
>
</image
></view>
<view class="qunyi_box"> <view class="qunyi_box">
<view style="height: auto"> <view style="height: auto">
<view class="item" <view v-for="(item, index1) in v.quanyi" :style="item.style" v-html="item.name">
v-for="(item, index1) in v.quanyi" </view>
:style="item.style" </view>
v-html="item.name"
></view
></view>
</view> </view>
<!-- buttonbg --> <!-- buttonbg -->
</view> </view>
<view class="vip_list vip_button_list"> <view class="vip_list vip_button_list">
<view <view @click="openorderModal(item)" v-for="(item, index) in v.list" class="vip_button"
@click="openorderModal(item)" :style="`background:${v.buttonbg ? v.buttonbg : '#f6f6f6'};`">
v-for="(item, index) in v.list" <view style="max-width: 200rpx">{{ item.title }}</view>
class="vip_button"
:style="`background:${v.buttonbg ? v.buttonbg : '#f6f6f6'};`"
><view style="max-width: 200rpx">{{ item.title }}</view>
<view style="margin: 0 5rpx">{{ item.lastFee }}</view> <view style="margin: 0 5rpx">{{ item.lastFee }}</view>
</view> </view>
</view> </view>
@@ -68,18 +48,12 @@
</view> </view>
<u-popup :show="orderModalShow" mode="bottom" :round="20"> <u-popup :show="orderModalShow" mode="bottom" :round="20">
<view class="orderModalShow popup_box"> <view class="orderModalShow popup_box">
<u-icon <u-icon name="close" color="#333" size="18" @click="closeOrderModalShow" style="
name="close"
color="#333"
size="18"
@click="closeOrderModalShow"
style="
display: inline-block; display: inline-block;
position: absolute; position: absolute;
right: 20rpx; right: 20rpx;
top: 20rpx; top: 20rpx;
" "></u-icon>
></u-icon>
<orderPay ref="orderPay" :dataInfo="selectVipData"></orderPay> <orderPay ref="orderPay" :dataInfo="selectVipData"></orderPay>
<!-- <view class="goods_nav_box"> <!-- <view class="goods_nav_box">
<uni-goods-nav <uni-goods-nav
@@ -100,7 +74,9 @@
import list from "@/pages/component/commonComponents/list"; import list from "@/pages/component/commonComponents/list";
import orderPay from "./order.vue"; import orderPay from "./order.vue";
import $http from "@/config/requestConfig.js"; import $http from "@/config/requestConfig.js";
import { mapState } from "vuex"; import {
mapState
} from "vuex";
export default { export default {
components: { components: {
list, list,
@@ -110,43 +86,52 @@ export default {
return { return {
selectVipData: {}, selectVipData: {},
orderModalShow: false, orderModalShow: false,
superQuanyi: [ superQuanyi: [{
{ name: "众妙之门视频", name: "众妙之门视频",
// style: { style: {
// color: "#2D38F4", color: "#2D38F4",
// }, },
}, },
{ {
name: "吴门医述视频", name: "吴门医述视频",
}, },
{ name: "专属视频视听" }, {
name: "专属视频视听"
},
{ {
name: "读书相关权益", name: "读书相关权益",
// style: { style: {
// color: "#2D38F4", color: "#2D38F4",
// }, },
},
{
name: "活动报名折扣价<text style='color:red'>(更优惠)</text>"
}, },
{ name: "活动报名折扣价<text style='color:red'>(更优惠)</text>" },
], ],
sociologyQuanyi: [ sociologyQuanyi: [{
// { name: "-",
// name: "-", style: {
// style: { color: "#fafafa",
// color: "#b0b0b0", },
// }, },
// }, {
{ name: "吴门医述视频" }, name: "吴门医述视频"
{ name: "专属视频视听" }, },
{
name: "专属视频视听"
},
// { {
// name: "-", name: "-",
// style: { style: {
// color: "#b0b0b0", color: "#fafafa",
// }, },
// }, },
{ name: "活动报名折扣价" }, {
name: "活动报名折扣价"
},
], ],
isLoadingHide: false, isLoadingHide: false,
@@ -277,8 +262,7 @@ export default {
width: "120rpx", width: "120rpx",
}, },
background: "rgb(255 255 255 / 85%)", background: "rgb(255 255 255 / 85%)",
buttonbg: buttonbg: "linear-gradient(to right, #3F7FC9 0%,#D3EEFC 100%) ",
"linear-gradient(to right, #3F7FC9 0%,#D3EEFC 100%) ",
// titleBackground: // titleBackground:
// "linear-gradient(130deg, rgb(153, 202, 192) 0%, rgb(192, 223, 207) 50%)", // "linear-gradient(130deg, rgb(153, 202, 192) 0%, rgb(192, 223, 207) 50%)",
color: "linear-gradient(130deg,rgb(45, 56, 244) 0%, #72AD92 100%)", color: "linear-gradient(130deg,rgb(45, 56, 244) 0%, #72AD92 100%)",
@@ -504,8 +488,7 @@ export default {
if (res.code == 0 && res.result.length >= 0) { if (res.code == 0 && res.result.length >= 0) {
this.twoCateList = res.result; this.twoCateList = res.result;
if (this.curOneCateIndex == 0) { if (this.curOneCateIndex == 0) {
this.twoCateList = [ this.twoCateList = [{
{
dictType: "1", dictType: "1",
dictValue: "学术思想", dictValue: "学术思想",
}, },
@@ -520,8 +503,7 @@ export default {
]; ];
} }
if (this.curOneCateIndex == 2) { if (this.curOneCateIndex == 2) {
this.twoCateList = [ this.twoCateList = [{
{
dictType: "1", dictType: "1",
dictValue: "吴门之歌", dictValue: "吴门之歌",
}, },
@@ -536,8 +518,7 @@ export default {
]; ];
} }
if (this.curOneCateIndex == 3) { if (this.curOneCateIndex == 3) {
this.twoCateList = [ this.twoCateList = [{
{
dictType: "1", dictType: "1",
dictValue: "学术贡献", dictValue: "学术贡献",
}, },
@@ -591,7 +572,9 @@ export default {
transformData(inputData) { transformData(inputData) {
const result = {}; const result = {};
inputData.forEach((item) => { inputData.forEach((item) => {
const { letter } = item; const {
letter
} = item;
if (!result[letter]) { if (!result[letter]) {
result[letter] = []; result[letter] = [];
} }
@@ -765,6 +748,7 @@ export default {
.commonPageBox { .commonPageBox {
height: 100vh !important; height: 100vh !important;
} }
.vipBox { .vipBox {
font-size: 28rpx !important; font-size: 28rpx !important;
background-repeat: no-repeat; background-repeat: no-repeat;
@@ -826,9 +810,11 @@ export default {
.titleList2 { .titleList2 {
height: calc(100% - 170rpx); height: calc(100% - 170rpx);
} }
.commonPageContentBox { .commonPageContentBox {
// min-height: 100% !important; // min-height: 100% !important;
} }
.related_courses_name { .related_courses_name {
display: inline-block; display: inline-block;
float: left; float: left;
@@ -836,20 +822,24 @@ export default {
width: calc(100% - 90rpx) !important; width: calc(100% - 90rpx) !important;
padding-left: 20rpx; padding-left: 20rpx;
font-weight: 700; font-weight: 700;
.aui-text-danger { .aui-text-danger {
display: inline-block; display: inline-block;
float: right; float: right;
} }
} }
.vip_image_box { .vip_image_box {
@include themFlex(center, center); @include themFlex(center, center);
margin-bottom: 20rpx; margin-bottom: 20rpx;
} }
.vip_image { .vip_image {
width: 60rpx; width: 60rpx;
height: 60rpx; height: 60rpx;
// float: left; // float: left;
} }
/deep/.list_item { /deep/.list_item {
.rightArrow { .rightArrow {
margin-top: 10rpx !important; margin-top: 10rpx !important;
@@ -867,11 +857,12 @@ export default {
.flash_sale_content_item { .flash_sale_content_item {
width: auto; width: auto;
min-width: 47%; min-width: 47%;
min-height: 56%; min-height: 48%;
margin: 10rpx !important; margin: 10rpx !important;
border-radius: 20rpx; border-radius: 20rpx;
overflow: hidden; overflow: hidden;
position: relative; position: relative;
.vip_content { .vip_content {
width: 100%; width: 100%;
height: calc(100% - 80rpx); height: calc(100% - 80rpx);
@@ -911,6 +902,7 @@ export default {
white-space: wrap; white-space: wrap;
} }
} }
.vip_button_list { .vip_button_list {
width: 100%; width: 100%;
max-height: 200rpx; max-height: 200rpx;
@@ -924,6 +916,7 @@ export default {
bottom: 20rpx; bottom: 20rpx;
left: 0; left: 0;
width: 100%; width: 100%;
// justify-content: center; // justify-content: center;
// flex-direction: column; // flex-direction: column;
.vip_button { .vip_button {
@@ -942,6 +935,7 @@ export default {
// line-height: 80rpx; // line-height: 80rpx;
margin-top: 20rpx; margin-top: 20rpx;
white-space: wrap; white-space: wrap;
view { view {
display: flex; display: flex;
line-height: 30rpx; line-height: 30rpx;
@@ -949,10 +943,12 @@ export default {
justify-content: center; justify-content: center;
} }
} }
.vip_button:first-child { .vip_button:first-child {
margin-top: 0 !important; margin-top: 0 !important;
} }
} }
.qunyi_box { .qunyi_box {
height: calc(100% - 280rpx); height: calc(100% - 280rpx);
color: #333; color: #333;
@@ -961,9 +957,18 @@ export default {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
.item{line-height: 60rpx; text-align: center; padding: 0 10rpx; border: 1px solid #64bec5; border-radius: 50rpx; margin-bottom: 20rpx;}
.item {
line-height: 60rpx;
text-align: center;
padding: 0 10rpx;
border: 1px solid #64bec5;
border-radius: 50rpx;
margin-bottom: 20rpx;
}
} }
.popup_box { .popup_box {
max-height: 95vh; max-height: 95vh;
overflow: auto; overflow: auto;

View File

@@ -1,8 +1,5 @@
<template> <template>
<view <view class="container commonDetailPage" style="background-color: #fff !important">
class="container commonDetailPage"
style="background-color: #fff !important"
>
<!-- 公共组件-每个页面必须引入 --> <!-- 公共组件-每个页面必须引入 -->
<view class="contentBox commonPageContentBox order_box"> <view class="contentBox commonPageContentBox order_box">
@@ -10,90 +7,49 @@
<view class="pay_title">支付方式</view> <view class="pay_title">支付方式</view>
<view style="margin-bottom: 20rpx"> <view style="margin-bottom: 20rpx">
<u-tag <u-tag :text="`已选:${dataInfo.title}`" bgColor="#DCF2FA" borderColor="#DCF2FA" color="#258feb"
:text="`已选:${dataInfo.title}`" plain></u-tag>
bgColor="#DCF2FA"
borderColor="#DCF2FA"
color="#258feb"
plain
></u-tag>
</view> </view>
<view <view class="curriulum_title_box goods_item pay_item" v-for="(v, i) in payList">
class="curriulum_title_box goods_item pay_item"
v-for="(v, i) in payList"
>
<view :class="isDefaultCurrency && i != 2 ? 'bgGrey top' : 'top'"> <view :class="isDefaultCurrency && i != 2 ? 'bgGrey top' : 'top'">
<view class="left"> <view class="left">
<image <image class="pay_item_img" :src="v.imgUrl" mode="aspectFil" :style="v.style">
class="pay_item_img"
:src="v.imgUrl"
mode="aspectFil"
:style="v.style"
>
</image> </image>
<template v-if="v.type == 4"> <template v-if="v.type == 4">
<text> {{ v.text }}</text> <text> {{ v.text }}</text>
<text <text style="color: #258feb; font-weight: 600; margin-left: 10rpx">
style="color: #258feb; font-weight: 600; margin-left: 10rpx"
>
(余额{{ (余额{{
initData && initData.user ? initData.user.peanutCoin : 0 initData && initData.user ? initData.user.peanutCoin : 0
}})</text }})</text>
>
</template> </template>
<text v-else> {{ v.text }}</text> <text v-else> {{ v.text }}</text>
</view> </view>
<template v-if="isDefaultCurrency"> <template v-if="isDefaultCurrency">
<radio <radio v-if="i == 2" :value="v.value" color="#258feb"
v-if="i == 2" :checked="selectPayIndex == i ? true : false" @click="radioChange(i)" size="10" />
:value="v.value"
color="#258feb"
:checked="selectPayIndex == i ? true : false"
@click="radioChange(i)"
size="10"
/>
</template> </template>
<template v-else> <template v-else>
<radio <radio :value="v.value" color="#258feb" :checked="selectPayIndex == i ? true : false"
:value="v.value" @click="radioChange(i)" size="10" />
color="#258feb"
:checked="selectPayIndex == i ? true : false"
@click="radioChange(i)"
size="10"
/>
</template> </template>
</view> </view>
</view> </view>
<template v-if="selectPayIndex == 2"> <template v-if="selectPayIndex == 2">
<view <view class="goods_detail_list_title bg_box_shandow color_shandow bg_color">
class="goods_detail_list_title bg_box_shandow color_shandow bg_color" <view class="linlanzhifu" style="
>
<view
class="linlanzhifu"
style="
width: 100%; width: 100%;
overflow: hidden; overflow: hidden;
justify-content: space-between; justify-content: space-between;
" ">
>
<view class="linlanzhifu"> <view class="linlanzhifu">
<u-icon <u-icon name="error-circle" color="#258feb" size="20"
name="error-circle" style="display: inline-block; margin-right: 10rpx"></u-icon>
color="#258feb"
size="20"
style="display: inline-block; margin-right: 10rpx"
></u-icon>
确保您的天医币足够支付 确保您的天医币足够支付
</view> </view>
<text <text class="fdButtonBox aui-text-danger fdButtonBoxRed" style="float: right"
class="fdButtonBox aui-text-danger fdButtonBoxRed" @click="onPageJump('/pages/mine/wallet/recharge/index?source=order')">立即充值</text>
style="float: right"
@click="onPageJump('/pages/mine/wallet/recharge/index?source=order')"
>立即充值</text
>
</view> </view>
<view class="other_info" style="margin-top: 12rpx"> <view class="other_info" style="margin-top: 12rpx">
@@ -101,9 +57,7 @@
<view class="explain"> 1. 1天医币 = 1元人民币 </view> <view class="explain"> 1. 1天医币 = 1元人民币 </view>
<view class="explain"> <view class="explain">
2.若有疑问或意见请致电客服 2.若有疑问或意见请致电客服
<span style="font-size: 15px" <span style="font-size: 15px"><u @click="gotoPhone">022-24142321</u></span>
><u @click="gotoPhone">022-24142321</u></span
>
</view> </view>
<view class="explain"> <view class="explain">
<!-- 3.非中国大陆用户可通过paypal账户支付 <!-- 3.非中国大陆用户可通过paypal账户支付
@@ -116,21 +70,14 @@
3.非中国大陆用户可以信用卡支付简单快捷推荐使用 3.非中国大陆用户可以信用卡支付简单快捷推荐使用
支付时使用的信用卡需要带有Visa或MasterCard的标识请向邮箱 支付时使用的信用卡需要带有Visa或MasterCard的标识请向邮箱
<text <text @click="fnCopy('publisher@tmrjournals.com', '邮箱')" class="aui-text-success"
@click="fnCopy('publisher@tmrjournals.com', '邮箱')" style="text-decoration: underline; color: #258feb">
class="aui-text-success"
style="text-decoration: underline; color: #258feb"
>
publisher@tmrjournals.com publisher@tmrjournals.com
</text> </text>
点击复制发送支付请求内容需包含拟购买的课程名称支付金额APP注册姓名及手机号码或者加一路健康客服微信 点击复制发送支付请求内容需包含拟购买的课程名称支付金额APP注册姓名及手机号码或者加一路健康客服微信
<text <text class="aui-text-success" @click="fnCopy('yilujiankangkefu', '微信名')"
class="aui-text-success" style="text-decoration: underline; color: #258feb">
@click="fnCopy('yilujiankangkefu', '微信名')" yilujiankangkefu </text>点击复制联系我们我们将在24小时内向您的邮箱或者微信发送支付链接根据提示即可完成信用卡支付无需兑换外币
style="text-decoration: underline; color: #258feb"
>
yilujiankangkefu </text
>点击复制联系我们我们将在24小时内向您的邮箱或者微信发送支付链接根据提示即可完成信用卡支付无需兑换外币
</view> </view>
</view> </view>
</view> </view>
@@ -138,29 +85,19 @@
</view> </view>
<template> <template>
<common-sticky <common-sticky label="title" :itemStyle="`width:${
label="title"
:itemStyle="`width:${
cateList.length == 2 ? '50' : '33' cateList.length == 2 ? '50' : '33'
}%;padding-left: 15px; padding-right: 15px; height: 68rpx;`" }%;padding-left: 15px; padding-right: 15px; height: 68rpx;`" :list="cateList"
:list="cateList" :currentCateIndex="currentCateIndex" @handleselectCate="handleselectCate">
:currentCateIndex="currentCateIndex"
@handleselectCate="handleselectCate"
>
</common-sticky> </common-sticky>
</template> </template>
</view> </view>
<view class="goods_nav_box"> <view class="goods_nav_box">
<common-goods-nav <common-goods-nav :iconList="[]" :customButton="customButton" @submit="goBuyJie">
:iconList="[]"
:customButton="customButton"
@submit="goBuyJie"
>
<!-- leftSlot --> <!-- leftSlot -->
<template slot="leftSlot" slot-scope="slotProps"> <template slot="leftSlot" slot-scope="slotProps">
<view class="price_box order_bottom_box"> <view class="price_box order_bottom_box">
<text class="price" <text class="price">合计
>合计
<text class="total">{{ dataInfo.lastFee }}</text> <text class="total">{{ dataInfo.lastFee }}</text>
</text> </text>
@@ -180,10 +117,18 @@
<script> <script>
import courseDescription from "@/pages/component/commonComponents/list"; import courseDescription from "@/pages/component/commonComponents/list";
import { setPay, setPayAssign, setWXPay } from "@/config/utils"; import {
setPay,
setPayAssign,
setWXPay
} from "@/config/utils";
import $http from "@/config/requestConfig.js"; import $http from "@/config/requestConfig.js";
const { platform } = uni.getSystemInfoSync(); const {
import { mapState } from "vuex"; platform
} = uni.getSystemInfoSync();
import {
mapState
} from "vuex";
export default { export default {
props: ["dataInfo"], props: ["dataInfo"],
components: { components: {
@@ -232,8 +177,7 @@ export default {
}, },
selectPayIndex: 1, selectPayIndex: 1,
farePrice: 0, farePrice: 0,
payList: [ payList: [{
{
text: "支付宝", text: "支付宝",
imgUrl: require("@/static/icon/pay_1.png"), imgUrl: require("@/static/icon/pay_1.png"),
type: 2, type: 2,
@@ -316,22 +260,18 @@ export default {
addressList: "common/userAddress/getUserAddress", addressList: "common/userAddress/getUserAddress",
freightNum: "book/buyOrder/calculateTransportPrice", //运费 freightNum: "book/buyOrder/calculateTransportPrice", //运费
}, },
customButton: [ customButton: [{
{
width: "160rpx", width: "160rpx",
text: "立即支付", text: "立即支付",
backgroundColor: "linear-gradient(90deg, #3C77BE 0%,#258feb 100%)", backgroundColor: "linear-gradient(90deg, #3C77BE 0%,#258feb 100%)",
color: "#fff", color: "#fff",
}, }, ],
], customButtonGroup1: [{
customButtonGroup1: [
{
with: 200, with: 200,
text: "确定", text: "确定",
backgroundColor: "linear-gradient(90deg, #3C77BE 0%,#258feb 100%)", backgroundColor: "linear-gradient(90deg, #3C77BE 0%,#258feb 100%)",
color: "#fff", color: "#fff",
}, }, ],
],
}; };
}, },
async onLoad(options) { async onLoad(options) {
@@ -413,8 +353,7 @@ export default {
}, },
async initPrepareOrder() { async initPrepareOrder() {
this.priceBreakdownList = [ this.priceBreakdownList = [{
{
text: "商品总价", text: "商品总价",
imgUrl: "", imgUrl: "",
type: 1, type: 1,
@@ -607,10 +546,9 @@ export default {
title: "正在支付", title: "正在支付",
icon: "loading", icon: "loading",
}); });
await setPay( await setPay({
{
typePay: "alipay", typePay: "alipay",
subject: "order", subject: "vip",
totalAmount: res.money, totalAmount: res.money,
type: 2, type: 2,
relevanceoid: res.orderSn, relevanceoid: res.orderSn,
@@ -754,8 +692,7 @@ export default {
} }
this.modalInfo = { this.modalInfo = {
title: "提示信息", title: "提示信息",
content: content: "用户您好,该课程已到期,通过支付" +
"用户您好,该课程已到期,通过支付" +
fee + fee +
"元,本门课程可获得" + "元,本门课程可获得" +
days + days +
@@ -970,8 +907,7 @@ export default {
// curriculumInfo // curriculumInfo
this.detailInfo = { this.detailInfo = {
content: content: "<img src='http://oss.taihumed.com/other/null_20210528102528870.jpg' ></img> <img src='http://101.201.146.165:8088/curriculum/detailImg/curriculum_20170420143333621.png' ></img><p><p>没有中医基础想学中医难不难?中医学者治疗出现瓶颈怎么办?中西医究竟有什么不同呢?吴雄志教授将以全新的视角,完美整合中药学和西医学知识,让你领略当代中医生理学魅力。</p><p><br/><p></p><p><br/></p><p>【思考题】</p><p>1、简述中医的发展这些年出现了哪些变化</p><p>2、简述中西医学科的异同</p>",
"<img src='http://oss.taihumed.com/other/null_20210528102528870.jpg' ></img> <img src='http://101.201.146.165:8088/curriculum/detailImg/curriculum_20170420143333621.png' ></img><p><p>没有中医基础想学中医难不难?中医学者治疗出现瓶颈怎么办?中西医究竟有什么不同呢?吴雄志教授将以全新的视角,完美整合中药学和西医学知识,让你领略当代中医生理学魅力。</p><p><br/><p></p><p><br/></p><p>【思考题】</p><p>1、简述中医的发展这些年出现了哪些变化</p><p>2、简述中西医学科的异同</p>",
}; };
// this.$http // this.$http
@@ -1116,7 +1052,9 @@ export default {
transformData(inputData) { transformData(inputData) {
const result = {}; const result = {};
inputData.forEach((item) => { inputData.forEach((item) => {
const { letter } = item; const {
letter
} = item;
if (!result[letter]) { if (!result[letter]) {
result[letter] = []; result[letter] = [];
} }
@@ -1286,11 +1224,13 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
@import "@/style/mixin.scss"; @import "@/style/mixin.scss";
.pay_title { .pay_title {
text-align: center; text-align: center;
font-size: 32rpx; font-size: 32rpx;
margin-bottom: 40rpx; margin-bottom: 40rpx;
} }
.order_box { .order_box {
padding: 20rpx; padding: 20rpx;
@@ -1558,8 +1498,7 @@ export default {
// color: #aaa; // color: #aaa;
color: #5a5a5a; color: #5a5a5a;
.explain { .explain {}
}
} }
.left { .left {
@@ -1820,6 +1759,7 @@ export default {
.bgGrey { .bgGrey {
// background-color: #f5f5f5; // background-color: #f5f5f5;
} }
.pay_info { .pay_info {
margin-bottom: 60rpx; margin-bottom: 60rpx;
display: flex; display: flex;