currentVideo

This commit is contained in:
2024-06-25 17:07:59 +08:00
parent f8081fbec2
commit 6d0addb743
72 changed files with 11772 additions and 7898 deletions

View File

@@ -1,10 +1,10 @@
<template>
<view class="commonPageBox" style="background-color: #eaf7f2 !important">
<view class="commonPageBox" style="">
<public-module></public-module>
<view class="header_box">
<view class="header_bg" :style="`margin-top:${statusBarHeight * 2}rpx`">
<text class="PM_font">太湖公益</text>
<text class="PM_font" style="color: #7f2000;">太湖公益</text>
</view>
</view>
<!-- <view class="header_box">
@@ -101,7 +101,6 @@
style="height: 100%"
noDataIcon="data"
:isCondition="true"
@lower="onReachBottom2"
:pagination="pagination"
:dataList="noticeList"
@@ -249,6 +248,7 @@ export default {
total: 0, //总条数
};
this.goodsList = [];
await this.getGoodsList();
// await this.getSociologyLabels();
});
@@ -333,6 +333,7 @@ export default {
},
async getGoodsList() {
var that = this;
this.$http
.request({
url: this.urlList.getGoodsList,
@@ -347,7 +348,9 @@ export default {
.then(async (res) => {
console.log(res, "999");
var that = this;
if(this.pagination1.page==1){
this.goodsList = [];
}
// console.log("result at line 332:", result);
// that.noticeList = res.page ? result : [];
@@ -520,13 +523,12 @@ function calcTimer(timer) {
.header_box {
width: 100%;
height: 260rpx;
background-repeat: no-repeat;
display: flex;
justify-content: center;
overflow: hidden;
background-size: 100% 100%;
background-image: url("@/static/icon/taihubg.png");
color: #fff;
font-size: 80rpx;
line-height: 260rpx;
@@ -555,6 +557,7 @@ function calcTimer(timer) {
.main_content_box {
width: 100%;
margin-top: 0rpx;
background-color: rgba(255, 255, 255, 0.65);
padding: 27rpx;
// padding-top: 0rpx;
box-sizing: border-box;
@@ -603,8 +606,8 @@ function calcTimer(timer) {
.flash_sale_top {
width: 100%;
height: 61rpx;
background: #B7E0E2;
box-shadow: 0rpx 0rpx 6rpx 0rpx #E9DCCC;
background: #b7e0e2;
box-shadow: 0rpx 0rpx 6rpx 0rpx #e9dccc;
border-radius: 7rpx;
padding: 3rpx 18rpx 3rpx 10rpx;
box-sizing: border-box;
@@ -712,6 +715,17 @@ function calcTimer(timer) {
}
.commonPageBox {
// background-image: linear-gradient(
// to bottom,
// #fff7ea 25%,
// #fffdf5 50%,
// #fffdfc 75%
// );
background-size: 100% 100%;
background-repeat: no-repeat;
background-image: url("@/static/icon/taihubg.png");
// background-size: 100% 100%; background-repeat: no-repeat;background-image: url('@/static/icon/taihubg.png');
// padding-bottom: 50rpx;
// box-sizing: border-box;
}

View File

@@ -682,6 +682,9 @@ export default {
pjType: "",
};
},
onUnload(){
uni.getStorageSync("orderStatus",0)
},
onPullDownRefresh() {
console.log("下拉刷新了");
uni.stopPullDownRefresh();
@@ -717,6 +720,9 @@ export default {
// });
},
async onShow() {
console.log('onshow at line 723:', '先走onshow')
var status=uni.getStorageSync("orderStatus");
this.newList = [];
this.pagination = {
page: 1, //页码
@@ -724,19 +730,22 @@ export default {
total: 0, //总条数
};
this.$nextTick(async () => {
await this.ordersTabCLi(this.ordersTabs[0], 0);
await this.ordersTabCLi(this.ordersTabs[status], status);
});
},
async onTabItemTap() {
console.log('onshow at line 724:', 'onTabItemTap')
uni.setStorageSync("orderStatus", 0);
var status=uni.getStorageSync("orderStatus");
this.newList = [];
this.pagination = {
page: 1, //页码
limit: 20, //每页显示
total: 0, //总条数
};
// this.$nextTick(async () => {
// await this.ordersTabCLi(this.ordersTabs[0], 0);
// });
this.$nextTick(async () => {
await this.ordersTabCLi(this.ordersTabs[status], status);
});
},
onReady() {},
computed: {

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
<view class="componentPage">
<!-- 公共组件-每个页面必须引入 -->
<view class="fixed">
<!-- <view class="fixed">
<view v-if="isOpenRightButton">
<view class="openBox">
<block v-for="(v, index) in cateIconList" :key="index">
@@ -36,7 +36,7 @@
style="width: 50rpx; height: 50rpx"
></image>
</view>
</view>
</view> -->
<scroll-view
scroll-y
:style="`height:calc(100vh - ${(110 + statusBarHeight) * 2}rpx)`"

View File

@@ -2,7 +2,7 @@
<view class="componentPage">
<!-- 公共组件-每个页面必须引入 -->
<view class="fixed">
<!-- <view class="fixed">
<view v-if="isOpenRightButton">
<view class="openBox">
<block v-for="(v, index) in cateIconList" :key="index">
@@ -30,48 +30,33 @@
<image src="@/static/icon/open.png" mode="widthFix" style=" width: 50rpx;
height: 50rpx;"></image>
</view>
</view>
<scroll-view
scroll-y
class="scroll"
:style="`height:calc(100vh - ${(100 + statusBarHeight) * 2}rpx)`"
:scroll-into-view="viewid"
scroll-with-animation
@scroll="scrollEvt"
>
<view
v-for="(v, index) in cateIconList"
:key="index"
class="right-item"
style="margin-bottom: 40rpx"
>
<view :id="`cont${index}`" :class="`bg${index} `">
<view class="cate_item_box">
<!-- <view class="cate_item_border">
<image
:src="
cateIconList.find((e) => v.title == e.title)
.imgUrl
"
mode="aspectFill"
:style="
cateIconList.find((e) => v.title == e.title)
.style
"
></image>
</view> -->
<view
:class="`cate_item_name ${viewid == 'cont' + index ? 'hot' : ''}`"
>{{ v.sociology.title }}</view
>
</view>
</view> -->
<u-index-list
:index-list="indexList"
activeColor="#60CABF"
:uIndexStyle="{
height: 'auto',
padding: '20rpx',
}"
>
<view v-for="(item, index) in itemArr">
<!-- #ifdef APP-NVUE -->
<u-index-anchor
:text="indexList[index]"
bgColor="#AFDECC"
></u-index-anchor>
<!-- #endif -->
<u-index-item>
<!-- #ifndef APP-NVUE -->
<u-index-anchor :text="indexList[index]"></u-index-anchor>
<!-- #endif -->
<common-list
noDataIcon="data"
:isCondition="true"
:isNoIcon="true"
@lower="onReachBottom1"
:dataList="v.courseList"
:dataList="item"
label="title"
>
<template slot="labelSlot" slot-scope="slotProps">
@@ -120,20 +105,12 @@
<!-- <text v-if="slotProps.row.conditions!='03'">试听</text> -->
</template>
</common-list>
</view>
</u-index-item>
</view>
</scroll-view>
</u-index-list>
<!-- <richDetail :detailInfo="detailInfo">
<template #richHeadImg>
<image :src="detailInfo.imgUrl" v-if="detailInfo.imgUrl" mode="widthFix" class="headImage"></image>
</template>
</richDetail>
-->
<!-- <view>{{ detailInfo.content }}</view> -->
</view>
</template>
@@ -150,6 +127,8 @@ export default {
},
data() {
return {
indexList: [],
itemArr: [],
timer: null,
isLeftClick: false,
isOpenRightButton: true,
@@ -398,6 +377,8 @@ export default {
});
},
async getData() {
this.indexList = [];
this.itemArr = [];
console.log(this.$store.state, "88888");
this.$http
.request({
@@ -413,9 +394,16 @@ export default {
console.log("res at line 178:", res);
this.cateIconList = res.list;
await setTimeout(() => {
this.getDistanceToTop();
}, 100);
this.indexList = this.cateIconList.map((e) => {
return e.sociology.title;
});
console.log("this.indexList at line 645:", this.indexList);
this.itemArr = this.cateIconList.map((e) => {
return e.courseList;
});
// await setTimeout(() => {
// this.getDistanceToTop();
// }, 100);
// socket.init();
});
@@ -526,7 +514,7 @@ export default {
</script>
<style lang="scss" scoped>
@import '@/style/mixin.scss';
@import "@/style/mixin.scss";
.commonPageBox {
padding: 40rpx 0;
}
@@ -568,7 +556,7 @@ export default {
border: none !important;
}
.openBox {
background-color: #B7E0E2;
background-color: #b7e0e2;
border: 2rpx solid #eee;
width: 80rpx;
line-height: 80rpx;

View File

@@ -368,6 +368,7 @@ export default {
});
},
changeVideo(data) {
console.log('data at line 370:', data)
this.currentVideo = data;
this.initVideo();
this.isOpenMp3 = false;

File diff suppressed because it is too large Load Diff

View File

@@ -7,53 +7,40 @@
<public-module></public-module>
<z-nav-bar
:title="options.navTitle"
bgColor="#3AB3AE"
bgColor="#5F8F7F"
fontColor="#fff"
></z-nav-bar>
<view class="contentBox commonPageContentBox">
<u-alert
style="position: fixed; width: 100%; z-index: 10"
v-if="goBuyTitle"
style="
background: linear-gradient(90deg, #5f8f7f 0%, #f3faf3 100%);
position: fixed;
left: 0;
width: 100%;
z-index: 10;
"
type="warning"
@click="handleClickGetGoodsList"
@click="handleClickGetVip"
:title="goBuyTitle"
:show-icon="true"
v-if="
cateList.length > 0 &&
cateList[currentCateIndex].isBuy == 0 &&
vip.type == '0'
"
>
<template slot="rightSlot" slot-scope="slotProps">
<!-- {{ slotProps.row.bxType }} -->
<text
:class="`fdButtonBox ${
cateList[currentCateIndex].type == 0
? ''
: 'aui-text-danger fdButtonBoxRed'
} `"
>
{{
cateList[currentCateIndex].type == 0 ? "开始学习" : "立即购买"
}}</text
>
<text class="saveBtn vipBtn flexbox buyBtn" v-if="goBuyType == 0">
立即购买
</text>
<text class="flexbox" style="color: #5f8f7f" v-if="goBuyType == 1">
立即续费
</text>
<text class="saveBtn vipBtn flexbox" v-if="goBuyType == 2">
立即升级
</text>
<view> </view>
</template>
</u-alert>
<u-alert
style="position: fixed; width: 100%; z-index: 10"
type="warning"
@click="handleClickGetGoodsList"
:title="`尊贵的${vip.type==1?'超级':vip.type==2?'吴门医述':'众妙之门'}VIP会员,您的有效期到 ${
vip.endTime && vip.endTime.split(' ')[0]
}`"
:show-icon="true"
v-if="cateList.length > 0 && vip.type != 0"
>
</u-alert>
<view
v-if="curriculumData.image"
:style="`height: auto !important;${
@@ -87,122 +74,142 @@
>
</view>
<view class="curriulum_box" v-if="curriculumData.content">
<view class="curriulum_title_box">
<view class="curriulum_title">
<view style="font-weight: 600; color: #018f89; margin-bottom: 20rpx"
>介绍</view
>
<view class="containerBg1">
<view class="course_info_box">
<view class="course_info">
<view class="flexbox course_title" v-if="curriculumData.id">
<text class="courseTitle title">{{ curriculumData.title }}</text>
<common-rich-detail
v-if="curriculumData.content"
:detailInfo="{
content: curriculumData.content ? curriculumData.content : '',
}"
style="padding: 10rpx"
<!-- <view class="start_learn_btn PM_font">进入学习</view> -->
</view>
<view
class="containerBg"
v-if="curriculumData.content && curriculumData.content != ''"
>
<template #richHeadImg>
<!-- <image :src="curriculumData.imgUrl" mode="widthFix" class="headImage"></image> -->
<!-- <image :src="detailInfo.imgUrl" v-if="detailInfo.imgUrl" mode="widthFix" class="headImage"></image> -->
</template>
</common-rich-detail>
<view class="prof">
<view
style=" padding: 0 20rpx;"
@click="isHideCourseInfo = !isHideCourseInfo"
>
<view
:class="`${isHideCourseInfo ? 'hidden2' : ''}`"
style="width: calc(100% - 50rpx)"
v-html="curriculumData.content"
>
</view>
</view>
</view>
</view>
</view>
<!-- <view class="buy">购买</view> -->
</view>
</view>
<template v-if="cateList.length > 1">
<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"
>
<template slot="labelSlot" slot-scope="slotProps">
<!-- {{ slotProps.data }} -->
<!-- @click.native.stop="handleClickEdit(slotProps.row)" -->
<uni-icons
class="editIcon"
type="locked-filled"
color="#b0b0b0"
size="24"
v-if="slotProps.data.isBuy == 0 && vip.type == '0'"
style="display: inline-block; margin-left: 10rpx"
></uni-icons>
</template>
</common-sticky>
</template>
<view class="containerBg2">
<view class="shiting_content">
<view v-for="(v, i) in cateList" style="margin-bottom: 40rpx">
<view class="catalogueTitle chapter_title">
<view class="top">
<view class="line"></view>
<view class="left">
<text style="font-weight: blod" class="catalogue_title">{{
v.title
}}</text>
<!-- 普通用户或者国学Vip -->
</view>
<view
class="not_purchased"
v-if="
(v.isBuy != 1 && (vip.type == 0 || vip.type == 3)) ||
(v.isBuy == 1 &&
(vip.type == 0 || vip.type == 3) &&
v.endTime)
"
>
<view class="spot"></view>
<!-- -->
<text v-if="v.isBuy != 1 && (vip.type == 0 || vip.type == 3)"
>未购买
</text>
<!-- -->
<text
v-if="
v.isBuy == 1 &&
(vip.type == 0 || vip.type == 3) &&
v.endTime
"
>有效期至{{ v.endTime }}
</text>
</view>
<!-- <view :class="`priceDetail`" v-if="this.statusList[this.currentStatusIndex].type == 'price'">
<view class="right">
<!-- 购买 -->
<scroll-view scroll-y="true" class="scroll-Y">
<price ref="priceDetail" type="price" :oid="this.statusList[this.currentStatusIndex].oid"></price>
<u-icon
v-if="goBuyType != 1&&v.type!=0"
@click="handleClickGetGoodsList(v)"
class="editIcon"
name="shopping-cart-fill"
color="#FF2B57"
size="30"
style="display: inline-block; margin-left: 10rpx"
></u-icon
>
<text v-if="goBuyType != 1&&v.type==0&&!v.endTime" style="color: #fff; font-size: 12px;" class="fdButtonBox aui-text-success" @click="handleClickGetGoodsList(v)">开始学习</text>
</view>
</view>
</scroll-view>
</view>
<view :class="`priceDetail`" v-else-if="this.statusList[this.currentStatusIndex].type == 'purchaseNotice'">
<scroll-view scroll-y="true" class="scroll-Y">
<price ref="purchaseNotice" :oid="this.statusList[this.currentStatusIndex].oid"></price>
</scroll-view>
</view>
-->
<view :class="`dataList `" style="background-color: #fff">
<courseDescription
:isCondition="true"
:dataList="dataList"
@hancleClick="gotoDetail"
label="title"
>
<template slot="labelSlot" slot-scope="slotProps">
<view
:style="`${
slotProps.rowIndex < 3
? 'width:calc(100% - 100rpx);float:left;'
: 'width:100%;'
}`"
>
<text
:class="`${
slotProps.row.viewFlg == 1 ? 'aui-text-success' : ''
}`"
>{{ slotProps.row.title }}</text
<!-- -->
</view>
<view class="chapter_content" v-if="courseList[i].length>0">
<courseDescription
:isCondition="true"
:dataList="courseList[i]"
@hancleClick="gotoDetail"
label="title"
>
</view>
<template slot="labelSlot" slot-scope="slotProps">
<view
:style="`${
slotProps.rowIndex < 3
? 'width:calc(100% - 100rpx);float:left;'
: 'width:100%;'
}`"
>
<text
:class="`${
slotProps.row.viewFlg == 1 ? 'aui-text-success' : ''
}`"
>{{ slotProps.row.title }}</text
>
</view>
<!-- <text v-if="slotProps.row.conditions!='03'">【试听】</text> -->
</template>
<!-- <text v-if="slotProps.row.conditions!='03'">【试听】</text> -->
</template>
<template slot="leftSlot" slot-scope="slotProps">
<!-- {{ slotProps.row.bxType }} -->
<!-- <text v-if="slotProps.row.conditions!='03'">【试听】</text> -->
</template>
<template slot="rightSlot" slot-scope="slotProps">
<!-- {{ slotProps.row.bxType }} -->
<template slot="leftSlot" slot-scope="slotProps">
<!-- {{ slotProps.row.bxType }} -->
<!-- <text v-if="slotProps.row.conditions!='03'">【试听】</text> -->
</template>
<template slot="rightSlot" slot-scope="slotProps">
<!-- {{ slotProps.row.bxType }} -->
<text
class="fdButtonBox aui-text-success"
v-if="slotProps.row.isAudition == 1 && vip.type == '0'"
>试听</text
>
<text
class="fdButtonBox aui-text-success" style="background: none;"
v-if="slotProps.row.isAudition == 1 && vip.type == '0'"
>试听</text
>
<view> </view>
</template>
</courseDescription>
<view> </view>
</template>
</courseDescription>
</view>
</view
></view>
</view>
<view class="small_class_teaching_box">
@@ -388,6 +395,8 @@ export default {
},
data() {
return {
isHideCourseInfo: true,
courseList: [],
showGoBuy: true,
protocolShow: false,
options: {},
@@ -439,6 +448,7 @@ export default {
taiHuClassInfo: {},
searchValue: "",
goBuyTitle: "",
goBuyType: "",
description: "",
teachingList: [
{
@@ -521,13 +531,18 @@ export default {
// this.$refs.uNotify.close()
},
methods: {
handleClickGetVip() {
uni.navigateTo({
url: "/pages/mine/vip/index",
});
},
getUserInfo() {
this.$http.post("common/user/getUserInfo").then((res) => {
console.log("res at line 505:", res);
if (res.result.userVip) {
this.vip = res.result.userVip ;
}else{
this.vip ={ type: 0 }
this.vip = res.result.userVip;
} else {
this.vip = { type: 0 };
}
});
},
@@ -573,10 +588,11 @@ export default {
this.selectGoodsData = {};
},
//获取相关关联课程商品
handleClickGetGoodsList(data) {
//获取相关关联课程商品
handleClickGetGoodsList(v) {
// console.log("data at line 313:", data);
if (this.cateList[this.currentCateIndex].type == 0) {
if (v.type == 0) {
//免费
this.$http
@@ -584,7 +600,7 @@ export default {
url: this.urlList.startStudyForMF,
method: "POST",
data: {
catalogueId: this.cateList[this.currentCateIndex].id,
catalogueId: v.id,
},
header: {
//默认 无 说明:请求头
@@ -614,7 +630,7 @@ export default {
url: this.urlList.goodsList,
method: "POST",
data: {
id: this.cateList[this.currentCateIndex].id,
id: v.id,
},
header: {
//默认 无 说明:请求头
@@ -733,6 +749,42 @@ export default {
url: `/pages/curriculum/order/curriculum/index?navTitle=${v.title}&title=${v.title}&oid=${v.oid}`,
});
},
async getChapterList(v) {
var list = [];
var that = this;
await $http
.request({
url: this.urlList.curriculumInfo,
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
id: v.id,
},
header: {
//默认 无 说明:请求头
"Content-Type": "application/json",
},
})
.then(async (res) => {
if (res.code == 0 && res.chapterList.length > 0) {
// res.chapterList.map((item) => {
// item.tryListen = [];
// });
list = JSON.parse(JSON.stringify(res.chapterList));
console.log("at line 1343:", list);
// console.log('status', res)
} else {
list = [];
}
console.log("at line 1333:", list);
this.$forceUpdate();
});
console.log("list at line 1375:", list);
return list;
},
getCourseDescriptionData() {
var data = {};
var that = this;
@@ -752,8 +804,26 @@ export default {
})
.then(async (res) => {
that.curriculumData = res.data.course;
that.cateList = res.data.catalogues;
that.cateList = [...res.data.catalogues];
// this..getPercentage();
for (let i = 0; i < that.cateList.length; i++) {
var list = await that.getChapterList(that.cateList[i]);
console.log("list at line 1224:", list);
// list.map(async (item, index) => {
// console.log("item at line 1239:", item);
// item.videoList = [];
// var data = await that.getPath(item);
// item.videoList = [...data];
// });
console.log("list at line 1222:", list);
that.courseList[i] = [...list];
console.log("that.courseList at line 1238:", that.courseList);
}
that.relatedCoursesList = res.data.correlatedList
? res.data.correlatedList
: [];
@@ -806,18 +876,33 @@ export default {
// this.description=`您还未购买当前【${item.title}】课程,`
var title1 = "";
this.currentCateIndex = index;
if (item.type == 0) {
if (this.cateList.length > 1) {
this.goBuyTitle = `【${item.title}】课程为免费课程`;
} else if (this.cateList.length == 1) {
this.goBuyTitle = `为免费课程`;
}
} else {
if (this.cateList.length > 1) {
this.goBuyTitle = `您还未购买当前【${item.title}】课程`;
} else if (this.cateList.length == 1) {
this.goBuyTitle = `您还未购买当前课程`;
}
switch (this.vip.type) {
case 0:
this.goBuyTitle = "购买VIP,即可免费观看吴门医述所有课程";
this.goBuyType = 0;
break;
case 1 || 2:
var vipName = "";
if (this.vip.type == 1) {
vipName = "超级VIP";
}
if (this.vip.type == 2) {
vipName = "吴门医述VIP";
}
//超级VIP
this.goBuyTitle = `尊贵的${vipName},您的有效期到 ${
this.vip.endTime && this.vip.endTime.split(" ")[0]
}`;
this.goBuyType = 1;
break;
case 3:
//众妙之门
this.goBuyTitle =
"尊贵的众妙之门VIP,升级至超级VIP,即可免费观看吴门医述所有课程";
this.goBuyType = 2;
break;
}
// this.currentCateIndex = index;
@@ -1045,6 +1130,7 @@ export default {
.flexbox {
display: flex;
background-color: transparent !important;
}
.uni-modal .uni-modal__bd {
@@ -1088,7 +1174,7 @@ export default {
.fdButtonBox {
border: 1rpx solid $themeColor;
background-color: $themeColor;
color: #fff;
color: $themeColor;
// width: 100%;
float: right;
padding: 4rpx 14rpx;
@@ -1152,8 +1238,8 @@ export default {
.small_class_teaching_box {
width: 100%;
margin-top: 20rpx;
background: #b7e0e2;
// margin-top: 20rpx;
background: #f0fbf3;
.small_class_teaching_top {
padding: 20rpx 20rpx 0 10rpx;
@@ -1180,7 +1266,7 @@ export default {
}
.small_class_teaching_content {
margin-top: 20rpx;
margin-top: 0rpx;
// background: #EDFCF7;
padding-bottom: 10rpx;
@@ -1411,4 +1497,287 @@ export default {
}
}
}
.saveBtnss {
align-items: center;
justify-content: center;
height: 80rpx;
// width: 46%;
overflow: hidden;
border-radius: 50rpx;
text {
padding-left: 10rpx;
font-size: 28rpx;
}
}
.vipBtn {
@include theme("vipbtnbg");
border-radius: 100rpx;
justify-content: center;
width: auto;
padding: 0 20rpx;
color: #fff;
margin: 10rpx auto;
}
.buyBtn {
background: #f42c32 !important;
// background:
}
/deep/.u-alert--warning--light {
background-color: none !important;
}
/deep/.u-alert__text--warning--light {
color: #fff !important;
}
/deep/.u-alert {
background: none !important;
}
/deep/.u-icon__icon--warning {
color: #fff !important;
}
/deep/.uni-section {
background: transparent !important;
}
/deep/.uni-section .uni-section-header {
padding-top: 10rpx !important;
padding-bottom: 10rpx !important;
}
/deep/.uni-section .uni-section-header {
padding-left: 0rpx !important;
// padding-bottom: 10rpx !important;
}
.course_info_box {
// margin-bottom:10rpx;
// padding:20rpx;
.course_info {
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
background: rgb(243, 250, 243);
// border-radius:20rpx;
overflow: hidden;
}
}
.catalogue_title {
background: linear-gradient(130deg, #16171b 0%, #44b2b1 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
font-size: 42rpx;
font-weight: bold;
letter-spacing: 4rpx;
// border:4rpx solid #1FB2F8;
// box-shadow: 0 2px 12px 0 rgba(255,255,255,.1);
// border-radius:40rpx;
// color:#fff;
// width:200rpx;
// height:70rpx;
// display:inline-block;
// padding:10rpx 20rpx;
}
.chapter_content {
// padding: 20rpx;
// padding-top:60rpx;
margin-top: 40rpx;
border: 4rpx solid #fffffc;
// background-image: linear-gradient(52deg, #E8F6FF 0%, #E3F2FE 50%);
// background-image: linear-gradient(-180deg, #8BBDFE 0%, #B4DCFF 100%);
background: rgba(255, 255, 255, 0.85);
// background:rgba(255, 255, 255, 0.85);
box-shadow: 0px 0px 4px 0px rgba(46, 114, 123, 0.6) !important;
border-top-right-radius: 40rpx;
border-bottom-left-radius: 40rpx;
.videoList {
// padding:0 20rpx;
display: flex;
align-items: center;
// justify-content: space-between;
.video_item {
width: 24%;
font-size: 22rpx;
margin: 10rpx 0;
background: rgba(255, 255, 255, 0.85);
box-shadow: 0 2px 12px 0 rgba(255, 255, 255, 0.1);
border-radius: 10rpx;
padding: 10rpx 20rpx;
margin-right: 1%;
color: #333;
letter-spacing: 2rpx;
}
}
}
.line {
width: 16rpx;
height: 50rpx;
border-top-right-radius: 12rpx;
border-bottom-right-radius: 12rpx;
margin-right: 20rpx;
background-image: linear-gradient(108deg, #609080 0%, #7ba98c 100%);
}
.containerBg2 {
padding-top: 40rpx;
// margin-top: 100rpx;
background: linear-gradient(108deg, #e4f8eb 0%, #d1e8da 100%) !important;
.shiting {
line-height: 100rpx;
background: linear-gradient(130deg, #4fa1fd 0%, #12f3ff 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
margin-bottom: 20rpx;
// background-image: linear-gradient(108deg, #4FA1FD 100%, #4FA1FD 0%);
// border:4rpx solid #1FB2F8;
// box-shadow: 0 2px 12px 0 rgba(255,255,255,.1);
// border-radius:40rpx;
color: #fff;
// width:200rpx;
// height:70rpx;
// display:inline-block;
// padding:10rpx 20rpx;
font-size: 72rpx;
text-align: center;
}
.shiting_content {
padding: 20rpx;
}
}
.chapter_title {
width: 100%;
font-size: 28rpx;
display: flex;
align-items: center;
position: relative;
// justify-content: space-between;
.top {
width: 100%;
display: flex;
align-items: center;
.left {
display: flex;
align-items: center;
}
.right {
// float: right;
position: absolute;
right: 0;
}
}
.not_purchased {
position: relative;
.spot {
width: 8rpx;
height: 8rpx;
position: absolute;
right: -4rpx;
border-radius: 8rpx;
background-color: #33435d;
bottom: -4rpx;
}
color: #33435d;
margin-left: 20rpx;
font-size: 24rpx;
padding: 0 20rpx;
border-bottom: 2rpx dotted #33435d;
text {
margin: 0 10rpx;
letter-spacing: 1rpx;
}
}
}
.course_title {
align-items: center;
justify-content: space-between;
background: #fff;
}
.catalogueTitle {
justify-content: space-between;
overflow: hidden;
// background-image: linear-gradient(108deg, #cae9f9 0%, #e1f6fc8c 50%);
// background-image: linear-gradient(180deg, #cfe0ff 0%, #fff 50%);
// padding: 0 20rpx;
font-size: 40rpx;
.learnBtn {
margin-bottom: 20rpx;
width: 150rpx;
text-align: center;
border: 1px solid $themeColor;
color: $themeColor;
line-height: 60rpx;
height: 60rpx;
font-size: 28rpx;
margin-top: 40rpx;
}
.price {
color: #ff582e;
font-size: 32rpx;
i {
font-style: normal;
font-size: 60rpx;
font-weight: bold;
}
}
.title {
display: block;
font-size: 30rpx;
margin-top: 20rpx;
font-weight: bold;
margin-bottom: 20rpx;
}
.saveBtn {
align-items: center;
justify-content: center;
height: 80rpx;
background-color: #00d8df;
// width: 46%;
overflow: hidden;
border-radius: 30rpx;
text {
padding-left: 10rpx;
font-size: 28rpx;
color: #fff;
}
}
}
.prof {
font-size: 26rpx;
line-height: 50rpx;
padding: 10rpx 0;
color: #333;
// background-color: #f0f0f0;
// margin-bottom: 10rpx;
}
.containerBg1 {
border-top: 1px solid #fff;
margin-top: -4rpx;
// position: relative;
z-index: 1;
border-radius: 30rpx 30rpx 0 0;
// background-color: #fff;
// overflow: hidden;
}
.courseTitle {
width: calc(100% - 220rpx);
padding: 20rpx;
font-size: 38rpx;
font-weight: bold;
// background-image: url(@/static/bg1.jpg);
background-size: cover;
background-repeat: no-repeat;
}
</style>

View File

@@ -11,7 +11,7 @@
:backState="3000"
></z-nav-bar>
<template v-if="currentCateIndex == 1">
<!-- <template v-if="currentCateIndex == 1">
<view class="fixed">
<view v-if="isOpenRightButton">
<view class="openBox">
@@ -27,27 +27,11 @@
</block>
</view>
<!-- <view
@click="close"
class="closeBox"
style="background-color: #fff; margin-top: 20rpx; width: 100%"
>
<image
src="@/static/icon/close.png"
mode="widthFix"
style="width: 50rpx; height: 50rpx"
></image
></view> -->
</view>
<!-- <view class="closeBox" v-else @click="isOpenRightButton = true">
<image
src="@/static/icon/open.png"
mode="widthFix"
style="width: 50rpx; height: 50rpx"
></image>
</view> -->
</view>
</template>
</template> -->
<view class="contentBox commonPageContentBox">
<!-- <scroll-view class="scroll-view_H statusList" scroll-x="true" scroll-left="0"> -->
@@ -79,11 +63,34 @@
vip.type == 1 ? '超级' : vip.type == 2 ? '吴门医述' : '众妙之门'
}VIP会员,您的有效期到 ${vip.endTime && vip.endTime.split(' ')[0]}`"
:show-icon="true"
v-if="vip.type != 0"
v-if="vip.type != 0 && currentCateIndex != 2"
>
</u-alert>
<template v-if="currentCateIndex == 1">
<view
<u-index-list :index-list="indexList" activeColor="#60CABF" :uIndexStyle="{
height:'auto',
padding:'20rpx'
}">
<view v-for="(item, index) in itemArr">
<!-- #ifdef APP-NVUE -->
<u-index-anchor :text="indexList[index]" :bgColor="#AFDECC"></u-index-anchor>
<!-- #endif -->
<u-index-item>
<!-- #ifndef APP-NVUE -->
<u-index-anchor :text="indexList[index]"></u-index-anchor>
<!-- #endif -->
<curriculm-list
:currentCateIndex="currentCateIndex"
@refresh="getCourseDescriptionData()"
:dataList="item"
:userInfo="userInfo"
>
</curriculm-list>
</u-index-item>
</view>
</u-index-list>
<!-- <view
v-for="(v, index) in allDataList"
:key="index"
class="right-item"
@@ -100,18 +107,18 @@
>
</view>
<curriculm-list
:currentCateIndex="currentCateIndex"
:currentCateIndex="currentCateIndex"
@refresh="getCourseDescriptionData()"
:dataList="v.courseList"
:userInfo="userInfo"
>
</curriculm-list>
</view>
</view>
</view> -->
</template>
<template v-else>
<curriculm-list
:currentCateIndex="currentCateIndex"
:currentCateIndex="currentCateIndex"
@refresh="getCourseDescriptionData()"
:dataList="allDataList"
:userInfo="userInfo"
@@ -161,8 +168,6 @@
></u-modal>
<z-navigation></z-navigation>
</view>
</template>
@@ -181,14 +186,16 @@ export default {
},
data() {
return {
indexList: [],
itemArr: [],
distanceList: [],
timer: null,
isLeftClick: false,
isOpenRightButton: true,
viewid: "cont0",
viewidIndex: 0,
openCollapseList: [],
cateIconList: [
{
@@ -603,6 +610,9 @@ export default {
});
},
getCourseDescriptionData() {
this.allDataList=[]
this.indexList=[]
this.itemArr=[]
var data = {};
if (this.currentCateIndex == 0) {
// data.userId = this.userInfo.id;
@@ -624,6 +634,13 @@ export default {
.then(async (res) => {
console.log(res.courses, "88888");
that.allDataList = res.courseList;
this.indexList = this.allDataList.map((e) => {
return e.title;
});
console.log("this.indexList at line 645:", this.indexList);
this.itemArr = this.allDataList.map((e) => {
return e.courseList;
});
if (this.currentCateIndex == 1) {
that.openCollapseList = that.allDataList.map((e) => {
return e.id;

View File

@@ -34,7 +34,7 @@
</view>
</view> -->
<view
style="font-size: 24rpx"
style="font-size: 24rpx;line-height: 40rpx;"
class="learning_image_right"
v-if="currentCateIndex != 2"
>

View File

@@ -2,6 +2,27 @@
<view class="commonPageBox">
<public-module></public-module>
<view class="header_box"></view>
<view class="appJump">
<view class="everhealth item flexbox" @click="appjumpfun('everhealth')">
<view class="img">
<image
src="@/static/icon/ic_login_health.png"
mode="widthFix"
></image>
</view>
<view class="text">
<text>一路健康</text>
</view>
</view>
<view class="zmzm item flexbox" @click="appjumpfun('nuttyreading')">
<view class="img">
<image src="@/static/icon/home_icon_3.png" mode="widthFix"></image>
</view>
<view class="text">
<text>疯子读书</text>
</view>
</view>
</view>
<view class="main_content_box">
<view class="curriculum_box">
<view
@@ -161,14 +182,12 @@
</view>
<view class="learning_box_bottom"></view>
</view>
<view class="learning_box listening_box bottomBox">
<!-- <view class="learning_box listening_box bottomBox">
<view class="item_img" @click="handleGoApp">
<image src="@/static/tab/bottom1.png" mode="aspectFill"></image>
</view>
<view class="item_img">
<!-- <image src="@/static/tab/bg.png" mode="aspectFill"></image> -->
</view>
</view>
</view> -->
</view>
</view>
</template>
@@ -480,6 +499,72 @@ export default {
url: `/pages/curriculum/order/curriculum/index?navTitle=${v.title}&title=${v.title}&id=${v.id}`,
});
},
appjumpfun(name) {
let bagName = "";
let schemes = "";
if (name == "nuttyreading") {
bagName = "com.cn.nuttyreading";
schemes = "nuttyreading";
}
if (name == "everhealth") {
bagName = "cn.com.everhealth";
schemes = "everhealth";
}
// if(name == 'everhealth'){
if (plus.os.name == "Android") {
//安卓
if (
plus.runtime.isApplicationExist({
//查看安卓系统手机有没有下载这款app
pname: bagName, //B款app云打包的包名
})
) {
//安装了app
plus.runtime.launchApplication({
//打开app
pname: bagName, //B款app云打包的包名
extra: {
url: `${schemes}://${bagName}`, //B款app配置的schemes+云打包的包名
},
function(e) {
console.log("Open system default browser failed: " + e.message);
},
});
} else {
//未安装app
plus.runtime.openURL(
`https://a.app.qq.com/o/simple.jsp?pkgname=${bagName}`,
function (res) {
//进入后台小哥哥给我的应用宝下载链接,让你们后台给你
//这链接会判断你手机是ios还是AndroidAndroid进入应用宝下载app
//跟下面的是一个链接
console.log(res);
}
);
}
} else if (plus.os.name == "iOS") {
//苹果
//因为ios查不到B款app在ios系统手机里面其实下载了也是检测不到所以就不检测了
//直接打开B款appB款app没有的话会进入回调报错我们在回调去打开下载链接
plus.runtime.launchApplication(
{
action: "${schemes}://",
},
function (e) {
plus.runtime.openURL(
`https://a.app.qq.com/o/simple.jsp?pkgname=${bagName}`,
function (res) {
//进入后台小哥哥给我的appStore下载app链接让你们后台给你
//这链接会判断你手机是ios还是Androidios进入应用宝下载app
//跟上面的是一个链接
console.log(res);
}
);
}
);
// }
}
},
goGoodsDetail(v) {
console.log(v);
uni.navigateTo({
@@ -956,4 +1041,40 @@ function calcTimer(timer) {
// padding-left: 60rpx;
// background-image: url("@/static/icon/noticebg.png");
}
.appJump {
width: 190rpx;
position: fixed;
right: 0;
top: 8%;
z-index: 1;
.item {
background: rgba(255, 255, 255, 0.6);
margin-bottom: 40rpx;
border: 1px solid #fff;
border-right: none;
align-items: center;
padding-right: 10rpx;
display: flex;
align-items: center;
justify-content: space-around;
overflow: hidden;
border-radius: 50rpx 0 0 50rpx;
text {
font-size: 28rpx;
font-weight: 700;
}
.img {
// width: 60rpx; height: 60rpx;
padding: 6rpx;
overflow: hidden;
background-color: #fff; border-radius: 100%;
image {
width: 50rpx;
height: 50rpx;
}
}
}
}
</style>

View File

@@ -25,7 +25,8 @@
<view class="mine_box" :style="`top:${(45 + statusBarHeight) * 2}rpx`">
<view class="per_mes">
<image
<view style="display: flex;align-items: center;flex-direction: column;">
<image
@click="goUserInfo"
:src="userMes.avatar"
v-if="userMes.avatar != null"
@@ -36,6 +37,8 @@
<view v-if="userMes.vip == 3" class="user_vip">众妙之门VIP</view>
<view v-if="userMes.vip == 2" class="user_vip">吴门医述VIP</view>
</view>
</view>
<image
src="@/static/icon/home_icon_logo.png"
@@ -43,7 +46,7 @@
class="per_mes_img color_shandow"
></image>
<view class="userInfoBox" style="width: calc(100% - 220rpx)">
<view class="userInfoBox" style="width: calc(100% - 220rpx);">
<template>
<view class="name"
>昵称{{ userMes.nickname ? userMes.nickname : "未设置" }}</view
@@ -56,7 +59,7 @@
<template v-if="userMes.email">
<view class="phone email">邮箱({{ userMes.email }})</view>
</template>
<!-- <text class="tong">累计读书5本
<span style="margin: 0 20upx;">|</span> 今日读50分钟
</text> -->
@@ -81,8 +84,9 @@
</view> -->
<view
style="
padding: 20rpx;
height: 200rpx;
height: 220rpx;
display: flex;
align-items: center;
justify-content: space-between;
@@ -191,7 +195,7 @@
</image>
<text style="color: #c4d3d4">VIP</text>
</view>
<swiper
:autoplay="true"
:interval="3000"
@@ -219,24 +223,54 @@
</swiper-item>
</swiper>
</view>
<view v-else class="noVip hasVip">
<view class="zhanghu PM_font" style="text-align: center">
<view v-else class="noVip hasVip" style="position: relative;">
<view class="zhanghu " style="padding-top: 20rpx;text-align: center">
<image
class="vip_image"
src="@/static/icon/quanyi.png"
mode="aspectFit"
>
</image>
<text style="">VIP</text>
<text class="PM_font">VIP</text>
<view class="viptime" v-if="userMes.vip!=0"
>{{ userMes.userVip.endTime.split(" ")[0] }}&nbsp;到期</view
>
</view>
<view class="time"
>{{ userMes.userVip.endTime.split(" ")[0] }}到期</view
<view class="PM_font xufei"
>立即续费</view
>
</view>
</view>
</view>
<view class="list_box order_box">
<view class="xiugai boxShadow box_fillet">
<view class="title">我的订单</view>
<view class="cate_box">
<!-- <view>订单</view> -->
<view
class="cate_item_box"
v-for="(v, i) in orderList"
@click="goOrderList(`/pages/bookShop/orderList`, 'mine', i)"
>
<view class="cate_item_border">
<image
:src="v.imgUrl"
mode="aspectFill"
style="width: 59rpx; height: 59rpx"
></image
><u-badge
type="error"
max="99"
:value="v.badge.value"
style="position: absolute; top: -10rpx; right: -10rpx"
></u-badge>
</view>
<view class="cate_item_name">{{ v.title }}</view>
</view>
</view>
</view>
</view>
<view class="list_box">
<view class="xiugai boxShadow box_fillet">
<common-list
@@ -352,6 +386,39 @@ import { mapState, mapMutations } from "vuex";
export default {
data() {
return {
come: "1",
orderList: [
{
title: "全部",
value: -1,
badge: {},
imgUrl: require("@/static/icon/ordericon1.png"),
},
{
title: "待付款",
value: 0,
badge: {},
imgUrl: require("@/static/icon/ordericon2.png"),
},
{
title: "待发货",
value: 1,
badge: {},
imgUrl: require("@/static/icon/ordericon3.png"),
},
{
title: "待收货",
value: 2,
badge: {},
imgUrl: require("@/static/icon/ordericon4.png"),
},
{
title: "已完成",
value: 3,
badge: {},
imgUrl: require("@/static/icon/ordericon5.png"),
},
],
swiperList: [
{ name: "开通会员畅享更多活动" },
{ name: "众妙之门视频" },
@@ -372,13 +439,14 @@ export default {
playData: {},
isAndorid: true,
platform: null, // 设备系统
pageList: [
{
name: "我的订单",
url: "/pages/bookShop/orderList?type=mine",
type: "switchTab",
},
pageList: [
// {
// name: "我的订单",
// url: "/pages/bookShop/orderList?type=mine",
// type: "switchTab",
// },
// {
// name: "购物车",
// url: "../peanut/shopping",
@@ -430,9 +498,11 @@ export default {
console.log(this.userInfo, "11111111111111");
// 隐藏原生的tabbar
// uni.hideTabBar();
this.getBookList();
this.getData();
},
async onTabItemTap() {
this.getBookList();
this.getData();
},
components: {
@@ -441,6 +511,60 @@ export default {
//方法
methods: {
...mapMutations(["setUserInfo"]),
getBookList(flag, refreshflag) {
this.isLoadingHide = false;
var that = this;
// 根据tab不同获取最新书评、最热书评、书集列表
// uni.showLoading({
// title: '加载中'
// });
// 顶部红点数量
$http
.request({
url: "common/buyOrder/getBuyOrderNumByStatus",
method: "POST",
data: {
userId: that.userInfo.id,
come: this.come,
},
header: {
//默认 无 说明:请求头
"Content-Type": "application/json",
},
})
.then((res) => {
// 订单状态
// * 0: 待付款
// * 1: 待发货
// * 2: 已发货
// * 3已完成
// * 4: 交易失败
// * 5: 已过期
console.log("res at line 757:", res);
that.map = res.data;
that.orderList.map((e) => {
if (e.value == 0 || e.value == 1 || e.value == 2) {
var numList = that.map.filter((v) => v.order_status == e.value);
console.log("num at line 771:", numList);
if (numList.length > 0) {
e.badge = {
value: numList[0].num,
};
}
} else {
e.badge = {};
}
});
// this.$set('this.ordersTabs',)
that.$forceUpdate();
})
.catch((e) => {
console.log(e);
});
},
openInfo() {
this.infoShow = true;
},
@@ -522,7 +646,17 @@ export default {
});
}
},
goOrderList(url, type, index) { uni.setStorageSync("orderStatus", index);
console.log("url at line 644:", url);
uni.switchTab({
url: url,
success: function (res) {
},
});
},
switchTab(url) {
console.log("url at line 644:", url);
uni.switchTab({
url: url,
});
@@ -606,6 +740,7 @@ export default {
@import "@/style/mixin.scss";
.per_mes {
// height: 200rpx;
position: relative;
margin: 0rpx 40rpx 60rpx 40rpx;
align-items: center;
@@ -633,12 +768,12 @@ export default {
font-weight: bold;
font-size: 38upx;
margin-bottom: 10rpx;
color: #fff !important;
color: #333 !important;
}
.phone {
.phone { font-weight: bold;
font-size: 28rpx;
color: #fff;
color: #333;
}
.tong {
@@ -741,17 +876,8 @@ export default {
}
.hasVip {
.time {
padding: 4rpx 20rpx;
font-size: 26rpx;
border-radius: 20rpx;
background: linear-gradient(
to right,
rgb(204, 229, 244) 0%,
rgb(197, 227, 215) 100%
) !important;
}
}
}
.chong_list {
display: flex;
@@ -801,7 +927,7 @@ export default {
border-radius: 20rpx !important;
margin: 0 20rpx;
// padding:0 40rpx;
background: #edf6f5ad;
background: rgba(255, 255, 255, 0.65);
.nav_list {
background-color: #b7e0e2;
@@ -999,9 +1125,10 @@ uni-page-body {
}
}
.user_vip_box {
min-width: 130rpx;
position: absolute;
z-index: 10;
// min-width: 130rpx;
margin-top:-20rpx ;
// position: absolute;
bottom: -20rpx;
display: flex;
align-items: center;
@@ -1023,4 +1150,86 @@ uni-page-body {
background: linear-gradient(to right, #5bc9c1 0%, #268798 100%);
color: #f4f2e4;
}
.cate_box {
width: 100%;
height: auto;
// background: $themeColor;
background-repeat: no-repeat;
display: flex;
justify-content: center;
background-size: 100% 100%;
// background-image: url("@/static/icon/cate_bg.png");
box-shadow: 0rpx 0rpx 6rpx 0rpx #f9f6ea;
border-radius: 7rpx;
display: flex;
align-items: center;
justify-content: space-around;
padding: 20rpx 0rpx 40rpx;
box-sizing: border-box;
.cate_item_box {
min-width: 110rpx;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
.cate_item_border {
position: relative;
// width: 75rpx;
// height: 98rpx;
// background-size: 100% 100%;
// background-image: url("@/static/icon/homePage/cate_bg.png");
// border-radius: 4rpx;
display: flex;
align-items: center;
justify-content: center;
image {
// height: 56rpx;
}
}
.cate_item_name {
margin-top: 6rpx;
// font-family: PangMenZhengDaoBiaoTiTiMianFeiBan;
font-weight: normal;
font-size: 28rpx;
color: #000000;
// line-height: 46rpx;
text-align: center;
// color: #fff;
}
}
}
.order_box {
.title {
padding: 20rpx 20rpx 10rpx;
font-size: 30rpx;
font-weight: bold;
}
}
.viptime {
position: absolute;
left: 10rpx;
top: 10rpx;
// padding: 15rpx 20rpx;
font-size: 20rpx;
border-radius: 50rpx;
// background: rgba(255, 255, 255, 0.65);
color: #6D6D6D !important;
// margin-top: 10rpx;
line-height: 20rpx;
}
.xufei{
color: rgba(244, 43, 51,0.85);
font-size: 38rpz;
border-radius: 50rpx;
padding: 0rpx 20rpx;
background: rgba(255, 255, 255, 1);
}
</style>

View File

@@ -618,9 +618,12 @@ export default {
uni.showToast({
title: "支付成功",
});
setTimeout(() => {
setTimeout(() => {uni.setStorageSync("orderStatus", 0);
uni.switchTab({
url: "/pages/bookShop/orderList?type=order",
success: function (res) {
},
});
}, 1000);
} else {
@@ -657,9 +660,12 @@ export default {
uni.showToast({
title: "支付成功",
});
setTimeout(() => {
setTimeout(() => { uni.setStorageSync("orderStatus", 0);
uni.switchTab({
url: "/pages/bookShop/orderList?type=order",
success: function (res) {
},
});
}, 1000);
} else {
@@ -685,9 +691,12 @@ export default {
title: "购买成功",
icon: "success",
});
setTimeout(() => {
setTimeout(() => { uni.setStorageSync("orderStatus", 0);
uni.switchTab({
url: "/pages/bookShop/orderList?type=order",
success: function (res) {
},
});
}, 1000);
}