Browse Source

aa

chanyi2.0
yanghao 3 years ago
parent
commit
19ab1980ba
  1. 1
      .gitignore
  2. 11
      .hbuilderx/launch.json
  3. 2
      api/diandeng.js
  4. 4
      api/knowledge.js
  5. 10
      components/ShopLiveCard.vue
  6. 8
      config/index.js
  7. 2
      libs/wechat.js
  8. 7
      manifest.json
  9. 39
      pages.json
  10. 331
      pages/course/detail.vue
  11. 39
      pages/course/index.vue
  12. 246
      pages/course/signIn.vue
  13. 219
      pages/home/index.vue
  14. 1
      pages/knowledge/unlock.vue
  15. 69
      pages/noticePage/index.vue
  16. 31
      pages/serviceTeacher/courseDetail.vue
  17. 6
      pages/serviceTeacher/courseManagement.vue
  18. 5
      pages/serviceTeacher/memberDetail.vue
  19. 2
      pages/shop/GoodSearch/index.vue
  20. 14
      pages/shop/GoodsClass/index.vue
  21. 1
      pages/shop/GoodsCon/index.vue
  22. 11
      pages/study/dabang.vue
  23. 1
      pages/study/editDabang.vue
  24. 17
      pages/user/User/index.vue
  25. 16
      pages/user/feedBack/index.vue
  26. 4
      pages/user/myBangdan/index.vue
  27. 4
      pages/user/myCourses/index.vue
  28. 22
      pagesB/pages/user/liveWelcome/index.vue
  29. BIN
      static/close-btn.png
  30. BIN
      static/content-bg.png
  31. BIN
      static/course-icon1.png
  32. BIN
      static/course-icon2.png
  33. BIN
      static/course-icon3.png
  34. BIN
      static/course-icon4.png
  35. BIN
      static/course-icon5.png
  36. BIN
      static/ercode-download.png
  37. BIN
      static/signup-success.png
  38. 1
      utils/index.js
  39. 2
      utils/request.js

1
.gitignore vendored

@ -14,3 +14,4 @@ yarn-error.log*
unpackage/
assets/css/style.css
assets/css/style.css.map
.hbuilderx

11
.hbuilderx/launch.json

@ -2,10 +2,15 @@
// launchtypelocalremote, localremote
"version": "0.0",
"configurations": [{
"type": "uniCloud",
"default": {
"default" :
{
"launchtype" : "remote"
}
},
"mp-weixin" :
{
"launchtype" : "remote"
},
"type" : "uniCloud"
}
]
}

2
api/diandeng.js

