| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575 | <template>	<view class="index">		<u-navbar class="navbar" :is-back="false" :border-bottom="false"  title-color="#333333" back-icon-color="#ffffff">			<view class="slot-wrap">				<image  src="/static/logo2.png"></image>			</view>		</u-navbar>		<view class="swiper">			<swiper :indicator-dots="false" indicator-color="#fff" indicator-active-color="#007AFF" :style="{'height':swiperHeight+'rpx'}" @change="swiperChange" :interval="interval" :duration="duration"  :autoplay="autoplay" :circular="true">				<swiper-item v-for="(swiper,index) in list" :key="index" @click="swiperClick(swiper)">					<image @load="imageLoad" :src="$method.splitImgHost(swiper.adverUrl)" mode="widthFix"></image>				</swiper-item>											</swiper>			<view class="dots">				<view class="dot" :class="{'active':index == current}" v-for="(swiper,index) in list" :key="index"></view>			</view>		</view>		<view class="content">			<!-- <view class="notice" v-if="infoNums">				<view class="notice__content">					<image src="/static/icon/msg_icon1.png" class="icon"></image>					<view class="text">						您有{{infoNums}}条新的通知					</view>					<view class="btn" @click="jumpPage">立即查看</view>				</view>			</view>			<view class="my-list">				<view class="my-list__item my-list__item--course" @click="go('course')">					<image src="../../static/mycourse.png"></image>					<text>我的网课</text>				</view>				<view class="my-list__item my-list__item--bank" @click="go('bank')">					<image src="../../static/mybank.png"></image>					<text>我的题库</text>				</view>			</view> -->				<!-- 日历-->			<!-- <view>				<view class="calendar_card">					<view class="card_box">						<u-row gutter="16">							<u-col span="10" >								<view  style="height:60rpx;">									<text class="t1" v-if="nearByDay !== '' && nearByDay !== null">距离最近一次考试还剩{{nearByDay}}天</text> 								</view>							</u-col>							<u-col offset="1" span="1">								<view @click="jumpPlan"><image src="/static/more.png" class="img_more"></image></view>							</u-col>						</u-row>					</view>					<u-line color="#EEEEEE" />					<view style="width: 100%;display: flex;justify-content:center;margin-top: 20rpx;">						<view v-for="(item, index) in date" :key="index" class="card_date">{{ item }}</view>					</view>					<view style="width: 100%; display: flex; margin-top: 40rpx; flex-wrap: wrap;">						<view v-for="(item, index) in date_num" :key="index" class="date_num">							<view class="items">								{{ item.date }}							</view>							<view v-if="item.color == 0" class="date_num_color0" v-show="item.date > 0">								{{ item.date }}								<view v-if="item.note > 0" class="date_note">{{ item.note }}</view>								<view v-if="item.dot" class="date_dot"></view>							</view>							<view v-if="item.color == 1" class="date_num_color1">								{{ item.date }}								<view v-if="item.note > 0" class="date_note">{{ item.note }}</view>								<view v-if="item.dot" class="date_dot"></view>							</view>							<view v-if="item.color == 2" class="date_num_color2">								{{ item.date }}								<view v-if="item.note > 0" class="date_note">{{ item.note }}</view>								<view v-if="item.dot" class="date_dot"></view>							</view>							<view v-if="item.color == 3" class="date_num_color3">								{{ item.date }}								<view v-if="item.note > 0" class="date_note">{{ item.note }}</view>								<view v-if="item.dot" class="date_dot"></view>							</view>						</view>					</view>					<view style="width: 100%;margin-top: 20rpx;" v-if="workList.length > 0">						<u-row gutter="16">							<u-col span="2" text-align="center">								<view><image src="/static/left.png" class="arr-icon" @click="preveItem"></image></view>							</u-col>							<u-col span="8" text-align="center">								<view class="course_title" @click="jumpGoodsDetail(goodsItem)">{{ goodsItem.goodsName }}</view>							</u-col>							<u-col span="2" text-align="center">								<view><image src="/static/right.png" class="arr-icon" @click="nextItem"></image></view>							</u-col>						</u-row>					</view>				</view>			</view> -->			<!-- <u-tabs class="tabs" :current="tabCurrent" @change="tab" :list="menu" :activeStyle="{fontSize:'36rpx'}" :inactiveStyle="{color:'#EAEEF1',fontSize:'30rpx'}" sticky></u-tabs> -->			<view class="tabs">				<view v-for="(item, index) in menu" :key="index" class="tab_item" :class="{nactive: tabNum == index}" @click="tab(index)">{{ item.name }}</view>			</view>			<view class="filters">				<scroll-view class="scroll_view_H" scroll-x="true" >					<template v-if="tabNum == 0 && courseName.length > 1">						<view v-for="(item, index) in courseName" :key="index" class="filter_item"  @click="changeCou(item.recommendId, index)">							<view class="name" :class="{nactive: couIndex == index}">{{ item.name }}</view>						</view>					</template>					<template v-if="tabNum == 1 && bankName.length > 1">						<view v-for="(item, index) in bankName" :key="index" class="filter_item" @click="changebank(item.recommendId, index)">							<view class="name" :class="{nactive: bankIndex == index}">{{ item.name }}</view>						</view>					</template>				</scroll-view>			</view>			<!-- v-if="tabNum == 0" -->			<!-- <view class="filters">				<scroll-view class="scroll_view_H" scroll-x="true" >										<template >						<view v-for="(item, index) in subjectList" :key="index" class="filter_item"  @click="changeSub(item.id, index)">							<view class="name" :class="{nactive: subIndex == index}">{{ item.subjectName }}</view>						</view>					</template>				</scroll-view>			</view> -->			<view class="course-list" v-show="tabCurrent==0">				<template v-if="list1.length">					<!-- hover-class="none" -->					<view  class="list_item" v-for="(item,index) in list1" :key="index" @click="tobuy(item)">						<view class="course_content">							<view class="c_title">{{item.goodsName}}</view>							<view class="c_downs">								<view class="img">									<image :src="$method.splitImgHost(item.coverUrl, true)"></image>									<view class="time" v-if="item.year">{{item.year?item.year:''}}</view>								</view>								<view class="text">									<view class="desc">										<view class="left">											<text v-if="item.standPrice" class="mon_t">¥ {{toFixed(item.standPrice)}}</text>											<text v-else class="mon_t free">免费</text>											<!-- <text class="sale">/限时优惠</text> -->											<text v-if="item.linePrice" class="sale"> ¥ </text>											<text v-if="item.linePrice" class="price_line"> {{ item.linePrice }}</text>										</view>										<view class="right">											<view v-if="!hideBuyState" class="regiser_row">立即购买</view>										</view>									</view>									<view v-if="item.buyUserNum" class="joins">										<!-- <image class="people" src="/static/index/people.png"></image> -->										<!-- 为0时,不显示 -->										<view class="people">{{ item.buyUserNum }}人参与</view>									</view>								</view>							</view>						</view>										</view>				</template>				<template v-else>					<u-empty text="暂无推荐课程" mode="list" margin-top="100"></u-empty>				</template>			</view>			<view class="course-list" v-show="tabCurrent==1">				<template v-if="list2.length">					<navigator hover-class="none" class="list_item" v-for="(item,index) in list2" :key="index" :url="'/pages2/bank/detail?id='+item.goodsId">						<view class="course_content">							<view class="c_title">{{item.goodsName}}</view>							<view class="c_downs">								<view class="img">									<image :src="$method.splitImgHost(item.coverUrl, true)"></image>									<view class="time" v-if="item.year">{{item.year?item.year:''}}</view>								</view>								<view class="text">									<view class="desc">										<view class="left">											<text v-if="item.standPrice" class="mon_t">¥ {{toFixed(item.standPrice)}}</text>											<text v-else class="mon_t free">免费</text>											<!-- <text class="sale">/限时优惠</text> -->											<text v-if="item.linePrice" class="sale"> ¥ </text>											<text v-if="item.linePrice" class="price_line"> {{ item.linePrice }}</text>										</view>										<view class="right">											<view v-if="!hideBuyState" class="regiser_row">立即购买</view>										</view>									</view>									<view v-if="item.buyUserNum" class="joins">										<!-- 为0时,不显示 -->										<view class="people">{{ item.buyUserNum }}人参与</view>									</view>																	</view>							</view>						</view>					</navigator>				</template>				<template v-else>					<u-empty text="暂无推荐题库" mode="list" margin-top="100"></u-empty>				</template>			</view>		</view>		<view :style="{'opacity':opacitys}" class="officials">			<view class="weixin_official_account">				<image class="off_logo" src="/static/index/official.png"></image>				<view>					<view class="one">关注 “祥粤学校” 公众号</view>					<view class="two">学习提醒、 报考通知不会错过</view>				</view>				<button type="default" class="btn btn-official" >					去关注					<official-account class="official-account" id="official_account"></official-account>				</button>				<view class="close_icon">					<u-icon name="close" class="icon-close" @click="closeOff"></u-icon>				</view>			</view>		</view>			</view></template><script>import { mapGetters, mapActions } from 'vuex';import { socket_url, version} from '@/common/request.js';export default {	data() {		return {			tabNum: 0,			infoNums:0,			list:[],			tabCurrent:0,			date:['日','一','二','三','四','五','六'],			date_num: [],			current:0,			indicatorDots: true,			autoplay: true,			interval: 2000,			duration: 500,			swiperHeight:0,			nearByDay:'', //距离最近一天考试			menu: [{					name: '推荐课程',				}, {					name: '推荐题库',				}],			goodsIndex: 0,			goodsItem: 0,			workList: [],			workTextList: [],			planGoodsList: [],			paramList: [				{					pageNum: 1,					pageSize: 10,					total: 0,					// showStatus: 0,					getUserNum: 1, //是否返回商品购买用户数量 1带 0不带	,会返回个buyUserNum					goodsType:1				},								{					pageNum: 1,					pageSize: 10,					total: 0,					// showStatus: 0,					getUserNum: 1,					goodsType:2				}			],			total1: 0,			total2: 0,			list1: [],			list2: [],			isLogin:false,			isOld:false,			current: 0,			showOfficial: false,			// opacity: 1,			isFollow: null, //是否关注过,不是1就是没关注			curClose: true, // 当天时是否关闭过			courseName: [],			bankName: [],			couIndex: 0,			bankIndex: 0,			courseId: '',			bankId: '',			subjectList: [],			subIndex: 0,			courSubjectId: '',		};	},	async onLoad(option) {		this.isLogin = this.$method.isLogin()		this.dictObj		this.getAdvertising();		if(this.$method.isLogin()) {			try  {				await this.getUserInfo()				// websocket.sokcet(socket_url+this.userInfo.userId+'-'+this.$method.getRandomString(6))				// websocket.sokcet(socket_url+this.userInfo.userAccount)			}catch(err) {							}					} else {			if(uni.getStorageSync('needToLogin')) {				uni.removeStorageSync('needToLogin');				uni.navigateTo({					url:'/pages4/login/login'				})			}		}				this.init()		wx.getSystemInfo({			success: function (res) {				let version = res.SDKVersion				console.log('该版本号为: ', version)			}		})	},	async onShow() {		this.getInfo() // 判断有没有关注公众号				this.isClickOff() //关注公众号,每天最多显示1次;当天学员关闭弹窗后,无需再显示		uni.removeStorageSync('goPath')				// if (this.courseId || this.bankId) {		// 	if (this.tabNum == 0) {		// 		this.list1 = []		// 		this.paramList[0].pageNum = 1		// 		this.list1 = await this.getGoodsList(this.courseId, 0)		// 	} else {		// 		this.list2 = []		// 		this.paramList[1].pageNum = 1		// 		this.list2 = await this.getGoodsList(this.bankId, 1)		// 	}		// } else {			this.list1 = []			this.list2 = []			this.paramList[0].pageNum = 1			this.paramList[1].pageNum = 1			this.courseLists()		// }		if (uni.getStorageSync('updateHome')){			this.init()			uni.removeStorageSync('updateHome'); //消费首页刷新事件		}				this.appCommonConfig({			version		});		if(this.$method.isLogin()){			this.$store.state.allowLoading = false;			this.$api.getinfoAttached().then(res => {				if(res.data.code ===200){					this.infoNums = res.data.data.informSum					const nums = res.data.data.informSum + res.data.data.orderSum + res.data.data.periodSum + res.data.data.planSum + res.data.data.subscribeSum;					this.$store.commit('tabNum', nums);				}			})			this.$store.state.allowLoading = true;		}else{			this.$store.commit('tabNum', 0);		}	},	onShareAppMessage(res) {		return {			title: '中正',			path: `/pages/index/index?inviteCode=` + userInfo == null ? '' : userInfo.userAccount		};	},	async onPullDownRefresh() {		// console.log('下拉this.courseId:', this.courseId)		if (this.tabNum == 0) {			this.list1 = []			this.paramList[0].pageNum = 1			this.list1 = await this.getGoodsList(this.courseId, 0, this.courSubjectId)		} else {			this.list2 = []			this.paramList[1].pageNum = 1			this.list2 = await this.getGoodsList(this.bankId, 1, this.courSubjectId)		}	},	async onReachBottom() {		// console.log('加载this.courseId:', this.courseId, this.list1.length, this.paramList[0].total)		if (this.tabNum == 0) {			if (this.list1.length < this.paramList[0].total) {				this.paramList[0].pageNum++				let list1 = await this.getGoodsList(this.courseId, 0, this.courSubjectId)				this.list1.push(...list1)			}		} else {			if (this.list2.length < this.paramList[1].total) {				this.paramList[1].pageNum++				let list2 = await this.getGoodsList(this.bankId, 1, this.courSubjectId)				this.list1.push(...list2)			}		}			},	computed: { 		...mapGetters(['dictObj','userInfo', 'hideBuyState']),		opacitys() {			const value = [1011,1017,1025,1047,1124].includes(this.$store.state.scene) && this.isLogin && (this.isFollow != 1) && this.curClose ? 1 : 0			return value		},	},	methods: {		...mapActions(['getUserInfo','appCommonConfig']),		tobuy(item) {			if (item.goodsType == 2) {                uni.navigateTo({                    url: '/pages2/bank/detail?id='+item.goodsId                })            } else {				// 视频、直播 /pages5/liveDetail/index                uni.navigateTo({                    url: '/pages3/course/detail?id='+item.goodsId + '&goodsType=' + item.goodsType                })            }		},		getInfo() {			// /app/user/getInfo 登录用户信息 // fromPlat来源平台 1小程序 2PC网站			this.$api.getInfo({ fromPlat: 1 }).then(res => {				if(res.data.code == 200){					this.$store.state.userInfo = res.data.data					this.isFollow = res.data.data.userFollowWx // 不是1就是没关注				}			})		},		// 每天最多显示1次;当天学员关闭弹窗后,无需再显示		isClickOff() {			//当天23:59:59秒 转换成的毫秒数			const end = new Date(new Date(new Date().toLocaleDateString()).getTime()+24*60*60*1000-1).getTime()			const start = new Date().getTime() //当前时间的毫秒数			if(uni.getStorageSync('endTime')){	//首先判断本地有没有存入当天23:59:59秒的毫秒数				if(start > uni.getStorageSync('endTime')){ //当前时间毫秒数大于当天23:59:59秒					this.curClose = true					uni.removeStorageSync('curClose')					uni.removeStorageSync('endTime')				} else {					this.curClose = uni.getStorageSync('curClose') ? false : true				}			}else{				uni.setStorageSync("endTime", end) //存入当天晚上23:59:59秒的毫秒数			}		},		closeOff() {			this.curClose = false			uni.setStorageSync("curClose", '1')		},		toFixed(number) {			if(number > 0) {				return number.toFixed(2)			} else {				return '0.00'			}		},		/**		 * @param {Object} swiper 		 * 点击轮播图		 */		swiperClick(swiper) {			if(swiper.jumpType == 1) { //无跳转				return;			} else if(swiper.jumpType == 2) { //url				let url = encodeURIComponent(swiper.jumpUrl)				uni.navigateTo({					url:'/pages/webview/index?url='+swiper.jumpUrl				})			} else if(swiper.jumpType == 3) { //内部接口				uni.navigateTo({					url:swiper.jumpUrl				})			} else if(swiper.jumpType == 4) { //外部接口				uni.navigateToMiniProgram({				  appId: swiper.remarks,				  path: swiper.jumpUrl,				  extraData: {				    				  },				  success(res) {				    // 打开成功				  },				  fail(err) {					//   console.log(err)				  }				})			}		},		/**		 * banner图片加载完成		 */		imageLoad(e) {			let winW = 750;			let imgW = e.detail.width;			let imgH = e.detail.height;			this.swiperHeight = 750 * imgH / imgW;		},		async getAdvertising() {			await this.advertisingHomeLocation();			await this.advertisingList();		},				getUserSubscribeRecentExam() {			return new Promise(resolve => {				this.$api.getUserSubscribeRecentExam().then(res => {					if(res.data.code == 200) {						if(res.data.data) {							let day = this.$method.timestampToTime(res.data.data.applySiteExamTime,true).replace(/-/g,'/')							let dayTime = day + ' ' + res.data.data.applySiteStartTime							let NowTime = new Date(); //考试时间							let examTime = new Date(dayTime); //考试时间							let t = (examTime.getTime() / 1000) - (NowTime.getTime() / 1000).toFixed(0);							if(t > 0) {								let day = +this.$method.GetRTime(examTime.getTime() / 1000,true)								this.nearByDay = day;							} 																		}												resolve()					}									})			})					},				advertisingHomeLocation() {			return new Promise(resolve => {				this.$api.advertisingHomeLocation().then(res => {					this.interval = res.data.data.intervalTime * 1000					resolve()				})			})		},		advertisingList() {			return new Promise(resolve => {				this.$api.advertisingList({locationId:1}).then(res => {					this.list = res.data.rows;					resolve()				})			})		},		jumpPage(){			this.$navTo.togo('/pages4/msg/index')		},		go(type) {			if (!this.$method.isLogin()) {				if(type == 'course') {											uni.setStorageSync('goPath','course')				} else if(type == 'bank' ) {											uni.setStorageSync('goPath','bank')				}				this.$navTo.togo('/pages4/login/login');			} else {				if(type == 'course') {					uni.navigateTo({						url:'/pages2/wd/class'					})				} else if(type == 'bank') {					this.$api.lockLockStatus({					  action:'bank'					}).then(res => {					  if(res.data.code == 200) { //有其他端在操作,不能学习						  uni.showToast({							  icon:'none',							  title:res.data.msg,							  duration:3000,						  })					  } else if(res.data.code == 500) { //可以学习							uni.navigateTo({								url:'/pages2/wd/question_bank'							})					  }					})				}			}					},		async changeCou(recommendId, index) {			this.couIndex = index			this.courseId = recommendId			this.paramList[0].pageNum = 1			this.list1 = []			let list1 = await this.getGoodsList(recommendId, 0, this.courSubjectId)			this.list1.push(...list1)		},		async changebank(recommendId, index) {			this.bankIndex = index			this.bankId = recommendId			this.paramList[1].pageNum = 1			this.list2 = []			let list2 = await this.getGoodsList(recommendId, 1, this.courSubjectId)			this.list2.push(...list2)		},		async changeSub(subjectId, index) {			// console.log('subjectId, index:', subjectId, index, 'this.courseId:', this.courseId, 'this.bankId:', this.bankId)			this.subIndex = index			this.courSubjectId = subjectId			this.paramList[this.tabNum].pageNum = 1 			if (this.tabNum == 0) {				this.list1 = []				let list1 = await this.getGoodsList(this.courseId, 0, subjectId)				this.list1.push(...list1)			} else {				this.list2 = []				let list2 = await this.getGoodsList(this.bankId, 1, subjectId)				this.list2.push(...list2)			}					},		//课程		 courseLists() {						// var param = this.paramList[0];			// /app/common/goods/list			this.$http({				url: '/app/common/activity/recommend/list',				method: 'get',				data: {					platform: 1,					status: 1				},				noToken: true			}).then(async (res) => {				if (res.data.code == 200) {					let list = res.data.rows || []					//课程					this.courseName = list.filter(x => x.type == 1).sort((a,b) => a.sort - b.sort).map(x => {						return {							name: x.name,							recommendId: x.recommendId						}					});					// console.log('couIndex', this.couIndex, this.courseName)					//题库					this.bankName = list.filter(x => x.type == 2).sort((a,b) => a.sort - b.sort).map(x => {						return {							name: x.name,							recommendId: x.recommendId						}					});					if (this.courseName.length) {						let courseId = ''						if (this.courseId) {							courseId = this.courseId						} else {							courseId = this.courseName[0].recommendId							this.courseId = this.courseName[0].recommendId						}						// console.log('courseId:', courseId)						this.getSubjectList(courseId)						let list1 = await this.getGoodsList(courseId, 0, '')						this.list1.push(...list1)					}										if (this.bankName.length) {						let bankId = ''						if (this.bankId) {							bankId = this.bankId						} else {							bankId = this.bankName[0].recommendId							this.bankId = this.bankName[0].recommendId						}						let list2 = await this.getGoodsList(bankId, 1, '')						this.list2.push(...list2)					}				}			});		},		getGoodsList(recommendId, num, subjectId) {				return new Promise((resolve, reject) => {				let params = {					pageNum: this.paramList[num].pageNum,					pageSize: this.paramList[num].pageSize,					recommendId: recommendId				}				subjectId && (params.subjectId = subjectId)				// console.log('params:', params)				this.$http({					url: `/app/common/activity/recommend/goodsList`,					method: 'get',					data: params,					noToken: true				}).then((res) => {					if (res.data.code == 200) {						this.paramList[num].total = res.data.total						resolve(res.data.rows)					}					})			})			 		},		getSubjectList(recommendId) {			this.$http({				url: `/app/common/activity/recommend/subjectList`,				method: 'get',				data: {					recommendId: recommendId				},				noToken: true			}).then((res) => {				if (res.data.code == 200) {					let data = res.data.data || []					this.subjectList = [{ id: '', subjectName: '全部'}, ...data]					// console.log('this.subjectList:', this.subjectList)				}				})		},		/**		 * @param {Object} item 		 * 跳转课程详情		 */		async jumpGoodsDetail(item){			uni.navigateTo({				url:'/pages2/wd/class'			})		},		/**		 * @param {Object} goodsId 商品id		 * 查询商品重修状态		 */		courseGoodsRebuildStatus(goodsId,gradeId) {			return new Promise(resolve => {				this.$api.courseGoodsRebuildStatus({					goodsId:goodsId,					gradeId:gradeId				}).then(res => {					resolve(res.data.data)				})			})		},		preveItem() {			if (this.goodsIndex > 0) {				this.goodsIndex = this.goodsIndex - 1;				this.planGoodsList =this.workList[this.goodsIndex].goodsVos				this.goodsItem = this.planGoodsList[0];				this.dealRL(this.workList[this.goodsIndex].calendarStudyVo)			}		},		nextItem() {			if (this.goodsIndex < this.workList.length - 1) {				this.goodsIndex = this.goodsIndex + 1;				this.planGoodsList =this.workList[this.goodsIndex].goodsVos				this.goodsItem = this.planGoodsList[0];				this.dealRL(this.workList[this.goodsIndex].calendarStudyVo)			}		},		jumpPlan() {			if (!this.$method.isLogin()) {				this.$navTo.togo('/pages4/login/login');			} else {				this.$navTo.togo('/pages2/plan/index', {});			}		},		async init() {			if (!this.$method.isLogin()) {				//未登录				this.date_num = [];				this.workList = [];				this.planGoodsList = [];				this.initDay();			} else {				this.date_num = [];				this.workList = [];				this.planGoodsList = [];				await this.userPlanSeven();				await this.getUserSubscribeRecentExam();			}					},		getMonDate() {			var d = new Date(),				day = d.getDay(),				date = d.getDate();			if (day == 0) return d;			else d.setDate(date - day);			return d;		},		initDay() {			// d是当前星期一的日期对象			var d = this.getMonDate();			var arr = [];			let date = new Date();			let num = date.getDate();			this.date_num = []			for (var i = 0; i < 7; i++) {				let item = { date: d.getDate() };				item.color = 0;				if (d.getDate() == num) {					item.color = 3;				}				this.date_num.push(item);				d.setDate(d.getDate() + 1);			}		},		dealRL(calendarStudyVo){			let self = this			self.date_num = []			let date = new Date();			let num = date.getDate();			let month = date.getMonth() + 1;			let list = [];			for (let j = 0; j < calendarStudyVo.length; j++) {				let item = calendarStudyVo[j];				list = item.dayStudyList;				for (let i = 0; i < list.length; i++) {					let item = list[i];					item.color = 0;					if (item.date == num) {						item.color = 3;					}					if (item.perform == 1) {						item.color = 1;					}					if (item.perform == 2) {						item.color = 2;					}					item.note = item.studyCourseKnob;					if (item.note > 0) {						item.dot = true;					}					self.date_num.push(item);				}			}					},		userPlanSeven() {			return new Promise(resolve => {				let self = this;				this.$api.userPlanSeven().then(result => {					if (result.data.data && result.data.data.length>0) {												self.workList = result.data.data						self.planGoodsList = self.workList[0].goodsVos;						if (self.planGoodsList != null && self.planGoodsList.length > 0) {							self.goodsItem = self.planGoodsList[0];						}						self.dealRL(result.data.data[0].calendarStudyVo)					} else {						self.initDay();					}										resolve()				});			})					},		swiperChange(e) {			this.current = e.detail.current;		},		tab(e) {			this.tabCurrent = e;			this.tabNum = e			this.paramList[this.tabNum].pageNum = 1 			if (e == 0) {				this.list1 = []			} else {				this.list2 = []			}			this.courseLists()			// let recommendId = e == 0 ? this.courseId : this.bankId			// this.getSubjectList(recommendId)		},		updateHomePlan() {			this.$refs.home.init();		},		beforeSwitch(index) {			let that = this;			if (index == 1) {				this.isClick1 = true;			}			if (index == this.current) {				return false;			}			if (!this.$method.isLogin()) {				if (index == 0 || index == 1) {					return true;				} else {					this.$navTo.togo('/pages4/login/login');					return false;				}			} else {				if (index == 2) {					this.$refs.refMy.init();				}				return true;			}		}	},	};</script><style>page {	background: #eaeef1;}</style><style lang="scss" scoped>@mixin threeDot {	overflow: hidden;	text-overflow:ellipsis; 	white-space: nowrap;}.index {	.navbar {		/deep/ .u-navbar-inner {			margin-right:0!important;		}				.slot-wrap {			width:100%;			display: flex;			align-items: center;			justify-content: center;						image {				width: 178rpx;				height: 31rpx;			}		}	}			.swiper {		width:100%;		position: relative;				.dots {			position:absolute;			left:0;			bottom:8rpx;			width:100%;			display: flex;			justify-content: center;						.dot {				width: 8rpx;				height: 8rpx;				background: #FFFFFF;				border-radius: 50%;				margin:0 4rpx;				transition: all 0.3s;								&.active {					width: 24rpx;					height: 8rpx;					background: #007AFF;					border-radius: 4rpx;				}			}		}		image {			width:100%;		}			}		.content {		overflow: hidden;		padding:0 16rpx;		background: rgba(234, 238, 241, 1);		padding-bottom: 100rpx;		.notice {			background:#fff;			border-radius: 16rpx;			margin-top:32rpx;			overflow: hidden;			&__content {				padding:0 8rpx;				height: 56rpx;				background: linear-gradient(-90deg, rgba(255, 209, 0, 0.3), rgba(255, 255, 255, 0.3));				display: flex;				align-items: center;			}						.icon {				width: 40rpx;				height: 40rpx;				margin-right: 8rpx;			}						.text {				flex:1;				font-size: 24rpx;				color: #333333;				position: relative;			}						.btn {				font-size: 24rpx;				color: #007AFF;			}		}				.date-list {			margin-top:16rpx;			width: 718rpx;			height: 330rpx;			background: #FFFFFF;			border-radius: 16rpx;			padding:18rpx 27rpx;						.title {				font-size: 30rpx;				font-weight: bold;				color: #007AFF;			}						.list {				margin-top:40rpx;				display: flex;				justify-content: space-around;								.item {					.top {						text-align: center;						font-size: 26rpx;						color: rgba(102, 102, 102, 0.6);					}										.bottom {						text-align: center;						line-height: 48rpx;						margin-top:30rpx;						width: 48rpx;						height: 48rpx;						border-radius: 50%;						color:rgba(51, 51, 51, 1);						font-size: 26rpx;						position:relative;												&.red {							color:#FF3B30;						}												&.green {							color:#36C75A;						}												&.blue {							background: #007AFF;							color:#fff;						}												.note {							width: 30rpx;							height: 30rpx;							border: 2rpx solid #FF9500;							border-radius: 50%;							position:absolute;							top:-20rpx;							right:-20rpx;							line-height: 28rpx;							text-align: center;							color:#FF9500;							font-size: 26rpx;						}												.point {							margin:0 auto;							width: 8rpx;							height: 8rpx;							background: #FF9500;							border-radius: 50%;						}					}				}			}						.btns {				margin-top:50rpx;				display: flex;				align-items: center;				justify-content: center;								.left,.right {					width: 40rpx;					height: 40rpx;				}								.center{					width: 440rpx;					height: 56rpx;					background: #FFFFFF;					box-shadow: 0px 0px 9rpx 1rpx rgba(47, 67, 121, 0.1);					border-radius: 28rpx;					color:rgba(255, 149, 0, 1);					line-height: 56rpx;					text-align: center;					font-size: 30rpx;					margin:0 30rpx;				}			}		}				.tabs {			width: 100%;			height: 78rpx;			display: flex;			align-items: center;			justify-content: space-between;			background-color: #F2F7FF;			border-radius: 38rpx;			margin: 34rpx 0rpx 24rpx 0rpx;			padding: 0rpx 5rpx;			.tab_item {				width: 345rpx;				height: 65rpx;				line-height: 65rpx;				font-size: 28rpx;				font-weight: bold;				border-radius: 32rpx;				text-align: center;				color: #333;				&.nactive {					color: #fff;					background-color: #3577E8;				}			}		}				.course-list {			box-shadow: 0px 10rpx 9rpx 1rpx rgba(165, 196, 239, 0.1);						.list_item {                padding: 24rpx;				// height: 278rpx;				background: #FFFFFF;				box-shadow: 0rpx 0rpx 20rpx 1rpx rgba(1,99,235,0.1000);				border-radius: 24rpx;                background:#fff;                margin-bottom: 32rpx;				display: flex;    			align-items: center;                .c_title {                    font-size: 32rpx;                    font-weight: bold;                    margin-bottom: 24rpx;                    font-weight: bold;					color: #222222;                }				.c_downs {					display: flex;				}				.img {					position:relative;					margin-right: 24rpx;					border-radius: 16rpx ;					overflow: hidden;					width: 204rpx;					height: 120rpx;					image {						width:100%;						height:100%;					}										.time {						position:absolute;						bottom:0;						right:0;						width: 80rpx;						height: 32rpx;						background: rgba(1, 25, 45, 0.4);						color:#fff;						text-align: center;						line-height: 32rpx;						font-size: 24rpx;						border-radius: 10rpx 0px 10rpx 0px;					}				}								.text {					width: 440rpx;					position: relative;					display: flex;					flex-direction: column;					justify-content: space-between;					height: 120rpx;					.joins {						.people {							width: 160rpx;							font-size: 20rpx;							color: #999999;							padding: 0rpx 8rpx;							text-align: center;							height: 36rpx;							line-height: 36rpx;							background: #F6F7FB;							border-radius: 4px;						}											}					.desc {						margin-top: 10rpx;						display: flex;						align-items: center;    					justify-content: space-between;						width: 100%;						.left {							flex:1;							color:#333;							font-size: 26rpx;                            .mon_t {                                font-weight: bold;								color: #FC3F3F;								font-size: 36rpx;                            }							.free {								font-size: 24rpx;							}							.sale {								color: #999999;								font-size: 24rpx;								margin-left: 8rpx;							}							.price_line {								color: #999999;								font-size: 24rpx;								text-decoration:line-through;								font-weight: 400;							}						}												.right {							font-size: 24rpx;							font-weight: bold;                            .regiser_row {                                width: 144rpx;                                height: 52rpx;                                line-height: 52rpx;                                text-align: center;                                border-radius: 16rpx;                                background-color: #FC3F3F;                                color: #fff;								font-weight: 500;								font-size: 26rpx;                            }						}					}				}			}		}		.filters {			width: 100%;			padding: 0rpx 16rpx;			margin-bottom: 32rpx;			display: flex;			align-items: center;			.scroll_view_H {				width: 100%;				overflow: hidden;				white-space: nowrap;			}			.filter_item {				display: inline-block;				margin-right: 16rpx;				.name {					font-size: 24rpx;					color: #666666;					padding: 12rpx 16rpx;					height: 56rpx;					text-align: center;					background: #FFFFFF;					border-radius: 8rpx;					&.nactive {						color: #3F8DFD;					}				}			}		}	}		.my-list {		margin:32rpx 0;		display:flex;		justify-content: space-between;		&__item {			width:351rpx;			height:96rpx;			position:relative;			padding:25rpx 0 0 25rpx;				font-size: 32rpx;						&--bank {				text {					position: relative;					z-index: 2;					color:#00998A;				}							}						&--course {				text {					position: relative;					z-index: 2;					color:#0062D9;				}			}						image {				width:100%;				height:100%;				left:0;				top:0;				position:absolute;				z-index: 1;			}		}	}}.date_dot {	width: 6rpx;	height: 6rpx;	background: #ffcc00;	border-radius: 50%;	margin: 0 auto;}.date_note {	border-radius: 50%;	width: 29rpx;	height: 29rpx;	border: 1px solid #ffcc00;	font-size: 18rpx;	color: #ffcc00;	text-align: center;	display: inline-block;	position: absolute;	top: -19rpx;	right: 9rpx;}.circle_num {	border-radius: 50%;	width: 29rpx;	height: 29rpx;	border: 1px solid #ffcc00;	font-size: 18rpx;	color: #ffcc00;	text-align: center;	display: inline-block;	margin: 5rpx;}.date_num {	width: 14%;	text-align: center;	position: relative;	display: inline-block;	margin-top: 20rpx;	.items {		width: 100%;	}}.course_title {	color: #2f4379;	box-shadow: 0rpx 0rpx 9rpx 1rpx rgba(47, 67, 121, 0.1);	border-radius: 28rpx;	width: 100%;	height: 48rpx;	line-height: 48rpx;	overflow: hidden;	text-overflow:ellipsis; 	white-space: nowrap;}.arr-icon {	width: 40rpx;	height: 40rpx;}.date_num_color0 {	color: #32467b;}.date_num_color1 {	color: #34c759;}.date_num_color2 {	color: #ff3b30;}.date_num_color3 {	color: #ffffff;	background-color: #ffcc00;	border-radius: 50%;	width: 40rpx;	height: 40rpx;	display: inline-block;}.card_date {	width: 14%;	text-align: center;	color: #7f8caf;}.calendar_card {	width: 100%;	background: #ffffff;	box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(47, 67, 121, 0.1);	border-radius: 22rpx;	margin-top: 16rpx;	padding-bottom: 15rpx;}.calendar_card .card_box {	height: 60rpx;	line-height: 60rpx;	margin-left: 20rpx;}.calendar_card .t1 {	color: #007AFF;	font-size: 24rpx;}.img_more {	width: 26rpx;	height: 26rpx;}.flex-d {	display: flex;	flex-direction: column;	justify-content: space-between;	height: 100%;}.contentZ {	flex: 1;	overflow-y: auto;	padding-left: 35rpx;	display: flex;	justify-content: space-around;}.contentZ::-webkit-scrollbar {	display: none;}.fots {	height: 100rpx;	display: flex;	align-items: center;	justify-content: space-around;	border-top: 1rpx solid #eee;}.leftBtns {	font-size: 30rpx;	color: #32467b;	font-weight: 500;}.right_Btns {	font-size: 30rpx;	color: #fff;	background-color: #32467b;	border-radius: 24rpx;	height: 60rpx;	line-height: 60rpx;	text-align: center;	padding: 0rpx 23rpx;	box-shadow: 0rpx 0rpx 16rpx 4rpx rgba(145, 156, 178, 0.1);}.lzs {	width: 31%;	margin: 0rpx 1%;	max-width: 31%;}.tylsz{	margin-top: 23rpx;	color: #666;	font-weight: 400;	font-size: 24rpx;}.tylsz:first-child{	text-align: center;}.activeStys{	font-weight: bold;	color: #32467B;}.officialsss {	position: fixed;	left: 0;	bottom: 100rpx;	width: 100%;}.officials {	width:100%;	height: 104rpx;	position:fixed;	bottom: 0;	left: 0;	z-index: 999;	display: flex;	align-items: center;	justify-content: center;}.weixin_official_account {	position: fixed;	bottom: 0;	left: 0;	display: flex;	align-items: center;	// justify-content: space-between;	width: 718rpx;	height: 104rpx;	padding: 0 32rpx;	margin-left: 16rpx;	background: #3A3F54;	border-radius: 16rpx;	.off_logo {		width: 48rpx;		height: 48rpx;		margin-right: 24rpx;	}	.one {		color: #fff;		font-size: 24rpx;		font-weight: 500;	}	.two {		color: #BCBEC7;		font-size: 20rpx;	}	.btn {		position: relative;		top: 0;    	left: 35rpx;		width: 128rpx;		height: 56rpx;		line-height: 56rpx;		padding: 0;		background: linear-gradient(274deg, #408BF6 0%, #40B4F6 100%);		border-radius: 156rpx;		overflow: hidden;		text-align: center;		font-size: 24rpx;		color: #fff;		.official-account {			position: absolute;			z-index: 1000;			right: -9px;			top: -38px;			opacity: 0;		}	}	.close_icon {		width: 40rpx;		height: 40rpx;		background: #FFFFFF;		opacity: 0.2;		display: flex;		align-items: center;		position: absolute;		top: 0;		right: 0;		color: #fff;		border-radius: 0rpx 16rpx;	}	.icon-close {		display: flex;		align-items: center;		justify-content: center;		width: 50rpx;		height: 68rpx;		font-size: 22rpx;		color: #7B8284;	}}</style>
 |