8 Commits

Author SHA1 Message Date
@fawn-nine
60f3ad7cb7 超V专享加限制 2024-09-27 11:11:23 +08:00
@fawn-nine
7f17a51c8c 1 2024-09-19 11:45:30 +08:00
@fawn-nine
54a69954dd 支付相关调整 2024-09-19 11:35:36 +08:00
@fawn-nine
e421621155 商品结算 2024-09-18 15:42:17 +08:00
cebe7d7021 wm 2024-09-09 11:21:05 +08:00
@fawn-nine
85c2782b8a 暂存 2024-08-28 10:37:11 +08:00
@fawn-nine
78a1c5ad98 修改课程介绍页面 2024-08-22 17:00:19 +08:00
@fawn-nine
7208cc44c2 修改请求等待时间 2024-08-15 16:45:31 +08:00
10 changed files with 3407 additions and 3313 deletions

View File

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

View File

@@ -3,17 +3,15 @@
"appid": "__UNI__C7475A8",
"description": "吴门医述",
"networkTimeout": {
"request" : 3000
"request": 15000
},
"transformPx": false,
"icons" : [
{
"icons": [{
"sizes": "分辨率192x192",
"src": "图片路径"
}
],
"versionName" : "1.0.15",
"versionCode" : 1015,
}],
"versionName": "1.0.18",
"versionCode": 1018,
"app-plus": {
"nvueCompiler": "weex",
"compatible": {
@@ -270,4 +268,3 @@
}
}
//

View File