@ -46,7 +46,7 @@ export function addBlessing(data) {
* 万年历
*/
export function getWanniali(data) {
return request.get("/Wannianli/getWanniali?date", data);
return request.get("/Wannianli/getWanniali?date="+data);
}
/**

4
api/knowledge.js

@ -90,14 +90,14 @@ export function myStudylist(data) {
* 获取课程列表
*/
export function getCourses(data) {
return request.post("/Course/listCourses",data);
return request.get("/lession/lessionList",data);
}
/**
* 获取课程详情
*/
export function getCourseDetail(data) {
return request.post("/Course/courseDetail",data);
return request.post("/lession/lessionDetail",data);
}
/**

10
components/ShopLiveCard.vue

@ -38,9 +38,9 @@
// #ifdef MP-WEIXIN
HAS_LIVE = true
let livePlayer = null;
if (HAS_LIVE) {
// if (HAS_LIVE) {
// livePlayer = requirePlugin('live-player-plugin');
}
// }
// #endif
let timer = null;
export default {
@ -107,9 +107,9 @@
methods: {
goRoom() {
let that = this;
wx.navigateTo({
url: `plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=${that.detail.roomId}`
});
// wx.navigateTo({
// url: `plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=${that.detail.roomId}`
// });
},
dateFormat(fmt, date) {
let ret;

8
config/index.js

@ -1,11 +1,9 @@
// export const VUE_APP_API_URL = 'http://natapp.xinxintuan.co/api';
// export const VUE_APP_API_URL = 'https://wxapi.yixiang.co/api'
// export const VUE_APP_API_URL = 'http://192.168.0.114:8088/api'
export const VUE_APP_API_URL = 'https://www.cyjyyjy.com:8096/api'
// export const VUE_APP_API_URL = 'https://hm2a5x.39nat.com/api'
// export const VUE_APP_API_URL = 'http://192.168.0.112:8088/api'
export const VUE_APP_API_URL = 'http://192.168.68.125:8088/api'
// export const VUE_APP_API_URL = 'https://www.cyjyyjy.com/api'
// export const VUE_APP_API_URL = 'http://natapp.xinxintuan.co/api';
// export const VUE_APP_API_URL = 'https://thapi.xinxintuan.co/api'
// export const VUE_APP_API_URL = 'https://h5api.xinxintuan.co/api';
// export const VUE_APP_API_URL = 'https://h5api.xinxintuan.co/api';
export const VUE_APP_RESOURCES_URL = 'https://h5.yixiang.co/static'

2
libs/wechat.js

@ -1,6 +1,6 @@
import { subscribeMessage } from '@/libs/order'
import { getProvider } from '@/utils'
import WechatJSSDK from 'wechat-jssdk/dist/client.umd'
// import WechatJSSDK from 'wechat-jssdk/dist/client.umd'
import { getWechatConfig, wechatAuth } from '@/api/public'
import { parseQuery } from '@/utils'
import cookie from '@/utils/store/cookie'

7
manifest.json

@ -146,6 +146,13 @@
"permission" : {
"scope.userLocation" : {
"desc" : "你的位置信息将用于小程序位置接口的效果展示"
}
},
"plugins" : {
// #ifdef MP-WEIXIN
"live-player-plugin": {
"version": "1.3.0",
"provider": "wx2b03c6e691cd7370"
}
}
},

39
pages.json

@ -37,10 +37,17 @@
"navigationBarTitleText": "首页"
}
},
{
"path": "pages/noticePage/index",
"style": {
"navigationBarTitleText": "公告"
}
},
{
"path": "pages/home/index",
"style": {
"navigationBarTitleText": "禅易教育研究院"
"navigationBarTitleText": "禅易教育研究院",
"enablePullDownRefresh": true
}
},
// {
@ -67,7 +74,15 @@
{
"path": "pages/course/detail",
"style": {
"navigationBarTitleText": "课程详情"
"navigationBarTitleText": "课程详情",
"enablePullDownRefresh": true
}
},
{
"path": "pages/course/signIn",
"style": {
"navigationBarTitleText": "课程签到",
"enablePullDownRefresh": true
}
},
{
@ -122,7 +137,8 @@
{
"path": "pages/shop/GoodsClass/index",
"style": {
"navigationBarTitleText": "商城"
"navigationBarTitleText": "商城",
"enablePullDownRefresh": true
}
},
{
@ -156,13 +172,15 @@
{
"path": "pages/user/myCourses/index",
"style": {
"navigationBarTitleText": "我的课程"
"navigationBarTitleText": "我的课程",
"enablePullDownRefresh": true
}
},
{
"path": "pages/user/myBangdan/index",
"style": {
"navigationBarTitleText": "我的打卡榜"
"navigationBarTitleText": "我的打卡榜",
"enablePullDownRefresh": true
}
},
{
@ -265,7 +283,8 @@
{
"path": "pages/serviceTeacher/courseDetail",
"style": {
"navigationBarTitleText": "课程详情"
"navigationBarTitleText": "课程详情",
"enablePullDownRefresh": true
}
},
{
@ -589,6 +608,14 @@
"navigationBarTitleText": "直播列表"
}
}
,{
"path" : "pages/user/liveWelcome/index",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}
]
}
],

331
pages/course/detail.vue

@ -3,7 +3,7 @@
<view v-if="$store.getters.token || userInfo.uid">
<view class="swiper-box">
<view class="swiper-item">
<image :src="item" mode="aspectFill" v-for="(item,index) in detail.imageArr" :key="index"></image>
<image :src="detail.coverImg" mode="aspectFill" :key="index"></image>
</view>
<!-- <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000">
<swiper-item v-for="(item,index) in detail.imageArr" :key="index">
@ -12,10 +12,14 @@
</swiper> -->
</view>
<view class="course-info-box">
<view class="course-title">{{detail.courseName}}</view>
<view class="course-title acea-row row-between-wrapper">
<view>{{detail.courseName}}</view>
<view class="price" v-if="detail.price == 0">公开课</view>
<view class="price" v-if="detail.price > 0 && detail.price < 199">{{detail.price}}</view>
</view>
<view class="tips-box">
<view class="tip-item blue">{{detail.categoryName}}</view>
<view class="tip-item orange">{{detail.levelName}}</view>
<view class="tip-item orange">{{detail.flag[0]}}</view>
</view>
</view>
<view class="tab-box acea-row row-around" :class="isFixedTop?'fixed':''">
@ -54,10 +58,15 @@
<span>课程表</span>
</view>
<view class="course-card-list">
<view class="course-card-item acea-row row-middle">
<image src="../../static/course-icon5.png"></image>
<view class="label">课程类型</view>
<view class="info">{{detail.courseType == 0 ? '线下课程' : '直播课程'}}</view>
</view>
<view class="course-card-item acea-row row-middle">
<image src="../../static/course-icon1.png"></image>
<view class="label">课程时间</view>
<view class="info">{{courseStartTime}} {{courseEndTime}}</view>
<view class="info">{{detail.courseStartTime}} {{detail.courseEndTime}}</view>
</view>
<view class="course-card-item acea-row row-middle">
<image src="../../static/course-icon2.png"></image>
@ -81,17 +90,19 @@
<view class="left-line"></view>
<span>课程安排</span>
</view>
<view class="plan-box acea-row-nowrap" v-for="(item,index) in detail.courseScheduleList" :key="index">
<view class="plan-box acea-row-nowrap" v-for="(item,index) in detail.scheduleList" :key="index">
<!-- <text class="plan-time">{{index+1}}</text> -->
<text>{{item.courseContent}}</text>
<text>{{item}}</text>
</view>
</view>
<view class="recommend-box content" id="content3">
<!-- 相关推荐 -->
<view class="title-box acea-row row-middle row-center" v-if="detail.similarCourseList.length > 0">
<view class="row-line"></view>
<view class="title">相关推荐</view>
<view class="row-line"></view>
</view>
<view class="knowledge-list">
<view class="knowledge-item acea-row" v-for="(item,index) in detail.similarCourseList" :key="index" @click="toDetail(item.id)">
<view class="img-box">
@ -99,7 +110,7 @@
</view>
<view class="knowledge-info-box">
<view class="title line1">{{item.courseName}}</view>
<view class="time">{{courseStartTime}}~{{courseEndTime}}</view>
<view class="time">{{item.courseStartTime.split(' ')[0]}}-{{item.courseEndTime.split(' ')[0]}}</view>
<view class="address">{{item.coursePlace}}</view>
<view class="type-box acea-row row-between row-middle">
<!-- <view class="price">{{item.levelName}}</view> -->
@ -118,45 +129,35 @@
<view class="footer-box acea-row row-between-wrapper">
<view class="footer-left">
<view class="price" v-if="detail.signState == 1">座位号{{detail.seat}}</view>
<!-- <view class="price" v-if="detail.level > 2">{{detail.level}}级课程</view>
<view class="price" v-if="detail.level == 2"><span class="fz24"></span>{{detail.courseCharge}} </view>
<view class="price colG" v-if="detail.chargeType == 0">免费</view> -->
</view>
<view class="footer-right">
<view class="btn-box acea-row row-between-wrapper" v-if="userInfo.phone != '' && teacherId != null && detail.haveSeller == 0 && detail.enterState == 0">
<view class="btn-box acea-row row-between-wrapper" v-if="yhStatus == 1 || yhStatus == 3 ">
<view class="count-down">
<view>距离截止时间还剩</view>
<uni-countdown color="#F99C10" :day="day" :hour="hour" :minute="minute" :second="second" />
</view>
<view class="signin-btn" @click="signInClick(2)">立即报名</view>
</view>
<view class="btn-box acea-row row-between-wrapper" v-if="userInfo.phone != '' && detail.haveSeller == 1 && detail.enterState == 0">
<view class="count-down">
<view>距离截止时间还剩</view>
<uni-countdown color="#F99C10" :day="day" :hour="hour" :minute="minute" :second="second" />
</view>
<view class="signin-btn" @click="signInClick(2)">立即报名</view>
</view>
<view class="signin-btn call-btn default-btn" v-if="detail.enterState == 1 && detail.signState == 2" >已报名</view>
<view class="signin-btn call-btn default-btn" v-if="detail.signState == 1" >已签到</view>
<view class="signin-btn call-btn"
@click="signInClick(1)"
v-if="userInfo.phone != '' && detail.haveSeller == 0 && detail.enterState == 0 && teacherId == null">
联系服务老师
</view>
<view class="signin-btn" v-if="yhStatus == 2 ">报名已截止 请关注下期</view>
<!-- <view class="btn-box acea-row row-between-wrapper" v-if="yhStatus == 2 ">
</view> -->
<!-- 在线直播 -->
<view class="signin-btn call-btn" v-if="yhStatus == 4 " @click="signInClick(3)" >立即观看</view>
<view class="signin-btn call-btn" v-if="yhStatus == 5 " @click="signInClick(3)" >查看回放</view>
<view class="signin-btn call-btn default-btn" v-if="yhStatus == 6" >未签到</view>
<view class="signin-btn call-btn default-btn" v-if="yhStatus == 7" >未签到</view>
<view class="signin-btn call-btn" v-if="yhStatus == 8 " @click="signInClick(1)" >等待确认 联系服务老师</view>
<!-- #ifdef MP-WEIXIN -->
<button open-type="getPhoneNumber"
@getphonenumber="getPhoneNumber" v-if="userInfo.phone == '' && detail.haveSeller == 0 && detail.enterState == 0" class="binding signin-btn call-btn" v-else>
@getphonenumber="getPhoneNumber" v-if="userInfo.phone == '' " class="binding signin-btn call-btn" v-else>
<text>点击绑定手机号</text>
</button>
<!-- #endif -->
<!-- #ifndef MP-WEIXIN -->
<button class="binding" @click="goBindPhone()" v-if="userInfo.phone == '' && detail.haveSeller == 0">
<text>点击绑定手机号</text>
</button>
<!-- #endif -->
</view>
</view>
<view class="mask-box" v-if="maskDialog">
@ -164,22 +165,34 @@
<view class="close" @click="closeDialog()">×</view>
<view class="dialog-top acea-row-nowrap row-center-wrapper">
<image src="../../static/error-icon.png"></image>
<view class="word">{{teacher.msg}}</view>
<view class="word">您还没有绑定服务老师请点击按钮联系服务老师进行绑定</view>
</view>
<view class="dialog-btm">
<view class="l-box acea-row row-between-wrapper">
<view class="acea-row row-middle">
<!-- <view class="acea-row row-middle">
<image :src="teacher.imgPath"></image>
<view>
<view>{{teacher.name}}</view>
<view>{{teacher.phone}}</view>
</view>
</view>
</view> -->
<view class="call-btn" @click="call">拨打电话</view>
</view>
</view>
</view>
</view>
<view class="mask-box2" v-if="showSignUp">
<view class="dialog-bg">
<view class="signUp-box">
<image src="../../static/signup-success.png" class="signup-success" ></image>
<view class="divsion-line"></view>
<view class="tips">请识别下方二维码下载APP,进行线上观看</view>
<view class="er-code"><image src="../../static/ercode-download.png" show-menu-by-longpress="true"></image></view>
<view class="longpress-btn">长按图片保存到相册</view>
</view>
</view>
<view class="close-btn" @click="showSignUp = false"></view>
</view>
</view>
<Authorization v-else />
</view>
@ -198,6 +211,7 @@
},
data() {
return {
yhStatus:0,
id: '',
teacherId:null,
validCode:null,
@ -208,6 +222,8 @@
tabInitTop:'',
isFixedTop: false,
maskDialog: false,
showSignUp: false,
times: 0,
day:'',
hour:'',
minute:'',
@ -222,36 +238,37 @@
this.tabInitTop= res.top;
}
}).exec();
if(this.$yroute.query.teacherId){
if(this.$yroute.query.teacherId){ //
this.courseId = this.$yroute.query.courseId;
this.validCode = this.$yroute.query.validCode;
this.teacherId = this.$yroute.query.teacherId;
} else{
} else{ //
this.courseId = this.$yroute.query.id;
}
this.getDetail()
this.$nextTick(()=>{
this.getHeightArr()
})
// if(this.userInfo.uid){
// this.getDetail()
// this.$nextTick(()=>{
// this.getHeightArr()
// })
// }
},
computed:{
userInfo(){
return this.$store.getters["userInfo"]
},
courseStartTime(){
return this.detail.courseStartTime.split(' ')[0]
},
courseEndTime(){
return this.detail.courseEndTime.split(' ')[0]
mounted(){
},
onPullDownRefresh() {
this.getDetail()
},
mounted() {
onShareAppMessage: function(res) {
// console.log(this.detail.id)
return {
title: this.detail.courseName,
imageUrl:this.detail.coverImg,
path: '/pages/course/detail?id=' + this.detail.id,
}
},
methods: {
getPhoneNumber: function(e) {
@ -317,6 +334,41 @@
},
})
},
test(){
let yhStatus = 0;
let detail = this.detail;
if ( !detail.enterState ){
yhStatus = 0;
if( new Date(detail.enterEndTime) >= new Date() && new Date(detail.enterStartTime) <= new Date() ){
yhStatus = 1; //
}else if(new Date(detail.enterEndTime) < new Date()){
yhStatus = 2; //
}else if(new Date(detail.enterStartTime) > new Date()){
yhStatus = 3; //
}
}else{
//
if (detail.status == 1 && detail.courseType == 1){
if( new Date(detail.courseEndTime) >= new Date() ){
yhStatus = 4; //
}else{
yhStatus = 5; //
}
}else if (detail.status == 1 && detail.courseType == 0){
if (detail.signState == 0){
yhStatus = 6; //线
}else{
yhStatus = 7; //
}
}else {
if ( detail.status == 0 ){
yhStatus = 8; //
}
}
}
this.yhStatus = yhStatus;
},
getDetail(){
uni.showLoading({
title:'正在加载中...'
@ -324,8 +376,9 @@
let nowTime = Date.parse(new Date())/1000;
getCourseDetail({id:this.courseId}).then((res)=>{
uni.hideLoading()
res.data.courseIntroduce = res.data.courseIntroduce.replace(/\<img/g, "<img style='width: 100%;'")
this.detail = res.data
//res.data.courseIntroduce = res.data.courseIntroduce.replace(/\<img/g, "<img style='width: 100%;'")
this.detail = res.data;
this.test();
let t = res.data.signEndTime.replace(/-/g, '/');
let endTime = Date.parse(new Date(t))/1000
this.times = endTime - nowTime;
@ -333,7 +386,10 @@
this.hour = Math.floor(this.times / (60 * 60)) - (this.day * 24);
this.minute = Math.floor(this.times / 60) - (this.day * 24 * 60) - (this.hour * 60);
this.second = Math.floor(this.times) - (this.day * 24 * 60 * 60) - (this.hour * 60 * 60) - (this.minute * 60);
// console.log(this.times)
uni.stopPullDownRefresh()
})
},
signInClick(type){
if(this.userInfo.realName == null){
@ -349,7 +405,7 @@
}
});
} else{
if(type == 2){
if(type == 2){ //
uni.showModal({
title:'提示!',
content:'是否确定报名?',
@ -361,29 +417,40 @@
}
}
})
}else if(type == 3){ //
let roomId = this.detail.roomId;
let customParams = encodeURIComponent(JSON.stringify({ path: 'pages/user/liveWelcome/index', pid: 1 }))
wx.navigateTo({
url: `plugin-private://wx2b03c6e691cd7370/pages/live-player-plugin?room_id=${roomId}&custom_params=${customParams}`
})
} else if(type == 1){ //
uni.makePhoneCall({
phoneNumber: this.userInfo.sellerPhone
});
} else{
this.sign()
}
}
},
sign(){
if(!this.userInfo.spreadUid){
this.maskDialog = true
return
}
enterCourse({
courseId:this.courseId,
sellerId:this.teacherId,
validCode:this.validCode
lessionId: this.courseId
}).then((res)=>{
if(res.data.state == 0){
this.maskDialog = true
this.teacher = res.data
} else if(res.data.state == 1){
if(res.data.state == 1){
//
uni.showToast({
title: '报名成功!',
duration: 2000,
type: "success"
title: res.data.msg
});
setTimeout(()=>{
this.getDetail()
},2000)
},1500)
} else if(res.data.state == 2){
this.payment(res.data.payData)
} else{
uni.showToast({
title: res.msg,
@ -393,9 +460,39 @@
}
})
},
payment(orderInfo){
//
uni.requestPayment({
provider: 'wxpay',
...orderInfo,
signType: 'MD5',
package:orderInfo.packageValue,
success: success => {
if(this.detail.courseType == 1){
// this.showSignUp = true
this.getDetail()
} else{
uni.showToast({
title: '报名成功!'
});
setTimeout(()=>{
this.getDetail()
},1500)
}
},
fail: error => {
console.log(error)
if (error.errMsg == 'requestPayment:fail cancel') {
uni.showToast({ title: '已取消支付', icon: 'none', duration: 5000 })
} else {
uni.showToast({ title: error || error.msg, icon: 'none', duration: 5000 })
}
},
})
},
call(){
uni.makePhoneCall({
phoneNumber: this.teacher.phone
phoneNumber: '15623111593'
});
},
closeDialog(){
@ -420,7 +517,7 @@
//selectAll
uni.createSelectorQuery().selectAll('.content').boundingClientRect((rect) => {
}).exec((res) => {
console.log('res',res)
// console.log('res',res)
res[0].forEach((item)=>{
h+=item.top;
heightArr.push(h);
@ -527,9 +624,108 @@
text-align: center;
line-height: 60rpx;
color: #6E85EB;
margin: 0 auto;
}
}
}
}
.mask-box2{
width: 100%;
height: 100%;
background: rgba(0,0,0,.6);
position: fixed;
top: 0;
z-index: 99;
.dialog-bg{
width: 726rpx;
height: 1026rpx;
background: linear-gradient(180deg, #fbd8a5 0%, #fcc86a 100%);
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
border-radius: 8rpx;
}
.signUp-box{
width: 543rpx;
height: 836rpx;
background: #fff;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
display: flex;
flex-direction: column;
align-items: center;
border-radius: 8rpx;
.signup-success{
width: 470rpx;
height: 100rpx;
margin: 60rpx 0 46rpx;
}
.divsion-line{
width: 467rpx;
border-bottom: 1px dashed #fbd69e;
position: relative;
&::before{
display: inline-block;
content: '';
width: 50rpx;
height: 50rpx;
border-radius: 50px;
background: #FBD293;
position: absolute;
left: -62rpx;
top: -25rpx;
}
&::after{
display: inline-block;
content: '';
width: 50rpx;
height: 50rpx;
border-radius: 50px;
background: #FBD293;
position: absolute;
right: -62rpx;
top: -25rpx;
}
}
.er-code{
image{
width: 297rpx;
height: 297rpx;
}
}
.tips{
width: 340rpx;
font-size: 28rpx;
color: #000;
margin: 28rpx auto 12rpx;
text-align: center;
}
.longpress-btn{
width: 327rpx;
height: 75rpx;
text-align: center;
line-height: 75rpx;
font-size: 32rpx;
color: #fff;
background: linear-gradient(90deg, #F7D08E 0%, #E2B35D 99%);
border-radius: 37rpx;
margin-top: 32rpx;
}
}
.close-btn{
width: 80rpx;
height: 80rpx;
background: url(../../static/close-btn.png) no-repeat;
background-size: 100% 100%;
position: absolute;
bottom: 100rpx;
left: 50%;
margin-left: -40rpx;
}
}
.swiper-box{
width: 100%;
@ -564,6 +760,9 @@
color: #333333;
line-height: 56rpx;
margin: 0rpx 0 20rpx;
.price{
color: #EA533E;
}
}
.tips-box{
display: flex;
@ -827,15 +1026,17 @@
.colR{
color: #F99C10;
}
}
.signin-btn{
width: 178rpx;
min-width: 178rpx;
height: 100%;
line-height: 84rpx;
padding: 0 12rpx;
font-size: 32rpx;
border-radius: 44px;
color: #fff;
background: #F99C10;
}
}
.call-btn{
width: 268rpx;
height: 80rpx;

39
pages/course/index.vue

@ -53,7 +53,7 @@
<view class="no-content" v-if="courseList.length == 0">暂无内容...</view>
<view class="knowledge-item acea-row" v-for="(item,index) in courseList" :key="index" @click="toDetail(item.id)">
<view class="img-box">
<image :src="item.imageArr[0]" mode="aspectFill"></image>
<image :src="item.coverImg" mode="aspectFill"></image>
</view>
<view class="knowledge-info-box">
<view class="title line1">{{item.courseName}}</view>
@ -68,20 +68,6 @@
</view>
</view>
</view>
<!-- <view class="knowledge-item acea-row">
<view class="img-box">
<image src="../../static/img1.png" mode=""></image>
</view>
<view class="knowledge-info-box">
<view class="title line1">阴阳五行一个人的阴阳五的阴阳五行</view>
<view class="time">2021-5-31-6.3 8:30-18:30</view>
<view class="address">中国 武汉</view>
<view class="type-box acea-row row-between row-middle">
<view class="price">3000</view>
<view class="signin-btn red" @click="toDetail(1)">去报名</view>
</view>
</view>
</view> -->
</view>
</view>
</view>
@ -147,7 +133,7 @@
},
mounted() {
uni.getSystemInfo({
success:function(res){
success:(res)=>{
this.windowWidth = res.windowWidth;
}
})
@ -192,12 +178,17 @@
})
},
getCourses() {
uni.showLoading({
title:'正在加载中...'
})
var cid = null;
this.active == null ? cid = this.currentTab.id : cid = this.active
getCourses({categoryId: cid,listState:0,uid:this.userInfo.uid}).then((res) => {
getCourses({categoryId: cid,listState:0}).then((res) => {
if (res.success) {
this.courseList = res.data
}
uni.hideLoading()
uni.stopPullDownRefresh()
})
},
tabChange(item,index) {
@ -238,22 +229,8 @@
this.getCourses()
},
onPullDownRefresh() {
getCategory().then((res) => {
this.tabList = res.data
this.$set(this, 'secondMenu', res.data[0].categoryList)
this.$set(this, 'currentTab', res.data[0])
this.categoryTitle = res.data[0].categoryName;
if (res.data[0].categoryList.length > 0) {
this.$set(this, 'active', res.data[0].categoryList[0].id)
this.categoryTitle = this.categoryTitle +'·'+res.data[0].categoryList[0].categoryName
} else{
// this.$set(this, 'tabSelect', 0)
// this.scrollLeft = 0
}
}).then(() => {
this.getStudyList()
this.getCourses()
})
}
}
}

246
pages/course/signIn.vue

@ -0,0 +1,246 @@
<template>
<view class="course-detail-index">
<view v-if="$store.getters.token || userInfo.uid">
<view class="swiper-box">
<view class="swiper-item">
<image :src="detail.imageArr[0]" mode="aspectFill" :key="index"></image>
</view>
</view>
<view class="course-info-box">
<view class="course-title acea-row row-between-wrapper">
<view>{{detail.courseName}}</view>
<view class="price" v-if="detail.price == 0">公开课</view>
<view class="price" v-if="detail.price > 0 && detail.price < 199">{{detail.price}}</view>
</view>
<view class="tips-box">
<view class="tip-item blue">{{detail.categoryName}}</view>
<view class="tip-item orange">{{detail.levelName}}</view>
</view>
</view>
<view class="course-desc-box content" id="content2">
<view class="title-box acea-row row-middle">
<view class="left-line"></view>
<span>课程表</span>
</view>
<view class="course-card-list">
<view class="course-card-item acea-row row-middle">
<image src="../../static/course-icon5.png"></image>
<view class="label">课程类型</view>
<view class="info">{{detail.courseType == 0 ? '线下课程' : '直播课程'}}</view>
</view>
<view class="course-card-item acea-row row-middle">
<image src="../../static/course-icon1.png"></image>
<view class="label">课程时间</view>
<view class="info">{{detail.courseStartTime}} {{detail.courseEndTime}}</view>
</view>
<view class="course-card-item acea-row row-middle">
<image src="../../static/course-icon2.png"></image>
<view class="label">课程地点</view>
<view class="info">{{detail.coursePlace}}</view>
</view>
<view class="course-card-item acea-row row-middle">
<image src="../../static/course-icon3.png"></image>
<view class="label">签到时间</view>
<view class="info">{{detail.signStartTime}} {{detail.signEndTime}}</view>
</view>
<view class="course-card-item acea-row row-middle">
<image src="../../static/course-icon4.png"></image>
<view class="label">报名截止</view>
<view class="info">{{detail.enterEndTime}}</view>
</view>
</view>
</view>
<view class="sign-btn" @click="signIn">立即签到</view>
</view>
<Authorization v-else />
</view>
</template>
<script>
import Authorization from '@/pages/authorization/index'
import { mapState, mapGetters, mapMutations, mapActions } from 'vuex'
import { getCourseDetail ,enterCourse, signCourse } from '@/api/knowledge';
import { handleQrCode, handleUrlParam, getCurrentPageUrlWithArgs } from '@/utils'
export default{
components: {
Authorization,
},
data(){
return {
courseId: '',
detail: []
}
},
computed:{
userInfo(){
return this.$store.getters["userInfo"]
},
},
onLoad(){
let url = handleQrCode()
if (!url) {
url = handleUrlParam(getCurrentPageUrlWithArgs())
}
console.log(url)
if (url && url.id) {
this.courseId = url.id
}
if(this.userInfo.uid && this.courseId){
this.getDetail()
}
},
methods:{
getDetail(){
uni.showLoading({
title:'正在加载中...'
})
let nowTime = Date.parse(new Date())/1000;
getCourseDetail({id:this.courseId}).then((res)=>{
uni.hideLoading()
res.data.courseIntroduce = res.data.courseIntroduce.replace(/\<img/g, "<img style='width: 100%;'")
this.detail = res.data
let t = res.data.signEndTime.replace(/-/g, '/');
let endTime = Date.parse(new Date(t))/1000
this.times = endTime - nowTime;
this.day = Math.floor(this.times / (60 * 60 * 24));
this.hour = Math.floor(this.times / (60 * 60)) - (this.day * 24);
this.minute = Math.floor(this.times / 60) - (this.day * 24 * 60) - (this.hour * 60);
this.second = Math.floor(this.times) - (this.day * 24 * 60 * 60) - (this.hour * 60 * 60) - (this.minute * 60);
// console.log(this.times)
uni.stopPullDownRefresh()
})
},
signIn(){
signCourse(this.courseId).then((res)=>{
if(res.success){
uni.showModal({
title:'提示!',
content:'签到成功!'
})
} else{
uni.showToast({
title:res.msg,
icon:'none',
duration:5000
})
}
})
},
}
}
</script>
<style lang="less">
.course-detail-index{
width: 100%;
min-height: 100vh;
padding-bottom: 200rpx;
box-sizing: border-box;
}
.swiper-box{
width: 100%;
height: 340rpx;
.swiper-item{
width: 100%;
height: 100%;
image{
width: 100%;
height: 100%;
}
}
swiper{
height: 100%;
.swiper-item{
width: 100%;
height: 100%;
image{
width: 100%;
height: 100%;
}
}
}
}
.course-info-box{
box-sizing: border-box;
padding: 30rpx 30rpx 50rpx;
background: #fff;
.course-title{
font-size: 40rpx;
font-weight: 500;
color: #333333;
line-height: 56rpx;
margin: 0rpx 0 20rpx;
.price{
color: #EA533E;
}
}
.tips-box{
display: flex;
.tip-item{
min-width: 60rpx;
height: 34rpx;
text-align: center;
line-height: 34rpx;
font-size: 24rpx;
padding: 0 5rpx;
border-radius: 5rpx;
}
.blue{
color: #6E85EB;
border: 1px solid #6E85EB;
background: #EDEFF8;
}
.orange{
margin-left: 10rpx;
border: 1px solid #F99C10;
color: #F99C10;
background: #FFEDCC;
}
}
}
.course-desc-box{
width: 100%;
background:#fff;
border-radius: 8rpx;
padding: 0rpx 24rpx 30rpx;
margin-bottom: 20rpx;
}
.course-card-item{
font-size: 26rpx;
margin-bottom: 12rpx;
image{
width: 30rpx;
height: 30rpx;
}
.label{
color: #999999;
margin: 0 24rpx 0 16rpx;
}
.info{
color: #666666;
}
}
.title-box{
font-size: 36rpx;
font-weight: bold;
color: #3C464F;
line-height: 50rpx;
margin-bottom: 20rpx;
.left-line{
width: 6rpx;
height: 32rpx;
background-color: #F99C10;
margin-right: 16rpx;
}
}
.sign-btn{
width: 254rpx;
height: 79rpx;
background: linear-gradient(180deg, #F7D08E 0%, #ECBE71 100%);
border-radius: 12rpx;
text-align: center;
line-height: 79rpx;
color: #fff;
margin: 60rpx auto 0;
}
</style>

219
pages/home/index.vue

@ -5,15 +5,16 @@
<text class="iconfont icon-xiazai5"></text>
搜索商品
</view>
<!-- #ifndef H5 -->
<view class="qr" @click="startQr()" v-if="$deviceType !== 'weixin'">
<image src="../../static/saoyisao-icon.png" />
</view>
<!-- #endif -->
</view>
<view class="banner-box">
<swiper class="swiper-box">
<swiper-item>
<view class="swiper-item">
<image src="https://www.cyjyyjy.com:8081/static/home-banner.png" mode=""></image>
</view>
</swiper-item>
</swiper>
</view>
<!-- 每日一签 -->
<view class="today-fortune-content">
<view class="today-fortune-box">
@ -40,29 +41,12 @@
<view class="fortune">{{ji}}</view>
</view>
</view>
<view class="qiuqian-box" v-if="flag == 1">
<image class="qiuqian-bg" @click="todiandeng()" src="https://qiniu.upload.gznl.top/90a6420b-abd9-41e2-be4f-dcf10fe93bed.png"></image>
<!-- <view class="txt-box acea-row row-between-wrapper">
<view></view>
<view class="qiuqin-btn" @click="todiandeng()">祈福点灯</view>
</view> -->
</view>
</view>
<!-- <view class="fortune-menu-box acea-row row-between">
<view class="fortune-menu-item acea-row row-middle" @click="toWebView()">
<image src="../../static/f-menu1.png" mode=""></image>
<text>周公解梦</text>
</view>
<view class="fortune-menu-item acea-row row-middle">
<image src="../../static/f-menu2.png" mode=""></image>
<text>周易八卦</text>
</view>
<view class="fortune-menu-item acea-row row-middle">
<image src="../../static/f-menu3.png" mode=""></image>
<text>八字财运</text>
</view>
<!-- <view class="notice-box acea-row row-middle" @click="toNoticePage">
<view class="notice-t">公告</view>
<view class="notice">点击下载直播APP在线观看</view>
</view> -->
</view>
<!-- 推荐课程 -->
<view class="recommend-box p30">
<view class="title-box acea-row row-between-wrapper">
@ -71,19 +55,18 @@
</view>
<view class="recommend-list-box acea-row">
<view class="recommend-item" v-for="(item,index) in courseList" :key="index" @click="toCourseDetail(item.id)">
<view class="img-box"><image :src="item.imageArr[0]" mode="aspectFill"></image></view>
<view class="img-box"><image :src="item.coverImg" mode="aspectFill"></image></view>
<view class="course-content">
<view class="course-title line1">{{item.courseName}}</view>
<view class="course-tips-box acea-row">
<view class="course-tip-item blue">{{item.categoryName}}</view>
<view class="course-tip-item yellow">{{item.levelName}}</view>
</view>
<!-- <view class="price" v-if="item.level > 2">{{item.level}}级课程</view>
<view class="price" v-if="item.level == 2">{{item.courseCharge}}</view>
<view class="price colG" v-if="item.chargeType == 0 || item.level == 1">免费</view> -->
<view class="course-address acea-row row-between-wrapper">
<view class="address">{{item.coursePlace}}</view>
<view class="course-time">{{setDate(item.courseStartTime)}}-{{setDate(item.courseEndTime)}}</view>
<view class="course-time">{{item.enterStartTime}}-{{item.enterEndTime}}</view>
</view>
</view>
</view>
@ -104,7 +87,7 @@
<text>{{item.clockTimes}}</text>
</view>
<view class="study-content">
<view class="study-title">{{item.listName}}</view>
<view class="study-title line1">{{item.listName}}</view>
<view class="study-time acea-row-nowrap row-between-wrapper">
<view>{{setDate(item.listStartTime)}}开始</view>
<view>{{item.enterNum}}人已参与</view>
@ -153,7 +136,6 @@ import Menu from '@/components/Menu'
import UniNoticeBar from '@/components/uni-notice-bar/uni-notice-bar'
import Adv from '@/components/sh-adv'
import Groupon from '@/components/sh-groupon.vue'
import Banner from './components/Banner'
import HotCommodity from './components/HotCommodity'
import FirstNewProduct from './components/FirstNewProduct'
@ -175,8 +157,6 @@ const HAS_COUPON_WINDOW = 'has_coupon_window'
export default {
name: 'Index',
components: {
// swiper,
// swiperSlide,
UniNoticeBar,
GoodList,
PromotionGood,
@ -188,7 +168,6 @@ export default {
HotCommodity,
FirstNewProduct,
ProductsRecommended,
// Live,
},
props: {},
data: function() {
@ -245,13 +224,12 @@ export default {
},
customStyle() {
var bgImage = this.bgImage
// var style = `height:${this.CustomBar}px;padding-top:${0}px;background: ${this.bgcolor}`;
var style = `height:${this.CustomBar}px;padding-top:${this.StatusBar}px;background: ${this.bgcolor}`
if (this.bgImage) {
style = `${style}background-image:url(${bgImage});`
}
return style
},
}
},
onLoad: function() {
this.getLocation()
@ -260,18 +238,41 @@ export default {
uni.showLoading({
title:'正在加载中...'
})
// getCanvas()
// .then(res => {})
// .catch(error => {
// this.homeData = JSON.parse(error.data.json)
// })
getBlessingFlag().then((res)=>{
this.flag = res.data
})
this.getData()
getWanniali(this.dateStr2).then((res)=>{
var data = res.data
if(res.success){
this.suici = JSON.parse(data.huangli.suici).join(' ')
this.week = data.week
this.todayDate = data.lunarmonth + data.lunarday
this.year = data.year
this.month = data.month
this.day = data.day
this.ji = JSON.parse(data.huangli.ji).join(' ')
this.yi = JSON.parse(data.huangli.yi).join(' ')
}
})
},
onPullDownRefresh() {
this.getData()
},
methods: {
...mapActions(['getLocation']),
getData(){
var that = this;
getHomeData().then(res => {
uni.hideLoading()
that.logoUrl = res.data.logoUrl
res.data.banner.map(item => (item.bgcolor = item.color || ''))
res.data.lessionDtos.map(item => {
item.enterStartTime = this.setDate(item.enterStartTime)
item.enterEndTime = this.setDate(item.enterEndTime)
})
that.$set(that, 'info', res.data.info)
that.$set(that, 'firstList', res.data.firstList)
that.$set(that, 'bastList', res.data.bastList)
@ -281,31 +282,14 @@ export default {
that.$set(that, 'benefit', res.data.benefit)
that.$set(that, 'couponList', res.data.couponList)
that.$set(that, 'combinationList', res.data.combinationList)
that.$set(that, 'courseList', res.data.cyCourseDtos)
that.$set(that, 'courseList', res.data.lessionDtos)
that.$set(that, 'studyList', res.data.studyLists)
that.$set(that, 'articleList', res.data.articleDtos)
uni.hideLoading()
that.setOpenShare()
})
getWanniali(this.dateStr2).then((res)=>{
console.log(res)
var data = res.data
if(res.success){
this.suici = JSON.parse(data.huangli.suici).join(' ')
this.week = data.week
this.todayDate = data.lunarmonth + data.lunarday
this.year = data.year
this.month = data.month
this.day = data.day
this.ji = JSON.parse(data.huangli.ji).join(' ')
this.yi = JSON.parse(data.huangli.yi).join(' ')
}
uni.stopPullDownRefresh()
})
},
methods: {
...mapActions(['getLocation']),
todiandeng(){
uni.navigateTo({
url:'/pages/diandeng/index'
@ -337,6 +321,11 @@ export default {
imageUrl: this.miniHomeImg,
path: 'pages/home/index?spread=' + uni.getStorageSync('uid'),
}
},
toNoticePage(){
this.$yrouter.push({
path: '/pages/noticePage/index',
})
},
toCourseDetail(id){
this.$yrouter.push({
@ -441,43 +430,6 @@ export default {
})
}
})
// switch (option.pageType) {
// case 'good':
// //
// this.$yrouter.push({
// path: '/pages/shop/GoodsCon/index',
// query: {
// q: res.result,
// },
// })
// break
// case 'group':
// //
// this.$yrouter.push({
// path: '/pages/activity/GroupRule/index',
// query: {
// q: res.result,
// },
// })
// break
// case 'dargain':
// //
// this.$yrouter.push({
// path: '/pages/activity/DargainDetails/index',
// query: {
// q: res.result,
// },
// })
// break
// default:
// //
// this.$yrouter.push({
// path: '/pages/Loading/index',
// query: {},
// })
// break
// }
},
})
},
@ -485,21 +437,18 @@ export default {
this.bgcolor = e
},
},
created: async function() {
// await this.doColorThief();
},
}
</script>
<style scoped lang="less">
.content_box {
background: #F5F6F7;
background: #fff;
}
.colG{
color: #8FB85B !important;
}
.index {
background-color: #F5F6F7;
padding-bottom: 68rpx;
background: #fff !important;
.header{
.qr {
width: 36rpx;
@ -510,7 +459,42 @@ export default {
}
}
}
}
.header-search {
width: 690rpx;
height: 70rpx;
background: #F3F3F3;
color: #999999;
margin: 0 auto;
border-radius: 35rpx;
.search{
width: 100%;
background: #F3F3F3;
color: #999999;
}
}
.notice-box{
width: 690rpx;
height: 66rpx;
margin: 0rpx auto 36rpx;
border-radius: 8px;
background: #F9F9F9;
font-weight: 500;
.notice-t{
width: 120rpx;
height: 100%;
background: #FBE5A8;
color: #FF4224;
text-align: center;
line-height: 66rpx;
border-top-right-radius: 8rpx;
border-bottom-right-radius: 8rpx;
}
.notice{
font-size: 28rpx;
color: #411E04;
margin-left: 20rpx;
}
}
.swiper-item {
height: 100%;
@ -521,7 +505,6 @@ export default {
// #ifdef H5
top: 88rpx;
// #endif
// #ifndef H5
top: 0;
// #endif
@ -534,25 +517,28 @@ export default {
}
}
.banner-box{
width: 100%;
height: 372rpx;
width: 688rpx;
height: 268rpx;
border-radius: 20rpx;
overflow: hidden;
margin: 32rpx auto;
.swiper-box{
height: 100%;
}
}
.today-fortune-content{
width: 100%;
padding: 0 30rpx;
box-sizing: border-box;
margin-bottom: 40rpx;
margin-bottom: 20rpx;
.today-fortune-box{
width: 100%;
background: #fff;
box-sizing: border-box;
padding: 30rpx 40rpx;
border-radius: 20rpx;
box-shadow: 0px 6px 14px 0px rgba(124,124,124,0.08);
box-shadow: 0px 6rpx 14rpx rgba(80, 80, 80, 0.08);
font-size: 24rpx;
position: relative;
top: -24rpx;
}
.date-box{
font-size: 72rpx;
@ -675,7 +661,7 @@ export default {
color: #333;
margin-right: 23rpx;
margin-top: 23rpx;
overflow: hidden;
box-shadow: 0px 2rpx 4rpx rgba(0, 0, 0, 0.16);
image{
width: 334rpx;
height: 216rpx;
@ -683,7 +669,7 @@ export default {
.course-content{
width: 100%;
box-sizing: border-box;
padding:0 20rpx 20rpx;
padding:0 10rpx 20rpx;
}
.course-title{
line-height: 40rpx;
@ -913,15 +899,6 @@ image{
}
}
.header-search {
transition: all linear 0.3s;
background: #fff;
color: #999999;
.search{
border: 2rpx solid #EA533E;
background-color: #fff;
}
}
.cu-bar .action {
display: -webkit-box;

1
pages/knowledge/unlock.vue

@ -86,7 +86,6 @@
...orderInfo,
signType: 'MD5',
success: success => {
console.log(success)
uni.showToast({
title: '支付成功',
icon: 'success',

69
pages/noticePage/index.vue

@ -0,0 +1,69 @@
<template>
<view class="noticepage-box">
<view class="content">
<view class="fz44">亲爱的襌易家人们:</view>
<view class="fz36">国学随时听智慧伴我行</view>
<view class="fz30">襌易课程新增线上直播课程家人们可以在报名线上课程后点击下方图片识别图中二维码下载抱朴书院APP入学上课</view>
<image src="../../static/ercode-download.png" show-menu-by-longpress="true" class="ercode"></image>
<view class="longpress-btn">长按图片保存到相册</view>
</view>
</view>
</template>
<script>
</script>
<style lang="less">
page{
width: 100%;
height: 100%;
}
.noticepage-box{
width: 100%;
height: 100%;
background: #FBD28A;
position: relative;
.content{
width: 670rpx;
height: 988rpx;
background: url(../../static/content-bg.png) no-repeat center;
background-size: cover;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-weight: 500;
padding: 74rpx 38rpx 0 44rpx;
.fz44{
font-size: 44rpx;
line-height: 60rpx;
}
.fz36{
font-size: 36rpx;
line-height: 50rpx;
margin: 10rpx 0;
}
.fz30{
font-size: 30rpx;
line-height: 40rpx;
}
.ercode{
width: 297rpx;
height: 297rpx;
display: block;
margin: 110rpx auto 0;
}
.longpress-btn{
width: 327rpx;
height: 75rpx;
text-align: center;
line-height: 75rpx;
font-size: 32rpx;
color: #fff;
background: linear-gradient(90deg, #F7D08E 0%, #E2B35D 99%);
border-radius: 37rpx;
margin: 32rpx auto;
}
}
}
</style>

31
pages/serviceTeacher/courseDetail.vue

@ -1,19 +1,18 @@
<template>
<view class="index-box">
<view class="swiper-box">
<image :src="detail.imageArr[0]" mode="aspectFill"></image>
<image :src="detail.coverImg" mode="aspectFill"></image>
</view>
<view class="course-detail-box">
<view class="course-name-box acea-row row-middle">
<view class="state-box colY" v-if="detail.courseState == 0">未开始</view>
<view class="state-box colG" v-if="detail.courseState == 1">进行中</view>
<view class="state-box colR" v-if="detail.courseState == 2">已结束</view>
<view class="state-box default" v-if="detail.courseState == 3">已取消</view>
<view class="state-box colY" v-if="detail.state == 0">未开始</view>
<view class="state-box colG" v-if="detail.state == 1">进行中</view>
<view class="state-box colR" v-if="detail.state == 2">已结束</view>
<view class="state-box default" v-if="detail.state == 3">已取消</view>
<view class="name">{{detail.courseName}}</view>
</view>
<view class="desc">
<rich-text class="content" :nodes="detail.courseIntroduce"></rich-text>
</view>
<!-- <view class="desc">{{detail.courseIntroduce}}</view> -->
<rich-text class="desc" :nodes="detail.courseIntroduce"></rich-text>
</view>
<view class="course-active-box">
<view class="title-box acea-row row-middle">活动时间及地点</view>
@ -45,7 +44,7 @@
<view class="member-list-box">
<view class="title-box acea-row row-between">
<view>学员列表{{detail.courseMemberList.length || 0}}</view>
<view class="title-box-r">
<!-- <view class="title-box-r">
<view @click="showSort = !this.showSort" class="acea-row row-middle">
<image src="../../static/sort-icon.png" mode="" style="width: 48rpx;height:48rpx;margin-right: 10rpx;"></image>
<text>排序</text>
@ -54,7 +53,7 @@
<view class="sort-item" :class="sortNum == 1 ? 'bgR' : ''" @click.stop="sortClick(1)">未安排/已安排</view>
<view class="sort-item" :class="sortNum == 2 ? 'bgR' : ''" @click.stop="sortClick(2)">签到情况</view>
</view>
</view>
</view> -->
</view>
<view class="member-list">
<view class="member-item" v-for="(item,index) in detail.courseMemberList" :key="index">
@ -113,6 +112,9 @@
onShow(){
this.getDetail();
},
onPullDownRefresh: function () {
this.getDetail();
},
methods:{
sortClick(type){
this.sortNum = type
@ -137,13 +139,14 @@
getDetail(){
getCourseDetail(this.id).then(res=>{
if(res.success){
this.detail = res.data;
res.data.courseIntroduce = res.data.courseIntroduce.replace(/\<img/g, "<img style='width: 100%;'")
this.detail = res.data
uni.stopPullDownRefresh()
}
})
},
toAddMemeber(){
if(this.detail.courseState == 2 || this.detail.courseState == 3){
if(this.detail.state == 2 || this.detail.state == 3){
uni.showToast({
title:'课程已结束!',
icon:'none'
@ -159,7 +162,7 @@
},
submitPlace(){
let courseMemberList = this.detail.courseMemberList;
if(this.detail.courseState == 2 || this.detail.courseState == 3){
if(this.detail.state == 2 || this.detail.state == 3){
uni.showToast({
title:'课程已结束!',
icon:'none'
@ -230,6 +233,8 @@
font-size: 24rpx;
color: #333;
line-height: 40rpx;
height: 126rpx;
overflow: hidden;
}
}
.course-active-box{

6
pages/serviceTeacher/courseManagement.vue

@ -18,7 +18,7 @@
>
<view class="item-l">
<view class="name line1">{{item.courseName}}</view>
<view class="desc line2">{{item.courseIntroduce}}</view>
<view class="desc line2">{{item.shortIntroduce}}</view>
<view class="time">时间{{(item.courseStartTime.split(' ')[0]).replace(/\-/g, '.')}} {{(item.courseEndTime.split(' ')[0]).replace(/\-/g,'.')}}</view>
<view class="time">地点{{item.coursePlace}}</view>
<view class="time">报名总人数{{item.courseEnterPerson}}</view>
@ -55,8 +55,12 @@
},
methods:{
getList(){
uni.showLoading({
title: '正在加载中...'
})
sellerCourses({type:this.active}).then((res)=>{
this.courseList = res.data
uni.hideLoading()
})
},
tabClick(idx){

5
pages/serviceTeacher/memberDetail.vue

@ -17,12 +17,12 @@
<view class="call-btn" @click="call">拨号</view>
</view>
<view class="tab-box acea-row row-around" :class="isFixedTop?'fixed':''">
<view class="tab-item" :class="active == '0' ? 'tab-item-active' : ''" @click="handelScroll('0')">课程({{detail.cyCourseDtos.length}})</view>
<view class="tab-item" :class="active == '0' ? 'tab-item-active' : ''" @click="handelScroll('0')">课程({{detail.courseDtos.length}})</view>
<view class="tab-item" :class="active == '1' ? 'tab-item-active' : ''" @click="handelScroll('1')">打榜({{detail.studyListDtos.length}})</view>
</view>
<view class="content-box" v-if="active == 0">
<view class="course-list-box">
<view class="course-item" v-for="item in detail.cyCourseDtos" :key="item" @click="toCourseDetail(item.id)">
<view class="course-item" v-for="item in detail.courseDtos" :key="item" @click="toCourseDetail(item.id)">
<view class="top-box acea-row row-between">
<view class="top-l-box">
<view class="name line1">{{item.courseName}}</view>
@ -192,6 +192,7 @@
border-radius: 10px;
margin-bottom: 30rpx;
.name{
width: 460rpx;
font-size: 32rpx;
margin-bottom: 20rpx;
}

2
pages/shop/GoodSearch/index.vue

@ -59,7 +59,7 @@ export default {
this.toSearch(search);
},
toSearch(s) {
this.$yrouter.push({ path: "/pages/shop/GoodsList/index", query: { s } });
this.$yrouter.push({ path:"pagesB/pages/shop/GoodsList/index", query: { s } });
},
getData() {
getSearchKeyword().then(res => {

14
pages/shop/GoodsClass/index.vue

@ -143,6 +143,9 @@ export default {
// document.addEventListener("scroll", this.onScroll, false);
this.loadCategoryData();
},
onPullDownRefresh() {
this.loadCategoryData();
},
methods: {
getTime() {
let hour = new Date().getHours();
@ -189,11 +192,12 @@ export default {
loadCategoryData() {
getCategory().then(res => {
this.category = res.data;
this.$nextTick(() => {
if (this.$yroute.query.id) {
this.activeCateId(this.$yroute.query.id);
}
});
uni.stopPullDownRefresh()
// this.$nextTick(() => {
// if (this.$yroute.query.id) {
// this.activeCateId(this.$yroute.query.id);
// }
// });
});
},
submitForm: function() {

1
pages/shop/GoodsCon/index.vue

@ -33,7 +33,6 @@
<view class="iconfont icon-jiantou"></view>
</view>
</view>
<!-- 运费 -->
<div class="attribute acea-row row-between-wrapper">
<div>

11
pages/study/dabang.vue

@ -79,7 +79,7 @@
<!-- 排行榜 -->
<view class="rank-list" v-if="active == 1">
<view class="rank-item acea-row row-between-wrapper" v-for="(item,index) in detail.memberIntegralRankVos" :key="index">
<view class="acea-row row-middle" style="width: 75%;">
<view class="acea-row row-middle" style="width: 72%;">
<view class="rank-img" v-if="index == 0"><image src="../../static/num1.png" mode=""></image></view>
<view class="rank-img" v-if="index == 1"><image src="../../static/num2.png" mode=""></image></view>
<view class="rank-img" v-if="index == 2"><image src="../../static/num3.png" mode=""></image></view>
@ -89,8 +89,7 @@
</view>
<view class="acea-row row-column row-center-wrapper">
<view>完成打榜{{item.finishNum}}</view>
<!-- <view class="jifen">{{item.integral}}积分</view> -->
<view class="jifen">累计打卡{{item.counts}}</view>
<view class="jifen">累计打榜{{item.counts}}</view>
</view>
</view>
</view>
@ -129,11 +128,15 @@
});
},
getProgress(){
uni.showLoading({
title: "正在加载中..."
})
myProgress(this.studyId).then((res)=>{
if(res.success){
res.data.studyListDto.listStartTime = res.data.studyListDto.listStartTime.split(" ")[0];
res.data.studyListDto.listEndTime = res.data.studyListDto.listEndTime.split(" ")[0]
this.detail = res.data;
uni.hideLoading()
uni.stopPullDownRefresh();
}
})
@ -377,7 +380,7 @@
}
.name{
width: 62%;
width: 60%;
}
.rank-img{
width: 50rpx;

1
pages/study/editDabang.vue

@ -92,6 +92,7 @@
},
}
}
</script>
<style lang="less" scoped>

17
pages/user/User/index.vue

@ -60,8 +60,8 @@
<view class="time">{{item.courseStartTime.split(' ')[0]}}~{{item.courseEndTime.split(' ')[0]}}</view>
</view>
<view class="address-box acea-row row-between row-middle">
<view class="address">地点{{item.coursePlace}}</view>
<view class="btn" @click.stop="startQr()" v-if="item.signState == 2">扫一扫</view>
<view class="address line1">地点{{item.coursePlace}}</view>
<!-- <view class="btn" @click.stop="startQr()" v-if="item.signState == 2">扫一扫</view> -->
<view class="btn" v-if="item.signState == 1">已签到</view>
</view>
</view>
@ -236,14 +236,15 @@ export default {
Authorization,
},
props: {},
data: function() {
data() {
return {
MyMenus: [],
switchActive: false,
isWeixin: false,
isWeixin: false
}
},
computed: mapGetters(['userInfo']),
watch: {},
methods: {
...mapMutations(['updateAuthorizationPage']),
startQr: function() {
@ -537,15 +538,12 @@ export default {
},
onShow() {
if (this.$store.getters.token) {
//
// uni.showLoading({
// title: '',
// })
this.$store.dispatch('getUser', true)
// this.MenuUser()
this.isWeixin = isWeixin()
}
},
onHide() {
console.log('离开用户中心')
this.updateAuthorizationPage(false)
@ -679,6 +677,9 @@ export default {
}
}
.address-box{
.address{
width: calc(100% - 190rpx);
}
.btn{
width: 172rpx;
height: 56rpx;

16
pages/user/feedBack/index.vue

@ -10,6 +10,8 @@
v-model="content"/>
<view class="fontnum">{{fontnum}}/100</view>
</view>
<view class="tips">该反馈功能只做收集会员反馈信息不做解答如有问题需要解答可联系服务老师进行沟通</view>
<view class="tips">您反馈的信息我们会及时跟进感谢您的宝贵建议谢谢</view>
<view class="submit-btn" @click="submitClick()">提交</view>
</view>
</template>
@ -56,11 +58,13 @@
<style lang="less" scoped>
.inp-box{
width: 100%;
width: 690rpx;
background: #fff;
padding: 24rpx;
font-size: 28rpx;
position: relative;
margin: 20px auto 0;
border-radius: 12rpx;
.fontnum{
font-size: 24rpx;
color: #999;
@ -69,6 +73,12 @@
bottom: 16rpx;
}
}
.tips{
padding: 0 32rpx;
font-size: 24rpx;
color: #FF0000;
margin: 12px 0;
}
.submit-btn{
width: 208rpx;
height: 80rpx;
@ -76,7 +86,7 @@
color: #fff;
text-align: center;
line-height: 80rpx;
border-radius: 4rpx;
margin: 30rpx auto;
border-radius: 12rpx;
margin: 60rpx auto;
}
</style>

4
pages/user/myBangdan/index.vue

@ -41,6 +41,9 @@
onLoad(){
this.getList()
},
onPullDownRefresh() {
this.getList()
},
methods:{
getList(){
uni.showLoading({
@ -51,6 +54,7 @@
if(res.success){
this.studyList = res.data
}
uni.stopPullDownRefresh()
})
},
toDabang(id){

4
pages/user/myCourses/index.vue

@ -68,6 +68,9 @@
onLoad(){
this.getList()
},
onPullDownRefresh() {
this.getList()
},
methods:{
getList(){
uni.showLoading({
@ -78,6 +81,7 @@
if(res.success){
this.courseList = res.data
}
uni.stopPullDownRefresh()
})
},
tabClick(idx){

22
pagesB/pages/user/liveWelcome/index.vue

@ -0,0 +1,22 @@
<template>
<view>
<text> 欢迎访问禅易直播间,请从课程页面进入直播 </text>
</view>
</template>
<script>
export default {
data() {
return {
}
},
methods: {
}
}
</script>
<style>
</style>

BIN
static/close-btn.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

BIN
static/content-bg.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

BIN
static/course-icon1.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 615 B

After

Width:  |  Height:  |  Size: 736 B

BIN
static/course-icon2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 629 B

After

Width:  |  Height:  |  Size: 955 B

BIN
static/course-icon3.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 511 B

After

Width:  |  Height:  |  Size: 887 B

BIN
static/course-icon4.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 578 B

After

Width:  |  Height:  |  Size: 752 B

BIN
static/course-icon5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 857 B

BIN
static/ercode-download.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
static/signup-success.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

1
utils/index.js

@ -1118,7 +1118,6 @@ export function chooseImages(callback) {
},
})
}
},
})
}

2
utils/request.js

@ -62,7 +62,9 @@ function baseRequest(options) {
// 如果接口需要登录,携带 token 去请求
options.headers = {
version: "2.0",
...options.headers,
version: '2.0',
}
if (options.login === true) {

Loading…
Cancel
Save