Files
sociology_app/pages/courseInformation/index/index.vue
2024-04-19 10:35:20 +08:00

829 lines
24 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 commonDetailPage">
<!-- 公共组件-每个页面必须引入 -->
<public-module></public-module>
<z-nav-bar title="课程设置" bgColor="#3AB3AE" fontColor="#fff"></z-nav-bar>
<view class="contentBox commonPageContentBox">
<!-- <scroll-view class="scroll-view_H cateList" scroll-x="true" scroll-left="0"> -->
<view class="cateList flexbox">
<text :class="[currentCateIndex == index ? 'cur' : '']" @click="setOneCateIndex(item, index)"
v-for="(item, index) in cateList" :key="item.type">{{ item.title }}</text>
</view>
<view :class="`priceDetail commonPageWhiteBox`" v-if="this.cateList[this.currentCateIndex].type == 'price'">
<scroll-view scroll-y="true" class="scroll-Y">
<price ref="priceDetail" type="price" :oid="this.cateList[this.currentCateIndex].oid"></price>
</scroll-view>
</view>
<view :class="`priceDetail commonPageWhiteBox`"
v-else-if="this.cateList[this.currentCateIndex].type == 'purchaseNotice'">
<scroll-view scroll-y="true" class="scroll-Y">
<price ref="purchaseNotice" :oid="this.cateList[this.currentCateIndex].oid"></price>
</scroll-view>
</view>
<view :class="`priceDetail commonPageWhiteBox`"
v-else-if="this.cateList[this.currentCateIndex].type == 'instructionsForUse'">
<instructionsForUse ref="instructionsForUse"></instructionsForUse>
</view>
<view :class="`dataList priceDetail`" v-else>
<image src="@/static/image/headImg/top.png" mode="aspectFit" class="headImage"></image>
<view v-if="this.cateList[this.currentCateIndex].type == 'courseDescription'"
style="height: calc(100% - 300rpx);">
<courseDescription :dataList="dataList" @hancleClick="goCourseDescription" label="nameCN">
</courseDescription>
</view>
<!-- <template v-if="currentCateIndex == 2 && curTwoCateIndex == 2">
<u-grid :col="3">
<u-grid-item class="scroll-view-item " v-for="(item, index) in dataList" :key="item.id"
@click="previewImage(item.url)" style="align-items: flex-start;">
<img :src="item.url" alt="" class="wmzhimg" mode="aspectFit">
</u-grid-item>
</u-grid>
</template> -->
</view>
</view>
<z-navigation></z-navigation>
</view>
</template>
<script>
import courseDescription from "@/pages/component/commonComponents/list";
import price from "../price/index.vue";
import purchaseNotice from "../purchaseNotice/index.vue";
import instructionsForUse from "../instructionsForUse/index.vue";
import $http from '@/config/requestConfig.js';
import {
mapState
} from 'vuex';
export default {
components: {
courseDescription,//课程说明
price,//课程价格
instructionsForUse,//使用须知
purchaseNotice,//使用须知
},
data() {
return {
playData: {},
searchValue: '',
cateList: [{
title: "课程价格",
type: 'price',
oid: '8a9fb99809e4428888aad6b56a3096a6',
}, {
title: "课程说明",
type: 'courseDescription',
apiUrl: 'app/phoneDoctor.do?getTaiHuToShine'
}, {
title: "使用须知",
type: 'instructionsForUse'
}, {
title: "购买须知",
type: 'purchaseNotice',
oid: 'd0f47071c2194e94845fbb373d06f59d',
}
], // 一级分类标题1
twoCateList: [], // 二级分类标题
dataList: [], // 方剂标题
currentCateIndex: 0, // 当前选中的一级分类
curTwoCateIndex: 0, // 当前选中的二级分类
searchList: [], // 搜索结果数组
showSearchList: false,
userMes: {}, // 用户信息
searchDisable: false, // 搜索不可用
limitShow: false,
limitTitle: '提示',
limitContent: '',
scrollViewHeight: 0,
}
},
onLoad() {
// this.getCourseDescriptionData()
this.getPriceData()
// this.getUserInfo()
// this.getCateList()
},
onHide() {
// this.showSearchList = false
// this.searchList = []
},
computed: {
...mapState(['userInfo']),
},
methods: {
goCourseDescription(v) {
console.log(v)
uni.navigateTo({
// url: '../bookShop/commodityDetail?id=' + item.id
url: `/pages/courseInformation/courseDescription/index?navTitle=${v.nameCN}&title=${v.nameCN}&oid=${v.oid}`
})
},
getCourseDescriptionData() {
console.log(this.$store.state, '11111111111')
this.$http
.post('app/phoneDoctor.do?getTaiHuToShine', {
customerType
:
"D",
token
: uni.getStorageSync("token")
,
customerOid
: uni.getStorageSync("customerOid"),
oid: 'b07e45f6a5f3491db9854b16f3fd8b19',
step: 0,
limit: 100
})
.then(res => {
console.log(res.obj.dataLst
, '7777777777777777777')
this.dataList = res.obj.dataLst
// socket.init();
});
},
getPriceData() {
var that = this;
setTimeout(() => {
that.$nextTick(() => {
that.$refs.priceDetail.getData()
})
}, 100)
},
// 检查是有权限使用搜索功能
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(item) {
console.log('111', item)
console.log('this.currentCateIndex', this.currentCateIndex)
console.log('this.curTwoCateIndex', this.curTwoCateIndex)
if (this.currentCateIndex == 0) {
uni.navigateTo({
// url: '../bookShop/commodityDetail?id=' + item.id
url: './xueshugongxianDetail?id=' + item.id
})
return
}
if (this.currentCateIndex == 1) {
uni.navigateTo({
url: "./medicaldesDetail?id=" + item.id
})
return
}
if (this.currentCateIndex == 2) {
console.log('111', item)
uni.navigateTo({
url: './video?title=' + item.name + '&src=' + item.url
})
return
}
if (this.currentCateIndex == 3) {
console.log('111', item)
uni.navigateTo({
url: "./recordDetail?id=" + item.id
})
return
}
},
// 获取名称
getTitles(dictType) {
console.log('dictType', dictType)
if (this.currentCateIndex == 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.dataList = res.result.records
} else {
this.dataList = []
}
}).catch(e => {
this.dataList = []
console.log(e)
})
}
if (this.currentCateIndex == 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.dataList = res.result.records
for (let i = 0; i < this.dataList.length; i++) {
this.dataList[i].imageslist = [];
this.dataList[i].imageslist = this.dataList[i].img.split(";");
}
} else {
this.dataList = []
}
}).catch(e => {
this.dataList = []
console.log(e)
})
}
if (this.currentCateIndex == 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.dataList = res.result
} else {
this.dataList = []
}
}).catch(e => {
this.dataList = []
console.log(e)
})
}
if (this.currentCateIndex == 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.dataList = res.result
} else {
this.dataList = []
}
}).catch(e => {
this.dataList = []
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
switch (item.type) {
case 'courseDescription':
that.getCourseDescriptionData()
break;
case 'price':
setTimeout(() => {
that.$nextTick(() => {
that.$refs.priceDetail.getData()
})
}, 100)
break;
case 'purchaseNotice':
setTimeout(() => {
that.$nextTick(() => {
that.$refs.purchaseNotice.getData()
})
}, 100)
break;
case 'instructionsForUse':
setTimeout(() => {
that.$nextTick(() => {
that.$refs.instructionsForUse.getData()
})
}, 100)
// that.getPriceData()
break;
}
// 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.currentCateIndex = index
this.searchValue = ''
this.searchList = []
this.showSearchList = false
// if (index != 2) {
// uni.createSelectorQuery().select('.cateList').boundingClientRect(function (rect) {
// var height = rect.height
// console.log('元素高度:',);
// }).exec();
// } else {
// this.getJFList(dictType)
// }
},
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.dataList = this.transformData(res.list)
// console.log('JF经方', this.dataList)
// } else {
// this.twoCateList = []
// this.dataList = []
// }
// }).catch(e => {
// this.twoCateList = []
// this.dataList = []
// 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.cateList = res.list
this.getTowCateList(this.cateList[0].type)
// } else {
// this.cateList = []
// }
// }).catch(e => {
// this.cateList = []
// 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.currentCateIndex + 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.dataList = []
// 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>
.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;
}
.contentBox {
height: calc(100% - 50px);
.cateList {
padding: 10rpx;
box-sizing: border-box;
justify-content: space-between;
text {
text-align: center;
display: inline-block;
width: 32%;
padding: 20rpx 0;
font-size: 34rpx;
border-radius: 10rpx;
}
.cur {
background-color: #3AB3AE;
color: #fff;
box-shadow: 0 2px 12px 0 rgba(0, 0, 0, .1);
}
}
.twoCateList {
font-size: 28rpx;
margin-top: 20rpx;
.grid-text {
padding: 10rpx 0rpx;
text-align: center;
}
.cur {
color: #3AB3AE;
}
// .u-grid-list{border: 0.5px solid #dadbde;}
}
.dataList {
font-size: 26rpx;
// margin-top: 20rpx;
// padding: 32rpx 0rpx;
border-radius: 10rpx;
background-color: #f8f9fa;
box-sizing: border-box;
.JFtitleItem {
background-color: #ffffff;
padding: 20rpx 10rpx;
width: 100%;
border-bottom: 0.5px solid #f8f9fa;
}
.wmzhimg {
width: 220rpx;
height: 220rpx;
}
}
}
.search_box {
margin: 0 auto;
overflow: hidden;
align-items: center;
width: calc(100% - 10px);
margin-top: 20rpx;
margin-bottom: 20rpx;
.search {
height: 56upx;
display: flex;
width: 86%;
margin: 0 auto;
align-items: center;
padding: 0upx 40upx;
background-color: #fff;
border-radius: 20upx;
box-shadow: 0 0px 10px 1px #3AB3AE33;
}
.prompt {
color: #838383;
font-size: 24rpx;
}
.icon_search {
background-image: url('@/static/icon/map_ic_search.png');
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
width: 36upx;
height: 36upx;
margin-right: 20upx;
}
}
.flexbox {
display: flex;
}
.uni-modal .uni-modal__bd {
text-align: left;
}
.limiTy {
font-size: 28rpx;
line-height: 46rpx;
}
.chImage {
height: 100rpx;
}
.scroll-Y {
height: 100%;
}
.scroll-view_H {
white-space: nowrap;
width: 100%;
}
.scroll-view-item {
// 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;
}
.dataList {
height: 100%;
}
.titleList2 {
height: calc(100% - 170rpx);
}
.priceDetail {
height: calc(100% - 100rpx) !important;
padding: 0rpx 0;
box-sizing: border-box;
}
.componentPage {
height: calc(100% - 90rpx) !important;
}
</style>