@@ -1088,9 +1088,21 @@ export default {
// 商品内容跳转
goDetail(id, data) {
console.log("data at line 1277:", data);
console.log("data at line 1277:订单详情参数", data);
if (data.delFlag == -1) {
this.$commonJS.showToast("商品已下架");
}else if(data.goodsType == '05'){
if(data.courseIds && data.courseIds.length > 0){
uni.navigateTo({
url: `/pages/course/courseDetail?id=${data.courseIds[0].courseId}`,
});
}else{
uni.showToast({
title: "课程数据出错",
icon: "none"
});
}
} else {
uni.navigateTo({
// url: '../bookShop/commodityDetail?id=' + item.id

View File

@@ -50,7 +50,7 @@
: ''
}`"
>
<view class="image_box" style="margin-right: 10rpx">
<view class="image_box" style="margin-right: 10rpx; ">
<image
:src="slotProps.row.productImages"
mode="aspectFit"
@@ -58,14 +58,19 @@
></image>
</view>
<view :class="`goods_info `">
<view :class="`goods_info flex_box just`" style="justify-content: space-between;">
<view class="name">{{ slotProps.row.productName }}</view>
<view class="flex_box">
<text style="color: #999; text-decoration: line-through; margin-right: 20rpx;"
v-if="slotProps.row.activityPrice > 0 && slotProps.row.activityPrice < slotProps.row.price" >{{slotProps.row.price}}</text>
<view class="price" style="color: #258feb"
>{{ slotProps.row.activityPrice?slotProps.row.activityPrice:slotProps.row.price }}</view
></view
>
</view>
</view>
<!-- <text v-if="slotProps.row.conditions!='03'">试听</text> -->
</template>
</common-list>

View File

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

View File

@@ -16,7 +16,7 @@
left: 0;
width: 100%;
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">
<text class="saveBtn vipBtn flexbox buyBtn" v-if="goBuyType == 0">
立即购买
@@ -24,7 +24,10 @@
<text class="flexbox" style="color: #f0f0f0" v-if="goBuyType == 1">
立即续费
</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>
@@ -48,24 +51,18 @@
</view>
<view class="containerBg" v-if="course.content && course.content != ''">
<view class="prof">
<view style="
position: relative;
display: flex;
align-items: center;
" @click="isHideCourseInfo = !isHideCourseInfo">
<view style="position: relative; display: flex; align-items: center">
<view :class="`${isHideCourseInfo ? 'hidden2' : ''}`"
style="width: calc(100% - 50rpx); font-size: 30rpx;" v-html="course.content">
style="width: calc(100% - 50rpx); font-size: 30rpx" v-html="course.content">
</view>
<!-- <text
style="
<text @click="isHideCourseInfo = !isHideCourseInfo" style="
position: absolute;
bottom: 0;
right: 0;
color: #838588;
"
>
">
{{ isHideCourseInfo ? "展开" : "收起" }}
</text> -->
</text>
</view>
</view>
</view>
@@ -75,13 +72,15 @@
<view class="containerBg2">
<!-- 目录 -->
<view :class="['coursePart','flexbox', userMsg.vip != 0 ? 'vipBgColor':'']"
v-if="librayList.length > 1">
<view :class="[
'coursePart',
'flexbox',
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>
<!-- end -->
<template v-if="librayList[curIndex]">
@@ -91,7 +90,8 @@
<view class="box">
<view class="flexbox" v-if="userMsg.vip != 0">
<!-- vip到期时间 -->
<text>VIP畅学权益有效期截止到{{userMsg.userVip.endTime}} </text>
<text>VIP畅学权益有效期截止到{{ userMsg.userVip.endTime }}
</text>
<!-- <uni-tag type="warning" text="去学习"></uni-tag> -->
</view>
<view class="flexbox" v-else>
@@ -100,7 +100,8 @@
</template>
<template v-else>
<!-- 实际购买课程到期时间 -->
<text style="line-height: 50rpx;">课程有效期截止到{{librayList[curIndex].endTime}} </text>
<text style="line-height: 50rpx">课程有效期截止到{{ librayList[curIndex].endTime }}
</text>
<!-- 自己买的可以续费 -->
<text class="xufeiBtn"
@click="handleClickGetGoodsList(librayList[curIndex])">续费</text>
@@ -108,11 +109,12 @@
</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="text">
您未购买此目录课程或已到期购买后或开通超级VIP 即可学习本目录课程
您未购买此目录课程或已到期购买后或开通超级VIP
即可学习本目录课程
</view>
<view class="tag-view flex_box">
<u-button class="btn" type="warning" size="small"
@@ -126,38 +128,47 @@
</template>
<view class="shiting_content">
<view :class="['chapter_content',userMsg.vip != 0 ? 'vipchapter_content' : '']"
v-if="chapterList.length > 0">
<view :class="[
'chapter_content',
userMsg.vip != 0 ? 'vipchapter_content' : '',
]" v-if="chapterList.length > 0">
<view class="vipSee" v-if="userMsg && userMsg.vip != 0">
<text>VIP畅学权益生效中</text>
</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
:class="['textBox','flex_box', librayList[curIndex].isBuy == 0 ? 'lock' : '']">
<view class="flexbox" style="align-items: center">
<view :class="[
'textBox',
'flex_box',
librayList[curIndex].isBuy == 0 ? 'lock' : '',
]">
<text class="hidden1">{{ item.title }}</text>
<!-- {{item.isAudition}}-{{librayList[curIndex].isBuy}}-{{userMsg.vip}} -->
<uni-tag
v-if="item.isAudition == 1 && librayList[curIndex].isBuy == 0 && userMsg.vip == 0"
style="margin-left: 10rpx" :inverted="true" text="试听" size="mini"
type="success" />
<template
v-if="librayList[curIndex] && librayList[curIndex].isBuy == 1 || userMsg.vip != 0">
<uni-tag v-if="item.isLearned == 0" style="margin-left: 10rpx;"
<uni-tag v-if="
item.isAudition == 1 &&
librayList[curIndex].isBuy == 0 &&
userMsg.vip == 0
" style="margin-left: 10rpx" :inverted="true" text="试听" size="mini" type="success" />
<template v-if="
(librayList[curIndex] &&
librayList[curIndex].isBuy == 1) ||
userMsg.vip != 0
">
<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;"
<uni-tag v-if="item.isLearned == 1" style="margin-left: 10rpx"
:inverted="true" text="已学" size="mini" type="success" />
</template>
</view>
<view class="shitingTag">
<u-icon
v-if="librayList[curIndex].isBuy == 0 && userMsg.vip == 0 && item.isAudition == 0"
name="lock" color="#258feb" size="28"></u-icon>
<u-icon v-if="
librayList[curIndex].isBuy == 0 &&
userMsg.vip == 0 &&
item.isAudition == 0
" name="lock" color="#258feb" size="28"></u-icon>
</view>
</view>
</view>
</view>
@@ -319,7 +330,6 @@
</view>
</view>
</u-popup>
</view>
<common-select-goods ref="commonSelectGoods" :selectGoodsData="selectGoodsData" :goodsList="goodsList"
@@ -370,7 +380,7 @@
import emojiList1 from "../../bkhumor-emojiplus/emoji/biaoqin.js";
import emotion from "@/bkhumor-emojiplus/components/bkhumor-emojiplus/bkhumor-emojiplus.vue";
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;
import {
mapState
@@ -483,7 +493,7 @@
startStudyForMF: "sociology/course/startStudyForMF",
},
isAndorid: true,
oprateOsName:'',
oprateOsName: "",
};
},
//第一次加载
@@ -498,9 +508,7 @@
// this.getCateList(this.courseId)
// await this.getData(e.id);
this.getSayList();
this.getOS()
this.getOS();
},
onPageScroll(e) {
this.scrollTop = e.scrollTop;
@@ -517,7 +525,7 @@
async onShow() {
// 隐藏原生的tabbar
uni.hideTabBar();
console.log('this.courseId', this.courseId);
console.log("this.courseId", this.courseId);
await this.getData(this.courseId);
// #ifdef APP-PLUS
plus.screen.unlockOrientation();
@@ -540,7 +548,7 @@
// this.searchList = []
},
onPullDownRefresh() {
uni.stopPullDownRefresh()
uni.stopPullDownRefresh();
},
onReachBottom() {
console.log("触底");
@@ -560,7 +568,7 @@
let oprateOs = "";
oprateOs = uni.getSystemInfoSync().platform;
this.oprateOsName = uni.getSystemInfoSync().platform;
console.log('oprateOs',oprateOs)
console.log("oprateOs", oprateOs);
if (oprateOs == "android") {
this.isAndorid = true;
} else {
@@ -568,9 +576,9 @@
}
},
async checkPermision() {
var result = await permission.premissionCheck("CAMERA_EXTERNAL_STORAGE")
var result = await permission.premissionCheck("CAMERA_EXTERNAL_STORAGE");
if (result != 1) {
return false
return false;
}
},
haveSelected(data) {
@@ -640,18 +648,25 @@
async gotoDetail(v, courseIndex) {
console.log("准备进入学习页面", v);
this.currentCateIndex = courseIndex;
let _myurl = ''
let _myurl = "";
// if(this.oprateOsName == 'ios'){
// _myurl = '/pages/course/chapterDetail'
// }else{
// h5 和安卓
_myurl = '/pages/course/chapterDetailAndorid'
_myurl = "/pages/course/chapterDetailAndorid";
// }
if (this.librayList[this.curIndex].isBuy == 1 || v.isAudition == 1 ||
this.vip.type != "0") {
let noRecored = false
v.isAudition == 1 && this.userMsg.vip == 0 && this.librayList[this.curIndex].isBuy == 0 ?
noRecored = true : ''
if (
this.librayList[this.curIndex].isBuy == 1 ||
v.isAudition == 1 ||
this.vip.type == "1" ||
this.vip.type == "2"
) {
let noRecored = false;
v.isAudition == 1 &&
this.userMsg.vip == 0 &&
this.librayList[this.curIndex].isBuy == 0 ?
(noRecored = true) :
"";
uni.navigateTo({
url: `${_myurl}?navTitle=${this.pageTitle}&title=${v.title}&id=${v.id}&conditions=${v.conditions}&noRecored=${noRecored}`,
});
@@ -709,6 +724,13 @@
}
this.$forceUpdate();
});
} else if (v.type == 2 && this.userMsg.vip != 1) {
uni.showModal({
title: '提示',
content: '当前课程目录是超V专享,开通超V可观看',
confirmText: '好的',
showCancel: false
})
} else {
this.$http
.request({
@@ -733,18 +755,18 @@
}
this.$forceUpdate();
})
});
}
},
getUserInfo() {
this.$http.post("common/user/getUserInfo").then((res) => {
console.log("res at line 505:", res);
this.userMsg = res.result
this.userMsg = res.result;
if (res.result.userVip) {
this.vip = res.result.userVip;
} else {
this.vip = {
type: 0
type: 0,
};
}
});
@@ -1173,11 +1195,21 @@
this.goBuyTitle = "购买VIP,即可免费观看吴门医述所有课程";
this.goBuyType = 0;
break;
case 1 || 2:
case 1:
var vipName = "";
if (this.vip.type == 1) {
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) {
vipName = "吴门医述VIP";
}
@@ -1185,7 +1217,7 @@
this.goBuyTitle = `尊贵的${vipName},您的有效期到 ${
this.vip.endTime && this.vip.endTime.split(" ")[0]
}`;
this.goBuyType = 1;
this.goBuyType = 2;
break;
case 3:
@@ -1199,7 +1231,7 @@
this.$forceUpdate();
this.pageTitle = this.course.title;
this.librayList = [...res.data.catalogues];
console.log('获取课程详情=》',res.data);
console.log("获取课程详情=》", res.data);
// for (let i = 0; i < that.librayList.length; i++) {
// var list = await that.getChapterList(that.librayList[i]);
// console.log("list at line 1222:", list);
@@ -1209,20 +1241,26 @@
that.$forceUpdate();
if (this.librayList.length > 0) {
if (this.catalogueId) {
this.curId = this.catalogueId
let _list = this.librayList
_list = _list.map( item => item.id)
this.curId = this.catalogueId;
let _list = this.librayList;
_list = _list.map((item) => item.id);
// console.log('_list过滤后的_list',_list);
this.curIndex = _list.findIndex((element) => element == this.catalogueId)
console.log('其他页面返回来_list过滤后的curIndex',this.curIndex,this.catalogueId);
this.curIndex = _list.findIndex(
(element) => element == this.catalogueId
);
console.log(
"其他页面返回来_list过滤后的curIndex",
this.curIndex,
this.catalogueId
);
} else {
this.catalogueId = this.librayList[0].id;
this.curId = this.librayList[0].id;
this.curIndex = 0
console.log('首次加载');
this.curIndex = 0;
console.log("首次加载");
}
this.chapterList = await this.getChapterList(this.catalogueId)
this.chapterList = await this.getChapterList(this.catalogueId);
// console.log('目录列表', this.librayList)
// console.log('外面得到的方法列表', this.chapterList);
if (
@@ -1318,7 +1356,7 @@
if (item.id == this.curId) {
return;
}
this.catalogueId = item.id
this.catalogueId = item.id;
this.curIndex = index;
this.curId = item.id;
this.chapterList = await this.getChapterList(item.id);
@@ -1347,7 +1385,6 @@
})
.then(async (res) => {
if (res.code == 0 && res.chapterList.length > 0) {
list = res.chapterList;
// console.log("方法里面得到的章节列表:", list);
} else {
@@ -1370,18 +1407,23 @@
<style lang="scss" scoped>
@import "@/style/mixin.scss";
.completionBg { padding: 10rpx 0;
background-color: #fff; border-bottom: 1px solid #eee;
.completionBg {
padding: 10rpx 0;
background-color: #fff;
border-bottom: 1px solid #eee;
}
.endBox {
// @include theme("vipbtnbg");
color: #333;
font-size: 26rpx;
// margin: 20rpx 0;
padding: 10rpx 20rpx;
.box {
// background-color: #258feb;
}
.flexbox {
justify-content: space-between;
}
@@ -1396,7 +1438,7 @@
}
img {
width: 20px;
max-width: 260rpx;
}
.u-upload__button {
@@ -1478,7 +1520,9 @@
}
.xufeiBtn {
display: block; line-height: 50rpx; height: 50rpx;
display: block;
line-height: 50rpx;
height: 50rpx;
padding: 0 10rpx;
border: 1px solid #333;
border-radius: 10rpx;
@@ -1488,7 +1532,7 @@
border: 1px solid #fff;
border-radius: 10rpx;
text-align: center;
background-color: rgba(0, 0, 0, .4);
background-color: rgba(0, 0, 0, 0.4);
padding: 10rpx;
.text {
@@ -1627,7 +1671,6 @@
color: #fff;
padding: 10rpx;
border-radius: 0 50rpx 50rpx 0;
}
.leve {
@@ -1902,7 +1945,6 @@
}
.price {
// text-align: center;
font-size: 26rpx;
font-weight: bold;
@@ -1999,7 +2041,7 @@
border-radius: 20rpx 20rpx 0 0;
border: 1px solid #fff;
border-bottom: none;
background-color: rgba(0, 0, 0, .4);
background-color: rgba(0, 0, 0, 0.4);
text {
font-size: 30rpx;
@@ -2192,7 +2234,11 @@
/deep/.u-icon__icon--warning {
color: #fff !important;
}
/deep/.uni-tag{border-width: 2rpx !important;}
/deep/.uni-tag {
border-width: 2rpx !important;
}
/deep/.uni-section {
background: transparent !important;
}
@@ -2382,7 +2428,6 @@
}
}
.commonDetailPage {}
.course_info_box {

View File

@@ -877,7 +877,8 @@ export default {
productImages: this.selectGoodsData.productImages,
productId: this.selectGoodsData.productId,
productName: this.selectGoodsData.productName,
price: this.selectGoodsData.activityPrice?this.selectGoodsData.activityPrice:this.selectGoodsData.price,
activityPrice:this.selectGoodsData.activityPrice,
price: this.selectGoodsData.price,
goodsType: this.selectGoodsData.goodsType,
},
],

View File

@@ -53,15 +53,25 @@
<view class="normal_box">
<view class="normal_box_top" style="justify-content: space-between">
<view class="curriulum_title">{{ v.productName }} </view>
<view class="price_box">
<!-- <view class="price_box">
<text class="price" style="margin-right: 0">
{{ v.price }}
{{ v.activityPrice && v.activityPrice > 0 ? v.activityPrice : v.price}}
</text>
</view> -->
</view>
</view>
<!-- <view class=""></view> -->
<view style="width: 100% !important; text-align: right;" class=" ">
<!-- <view class="flexbox" style="justify-content: space-between; align-items: center;"> -->
<!-- -->
<text style="color: #999; text-decoration: line-through; margin-right: 20rpx;"
v-if="v.activityPrice > 0 && v.activityPrice < v.price" >原价:{{v.price}}</text>
<text class="" style="margin-right: 26rpx">
{{ v.activityPrice && v.activityPrice > 0 ? v.activityPrice : v.price}}
</text>
<text>x 1</text>
<!-- </view> -->
<view style="width: 100%; text-align: right">
x 1
<!-- <u-number-box v-model="number" style="float: right">
<view slot="minus" class="minus">
<u-icon name="minus" size="12"></u-icon>
@@ -81,7 +91,7 @@
</view>
<view class="pay_box" style="margin-top: 20rpx">
<view @click="openOrderModal(v)" class="curriulum_title_box goods_item pay_item"
v-for="(v, i) in orderInfoList">
v-for="(v, i) in orderInfoList" :key="i">
<view class="top">
<view class="left">
<text> {{ v.text }}</text>
@@ -114,7 +124,7 @@
<view class="order_top common_radius_box color_shandow goods_box pay_box">
<view class="title">价格明细</view>
<view class="curriulum_title_box goods_item pay_item" v-for="(v, i) in priceBreakdownList">
<view class="curriulum_title_box goods_item pay_item" v-for="(v, i) in priceBreakdownList" :key="i">
<view class="top">
<view class="left">
<image v-if="v.imgUrl" class="pay_item_img" :src="v.imgUrl" mode="aspectFil"
@@ -162,6 +172,7 @@
</view>
<view class="order_top common_radius_box color_shandow goods_box pay_box">
<view class="title">支付方式</view>
<!-- 商品是安卓环境支付或者商品列表中没有课程 -->
<template v-if="isAndorid || !isAndorid && !haveCourse">
<view class="curriulum_title_box goods_item pay_item" v-for="(v, i) in payList">
<view :class="isDefaultCurrency && i != 2 ? 'bgGrey top' : 'top'">
@@ -191,7 +202,7 @@
</template>
<!-- ios 支付列表 -->
<template v-else>
<view class="curriulum_title_box goods_item pay_item" v-for="(v, i) in payListIOS">
<view class="curriulum_title_box goods_item pay_item" v-for="(v, i) in payListIOS" :key="i">
<view :class="isDefaultCurrency && i != 2 ? 'bgGrey top' : 'top'">
<view class="left">
<image class="pay_item_img" :src="v.imgUrl" mode="aspectFil" :style="v.style">
@@ -411,6 +422,7 @@
},
data() {
return {
historyOrderInfo:undefined, //上一个订单的参数
isDefaultCurrency: false,
isShowAddress: false,
jfNumber: 0,
@@ -483,6 +495,7 @@
"margin-left": "30rpx",
},
modalInfo: {},
canjump:true, // 是否可以跳转到其他页面
currentCateIndex: 0,
show: false,
playData: {},
@@ -866,7 +879,7 @@
var s = 0;
var that = this;
for (var i = this.goodsDataList.length - 1; i >= 0; i--) {
s += this.goodsDataList[i].price ? this.goodsDataList[i].price : 0;
s += this.goodsDataList[i].activityPrice && this.goodsDataList[i].activityPrice > 0 ? this.goodsDataList[i].activityPrice : this.goodsDataList[i].price;
}
that.totalPrice = s;
//
@@ -928,6 +941,7 @@
}
},
async goBuyJie() {
console.log('this.buyingFlag',this.buyingFlag);
if (this.buyingFlag) {
uni.showToast({
title: '操作太频繁了,休息下吧',
@@ -947,6 +961,7 @@
setTimeout(() => {
this.nowClick = true;
}, 5000);
// let youPre = {
// id: "",
// coupons: {
@@ -970,6 +985,7 @@
return false;
}
}
let data = {
buyType: this.options.typeId, //0- 商品页直接下单 1- 购物车结算
userId: this.userInfo.id, //下单人ID
@@ -997,9 +1013,48 @@
appName: "wumen",
come: "2",
};
var productList = [...data.productList]
var thisproduct = productList.map(item => {
return item.productId+"_"+item.quantity
})
thisproduct = thisproduct.join(',')
console.log("data at line 477:", data);
// console.log('成功信息',product,thisproduct,data.addressId, data.realMoney);
if(this.historyOrderInfo &&
thisproduct == this.historyOrderInfo.product &&
data.addressId == this.historyOrderInfo.addressId &&
this.historyOrderInfo.realMoney == data.realMoney){
that.canjump = false
uni.showModal({
title:'提示',
content:'您短时间内有一笔相同金额的订单,是否确定继续下单?',
cancelText:'点错了',
confirmText:'继续操作',
success: function(res) {
that.canjump = true
if (res.confirm) {
that.buyingFlag = false
console.log('用户点击确定',that.buyingFlag);
that.submitorder(data)
}
else{
that.buyingFlag = false
}
}
})
}else{
that.submitorder(data)
}
},
async submitorder(data){
uni.showLoading({
title:'正在请求订单'
})
// this.buyingFlag = false
console.log('进来请求了吗?');
let that = this
await $http
.request({
// url: "book/buyOrder/buySave",
@@ -1012,7 +1067,18 @@
},
})
.then(async (res) => {
console.log("res at line 598:", res);
that.buyingFlag = false
var product = data.productList.map(item => {
return item.productId+"_"+item.quantity
})
product = product.join(',')
that.historyOrderInfo = {
'product':product,
'addressId':data.addressId,
'realMoney':data.realMoney
}
console.log("res at line 598系统下单返回结果:", res);
if (res.code == 0) {
if (res.orderSn == null) {
uni.showToast({
@@ -1022,12 +1088,12 @@
});
} else {
console.log("that.payType at line 607:", that.payType);
uni.showToast({
title: "下单成功,即将进行支付",
icon:'none'
})
if (that.payType == 2) {
// 常规支付
uni.showToast({
title: "正在支付",
icon: "loading",
});
await setPay({
typePay: "alipay",
subject: "order",
@@ -1042,11 +1108,12 @@
});
console.log(res, "支付支付");
if (res.success) {
this.buyingFlag = false
uni.hideLoading()
uni.showToast({
title: "支付成功",
});
setTimeout(() => {
if(that.canjump){
if (that.goToInfo.type == 1 ) {
uni.switchTab({
url: `${that.goToInfo.url}?type=order`,
@@ -1059,16 +1126,17 @@
url: `${that.goToInfo.url}?backType=order`,
});
}
}
}, 1000);
} else {
uni.hideLoading()
console.log("失败失败失败");
this.buyingFlag = false
// this.buyingFlag = false
// that.$commonJS.showToast('支付是失败')
setTimeout(() => {
console.log("延迟调用 失败提示");
uni.showToast({
title: "支付失败",
image: "../../../static/icon/ic_close.png",
});
}, 0);
@@ -1082,7 +1150,7 @@
}
}
);
} else if (this.payType == 1) {
} else if (that.payType == 1) {
// 微信支付
let data1 = {
orderSn: res.orderSn,
@@ -1091,27 +1159,27 @@
};
setWXPay(data1, (res) => {
if (res.success) {
this.buyingFlag = false
// this.buyingFlag = false
uni.hideLoading()
uni.showToast({
title: "支付成功",
});
setTimeout(() => {
if(that.canjump){
if (that.goToInfo.type == 1) {
uni.switchTab({
url: `${that.goToInfo.url}?type=order`,
});
} else {
// uni.navigateBack({
// delta: 2,
// });
// uni.n
uni.redirectTo({
url: `${that.goToInfo.url}?backType=order`,
});
}
}
}, 1000);
} else {
this.buyingFlag = false
// this.buyingFlag = false
uni.hideLoading()
console.log(res, "微信支付111111111111111");
if (res.data.errMsg.indexOf("User canceled") != -1) {
uni.showToast({
@@ -1128,14 +1196,16 @@
}
}
});
} else if (this.payType == 4) {
this.buyingFlag = false
} else if (that.payType == 4) {
that.buyingFlag = false
// 天医币支付
uni.hideLoading()
uni.showToast({
title: "购买成功",
icon: "success",
});
setTimeout(() => {
if(that.canjump){
if (that.goToInfo.type == 1) {
uni.switchTab({
url: `${that.goToInfo.url}?type=order`,
@@ -1145,13 +1215,16 @@
url: `${that.goToInfo.url}?backType=order`,
});
}
}
}, 1000);
}
}
}
}).catch(e => {
that.buyingFlag = false
uni.hideLoading()
});
},
radioChange(index) {
if (index == this.selectPayIndex) {
return
@@ -1864,6 +1937,7 @@
background-color: #fff;
.curriulum_title {
// width: calc(100% - 80rpx);
width: calc(100% - 80rpx);
font-weight: 500;
font-size: 30rpx;

View File

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

View File

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