Files
sociology_app/pages/mine/vip/index.vue
2024-06-13 10:04:13 +08:00

963 lines
26 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<template>
<view class="container commonPageBox vipBox" style="">
<!-- 公共组件-每个页面必须引入 -->
<public-module></public-module>
<z-nav-bar
title=""
bgColor="rgba(188, 231, 223, 0.4)"
fontColor="#000"
>
<!-- <template slot="right">
<text @click="handleClickDelete" v-if="addressId" style="padding-right: 20rpx; color: red">开通记录</text>
</template>
-->
</z-nav-bar>
<view
class="contentBox commonPageContentBox"
:style="`margin-top: ${
(40 + statusBarHeight) * 2
}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};
;-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
`"
></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="qunyi_box">
<view style="height: auto">
<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 style="margin: 0 5rpx">{{ item.lastFee }}</view>
</view>
</view>
</view>
</scroll-view>
</view>
</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="
display: inline-block;
position: absolute;
right: 20rpx;
top: 20rpx;
"
></u-icon>
<orderPay ref="orderPay" :dataInfo="selectVipData"></orderPay>
<!-- <view class="goods_nav_box">
<uni-goods-nav
:fill="true"
:options="[]"
:button-group="customButtonGroup1"
@click="onHandleClickBuy"
@buttonClick="onHandleClickBuy"
/>
</view> -->
</view>
</u-popup>
</view>
</template>
<script>
import list from "@/pages/component/commonComponents/list";
import orderPay from "./order.vue";
import $http from "@/config/requestConfig.js";
import { mapState } from "vuex";
export default {
components: {
list,
orderPay,
},
data() {
return {
selectVipData: {},
orderModalShow: false,
superQuanyi: [
{ name: "众妙之门视频" },
{
name: "吴门医述视频",
style: {
color: "#42BFA1",
},
},
{ name: "专属视频视听" },
{
name: "读书相关权益",
style: {
color: "#42BFA1",
},
},
{ name: "活动报名折扣价<text style='color:red'>(更优惠)</text>" },
],
sociologyQuanyi: [
{ name: "众妙之门视频" },
{
name: "-",
style: {
color: "#b0b0b0",
},
},
{ name: "专属视频视听" },
{
name: "-",
style: {
color: "#b0b0b0",
},
},
{ name: "活动报名折扣价" },
],
isLoadingHide: false,
playData: {},
options: {},
searchValue: "",
pagination: {
// 请求参数
page: 1, //页码
limit: 20, //每页显示
total: 0, //总条数
},
twoCateList: [], // 二级分类标题
titleList: [], // 方剂标题
curOneCateIndex: 0, // 当前选中的一级分类
curTwoCateIndex: 0, // 当前选中的二级分类
searchList: [], // 搜索结果数组
showSearchList: false,
userMes: {}, // 用户信息
searchDisable: false, // 搜索不可用
limitShow: false,
limitTitle: "提示",
limitContent: "",
scrollViewHeight: 0,
dataList: [],
urlList: {
list: "sociology/user/getVipProductForUser",
},
};
},
onLoad(options) {
console.log(options, "989");
this.options = options;
this.getUserInfo();
this.getData();
},
onHide() {
// this.showSearchList = false
// this.searchList = []
},
computed: {
...mapState(["userInfo"]),
},
methods: {
closeOrderModalShow() {
this.orderModalShow = false;
this.selectVipData = {};
},
openorderModal(data) {
this.selectVipData = data;
this.orderModalShow = true;
this.$nextTick(() => {
this.$refs.orderPay.initPrepareOrder();
});
},
onReachBottom1() {
// 上拉加载
// 当列表数量不大于或等于总数量,则再次调用接口请求数据
if (this.dataList.length >= this.pagination.total) return;
this.pagination.page++;
this.getData();
},
// 检查是有权限使用搜索功能
checkDisable() {
console.log("点击了");
},
// 显示无权限弹窗
// showNoRights() {
// let that = this
// uni.showModal({
// content: "",
// confirmText: '好的',
// showCancel: false,
// success: function(res) {
// if (res.confirm) {
// // console.log('用户点击确定');
// that.clear()
// }
// }
// })
// },
// 获取用户详情
getUserInfo() {
// 用户详情
if (this.userInfo.id != undefined) {
this.$http.post("book/user/info/" + this.userInfo.id).then((res) => {
this.userMes = res.user;
this.getCateList();
console.log(this.userMes, "呼呼");
});
}
},
// 详情
gotoDetail(v) {
console.log(v);
uni.navigateTo({
// url: '../bookShop/commodityDetail?id=' + item.id
url: `/pages/curriculum/order/curriculum/index?navTitle=${v.title}&title=${v.title}&id=${v.id}`,
});
},
getData() {
this.isLoadingHide = false;
this.$http
.request({
url: this.urlList.list,
method: "POST",
data: {},
header: {
//默认 无 说明:请求头
"Content-Type": "application/json",
},
})
.then((res) => {
console.log("res at line 144:", res.list);
if (res.code == 0) {
for (let i in res.list) {
if (res.list[i].length > 0) {
var type =
i == "super_hd" || i == "sociology_hd" ? "hd" : "normal";
if (i == "super" || i == "super_hd") {
this.dataList.push({
title: "超级VIP",
key: "super",
type: type,
titleStyle: {
width: "120rpx",
},
background: "rgb(255 255 255 / 85%)",
buttonbg:
"linear-gradient(to right, #CCE5F4 0%,#C5E3D7 100%) ",
// titleBackground:
// "linear-gradient(130deg, rgb(153, 202, 192) 0%, rgb(192, 223, 207) 50%)",
color: "linear-gradient(130deg,#2E676A 0%, #72AD92 100%)",
list: res.list[i],
quanyi: this.superQuanyi,
});
} else if (i == "sociology" || i == "sociology_hd") {
this.dataList.push({
title: "众妙之门VIP",
key: "sociology",
type: type,
list: res.list[i],
background: "rgb(188 231 223 / 93%)",
buttonbg: "rgba(255, 255, 255, 0.85)",
// titleBackground:
// "linear-gradient(130deg, #E4F3E9 0%,#D6E7EF 100%) ",
color: "linear-gradient(130deg,#2E676A 0%, #72AD92 100%)",
quanyi: this.sociologyQuanyi,
});
}
}
}
}
});
},
// 获取名称
getTitles(dictType) {
console.log("dictType", dictType);
if (this.curOneCateIndex == 0) {
if (dictType == 2) {
uni.navigateTo({
url: "./zhuanzhuchuban",
});
return;
}
$http
.request({
url: "book/generalArticle/articleByPage",
method: "POST",
data: {
// loadAnimate: 'none', // 请求加载动画
type: dictType == 1 ? "1" : "2",
limit: 1000,
current: 1,
},
header: {
//默认 无 说明:请求头
"Content-Type": "application/json",
},
})
.then((res) => {
console.log(res, "内容获取成功");
if (res.code == 0 && res.result && res.result.records.length > 0) {
this.titleList = res.result.records;
} else {
this.titleList = [];
}
})
.catch((e) => {
this.titleList = [];
console.log(e);
});
}
if (this.curOneCateIndex == 1) {
$http
.request({
url: "book/medicaldes/inheritListByPage",
method: "POST",
data: {
// loadAnimate: 'none', // 请求加载动画
dictType: dictType,
limit: 1000,
current: 1,
},
header: {
//默认 无 说明:请求头
"Content-Type": "application/json",
},
})
.then((res) => {
console.log(res, "内容获取成功");
if (res.code == 0 && res.result.records.length > 0) {
this.titleList = res.result.records;
for (let i = 0; i < this.titleList.length; i++) {
this.titleList[i].imageslist = [];
this.titleList[i].imageslist = this.titleList[i].img.split(";");
}
} else {
this.titleList = [];
}
})
.catch((e) => {
this.titleList = [];
console.log(e);
});
}
if (this.curOneCateIndex == 2) {
$http
.request({
url: "book/medicaldes/lightListByType?type=" + dictType,
method: "POST",
data: {
// loadAnimate: 'none', // 请求加载动画
limit: 1000,
page: 1,
},
header: {
//默认 无 说明:请求头
"Content-Type": "application/json",
},
})
.then((res) => {
console.log(res, "内容获取成功");
if (res.code == 0 && res.result.length > 0) {
this.titleList = res.result;
} else {
this.titleList = [];
}
})
.catch((e) => {
this.titleList = [];
console.log(e);
});
}
if (this.curOneCateIndex == 3) {
$http
.request({
url: "book/medicaldes/recordByType?type=" + dictType,
method: "POST",
data: {
// loadAnimate: 'none', // 请求加载动画
limit: 1000,
page: 1,
},
header: {
//默认 无 说明:请求头
"Content-Type": "application/json",
},
})
.then((res) => {
console.log(res, "内容获取成功");
if (res.code == 0 && res.result.length > 0) {
this.titleList = res.result;
} else {
this.titleList = [];
}
})
.catch((e) => {
this.titleList = [];
console.log(e);
});
}
},
setTwoCateIndex(item, index) {
let dictType = item.dictType;
this.curTwoCateIndex = index;
this.getTitles(dictType);
},
async setOneCateIndex(item, index) {
console.log(index, 99999);
var that = this;
// if(this.userMes.tgdzPower == 0){
// let that = this
// uni.showModal({
// content: "购买 针灸六经法要上册和下册 后方可使用此功能",
// confirmText: '好的',
// showCancel: false,
// success: function(res) {
// if (res.confirm) {
// // console.log('用户点击确定');
// }
// }
// })
// return
// }
// if(item.title == "时辰取穴"){
// uni.navigateTo({
// url: "../timeAcupoint/timeAcupoint"
// })
// return
// }
let type = item.type;
this.curOneCateIndex = index;
this.curTwoCateIndex = 0;
this.searchValue = "";
this.searchList = [];
this.showSearchList = false;
// if (index != 2) {
await this.getTowCateList(type);
// uni.createSelectorQuery().select('.oneCateList').boundingClientRect(function (rect) {
// var height = rect.height
// console.log('元素高度:',);
// }).exec();
// } else {
// this.getJFList(dictType)
// }
},
async getTowCateList(type) {
var that = this;
$http
.request({
url: "book/medicaldes/typeList?label=" + type,
method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
data: {
loadAnimate: "none", // 请求加载动画
// 'categoryId': id
},
// header: { //默认 无 说明:请求头
// 'Content-Type': 'application/json'
// },
})
.then((res) => {
console.log(res, "二级分类获取成功");
if (res.code == 0 && res.result.length >= 0) {
this.twoCateList = res.result;
if (this.curOneCateIndex == 0) {
this.twoCateList = [
{
dictType: "1",
dictValue: "学术思想",
},
{
dictType: "2",
dictValue: "出版专著",
},
{
dictType: "3",
dictValue: "学术平台",
},
];
}
if (this.curOneCateIndex == 2) {
this.twoCateList = [
{
dictType: "1",
dictValue: "吴门之歌",
},
{
dictType: "2",
dictValue: "巴山夜语",
},
{
dictType: "3",
dictValue: "吴门之徽",
},
];
}
if (this.curOneCateIndex == 3) {
this.twoCateList = [
{
dictType: "1",
dictValue: "学术贡献",
},
{
dictType: "2",
dictValue: "抗疫纪实",
},
{
dictType: "3",
dictValue: "吴门公益",
},
];
}
this.getTitles(this.twoCateList[0].dictType);
this.$nextTick(async () => {
// await uni.createSelectorQuery().select('.uni-tabbar').boundingClientRect(function (rect) {
// console.log(rect.height, '3333')
// // var height = 42 + rect.height + 10;
// // that.scrollViewHeight = height;
// // console.log(that.scrollViewHeight, '111111')
// // that.$forceUpdate()
// // console.log('元素高度2', height);
// }).exec();
await uni
.createSelectorQuery()
.select(".cateList")
.boundingClientRect(function (rect) {
console.log(rect.height, "22222");
var height = 42 + rect.height + 20;
that.scrollViewHeight = height;
console.log(that.scrollViewHeight, "111111");
that.$forceUpdate();
console.log("元素高度2", height);
})
.exec();
});
} else {
this.twoCateList = [];
this.titleList = [];
}
})
.catch((e) => {
this.twoCateList = [];
this.titleList = [];
console.log(e);
});
},
transformData(inputData) {
const result = {};
inputData.forEach((item) => {
const { letter } = item;
if (!result[letter]) {
result[letter] = [];
}
result[letter].push(item);
});
// const finalResult = Object.keys(result).map(key => ({ [key]: result[key] }));
return result;
},
// getJFList(id) {
// $http.request({
// url: "book/prescript/prescriptListForJF",
// method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
// data: {
// loadAnimate: 'none', // 请求加载动画
// 'categoryId': id
// },
// header: { //默认 无 说明:请求头
// 'Content-Type': 'application/json'
// },
// }).then(res => {
// if (res.code == 0 && res.list.length > 0) {
// this.twoCateList = []
// this.titleList = this.transformData(res.list)
// console.log('JF经方', this.titleList)
// } else {
// this.twoCateList = []
// this.titleList = []
// }
// }).catch(e => {
// this.twoCateList = []
// this.titleList = []
// console.log(e)
// })
// },
getCateList(id) {
id ? "" : (id = 0);
this.twoCateList = [];
this.curTwoCateIndex = 0;
// 0为获取顶级分类其他为搜索下级分类目前的逻辑顶级是写死的所以可能只会涉及到搜索第二级
// $http.request({
// url: "book/prescript/prescriptCategoryList",
// method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
// data: {
// loadAnimate: 'none', // 请求加载动画
// 'categoryId': id
// },
// header: { //默认 无 说明:请求头
// 'Content-Type': 'application/json'
// },
// }).then(res => {
// console.log(res, '脉穴分类获取成功')
// if (res.code == 0 && res.list.length > 0) {
// this.oneCateList = res.list
this.getTowCateList(this.oneCateList[0].type);
// } else {
// this.oneCateList = []
// }
// }).catch(e => {
// this.oneCateList = []
// console.log(e)
// })
},
// 放大图片
previewImage(url) {
console.log(url);
uni.previewImage({
urls: [url],
longPressActions: {
itemList: ["很抱歉,暂不支持保存图片到本地"],
success: function (res) {
// console.log(res,'+++++')
},
},
});
},
// getSearch() {
// $http.request({
// url: "book/prescript/searchPrescript",
// method: "POST", // POST、GET、PUT、DELETE具体说明查看官方文档
// data: {
// loadAnimate: 'none', // 请求加载动画
// 'keywords': this.searchValue,
// type: this.curOneCateIndex + 1
// },
// header: { //默认 无 说明:请求头
// 'Content-Type': 'application/json'
// },
// }).then(res => {
// console.log(res, '搜索结果')
// if (res.code == 0 && res.list.length >= 0) {
// this.showSearchList = true
// this.searchList = res.list
// } else {
// this.searchList = []
// }
// }).catch(e => {
// // this.titleList = []
// this.searchList = []
// console.log(e)
// })
// },
// search(res) {
// console.log(res, 'res')
// // uni.showToast({
// // title: '搜索:' + res,
// // icon: 'none'
// // })
// if (res == '') {
// this.showSearchList = false
// this.searchList = []
// } else {
// this.getSearch()
// }
// },
// input(res) {
// console.log('----input:', res)
// if (res == '') {
// this.searchList = []
// } else {
// this.getSearch()
// }
// },
// clear(res) {
// console.log('----clear:', res)
// // uni.showToast({
// // title: 'clear事件清除值为',
// // icon: 'none'
// // })
// this.searchValue = ''
// this.showSearchList = false
// },
// blur(res) {
// // console.log('----blur:', res)
// // if (res == '') {
// // this.showSearchList = false
// // this.searchList = []
// // } else {
// // this.getSearch()
// // }
// },
// focus(e) {
// console.log('----focus:')
// // uni.showToast({
// // title: 'focus事件输出值为' + e.value,
// // icon: 'none'
// // })
// // 等于1 就是有权限
// // this.showSearchList = true
// },
// cancel(res) {
// uni.showToast({
// title: '点击取消,输入值为:' + res.value,
// icon: 'none'
// })
// }
},
onBackPress() {
// #ifdef APP-PLUS
plus.key.hideSoftKeybord();
// #endif
},
};
</script>
<style lang="scss" scoped>
@import "@/style/mixin.scss";
.vipBox {
background-repeat: no-repeat;
display: flex;
justify-content: center;
overflow: hidden;
background-size: 100% 100%;
background-image: url("@/static/icon/vipbg.png");
}
.u-grid-list {
// height: 40rpx;
}
.searchList {
.item {
font-size: 28rpx;
padding: 20rpx;
border-bottom: 1px solid #dadbde;
}
}
.scroll-view_H {
background-color: #fff;
white-space: nowrap;
padding: 10rpx;
}
.scroll-Y {
height: 100%;
}
.scroll-view_H {
white-space: nowrap;
width: 100%;
}
.scroll-view-item {
display: inline-block;
// height: 300rpx;
// line-height: 300rpx;
// text-align: center;
// font-size: 36rpx;
}
.scroll-view-item_H {
display: inline-block;
width: 100%;
// height: 300rpx;
// line-height: 300rpx;
// text-align: center;
// font-size: 36rpx;
}
.titleList {
height: 100%;
}
.titleList2 {
height: calc(100% - 170rpx);
}
.commonPageContentBox {
// min-height: 100% !important;
}
.related_courses_name {
display: inline-block;
float: left;
line-height: 60rpx;
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;
}
}
.flash_sale_content {
width: 100%;
display: flex;
overflow: hidden;
height: 100%;
align-items: center;
justify-content: space-between;
.flash_sale_content_item {
width: auto;
min-width: 47%;
min-height: 48%;
margin: 10rpx !important;
border-radius: 20rpx;
overflow: hidden;
position: relative;
.vip_content {
width: 100%;
height: calc(100% - 80rpx);
padding: 20rpx;
padding-top: 0;
// display: flex;
// align-items: center;
// justify-content: center;
// flex-direction: column;
position: relative;
}
}
.book_image {
width: 165rpx;
height: 192rpx;
border-radius: 10rpx;
background-color: #f5f5f5;
}
.book_name {
border-radius: 20rpx;
padding: 10rpx 20rpx;
padding-top: 20rpx;
// height: 80rpx;
display: flex;
align-items: center;
justify-content: center;
font-weight: bold;
font-size: 46rpx;
line-height: 48rpx;
color: #64bec5;
text-align: center;
// margin-bottom: 10rpx;
overflow: hidden;
// text-overflow: ellipsis;
white-space: wrap;
}
}
.vip_button_list {
width: 100%;
max-height: 200rpx;
// @include themFlex(center, space-between);
// flex-direction: column;
padding-top: 0;
// display: flex;
padding: 20rpx 10rpx;
text-align: center;
position: absolute;
bottom: 20rpx;
left: 0;
width: 100%;
// justify-content: center;
// flex-direction: column;
.vip_button {
color: #265354;
width: 100%;
height: 80rpx !important;
// line-height: 80rpx;
display: flex;
// align-items: center;
justify-content: space-around;
padding: 0 0rpx;
font-size: 26rpx;
font-weight: bold;
width: 100%;
border-radius: 40rpx;
// line-height: 80rpx;
margin-top: 20rpx;
white-space: wrap;
view {
display: flex;
line-height: 30rpx;
align-items: center;
justify-content: center;
}
}
.vip_button:first-child {
margin-top: 0 !important;
}
}
.qunyi_box {
height: calc(100% - 280rpx);
color: #333;
font-weight: bold;
padding-left: 10rpx;
display: flex;
align-items: center;
justify-content: center;
}
.popup_box {
max-height: 95vh;
overflow: auto;
}
</style>