yuanyiming 1 year ago
parent
commit
064fc841aa
43 changed files with 3742 additions and 1610 deletions
  1. 49 16
      App.vue
  2. 1 0
      api/request.js
  3. 147 177
      components/listBlock1/listBlock1.vue
  4. 9 5
      components/statusBar/statusBar.vue
  5. 146 258
      components/teaching-case/teaching-case.vue
  6. 1 1
      main.js
  7. 50 12
      pages.json
  8. 1 1
      pages/Sign/Sign.vue
  9. 59 23
      pages/activityDetail/activityDetail.vue
  10. 473 0
      pages/activityDetailNew/activityDetailNew.vue
  11. 4 5
      pages/activityList/activityList.vue
  12. 1 1
      pages/activityList_2/activityList_2.vue
  13. 27 33
      pages/activityPage/activityPage.vue
  14. 404 0
      pages/activityPageNew/activityPageNew.vue
  15. 116 89
      pages/dy/dy.vue
  16. 227 181
      pages/index/index.vue
  17. 105 50
      pages/jys/jys.vue
  18. 338 33
      pages/login_Wechat/login_Wechat.vue
  19. 60 22
      pages/message/message.vue
  20. 158 70
      pages/messageDy/messageDy.vue
  21. 155 85
      pages/messageSystem/messageSystem.vue
  22. 127 66
      pages/mine/mine.vue
  23. 5 10
      pages/mineActive/mineActive.vue
  24. 571 0
      pages/mineCollNew/mineCollNew.vue
  25. 5 1
      pages/mineCollect/mineCollect.vue
  26. 93 55
      pages/mineEdit/mineEdit.vue
  27. 3 3
      pages/mineRelease/mineRelease.vue
  28. 262 0
      pages/msg/msg.vue
  29. 4 1
      pages/publish/publish.vue
  30. 63 376
      pages/resource/resource.vue
  31. 67 25
      pages/teachingDetail/teachingDetail.vue
  32. 1 1
      pages/teachingList/teachingList.vue
  33. BIN
      static/Dropdown.png
  34. BIN
      static/Frame.png
  35. BIN
      static/Framehhh.png
  36. BIN
      static/Framesss.png
  37. BIN
      static/Framezzz.png
  38. BIN
      static/Rectangle1922.png
  39. BIN
      static/Starhhh.png
  40. BIN
      static/Vectorldang.png
  41. BIN
      static/hezi.png
  42. BIN
      static/union.png
  43. 10 10
      store/index.js

+ 49 - 16
App.vue

@@ -6,25 +6,33 @@
 	import Vue from 'vue'
 	// import app from './utils/api.js'
 	export default {
-		onLaunch: function() {
+		onLaunch() {
+
+			// 获取未读信息
+			// this.getAllMessage()
+
 			// 微信登录
 			wx.login({
-				success({code}) {
-					console.log('code',code);
+				success({
+					code
+				}) {
+					console.log('code', code);
 					uni.request({
 						url:'https://teacherapi.cocorobo.cn/api/pbl/weChatCode',
 						// url: 'http://localhost:7333/api/pbl/weChatCode', //接口地址:前缀+方法中传入的地址
-						method:'GET',
-						data:{codes:code}
-					}).then(res=>{ 
+						method: 'GET',
+						data: {
+							codes: code
+						}
+					}).then(res => {
 						// console.log('微信登录',res);
-						uni.setStorageSync('oId',res.data)
+						uni.setStorageSync('oId', res.data)
 						// uni.getStorageSync('oId')
 					})
 				}
 			})
- 
 
+			// 获取设备信息
 			uni.getSystemInfo({
 				success: function(res) {
 					Vue.prototype.screenHeight = res.screenHeight
@@ -43,10 +51,8 @@
 				}
 			});
 
+			// 微信
 			function thisWechat(statusBarHeight) {
-
-
-
 				// 获取胶囊位置
 				let meunButtonInfo = uni.getMenuButtonBoundingClientRect()
 				// console.log(meunButtonInfo);
@@ -68,12 +74,10 @@
 				Vue.prototype.statusHeight = statusBarHeight
 			};
 
+			// 这个app的
 			function thisApp(statusBarHeight) {
 				// console.log(uni.getSystemInfoSync());
 				// 导航栏高度
-				// let appAllHeight;console.log();
-				// Vue.prototype.appAllHeight=statusBarHeight+44+'px';
-				// console.log(statusBarHeight);
 				let customBarHeight;
 				if (uni.getSystemInfoSync().platform === 'android') {
 
@@ -94,7 +98,33 @@
 			}
 
 		},
-		onShow() {},
+		onShow() {
+
+		},
+		methods: {
+			// 获取未读信息
+			getAllMessage() {
+				this.$request('/selectAllMessage', "POST", {
+					oid: this.$store.state.user.openid
+				}).then(res => {
+					console.log('获取未读信息',res[0][0].msg);
+					let num = res[0][0].msg
+		
+					if (num == 0) {
+						uni.hideTabBarRedDot({
+							index: 3
+						})
+					} else {
+						Vue.prototype.msgnum = num
+						uni.setTabBarBadge({
+							index: 3,
+							text: num.toString()
+						})
+					}
+				})
+			}
+
+		},
 		onLoad() {
 
 		}
@@ -103,13 +133,16 @@
 
 <style>
 	/*每个页面公共css */
-	body,html {
+	body,
+	html {
 		background-color: #f0f2f5;
 		/* font-family: PingFang SC; */
 		height: 100vh;
 		width: 750rpx;
 	}
 
+	
+
 	view {
 		box-sizing: border-box;
 		padding: 0;

+ 1 - 0
api/request.js

@@ -9,6 +9,7 @@ const request = (url = '', method = 'GET', data = {}, header = {   //这里这
 		uni.request({
 			url: 'https://teacherapi.cocorobo.cn/api/pbl' + url, //接口地址:前缀+方法中传入的地址
 			// url: 'http://10.3.13.84:7333/api/pbl' + url, //接口地址:前缀+方法中传入的地址
+			// url: 'http://127.0.0.1:7333/api/pbl' + url, //接口地址:前缀+方法中传入的地址
 			method: method, //请求方法
 			data: data, //传递参数
 			header: header, //自定义头部,和后端商同后编写

+ 147 - 177
components/listBlock1/listBlock1.vue

@@ -1,46 +1,45 @@
 <template>
 	<view class="">
-		<view class="listBlock1" v-for="(i,index) in classList" :key="index+'a'"  @click="gotoDetail" :data-aid="i.acId">
+		<view class="listBlock1" v-for="(i,index) in classList" :key="index+'a'" @click="gotoDetail" :data-aid="i.acId">
 			<view class="img cell-img">
 				<image :src="i.pic" mode="aspectFill"></image>
+				<image class="star" @click.stop="coll" :data-e="i"
+					:src="collArr.includes(i.acId) ? pic_coll2 : pic_coll " mode="aspectFill"></image>
 			</view>
 
 			<view class="right">
-				<view class="">
-					<view class="title">
-						<view class="tag bqZ-font">类型</view>
+				<view class="title">
+					<view class="bqZ-font" :class="i.acshape=='线下活动'?'tag':'tag1'"> {{i.acshape}}</view>
 
-						<text class="btn-font" style="">
-							{{i.acName}}
-						</text>
+					<view class="titTxt btn-font" style="">
+						{{i.acName}}
 					</view>
-					<view class="introduce fwb-font">
+				</view>
+
+				<view class="introduce">
+					<view class="bri">
 						{{ i.brief }}
+						<!-- {{ i.address }} -->
+					</view>
+					<view class="tim">
+						{{ i.create_at }}
 					</view>
-
 				</view>
 
+
 				<view class="operate">
 					<view class="left">
-						<view class="opr" style="padding-right: 25rpx" @click.stop="coll" :data-e="i">
-							<view class="icon">
-								<image :src="collArr.includes(i.acId) ? pic_coll2 : pic_coll "
-									style="width: 28rpx; height: 26rpx" mode="aspectFill"></image>
-							</view>
-							<text class="fz-font">收藏</text>
-						</view>
-						<view class="opr" @click.stop="subaaa" :data-e="i">
-							<view class="icon">
-								<image :src="subArr.includes(i.acId) ? pic_sub2 : pic_sub "
-									style="width: 22rpx; height: 26rpx" mode="aspectFill"></image>
-							</view>
-							<text class="fz-font">订阅</text>
+						<view class="add fz-font">已报名{{i.bnum}}/{{i.pers}}人</view>
+					</view>
+					<view class="Oright" v-if="!indexId" @click.stop="gotoLink" :data-link="i.link">
+						<view class="text">查看详情</view>
+						<view class="arrow">
+							<image src="https://teacherapi.cocorobo.cn/teaching-file/static/mine/arrow-right-blue.png"
+								mode="aspectFill"></image>
 						</view>
 					</view>
-					<view class="">
-						<button class="btn sBtn-font"  @click="join" :data-index="index">
-							立即参与
-						</button>
+					<view class="Oright" v-if="indexId">
+						<view class="mon">¥<text style="font-size: 40rpx;">{{i.cost}}</text> </view>
 					</view>
 				</view>
 			</view>
@@ -61,17 +60,21 @@
 			},
 			indexId: {
 				type: Number,
+				default () {
+					return 0;
+				},
 			},
 		},
 		// props:['classList'],
 		data() {
 			return {
+				// 收藏list
 				collArr: [],
-				subArr: [],
-				pic_coll: 'https://teacherapi.cocorobo.cn/teaching-file/static/yym/Star 1 (Stroke).png',
-				pic_coll2: 'https://teacherapi.cocorobo.cn/teaching-file/static//mine/Collect_yellow.png',
-				pic_sub: 'https://teacherapi.cocorobo.cn/teaching-file/static/yym/Vector (Stroke).png',
-				pic_sub2: '../../static/mine/dingyue_blue.png'
+				// subArr: [],
+				pic_coll: 'https://teacherapi.cocorobo.cn/teaching-file/static/Stara.png',
+				pic_coll2: 'https://teacherapi.cocorobo.cn/teaching-file/static/mine/Collect_yellow.png',
+				// pic_sub: 'https://teacherapi.cocorobo.cn/teaching-file/static/yym/Vector (Stroke).png',
+				// pic_sub2: '../../static/mine/dingyue_blue.png'
 			};
 		},
 
@@ -88,6 +91,8 @@
 				// return	console.log(event);
 				let aId = event.currentTarget.dataset.e.acId
 
+				// let type= event.currentTarget.dataset.e.type
+
 				//判断是否收藏
 				let iscoll = null
 
@@ -105,100 +110,51 @@
 					if (iscoll) {
 						console.log('执行删除');
 						this.$request('/deleteOperator', 'POST', data).then(res => {
-							console.log(res);
 							this.getdata()
 						})
 					} else {
 						console.log('执行添加');
 						this.$request('/insertOperator', 'POST', data).then(res => {
-							console.log(res);
 							this.getdata()
 						})
 					}
 				})
 			},
 
-			// 订阅事件
-			subaaa(event) {
-				const value = this.$store.state.user.openid;
-				if (value == '') {
-					uni.navigateTo({
-						url: "/pages/login_Wechat/login_Wechat",
-					});
-					return
-				}
-				let aId = event.currentTarget.dataset.e.acId
-
-				//判断是否订阅
-				let iscoll = null
 
-				// 查询是否订阅过
-				let data = {
-					acid: aId,
-					oid: this.$store.state.user.openid, //用户id
-					ty: 1
-				}
-				this.$request('/selectOneOperator', 'POST', data).then(res => {
-					// console.log('查询是否订阅过',res);
-					res[0].length ? iscoll = true : iscoll = false;
+			// 跳转到详情页
+			gotoDetail(e) {
+				let aid = e.currentTarget.dataset.aid;
+				const value = this.$store.state.user.openid;
+				if (value == '') return this.goLog()
 
-					// iscoll为true表示已经订阅过,执行删除  为true则订阅
-					if (iscoll) {
-						console.log('执行删除');
-						this.$request('/deleteOperator', 'POST', data).then(res => {
-							console.log(res);
-							this.getSub()
-						})
-					} else {
-						console.log('执行添加');
-						this.$request('/insertOperator', 'POST', data).then(res => {
-							console.log(res);
-							this.getSub()
-						})
-					}
-				})
+				uni.navigateTo({
+					url: `/pages/activityDetailNew/activityDetailNew?acId=${aid}`
+					// url:'/pages/activityDetailNew/activityDetailNew'
+					// url: `/pages/teachingDetail?acId=${aid}`
+				});
 			},
-
-			join(e) {
-				let num = e.currentTarget.dataset['index'];
-
+			
+			//跳转到第三方链接
+			gotoLink(e){
 				const value = this.$store.state.user.openid;
 				if (value == '') {
 					uni.navigateTo({
 						url: "/pages/login_Wechat/login_Wechat",
 					});
-					return 1;
-				} else {
-					//推荐课程
-					const urls = [
-						"https://szptxnjys.yuketang.cn/pro/portal/about/szpt-99Q00351166273N",
-						"https://szptxnjys.yuketang.cn/pro/portal/about/szpt-99Q00330324841N",
-						"https://szptxnjys.yuketang.cn/pro/portal/about/szpt-99Q00231455802N",
-						"https://szptxnjys.yuketang.cn/pro/portal/about/szpt-99Q00406339964N",
-					];
-					if (num > 3) return uni.showToast({
-						title: '暂时无第三方链接',
-						icon: 'none'
-					})
-
-					uni.navigateTo({
-						url: "/pages/skipone/skipone?url=" + encodeURIComponent(urls[num]),
-					});
+					return
 				}
-			},
-			// 跳转到详情页
-			gotoDetail(e){
-				let aid = e.currentTarget.dataset.aid;
-				const value = this.$store.state.user.openid;
-				if (value == '') return this.goLog()
-				
+				// return console.log('aaaaaa', e.currentTarget.dataset);
+				let link = e.currentTarget.dataset.link;
 				uni.navigateTo({
-					url: `/pages/teachingDetail/teachingDetail?acId=${aid}`
+					url: "/pages/skipone/skipone?url=" + encodeURIComponent(link),
 				});
 			},
+			
 			// 获取收藏事件
 			getdata() {
-				// console.log(this.$store.state.user.openid);
+				// 触发收藏事件
+				console.log('触发收藏事件');
 				let data = {
 					oid: this.$store.state.user.openid, //用户id
 					type: 0
@@ -211,44 +167,44 @@
 					res[0].forEach(i => {
 						this.collArr.push(i.acId)
 					})
-
+					// console.log(this.collArr);
 				})
 			},
-			// 获取订阅事件
-			getSub() {
-
-				// console.log(this.$store.state.user.openid);
-				let data = {
-					oid: this.$store.state.user.openid, //用户id
-					type: 1
-				}
-				this.$request('/selectOperator', 'POST', data).then(res => {
-					// console.log('获取订阅', res);
-					// 每次调用前清零,防止push叠加错误
-					this.subArr = []
-					// 将acid遍历到collArr中
-					res[0].forEach(i => {
-						this.subArr.push(i.acId)
-					})
-
+			goLog() {
+				uni.showToast({
+					title:'请登录',
+					icon:'none'
 				})
-			}
+				uni.navigateTo({
+					url: "/pages/login_Wechat/login_Wechat",
+				});
+			},
 		},
 
 	}
 </script>
 
-<style lang="scss">
+<style lang="scss" scoped>
 	.listBlock1 {
 		display: flex;
 		justify-content: space-between;
-		// margin-bottom: 10px;
 		background-color: #ffffff;
 		padding: 20rpx 30rpx;
+		width: 750rpx;
 
 		.img {
 			width: 160rpx;
 			height: 160rpx;
+			flex-shrink: 0;
+			position: relative;
+
+			.star {
+				position: absolute;
+				right: 10rpx;
+				top: 10rpx;
+				width: 30rpx;
+				height: 30rpx;
+			}
 
 			image {
 				width: 100%;
@@ -260,101 +216,115 @@
 		.right {
 			padding-left: 20rpx;
 			flex: 1;
-			// height: 300px;
-			width: 100rpx;
 			display: flex;
 			flex-direction: column;
-			// align-content: flex-end ;
 			justify-content: space-between;
-			// align-content: space-between;
 
 			.title {
 				display: flex;
+				width: 500rpx;
 				justify-content: flex-start;
 				align-items: center;
-				margin-bottom: 15rpx;
-
-				// margin-bottom: 10rpx;
-
-
-				text {
+				.titTxt{
+					flex: 1;
 					font-weight: bold;
 					overflow: hidden;
 					text-overflow: ellipsis;
 					white-space: nowrap;
 				}
+				
 			}
 
 			.introduce {
-				// font-size: 28rpx;
-				color: #a7a7a7;
-				// padding: 20rpx 0;
-				// width: 560rpx;
-				height: 40rpx;
-				overflow: hidden;
-				text-overflow: ellipsis;
-				white-space: nowrap;
+				font-size: 24rpx;
+				display: flex;
+				justify-content: space-between;
+
+				.bri {
+					width: 250rpx;
+					color: #a7a7a7;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					white-space: nowrap;
+				}
+
+				.tim {
+					color: #a7a7a7;
+				}
 			}
 
 			.operate {
 				display: flex;
 				justify-content: space-between;
-				// align-items: baseline;
-				align-items: flex-end;
 
 				.left {
 					display: flex;
-					// justify-content: space-between;
-					// align-items: center;
 					align-items: baseline;
+					position: relative;
+					width: 60%;
+					.add {
+						position: absolute;
+						bottom: 0;
+						left: 0;
+						width: 100%;
+						padding-left: 3rpx;
+						color: rgba(0, 0, 0, 0.6) !important;
+					}
+				}
+
+				.Oright {
+					// width: 80px;
+					display: flex;
+					justify-content: flex-end;
+					align-items: center;
+
+					.mon {
+						color: rgba(246, 135, 23, 1);
+						font-weight: 700;
+						font-size: 34rpx;
+					}
 
-					// width: 200rpx;
-					.opr {
+					.text {
+						font-size: 24rpx;
+						color: #3081E8;
+					}
+
+					.arrow {
 						display: flex;
-						align-items: center;
+						justify-content: center;
+						margin-top: 5rpx;
 
-						.icon {
+						image {
 							width: 32rpx;
 							height: 32rpx;
-							display: flex;
-							justify-content: center;
-							align-items: center;
-						}
-
-						text {
-							padding-left: 3rpx;
-							color: #666666;
 						}
 					}
-
-
-
-
 				}
 
-				.btn {
-					z-index: 5;
-					border: none;
-					padding: 0;
-					text-align: center;
-					// padding: 8px, 24px, 8px, 24px;
-					background-color: rgba(48, 129, 232, 1);
-					color: #fff;
-					border-radius: 100rpx;
-					float: right;
-					width: 144rpx;
-					height: 48rpx;
-					line-height: 48rpx;
-					letter-spacing: 1px;
-				}
+
 			}
 		}
 
 		.tag {
-			border: 1px #00b2b6 solid;
+			border: 1px rgba(0, 178, 182, 1) solid;
+			flex-shrink: 0;
+			letter-spacing: 2rpx;
+			width: 104rpx;
+			height: 32rpx;
+			display: flex;
+			white-space: nowrap;
+			justify-content: center;
+			align-items: center;
+			border-radius: 4rpx;
+			margin-right: 10rpx;
+			color:rgba(0, 178, 182, 1);
+			line-height: 32rpx;
+		}
+		.tag1 {
+			border: 1px rgba(0, 86, 168, 1) solid;
 			flex-shrink: 0;
 			letter-spacing: 2rpx;
-			width: 64rpx;
+			width: 104rpx;
 			height: 32rpx;
 			display: flex;
 			white-space: nowrap;
@@ -362,7 +332,7 @@
 			align-items: center;
 			border-radius: 4rpx;
 			margin-right: 10rpx;
-			color: #00b2b6;
+			color: rgba(0, 86, 168, 1);
 			line-height: 32rpx;
 		}
 	}

+ 9 - 5
components/statusBar/statusBar.vue

@@ -34,7 +34,7 @@
 				default(){
 					return{
 						title:'',
-						btn:1  //判断是否显示返回按钮
+						btn:1  //判断是否显示返回按钮 0不显示 1显示 2返回首页
 					}
 					
 				}
@@ -52,13 +52,17 @@
 		},
 		methods:{
 			backIndex(){
-				uni.navigateBack({
-					url:this.item.btn
-				})
+				if(this.item.btn==2){
+					uni.switchTab({
+						url:'/pages/index/index'
+					})
+					return
+				}
+				uni.navigateBack()
 			}
 		},
 		onLoad() {
-			console.log(this.meunButtonInfo);
+			// console.log(this.meunButtonInfo);
 		}
 	}
 </script>

+ 146 - 258
components/teaching-case/teaching-case.vue

@@ -1,307 +1,195 @@
 <template>
-	<view>
-
-
-		<!-- <view class="teaching_case" v-for="(i,index) in classList" :key="index + 'a'" @click="" :data-index="index">
-			<view class="img cell-img">
-				<image :src="i.img" v-if="!item.btn" mode="aspectFill"></image>
-			</view>
-
-			<view class="right">
-				<view class="">
-					<view class="title">
-						<view v-if="!item.btn" class="tag bqZ-font">类型</view>
-
-						<text class="btn-font" v-if="!item.btn" style="">{{i.className}}</text>
-					</view>
-
-					<view v-if="!item.btn" class="introduce fwb-font">
-						{{ i.intro }}
-					</view>
-
-				</view>
-
-				<view class="operate">
-					<view class="left">
-						<view class="opr" style="padding-right: 25rpx">
-							<view class="icon">
-								<image src="http://43.139.158.220:5007/img/static/yym/Star 1 (Stroke).png"
-									style="width: 28rpx; height: 26rpx" mode="aspectFill"></image>
-							</view>
-							<text class="fz-font">收藏</text>
-						</view>
-						<view class="opr">
-							<view class="icon">
-								<image src="http://43.139.158.220:5007/img/static/yym/Vector (Stroke).png"
-									style="width: 22rpx; height: 26rpx" mode="aspectFill"></image>
-							</view>
-							<text class="fz-font">订阅</text>
-						</view>
-					</view>
-					<view class="">
-						<button class="btn sBtn-font" disableEventPropagation="true" @click.stop="join">
-							立即参与
-						</button>
-					</view>
-				</view>
-
-			</view>
-		</view> -->
-
-
-
-
-		<!-- 活动列表 -->
-		<view class="teaching_case" v-for="(i,index) in activeList" @click="gotoACdetail" :data-aid="i.acId"
-			:key="index + 'b'">
-
-
-			<view class="img cell-img">
-				<image :src="i.pic" mode="aspectFill"></image>
-			</view>
-
-			<view class="right">
-				<view class="">
-					<view class="title">
-						<view class="tag bqZ-font">类型</view>
-
-
-						<text class="three-font">{{ i.acName }}</text>
-					</view>
-
-
-					<view class="introduce fwb-font">
-						{{ i.brief }}
-					</view>
-				</view>
-
-				<view class="operate">
-					<view class="left">
-						<view class="price num-font"><text class="three-font">¥</text>{{ i.cost }}</view>
-						<view class="pernum fz-font">已报名{{ i.pers }}人</view>
-					</view>
-					<view class="">
-						<button class="btn sBtn-font" @click.stop="actApply" :data-index="index">立即报名</button>
-					</view>
-				</view>
+	<view class="teaching_case">
+		<view class="cont" @click="gotoWeb" v-for="(item, index) in acList" :key="index"
+			:data-kid="item.href">
+			<image class="star" :src="collArr.includes(item.cid) ? pic_coll2 : pic_coll " @click.stop="coll" :data-e="item"
+				mode="aspectFill"></image>
+			<image class="img" :src="item.img" mode="aspectFill" />
+			<view class="tit btn-font">{{ item.ctit }}</view>
+			<view class="teacher fz-font">{{ item.school }}</view>
+			<view class="mon" v-if="indexId">
+				¥<text class="cost"></text>
 			</view>
 		</view>
-
-		<!-- <view class="" style="height: 50rpx;width: 100%;background-color: #ffffff;"></view> -->
 	</view>
 </template>
 <script>
 	export default {
 		name: "teaching-case",
 		props: {
-			item: {
-				type: Object,
+			acList: {
+				type: Array,
 				default () {
-					return {
-						btn: 0, //0教研列表 1活动列表
-						btn_2: 0 //0 activityList 0 activityList_2 1 liveactivityList 2
-					};
+					return [];
 				},
 			},
-			// classList: {
-			// 	type: Array,
-			// 	default () {
-			// 		return [];
-			// 	},
-			// },
-			activeList: {
-				type: Array,
+			indexId: {
+				type: Number,
 				default () {
-					return [];
+					return 0;
 				},
 			},
 		},
 		data() {
-			return {};
+			return {
+				// 收藏列表
+				collArr: [],
+				// 收藏星星
+				pic_coll: 'https://teacherapi.cocorobo.cn/teaching-file/static/Stara.png',
+				pic_coll2: 'https://teacherapi.cocorobo.cn/teaching-file/static/mine/Collect_yellow.png',
+			};
 		},
 		methods: {
-		// 跳转活动详情页
-			gotoACdetail(e) {
-				// console.log(e.currentTarget.dataset);
-				let aid=e.currentTarget.dataset.aid
+			// 收藏事件
+			coll(event) {
 				const value = this.$store.state.user.openid;
-				if (value == '') return uni.navigateTo({url: "/pages/login_Wechat/login_Wechat"});
-				
-				uni.navigateTo({
-					url: `/pages/activityDetail/activityDetail?acId=${aid}`,
-				});
+				if (value == '') {
+					uni.navigateTo({
+						url: "/pages/login_Wechat/login_Wechat",
+					});
+					return
+				}
+				// return	console.log(event);
+				let cId = event.currentTarget.dataset.e.cid
+
+				// let type= event.currentTarget.dataset.e.type
+
+				//判断是否收藏
+				let iscoll = null
+
+				// 查询是否收藏过
+				let data = {
+					cid: cId,
+					oid: this.$store.state.user.openid, //用户id
+					ty: 1
+				}
+				this.$request('/selectOneOperator', 'POST', data).then(res => {
+					// console.log('查询是否收藏过',res);
+					res[0].length ? iscoll = true : iscoll = false;
+
+					// iscoll为true表示已经收藏过,执行删除  为true则收藏
+					if (iscoll) {
+						console.log('执行删除');
+						this.$request('/deleteOperator', 'POST', data).then(res => {
+							this.getdata()
+						})
+					} else {
+						console.log('执行添加');
+						this.$request('/insertOperator', 'POST', data).then(res => {
+							this.getdata()
+						})
+					}
+				})
 			},
-			
-			// 跳转外部链接
-			actApply(e) {
-				let num= e.currentTarget.dataset['index'];
+
+			// 收藏
+			// coll() {
+			// 	uni.showToast({
+			// 		title:'暂时无法收藏哦',
+			// 		icon:"none"
+			// 	})
+			// },
+			// 查看课程内容
+			gotoWeb(e) {
 				const value = this.$store.state.user.openid;
 				if (value == '') {
 					uni.navigateTo({
 						url: "/pages/login_Wechat/login_Wechat",
 					});
-					return 1;
-				} else {
-						//常规教研活动
-						const urls = [
-							"https://szptxnjys.yuketang.cn/pro/portal/announcementdetail/1183",
-							"https://szptxnjys.yuketang.cn/pro/portal/announcementdetail/1210",
-							"https://szptxnjys.yuketang.cn/pro/portal/announcementdetail/1211",
-							"https://szptxnjys.yuketang.cn/pro/portal/announcementdetail/1209",
-						];
-						console.log('数据呢',num);
-						if(num>3) return uni.showToast({title:'暂时无第三方链接',icon:'none'})
-						uni.navigateTo({
-								url: "/pages/skipone/skipone?url=" + encodeURIComponent(urls[num]),
-						});
+					return
+				}
+				// return console.log('aaaaaa', e.currentTarget.dataset);
+				let acid = e.currentTarget.dataset.kid
+				uni.navigateTo({
+					url: "/pages/skipone/skipone?url=" + encodeURIComponent(acid),
+				});
+
+			},
+			// 获取课程收藏事件
+			getdata() {
+				// 触发收藏事件
+				// console.log('触发收藏事件');
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					type: 1
 				}
+				this.$request('/selectOperatorTech', 'POST', data).then(res => {
+					console.log('获取收藏', res);
+					// 每次调用前清零,防止push叠加错误
+					this.collArr = []
+					// 将acid遍历到collArr中
+					res[0].forEach(i => {
+						this.collArr.push(i.cid)
+					})
+					// console.log(this.collArr);
+				})
 			},
 		},
 	};
 </script>
 
-<style lang="scss">
-	.AClist {
-		display: flex;
-		justify-content: space-between;
-		background-color: #ffffff;
-		padding: 20rpx 30rpx;
-	}
-
-
+<style lang="scss" scoped>
 	.teaching_case {
+		width: 100%;
+		padding: 10px 30rpx;
 		display: flex;
+		flex-wrap: wrap;
 		justify-content: space-between;
-		// margin-bottom: 10px;
-		background-color: #ffffff;
-		padding: 20rpx 30rpx;
-
-		// padding-bottom: 50rpx;
-		.img {
-			width: 160rpx;
-			height: 160rpx;
-
-			image {
-				width: 100%;
-				height: 100%;
-				border-radius: 10rpx;
+		margin-bottom: 50px;
+
+		// background-color: #000;
+		.cont {
+			background-color: #ffffff;
+			width: 332rpx;
+			padding: 20rpx 15rpx;
+			border-radius: 10px;
+			margin-bottom: 20rpx;
+			position: relative;
+
+			.star {
+				position: absolute;
+				right: 30rpx;
+				top: 30rpx;
+				width: 30rpx;
+				height: 30rpx;
 			}
-		}
-
-		.right {
-			padding-left: 20rpx;
-			flex: 1;
-			// height: 300px;
-			width: 100rpx;
-			display: flex;
-			flex-direction: column;
-			// align-content: flex-end ;
-			justify-content: space-between;
-			// align-content: space-between;
 
-			.title {
-				display: flex;
-				justify-content: flex-start;
-				align-items: center;
-				margin-bottom: 15rpx;
-
-				// margin-bottom: 10rpx;
-				.tag {
-					border: 1px #00b2b6 solid;
-					flex-shrink: 0;
-					letter-spacing: 2rpx;
-					width: 64rpx;
-					height: 32rpx;
-					display: flex;
-					white-space: nowrap;
-					justify-content: center;
-					align-items: center;
-					border-radius: 4rpx;
-					margin-right: 10rpx;
-					color: #00b2b6;
-					line-height: 32rpx;
-				}
-
-				text {
-					font-weight: bold;
-					overflow: hidden;
-					text-overflow: ellipsis;
-					white-space: nowrap;
-				}
+			.img {
+				width: 300rpx;
+				height: 170rpx;
+				border-radius: 10rpx;
 			}
 
-			.introduce {
-				// font-size: 28rpx;
-				color: #a7a7a7;
-				// padding: 20rpx 0;
-				// width: 560rpx;
-				height: 40rpx;
-				overflow: hidden;
+			.tit {
+				width: 257rpx;
+				margin: 10rpx 0;
+				font-weight: bold;
+				white-space: normal;
+				display: -webkit-box;
+				word-break: break-all;
 				text-overflow: ellipsis;
-				white-space: nowrap;
+				overflow: hidden;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 2;
+				/*设置 需要显示的行数*/
 			}
 
-			.operate {
-				display: flex;
-				justify-content: space-between;
-				// align-items: baseline;
-				align-items: flex-end;
-
-				.left {
-					display: flex;
-					// justify-content: space-between;
-					// align-items: center;
-					align-items: baseline;
-
-					// width: 200rpx;
-					.opr {
-						display: flex;
-						align-items: center;
-
-						.icon {
-							width: 32rpx;
-							height: 32rpx;
-							display: flex;
-							justify-content: center;
-							align-items: center;
-						}
-
-						text {
-							padding-left: 3rpx;
-							color: #666666;
-						}
-					}
-
-					.pernum {
-						color: #666666;
-
-						// font-size: 30rpx;
-					}
+			.teacher {
+				color: #999999;
+			}
 
-					.price {
-						// font-size: 40rpx;
-						font-weight: bold;
-						color: #f8a551;
-						padding-right: 10rpx;
-					}
-				}
+			.mon {
+				font-size: 34rpx;
+				color: rgba(246, 135, 23, 1);
+				font-weight: 34rpx;
+				margin-top: 10rpx;
 
-				.btn {
-					z-index: 5;
-					border: none;
-					padding: 0;
-					text-align: center;
-					// padding: 8px, 24px, 8px, 24px;
-					background-color: rgba(48, 129, 232, 1);
-					color: #fff;
-					border-radius: 100rpx;
-					float: right;
-					width: 144rpx;
-					height: 48rpx;
-					line-height: 48rpx;
-					letter-spacing: 1px;
+				.cost {
+					font-weight: 40rpx;
 				}
 			}
 		}
+
+		// }
 	}
 </style>

+ 1 - 1
main.js

@@ -5,7 +5,7 @@ import Vue from 'vue'
 import './uni.promisify.adaptor'
 Vue.config.productionTip = false
 
-
+Vue.mixin(App)  //全局混入
 
 import request from './api/request.js'
 Vue.prototype.$request=request

+ 50 - 12
pages.json

@@ -229,7 +229,43 @@
 			}
 
 		}
-	],
+	    ,{
+            "path" : "pages/activityPageNew/activityPageNew",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/msg/msg",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/activityDetailNew/activityDetailNew",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+        ,{
+            "path" : "pages/mineCollNew/mineCollNew",
+            "style" :                                                                                    
+            {
+                "navigationBarTitleText": "",
+                "enablePullDownRefresh": false
+            }
+            
+        }
+    ],
 	"tabBar": {
 		// "custom": true,
 		"backgroundColor": "#ffffff",
@@ -244,23 +280,25 @@
 				"selectedIconPath": "static/tabbar/Fill 2.png"
 			},
 			{
-				"pagePath": "pages/resource/resource",
-				"text": "资源库",
-				"iconPath": "static/tabbar/zyk.png",
-				"selectedIconPath": "static/tabbar/zyk2.png"
-			},
-			{
-				"pagePath": "pages/activityPage/activityPage",
+				// "pagePath": "pages/activityPage/activityPage",
+				"pagePath": "pages/activityPageNew/activityPageNew",
 				"text": "活动",
 				"iconPath": "static/tabbar/hd.png",
 				"selectedIconPath": "static/tabbar/hd2.png"
 			},
 			{
-				"pagePath": "pages/message/message",
-				"text": "消息",
-				"iconPath": "static/tabbar/xx.png",
-				"selectedIconPath": "static/tabbar/xx2.png"
+				"pagePath": "pages/resource/resource",
+				"text": "课程",
+				"iconPath": "static/tabbar/zyk.png",
+				"selectedIconPath": "static/tabbar/zyk2.png"
 			},
+			
+			// {
+			// 	"pagePath": "pages/message/message",
+			// 	"text": "项目",
+			// 	"iconPath": "static/tabbar/xx.png",
+			// 	"selectedIconPath": "static/tabbar/xx2.png"
+			// },
 			{
 				"pagePath": "pages/mine/mine",
 				"text": "我的",

+ 1 - 1
pages/Sign/Sign.vue

@@ -19,7 +19,7 @@
 			return {
 				navBarData: {
 					title: '报名结果',
-					btn: 1
+					btn: 2
 				},
 			};
 		},

+ 59 - 23
pages/activityDetail/activityDetail.vue

@@ -26,7 +26,7 @@
 					活动日期:<text class="col2"> {{ actItemList.begin_at}}</text> 
 				</view>
 				<view class="col fz-font">
-					招募人数:<text class="col2"> {{ actItemList.pers}}/50</text> 
+					招募人数:<text class="col2"> {{actItemList.bnum}}/{{ actItemList.pers}}</text> 
 				</view>
 				<view class="col fz-font tag">
 					<view class=" tag">活动地址:</view>
@@ -82,7 +82,8 @@
 
 
 		<!-- 当前成员 -->
-		<!-- <view style="padding: 0 30rpx; display: none;">
+		<!-- {{!applyUserlist.length}} -->
+		<view style="padding: 0 30rpx;" v-if="applyUserlist.length">
 			<view class="member">
 				<view class="memberTop">
 					<view class="btn-font">当前成员</view>
@@ -94,16 +95,16 @@
 					</view>
 				</view>
 
-				<view class="pers">
-					
-					<view class="per">
+				<view class="pers" >
+					<view class="per"  v-for="(i,index) in applyUserlist" :key="index">
+						<image :src="i.avatar" mode=""></image>
 						<view class="perName fz-font">
-							暂无人员
+							{{i.username}}
 						</view>
 					</view>
 				</view>
 			</view>
-		</view> -->
+		</view>
 
 		<!-- 申请加入 -->
 		<view class="btnBlock">
@@ -135,9 +136,9 @@
 				// 用户订阅列表
 				subArr:[],
 				
+				// 报名列表
+				applyUserlist:[],
 			
-				perNum: [],
-				
 				
 				
 				pic_coll: 'https://teacherapi.cocorobo.cn/teaching-file/static/yym/Star 1 (Stroke).png',
@@ -160,7 +161,7 @@
 					acId: this.acId,
 				}
 				this.$request('/selectActivityID', "POST", data).then(res => {
-					console.log(res[0][0]);
+					console.log('获取页面数据',res[0][0]);
 					this.actItemList = res[0][0]
 				})
 				
@@ -233,10 +234,24 @@
 						this.$request('/insertOperator', 'POST', data).then(res => {
 							console.log(res);
 							this.getSub()
+							// 添加消息页面订阅通知提示订阅成功
+							this.addMessage()
 						})
 					}
 				})
 			},
+			// 添加消息页面订阅通知提示订阅成功
+			addMessage() {
+				let data = {
+					oid: this.$store.state.user.openid,
+					acid: this.acId,
+					type: 2,
+					con: ``
+				}
+				this.$request('/insertMessage', "POST", data).then(res => {
+					console.log(res);
+				})
+			},
 			// 申请加入
 			applyAdd() {
 				
@@ -247,7 +262,7 @@
 			// 查看更多报名同学
 			gotoMorePer() {
 				uni.navigateTo({
-					url: '/pages/dy/dy'
+					url: `/pages/dy/dy?acId=${this.acId}`
 				})
 			},
 			// 获取是否订阅
@@ -257,7 +272,7 @@
 					type: 1
 				}
 				this.$request('/selectOperator', 'POST', data).then(res => {
-					console.log('获取', res);
+					// console.log('获取', res);
 					// 每次调用前清零,防止push叠加错误
 					this.subArr = []
 					// 将acid遍历到subArrsubArr中
@@ -275,7 +290,7 @@
 					type: 0
 				}
 				this.$request('/selectOperator', 'POST', data).then(res => {
-					console.log('获取收藏', res);
+					// console.log('获取收藏', res);
 					// 每次调用前清零,防止push叠加错误
 					this.collArr = []
 					// 将acid遍历到collArr中
@@ -292,26 +307,41 @@
 					type: 2
 				}
 				this.$request('/selectSignup', 'POST', data).then(res => {
-					console.log('获取报名', res[0][0]);
+					// console.log('获取报名', res[0][0]);
 					this.isSign=res[0][0].num
 				})
 			},
-			
-			goLog() {
-				uni.navigateTo({
-					url: "/pages/login_Wechat/login_Wechat",
-				});
+			// 获取报名用户
+			getUsers(){
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					aid:this.acId,
+					type: 2,
+					page: 1, //下拉获取更多的备用字段
+					lim: 6 //一次获取多少数据
+				}
+				this.$request('/selectApplyUser', 'POST', data).then(res => {
+					console.log('获取报名用户列表', res[0]);
+					this.applyUserlist=res[0]
+				})
 			}
+
 		},
 		onLoad(e) {
 			console.log('接收参数',e);
 			this.acId=e.acId
 			this.oid=this.$store.state.user.openid
 			// this.getActivity()
+			// 获取是否已经报名
 			this.btnEnroll()
+			// 获取页面数据
 			this.getdata()
+			// 是否收藏
 			this.getColl()
+			// 是否订阅
 			this.getSub()
+			// 获取报名人名单
+			this.getUsers()
 		}
 	}
 </script>
@@ -438,13 +468,14 @@
 
 			.pers {
 				display: flex;
-				justify-content: space-between;
-				align-items: center;
+				width: 100%;
+				// justify-content: space-between;
 
 				.per {
 					display: flex;
 					flex-direction: column;
-
+					align-items: center;
+					width: 16%;
 					image {
 						width: 72rpx;
 						height: 72rpx;
@@ -452,8 +483,13 @@
 					}
 
 					.perName {
-						// font-size: 14px;
 						text-align: center;
+						display: -webkit-box;
+						word-break: break-all;
+						text-overflow: ellipsis;
+						overflow: hidden;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 1;
 					}
 				}
 

+ 473 - 0
pages/activityDetailNew/activityDetailNew.vue

@@ -0,0 +1,473 @@
+<template>
+	<!-- 教研室详情 -->
+	<view class="activityDetailNew">
+		<statusBar :item="navbar"></statusBar>
+
+		<view class="top">
+			<image class="img1" src="https://teacherapi.cocorobo.cn/teaching-file/static/yym/Rectangle25.png"
+				mode="widthFix">
+			</image>
+			<image class="img2" src="../../static/Dropdown.png" mode="widthFix"></image>
+		</view>
+
+		<view class="decontent">
+			<view class="actit">
+				{{actItemList.acName}}
+			</view>
+			<view class="avaList">
+				<view class="ava" @click="gotoMorePer">
+					<u-avatar-group :urls="applyUserlist" maxCount='6' showMore size="35"
+						:extraValue='applyUserlist.length' gap="0.4"></u-avatar-group>
+					<text
+						style="font-size: 24rpx;font-weight: 400;color:rgba(0, 0, 0, 0.6);margin-left: 20rpx;">{{!applyUserlist.length?'暂无报名':'已报名'}}</text>
+				</view>
+				<view class="cost" v-if="false">
+					¥<text style="font-size: 48rpx;">{{actItemList.cost}}</text>
+				</view>
+			</view>
+			<view class="acinfo">
+				<view class="">
+					时间:<text class="inf">{{actItemList.begin_at}}</text>
+				</view>
+				<view class="">
+					地点:<text class="inf">{{actItemList.address}}</text>
+				</view>
+				<view class="">
+					主办单位:<text class="inf">暂无字段</text>
+				</view>
+				<view class="">
+					活动形式:<text style="color:rgba(0, 86, 168, 1) ;">{{actItemList.acshape}}</text>
+				</view>
+			</view>
+			<view class="acbrief">
+				<view class="britit">
+					活动介绍
+				</view>
+				<view class="bricon">
+					{{actItemList.brief}}
+				</view>
+				<image class="briImg" :src="actItemList.pic" mode="widthFix"></image>
+			</view>
+			<view class="footer">
+				<view class="">
+					{{actItemList.create_at}}
+				</view>
+				<view class="">
+					阅读量:{{actItemList.views}}
+				</view>
+			</view>
+		</view>
+
+		<view class="btnBlock">
+			<view class="icos">
+				<view class="ico">
+					<view class="imgBlock" @click="coll">
+						<image class="icoimg"
+							:src="collArr.includes(actItemList.acId) ? pic_coll2 : '../../static/Starhhh.png'"
+							mode="aspectFill"></image>
+					</view>
+					<text class="icotxt">收藏</text>
+				</view>
+				<view class="ico" @click="share">
+					<view class="imgBlock">
+						<image class="icoimg" style="height: 70%;width: 65%;" src="../../static/union.png"
+							mode="aspectFill"></image>
+					</view>
+					<text class="icotxt">分享</text>
+				</view>
+			</view>
+			<view class="rightBtn">
+				<view class="btnt1" v-if="actItemList.openid==oid">本人创建,暂不支持加入</view>
+				<view class="btnt" v-else-if="!isSign" @click="applyAdd">立即报名</view>
+				<view class="btnt1" v-else-if="isSign">已报名</view>
+				<view class="btnt1" v-else-if="actItemList.bnum>=actItemList.pers">人数已满</view>
+				
+				<!-- <view class="btnt1" v-else-if="isSign && actItemList.openid!=oid">已报名</view> -->
+			</view>
+		</view>
+
+
+		<view class="" style="height: 170rpx;width: 750rpx;">
+			<!-- 占位的 -->
+		</view>
+
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				navbar: {
+					title: '活动详情',
+					btn: 1
+				},
+				// 用户openid
+				oid: '',
+				// 活动id
+				acId: '',
+				// 页面数据
+				actItemList: {},
+
+				// 用户收藏列表
+				collArr: [],
+
+				// 用户订阅列表
+				// subArr: [],
+
+				// 是否已加入
+				isSign: 0,
+
+				// 报名列表
+				applyUserlist: [],
+				pic_coll2: 'https://teacherapi.cocorobo.cn/teaching-file/static/mine/Collect_yellow.png',
+				// pic_sub: 'https://teacherapi.cocorobo.cn/teaching-file/static/yym/Vector (Stroke) (1).png',
+				// pic_sub2: 'https://teacherapi.cocorobo.cn/teaching-file/static/dingyue_blue.png',
+			};
+		},
+		methods: {
+			// 获取页面数据
+			getdata() {
+				let data = {
+					oid: this.$store.state.user.openid,
+					acId: this.acId,
+				}
+				this.$request('/selectActivityID', "POST", data).then(res => {
+					console.log('页面数据', res[0][0]);
+					this.actItemList = res[0][0]
+				})
+
+			},
+
+			// 申请加入
+			applyAdd() {
+				uni.navigateTo({
+					url: `/pages/jys/jys?acId=${this.acId}&tit=${'活动报名'}`
+				})
+			},
+			// 查看更多报名同学
+			gotoMorePer() {
+				uni.navigateTo({
+					url: `/pages/dy/dy?acId=${this.acId}`
+				})
+			},
+			share() {
+				uni.showToast({
+					title:'暂未开发,还不能分享哦',
+					icon:'none'
+				})
+			},
+
+			//获取是否报名
+			btnEnroll() {
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					aid: this.acId,
+					type: 2
+				}
+				this.$request('/selectSignup', 'POST', data).then(res => {
+					// console.log('获取报名', res[0][0]);
+					this.isSign = res[0][0].num
+				})
+			},
+			// 收藏事件
+			coll() {
+				//判断是否收藏
+				let iscoll = null
+
+				// 查询是否收藏过
+				let data = {
+					acid: this.acId,
+					oid: this.$store.state.user.openid, //用户id
+					ty: 0
+				}
+				this.$request('/selectOneOperator', 'POST', data).then(res => {
+					// console.log('查询是否收藏过',res);
+					res[0].length ? iscoll = true : iscoll = false;
+
+					// iscoll为true表示已经收藏过,执行删除  为true则收藏
+					if (iscoll) {
+						console.log('执行删除');
+						this.$request('/deleteOperator', 'POST', data).then(res => {
+							// console.log(res);
+							this.getColl()
+						})
+					} else {
+						console.log('执行添加');
+						this.$request('/insertOperator', 'POST', data).then(res => {
+							// console.log(res);
+							this.getColl()
+						})
+					}
+				})
+			},
+			//获取是否收藏
+			getColl() {
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					type: 0
+				}
+				this.$request('/selectOperator', 'POST', data).then(res => {
+					// console.log('获取收藏', res);
+					// 每次调用前清零,防止push叠加错误
+					this.collArr = []
+					// 将acid遍历到collArr中
+					res[0].forEach(i => {
+						this.collArr.push(i.acId)
+					})
+				})
+			},
+			// 获取报名用户
+			getUsers() {
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					aid: this.acId,
+					type: 2,
+					page: 1, //下拉获取更多的备用字段
+					lim: 6 //一次获取多少数据
+				}
+				this.$request('/selectApplyUser', 'POST', data).then(res => {
+					console.log('获取报名用户列表', res[0]);
+					res[0].forEach(e => {
+						this.applyUserlist.push(e.avatar)
+					})
+					// this.applyUserlist = res[0]
+				})
+			}
+
+		},
+		onLoad(e) {
+			// console.log('接收参数',e);
+			this.acId = e.acId
+			this.oid = this.$store.state.user.openid
+
+
+			// this.getActivity()
+			// 获取页面数据
+			this.getdata()
+			// 获取是否收藏
+			this.getColl()
+			// 获取是否订阅
+			// this.getSub()
+			// 获取是否报名
+			this.btnEnroll()
+			// 获取报名人名单
+			this.getUsers()
+		}
+	}
+</script>
+
+<style lang="scss">
+	.activityDetailNew {
+		background-color: #000;
+
+		.top {
+			width: 750rpx;
+			position: relative;
+
+			.img1 {
+				display: block;
+				margin: auto;
+				width: 750rpx;
+			}
+
+			.img2 {
+				position: absolute;
+				width: 100%;
+				left: 0;
+				bottom: 0;
+			}
+		}
+
+		.decontent {
+			width: 750rpx;
+			border-top-right-radius: 30rpx;
+			border-top-left-radius: 30rpx;
+			background-color: #fff;
+			padding: 32rpx;
+			display: flex;
+			flex-direction: column;
+			justify-content: flex-start;
+			border-bottom: 1rpx rgba(231, 231, 231, 1) solid;
+
+			.actit {
+				font-weight: 600;
+				font-size: 40rpx;
+				color: rgba(0, 0, 0, 0.8);
+				line-height: 56rpx;
+
+				display: -webkit-box;
+				word-break: break-all;
+				text-overflow: ellipsis;
+				overflow: hidden;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 2;
+
+			}
+
+			.avaList {
+				display: flex;
+				justify-content: space-between;
+				width: 100%;
+				align-items: center;
+				padding: 30rpx 0;
+				border-bottom: 1rpx rgba(231, 231, 231, 1) solid;
+				margin-bottom: 30rpx;
+
+				.ava {
+					width: 353rpx;
+					display: flex;
+					align-items: center;
+				}
+
+				.cost {
+					flex: 1;
+					text-align: right;
+					font-weight: 700;
+					font-size: 40rpx;
+					color: rgba(246, 135, 23, 1);
+				}
+			}
+
+			.acinfo {
+				width: 100%;
+				height: 304rpx;
+				// background-color: #000;
+				display: flex;
+				flex-direction: column;
+				justify-content: space-between;
+				font-size: 28rpx;
+				font-weight: 400;
+				color: rgba(0, 0, 0, 0.6);
+				border-bottom: 1rpx rgba(231, 231, 231, 1) solid;
+				padding-bottom: 30rpx;
+
+				.inf {
+					color: rgba(0, 0, 0, 0.8);
+				}
+			}
+
+			.acbrief {
+				width: 100%;
+
+				.britit {
+					width: 100%;
+					height: 48rpx;
+					font-weight: 600;
+					line-height: 48rpx;
+					font-size: 32rpx;
+					color: rgba(0, 0, 0, 0.8);
+					margin: 30rpx 0;
+				}
+
+				.bricon {
+					font-weight: 400;
+					font-size: 28rpx;
+					line-height: 44rpx;
+					color: (0, 0, 0, 0.8);
+					margin-bottom: 30rpx;
+
+				}
+
+				.briImg {
+					width: 100%;
+				}
+			}
+
+			.footer {
+				display: flex;
+				justify-content: space-between;
+				color: rgba(0, 0, 0, 0.4);
+				font-size: 24rpx;
+				height: 32rpx;
+				line-height: 32rpx;
+				font-weight: 400;
+				margin: 30rpx 0;
+			}
+		}
+
+		.btnBlock {
+			position: fixed;
+			bottom: 0;
+			left: 0;
+			width: 750rpx;
+			height: 175rpx;
+			background-color: #fff;
+			display: flex;
+			justify-content: flex-start;
+			align-items: center;
+			padding: 30rpx 30rpx;
+			padding-bottom: 40rpx;
+			border-top: 1rpx rgba(231, 231, 231, 1) solid;
+
+			// padding-bottom: 78rpx;
+			.icos {
+				width: 200rpx;
+				height: 96rpx;
+				flex-shrink: 0;
+				margin-right: 30rpx;
+				display: flex;
+				justify-content: space-between;
+
+				.ico {
+					width: 100rpx;
+					display: flex;
+					flex-direction: column;
+					justify-content: space-between;
+					align-items: center;
+
+					.imgBlock {
+						width: 48rpx;
+						height: 48rpx;
+						display: flex;
+						align-items: center;
+						justify-content: center;
+
+						.icoimg {
+							width: 42rpx;
+							height: 40rpx;
+						}
+					}
+
+					.icotxt {
+						font-size: 24rpx;
+						height: 40rpx;
+						line-height: 40rpx;
+						color: rgba(4, 0, 0, 1);
+					}
+				}
+			}
+
+			.rightBtn {
+				flex: 1;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+
+				.btnt {
+					width: 454rpx;
+					color: #fff;
+					// font-weight: 600;
+					height: 96rpx;
+					background-color: rgba(0, 86, 168, 1);
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					border-radius: 10rpx;
+				}
+				.btnt1 {
+					width: 454rpx;
+					color: #fff;
+					// font-weight: 600;
+					height: 96rpx;
+					background-color: rgba(139, 190, 255, 1);
+					display: flex;
+					justify-content: center;
+					align-items: center;
+					border-radius: 10rpx;
+				}
+
+			}
+		}
+	}
+</style>

+ 4 - 5
pages/activityList/activityList.vue

@@ -5,7 +5,6 @@
 			<view>
 				<teaching-case :activeList="activeList" :indexId="index"></teaching-case>
 			</view>
-
 		</scroll-view>
 		<view class="loading">
 			<view v-if="newsLoading==1">数据加载中...</view>
@@ -23,12 +22,12 @@
 					title: '活动推荐列表',
 					btn: 1
 				},
-				teaData: {
-					btn: 1
-				},
+				// teaData: {
+				// 	btn: 1
+				// },
 				activeList: [],
 				// 触底加载动画提示
-				newsLoading: 1, //0默认值  1加载中 2没有更多了
+				newsLoading: 0, //0默认值  1加载中 2没有更多了
 				currentPage: 1,
 
 			};

+ 1 - 1
pages/activityList_2/activityList_2.vue

@@ -35,7 +35,7 @@
 				// 渲染数据
 				activeList: [],
 				// 触底加载动画提示
-				newsLoading: 1, //0默认值  1加载中 2没有更多了
+				newsLoading: 0, //0默认值  1加载中 2没有更多了
 				currentPage: 1,
 			};
 		},

+ 27 - 33
pages/activityPage/activityPage.vue

@@ -76,13 +76,13 @@
 				liveList: [],
 				// 教研活动列表
 				activeList: [],
-				collArr:[],
-				pic_coll:'https://teacherapi.cocorobo.cn/teaching-file/static/yym/Star 1 (Stroke).png',
-				pic_coll2:'https://teacherapi.cocorobo.cn/teaching-file/static/mine/Collect_yellow.png'
+				collArr: [],
+				pic_coll: 'https://teacherapi.cocorobo.cn/teaching-file/static/yym/Star 1 (Stroke).png',
+				pic_coll2: 'https://teacherapi.cocorobo.cn/teaching-file/static/mine/Collect_yellow.png'
 			};
 		},
 		methods: {
-			// 获取教研活动
+			// 获取活动推荐
 			getData() {
 				let data = {
 					openid: uni.getStorageSync('oId'),
@@ -91,6 +91,7 @@
 					lim: 12 //一次获取多少数据
 				}
 				this.$request('/selectActivity', "POST", data).then(res => {
+					console.log(res[0]);
 					this.activeList = res[0]
 				})
 			},
@@ -106,9 +107,9 @@
 					this.liveList = res[0]
 				})
 			},
-			
+
 			// 获取收藏
-			getcoll(){
+			getcoll() {
 				let data = {
 					oid: this.$store.state.user.openid, //用户id
 					type: 0
@@ -121,11 +122,11 @@
 					res[0].forEach(i => {
 						this.collArr.push(i.acId)
 					})
-				
+
 				})
 			},
 			// 收藏事件
-			coll(event){
+			coll(event) {
 				// 未登录去登录
 				const value = this.$store.state.user.openid;
 				if (value == '') {
@@ -134,12 +135,12 @@
 					});
 					return
 				}
-				
-				
-				let aId=event.currentTarget.dataset.e.acId
-				
+
+
+				let aId = event.currentTarget.dataset.e.acId
+
 				let iscoll = null
-				
+
 				// 查询是否收藏过
 				let data = {
 					acid: aId,
@@ -149,13 +150,13 @@
 				this.$request('/selectOneOperator', 'POST', data).then(res => {
 					// console.log('查询是否收藏过',res);
 					res[0].length ? iscoll = true : iscoll = false;
-				
+
 					// iscoll为true表示已经收藏过,执行删除  为true则收藏
 					if (iscoll) {
 						console.log('执行删除');
 						this.$request('/deleteOperator', 'POST', data).then(res => {
 							console.log(res);
-							console.log('this',this);
+							console.log('this', this);
 							this.getcoll()
 						})
 					} else {
@@ -165,7 +166,7 @@
 							this.getcoll()
 						})
 					}
-				})		
+				})
 			},
 			// 查看更多常规教研活动事件
 			lookMore() {
@@ -202,7 +203,7 @@
 			// 跳转活动详情页
 			gotoAnnoun(e) {
 				// return console.log( e.currentTarget.dataset.index);
-				let aid=e.currentTarget.dataset.index
+				let aid = e.currentTarget.dataset.index
 				const value = this.$store.state.user.openid;
 				if (value == '') {
 					uni.navigateTo({
@@ -220,6 +221,7 @@
 			this.getData()
 			this.getData2()
 			this.getcoll()
+			this.getAllMessage()    // 调用app.js中的方法
 		}
 	};
 </script>
@@ -275,19 +277,7 @@
 						margin-bottom: 10rpx;
 
 						.tag {
-							// border: 1px #00b2b6 solid;
-							// // font-size: 12px;
-							// width: 64rpx;
-							// height: 38rpx;
-							// display: flex;
-							// white-space: nowrap;
-							// justify-content: center;
-							// align-items: center;
-							// // padding: 2px 4px;
-							// padding: 1rpx 4rpx;
-							// border-radius: 3px;
-							// margin-right: 10rpx;
-							// color: #00b2b6;]\
+						
 							flex-shrink: 0;
 							border: 1px #00b2b6 solid;
 							font-size: 20rpx;
@@ -321,8 +311,6 @@
 						padding: 20rpx 0;
 						color: #666666;
 
-						// margin-bottom: 20rpx;
-						// padding-bottom: 20rpx;
 						.left {
 							display: flex;
 							align-items: center;
@@ -339,7 +327,13 @@
 								}
 							}
 
-							.user {}
+							.user {
+								width: 70%;
+								overflow: hidden;
+								text-overflow: ellipsis;
+								white-space: nowrap;
+							}
+
 						}
 
 						.collection {

+ 404 - 0
pages/activityPageNew/activityPageNew.vue

@@ -0,0 +1,404 @@
+<template>
+	<view class="activityPageNew">
+		<statusBar :item="navBarData"></statusBar>
+
+		<view class="search">
+			<uni-search-bar v-model="searchText" bgColor="#f0f2f5" class="btntop" placeholder="搜索" cancelButton="none"
+				clearButton="none"></uni-search-bar>
+		</view>
+
+		<view class="top">
+			<view class="left" @click="phoneLogin" :class="current == 0 ? info1 : info2">
+				<text class="">专题教研</text>
+				<view v-if="current == 0" class="yun">
+					<image src="https://teacherapi.cocorobo.cn/teaching-file/static//yym/Ellipse 10.png"
+						mode="aspectFill"></image>
+				</view>
+			</view>
+			<view class="right" @click="accountLogin" :class="current == 1 ? info1 : info2">
+				<text class="">常规教研</text>
+				<view v-if="current == 1" class="yun">
+					<image src="https://teacherapi.cocorobo.cn/teaching-file/static//yym/Ellipse 10.png"
+						mode="aspectFill"></image>
+				</view>
+			</view>
+			<view class="right" @click="costClass" :class="current == 2 ? info1 : info2">
+				<text class="">付费教研</text>
+				<view v-if="current == 2" class="yun">
+					<image src="https://teacherapi.cocorobo.cn/teaching-file/static//yym/Ellipse 10.png"
+						mode="aspectFill"></image>
+				</view>
+			</view>
+		</view>
+
+		<swiper class="scroll-view-height" @change="swipeIndex" :current="current" @scrolltolower :duration="300">
+			<!-- 专题教研 -->
+			<swiper-item>
+				<scroll-view scroll-y="true" @scrolltolower="aclower" style="height: 100%;">
+					<view class="">
+						<listBlock1 ref="listBlock1" :classList="filteredClassList"></listBlock1>
+					</view>
+					<view class="loading">
+						<view v-if="acLoading==1">数据加载中...</view>
+						<view v-if="acLoading==2">没有更多了~~</view>
+					</view>
+				</scroll-view>
+
+			</swiper-item>
+
+			<!-- 常规教研 -->
+			<swiper-item>
+				<scroll-view scroll-y="true" @scrolltolower="pulower" style="height: 100%;">
+					<view>
+						<listBlock1 ref="listBlock2" :classList="filteredClassList2"></listBlock1>
+					</view>
+					<view class="loading">
+						<view v-if="puLoading==1">数据加载中...</view>
+						<view v-if="puLoading==2">没有更多了~~</view>
+					</view>
+				</scroll-view>
+			</swiper-item>
+
+			<!-- 付费教研 -->
+			<swiper-item>
+				<scroll-view scroll-y="true" style="height: 100%;">
+					<!-- <view style="padding-bottom: 30rpx;"> -->
+					<!-- <listBlock1 :classList="monlist" :indexId='indexId'></listBlock1> -->
+					<!-- </view> -->
+					<view class=""
+						style="height: 100%; width: 750rpx;display: flex;justify-content: center;align-items: center;">
+						<image src="../../static/Frame.png" style="width: 400rpx;height: 400rpx;" mode=""></image>
+					</view>
+
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				navBarData: {
+					title: "活动",
+					btn: 0,
+				},
+				indexId: 1,
+				current: 0, //控制展示哪一个
+				info1: "info1", //类名
+				info2: "info2",
+				// swiper: 0,
+				searchText: "", // 搜索文本
+				acLoading: 0, //0默认值  1加载中 2没有更多了
+				accurrentPage: 1, //页数
+
+				pucurrentPage: 1,
+				puLoading: 0, //0默认值  1加载中 2没有更多了
+				// 教研
+				teclist: [],
+				// 常规
+				pulist: [],
+				// 付费
+				monlist: [{
+					acId: "92e11d93-8778-11ee-b98c-005056b86db5",
+					acName: "丽湖职教双创教育国际虚拟教研室2023年常规教研活动安排",
+					acshape: "户外活动",
+					avatar: "http://139.159.246.165:7006/uploads/20231122/file-1700619408170.jpeg",
+					bnum: 0,
+					brief: "丽湖职教双创教育国际虚拟教研室为立足全国,辐射海外的国际化教研室,围绕创新创业教育的人才培养与课程建设开展深度研究。教研室以贯彻落实立德树人根本任务,通过加强跨专业、跨校、跨地域的教研交流,推动高校协同打造国际化的精品教学资源库、优秀教学案例库、优质教师培训资源库等,全面提高教师",
+					cost: "5000",
+					create_at: "2023.11.20 03:11",
+					pers: "15",
+					pic: "http://139.159.246.165:7006/uploads/20231120/file-1700466209242.png",
+					type: "1",
+					username: "袁一鸣",
+				}]
+			};
+		},
+		// 模糊搜索
+		computed: {
+			filteredClassList() {
+				const filteredList = this.teclist.filter((item) =>
+					item.acName.includes(this.searchText)
+				);
+				return this.searchText ? filteredList : this.teclist;
+			},
+			filteredClassList2() {
+				const filterdList2 = this.pulist.filter((item) =>
+					item.acName.includes(this.searchText)
+				);
+				return this.searchText ? filterdList2 : this.pulist;
+			},
+		},
+		methods: {
+			aclower() {
+				console.log('没触底?');
+				if (this.acLoading == 2) return
+				this.acLoading = 1
+				this.accurrentPage++
+				setTimeout(this.getTecData, 1000)
+			},
+			pulower() {
+				console.log('没触底?');
+				if (this.puLoading == 2) return
+				this.puLoading = 1
+				this.pucurrentPage++
+				setTimeout(this.getpuData, 1000)
+			},
+			// 获取专题
+			getTecData() {
+				let data = {
+					openid: uni.getStorageSync('oId'),
+					ty: 1,
+					page: this.accurrentPage, //下拉获取更多的备用字段
+					lim: 15 //一次获取多少数据
+				}
+				this.$request('/selectActivity', "POST", data).then(res => {
+					// console.log('专题', res[0]);
+					// this.teclist = res[0]
+					if (!res[0].length) {
+						this.acLoading = 2
+					} else {
+						this.acLoading = 0
+					}
+					this.teclist = [...this.teclist, ...res[0]]
+				})
+			},
+			// 获取常规
+			getpuData() {
+				let data = {
+					openid: uni.getStorageSync('oId'),
+					ty: 2,
+					page: this.pucurrentPage, //下拉获取更多的备用字段
+					lim: 15 //一次获取多少数据
+				}
+				this.$request('/selectActivity', "POST", data).then(res => {
+					// console.log('常规', res[0]);
+					// this.pulist = res[0]
+					if (!res[0].length) {
+						this.puLoading = 2
+					} else {
+						this.puLoading = 0
+					}
+					this.pulist = [...this.pulist, ...res[0]]
+				})
+			},
+			// 获取付费
+			getmonData() {
+				let data = {
+					openid: uni.getStorageSync('oId'),
+					ty: 1,
+					page: this.currentPage, //下拉获取更多的备用字段
+					lim: 15 //一次获取多少数据
+				}
+				this.$request('/selectActivity', "POST", data).then(res => {
+					// console.log('教研', res[0]);
+					// this.teclist = res[0]
+
+				})
+			},
+			// 区域滑动变换头部
+			swipeIndex(index) {
+				this.current = index.detail.current;
+				// this.$refs.listBlock1.getdata()
+			},
+			// 触底加载更多
+			// onReachBottom() {
+			// 	console.log('没触底?');
+			// 	if (this.newsLoading == 2) return
+			// 	this.newsLoading = 1
+			// 	this.currentPage++
+			// 	setTimeout(this.getData, 1000)
+
+			// },
+			// 区域滑动
+			phoneLogin() {
+				this.current = 0;
+			},
+			accountLogin() {
+				this.current = 1;
+			},
+			costClass() {
+				this.current = 2;
+			}
+		},
+		onShow() {
+			// 获取收藏事件
+			this.$refs.listBlock1.getdata() //专题
+			this.$refs.listBlock2.getdata() //常规
+
+			// 刷新
+			// 教研
+			this.teclist = []
+			// 常规
+			this.pulist = []
+			this.accurrentPage = 1
+			this.pucurrentPage = 1
+
+			this.getpuData() //获取常规列表
+			this.getTecData() //获取专题列表
+
+			this.getAllMessage() // 调用app.js中的方法
+			// 因为组件没有onshow
+			// 获取订阅事件
+			// this.$refs.listBlock1.getSub()
+		},
+	};
+</script>
+
+<style lang="scss" scoped>
+	.btntop {
+		width: 100%;
+	}
+
+	.activityPageNew {
+		display: flex;
+		flex-direction: column;
+		height: 100vh;
+
+		.loading {
+			height: 30rpx;
+			text-align: center;
+			padding-top: 20rpx;
+			padding-bottom: 100rpx;
+			font-size: 26rpx;
+			color: #888;
+			line-height: 2em;
+		}
+
+		.search {
+			background-color: #ffffff;
+			position: relative;
+			display: flex;
+			width: 750rpx;
+			height: 88rpx;
+			justify-content: center;
+			align-items: center;
+
+			.inpSer {
+				width: 690rpx;
+				height: 65rpx;
+				margin: auto;
+				background-color: rgba(240, 242, 245, 1);
+				border-radius: 5rpx;
+				color: rgba(0, 0, 0, 0.26);
+				position: relative;
+
+				.inpTxt {
+					color: #000;
+					height: 100%;
+					width: 100%;
+				}
+
+				input::placeholder {
+					color: #000;
+				}
+
+				.ico {
+					position: absolute;
+					top: 50%;
+					left: 20rpx;
+					transform: translate(0, -50%);
+					display: flex;
+					align-items: center;
+
+					image {
+						margin-right: 10rpx;
+					}
+				}
+			}
+		}
+
+		.top {
+			width: 100%;
+			display: flex;
+			justify-content: space-between;
+			margin: auto;
+			background-color: #ffffff;
+			padding: 10px 60rpx;
+			height: 98rpx;
+
+			.info1 {
+				font-weight: bold !important;
+				position: relative;
+				color: rgba(0, 0, 0, 0.8);
+				font-size: 34rpx;
+				line-height: 48rpx;
+				width: 136rpx;
+				height: 48rpx;
+				text-align: center;
+
+				// font-family: PingFang SC;
+				// font-family: \9ed1\4f53;
+				.yun {
+					width: 134rpx;
+					height: 32rpx;
+					position: absolute;
+					left: 0;
+					bottom: -10rpx;
+
+					// transform: translate(-50%,0%);
+					// box-shadow: 0px 10rpx 30rpx 6rpx #4a97f2;
+					image {
+						width: 100%;
+						height: 100%;
+					}
+				}
+			}
+
+			.info2 {
+				color: rgba(0, 0, 0, 0.6);
+				font-size: 34rpx;
+				font-weight: 400;
+				line-height: 48rpx;
+				width: 136rpx;
+				height: 48rpx;
+				text-align: center;
+				font-family: 微软雅黑;
+			}
+		}
+
+		.scroll-view-height {
+			flex: 1;
+			width: 100%;
+			display: flex;
+			flex-wrap: wrap;
+			justify-content: space-between;
+
+			.cont {
+				background-color: #ffffff;
+				width: 332rpx;
+				padding: 20rpx 15rpx;
+				border-radius: 10px;
+				margin-bottom: 20rpx;
+
+				image {
+					width: 300rpx;
+					height: 170rpx;
+					border-radius: 10rpx;
+				}
+
+				.tit {
+					width: 257rpx;
+					margin: 10rpx 0;
+					// height: 80rpx;
+					font-weight: bold;
+					white-space: normal;
+					display: -webkit-box;
+					word-break: break-all;
+					text-overflow: ellipsis;
+					overflow: hidden;
+					-webkit-box-orient: vertical;
+					-webkit-line-clamp: 2;
+					/*设置 需要显示的行数*/
+				}
+
+				.teacher {
+					color: #999999;
+				}
+			}
+		}
+	}
+</style>

+ 116 - 89
pages/dy/dy.vue

@@ -1,26 +1,24 @@
 <template>
-	<view>
+	<view class="dy">
 		<statusBar :item="navBarData"></statusBar>
-		<view class="bigBox" v-for=" i in items">
-			<view class="content">
-				<view class="left">
-					<image class="image" src="../../static/mine/Avatar.png" mode=""></image>
-					<view class="text">
-						<view class="fwb-font">橘子很橘子</view>
-						<view class="brief fz-font">
-							<text class="fz-font" style="margin-right: 20rpx;">订阅了您的教研室</text> 
-							<text class="fz-font">2023-04-01</text>
-						</view>
+		
+		<view class="bigBox" v-for=" i in applyUserlist">
+			<image class="img" :src="i.avatar" mode="aspectFill"></image>
+			<view class="info">
+				<view class="uname">
+					<view class="nameTxt">
+						{{i.username}}
 					</view>
+					<view class="sch">{{i.create_at}}</view>
 				</view>
-				<view class="right">
-					<button v-if="i.btn==1" class="btn sBtn-font" @click="btn1(i.tit)">回粉</button>
-					<button v-else-if="i.btn==2" class="btn2 sBtn-font" @click="btn2(i.tit)">+关注</button>
-					<button v-else class="btn3 sBtn-font" @click="btn3(i.tit)">相互关注</button>
-				</view>
+				<view class="sch1">深圳城市××大学</view>
 			</view>
 		</view>
 		
+		<view class="loading">
+			<view v-if="newsLoading==1">数据加载中...</view>
+			<view v-if="newsLoading==2">没有更多了~~</view>
+		</view>
 	</view>
 </template>
 
@@ -32,103 +30,132 @@ export default {
 				title: '新增订阅',
 				btn: 1
 			},
-			items:[   //1回粉 2关注 3相互关注
-				{tit:'hf',btn:1},
-				{tit:'hf2',btn:1},
-				{tit:'gz',btn:2},
-				{tit:'hx',btn:3},
-			]
+			// 报名列表
+			applyUserlist:[],
+						
+			// 活动id	
+			acId:'',
+			// 触底加载动画提示
+			newsLoading: 0, //0默认值  1加载中 2没有更多了
+			currentPage: 1,
+			// items:[   //1回粉 2关注 3相互关注
+			// 	{tit:'hf',btn:1},
+			// 	{tit:'hf2',btn:1},
+			// 	{tit:'gz',btn:2},
+			// 	{tit:'hx',btn:3},
+			// ]
 		};
 	},
 	methods:{
-		btn1(e){
-			// console.log(e.btn==1);
-			// console.log(e);
-			this.items.find(i=>{
-				if(i.tit==e) return i.btn=3
-			})
-		},
-		btn2(e){
-			this.items.find(i=>{
-				if(i.tit==e) return i.btn=2
-			})
-		},
-		btn3(e){
-			this.items.find(i=>{
-				if(i.tit==e) return i.btn=1
+		// 获取报名用户
+		getUsers(){
+			let data = {
+				oid: this.$store.state.user.openid, //用户id
+				aid:this.acId,
+				type: 2,
+				page: this.currentPage, //下拉获取更多的备用字段
+				lim: 15 //一次获取多少数据
+			}
+			this.$request('/selectApplyUser', 'POST', data).then(res => {
+				console.log('获取报名用户列表', res[0]);
+				if (!res[0].length) {
+					this.newsLoading = 2
+				} else {
+					this.newsLoading = 0
+				}
+				this.applyUserlist=[...this.applyUserlist,...res[0]]
 			})
 		}
+		// btn1(e){
+		// 	// console.log(e.btn==1);
+		// 	// console.log(e);
+		// 	this.items.find(i=>{
+		// 		if(i.tit==e) return i.btn=3
+		// 	})
+		// },
+		// btn2(e){
+		// 	this.items.find(i=>{
+		// 		if(i.tit==e) return i.btn=2
+		// 	})
+		// },
+		// btn3(e){
+		// 	this.items.find(i=>{
+		// 		if(i.tit==e) return i.btn=1
+		// 	})
+		// }
+	},
+	// 触底加载更多
+	onReachBottom() {
+		console.log(111);
+		if (this.newsLoading == 2) {
+			return
+		}
+		this.newsLoading = 1
+		this.currentPage++
+		setTimeout(this.getUsers(),1500)
+		
+	},
+	onLoad(e) {
+		console.log('接受参数',e);
+		this.acId=e.acId
+		this.getUsers()
 	}
 };
 </script>
 
 <style lang="scss" scoped>
+	.dy{
+		
+	}
 	.bigBox{
 		background-color: white;
 		width: 750rpx;
-		padding: 24rpx 30rpx 24rpx 30rpx;
-	}
-.content {
-	display: flex;
-	justify-content: space-between;
-	align-items: center;
-	width: 690rpx;
-	height: 88rpx;
-	.left{
+		height: 136rpx;
+		padding: 0rpx 30rpx;
 		display: flex;
-		.image {
-			width: 88rpx;
-			height: 88rpx;
+		justify-content: space-between;
+		align-items: center;
+		.img{
+			width: 72rpx;
+			height: 72rpx;
 			border-radius: 50%;
 		}
-		.text{
+		.info{
+			flex: 1;
 			display: flex;
 			flex-direction: column;
 			justify-content: space-between;
 			margin-left: 20rpx;
-			.brief{
+			.uname{
+				display: flex;
+				justify-content: space-between;
+				.nameTxt{
+					font-size: 28rpx;
+					color: rgba(0, 0, 0, 0.8);
+					line-height: 50%;
+				}
+				.sch{
+					font-size: 24rpx;
+					color: rgba(0, 0, 0, 0.6);
+				}
+			}
+			.sch1{
+				flex: 1;
+				font-size: 24rpx;
 				color: rgba(0, 0, 0, 0.6);
 			}
 		}
+		
+		
 	}
-	.right{
-		.btn {
-			background-color: #adadad;
-			width: 144rpx;
-			height: 56rpx;
-			padding: 0;
-			// padding: 8rpx 24rpx 8rpx 24rpx ;
-			border-radius: 32rpx;
-			// text-align: center;
-			line-height: 56rpx;
-			color: white;
-		}
-		.btn2{
-			background-color: #0056a9;
-			width: 144rpx;
-			height: 56rpx;
-			padding: 0;
-			// padding: 8rpx 24rpx 8rpx 24rpx ;
-			// border-radius: 42px;
-			border-radius: 32rpx;
-			// text-align: center;
-			line-height: 56rpx;
-			color: white;
-		}
-		.btn3{
-			background-color: #d1e5fe;
-			width: 144rpx;
-			height: 56rpx;
-			padding: 0;
-			// padding: 8rpx 24rpx 8rpx 24rpx;
-			border-radius: 32rpx;
-			// text-align: center;
-			line-height: 56rpx;
-			color: #105eaa;
-		}
+	.loading{
+		height: 50rpx;
+		text-align: center;
+		padding-top: 20rpx;
+		padding-bottom: 100rpx;
+		font-size: 26rpx;
+		color:#888;
+		line-height: 2em;
 	}
-	
 
-	
-}
 </style>

+ 227 - 181
pages/index/index.vue

@@ -2,42 +2,52 @@
 	<view class="content">
 		<statusBar :item="navBarData"></statusBar>
 		<view class="top">
-			<!-- <image src="https://teacherapi.cocorobo.cn/teaching-file/static//logo.png" mode="aspectFill"></image> -->
 			<image src="https://teacherapi.cocorobo.cn/teaching-file/static/yym/Rectangle25.png" mode="aspectFill"
 				@click="gotoHome">
 			</image>
 		</view>
+		<view class="sortBlock">
 
-		<viewX-Case class="mid">
-			<template #title>
-				<view class="title three-font">精选活动</view>
-			</template>
-			<template #lookMore>
-				<view class="lookMore fz-font" @click="gotoActivity">查看更多</view>
-			</template>
-			<template #activeBlock>
-				<view class="activeData" @click="gotoActivityDetail" v-for="(item, index) in activeList" :key="index"
-					:data-aid="item.acId">
-					<image :src="item.pic" mode="aspectFill"></image>
-					<view class="activeTit sBtn-font" style="font-weight: bold">
-						{{ item.acName }}
+			<view class="sortCostcon" @click="gotoCost">
+				<view class="sortCostcontent">
+					<view class="costTit">
+						收费专区
+					</view>
+					<view class="costbri">
+						<text class="di">简短描述</text>
 					</view>
-					<view class="numData">
-						<view class="proNum bqZ-font">{{ item.pers }} 人报名</view>
-						<view class="price num-font">
-							<text class="fz-font">¥</text>{{ item.cost }}
+				</view>
+				
+				<view class="costimgblc">
+					<image src="../../static/Framezzz.png" class="costImg" mode="aspectFill"></image>
+				</view>
+			</view>
+
+			<view class="sortleft">
+				<view :class="item.cla" v-for="(item,index) in sortList" @click="gotoTab" :data-index="item">
+					<!-- <image class="sortImg" src="../../static/Rectangle 937.png" mode="aspectFill"></image> -->
+					<view class="sortcontent">
+						<view class="contentl">
+							<view class="tit">
+								{{item.tit}}
+							</view>
+							<view class="bri">
+								<text :class="item.briCla">{{item.bri}}</text>
+							</view>
+						</view>
+						<view class="sortleftImgBlock">
+							<image class="sortleftImg" :src="item.img" mode="aspectFill"></image>
 						</view>
 					</view>
-					<button class="btn sBtn-font" @click.stop="gotoHd" :data-index="index">
-						立即报名
-					</button>
 				</view>
-			</template>
-		</viewX-Case>
+			</view>
+
+		</view>
+
 
 		<viewX-Case>
 			<template #title>
-				<view class="title three-font">教研室活动</view>
+				<view class="title three-font">推荐内容</view>
 			</template>
 			<template #lookMore>
 				<view class="lookMore fz-font" @click="listBlock1More">查看更多</view>
@@ -49,6 +59,7 @@
 		</viewX-Case>
 		<view class="" style="height: 30rpx; width: 100%"> </view>
 	</view>
+
 </template>
 
 <script>
@@ -61,25 +72,60 @@
 					btn: 0, //是否显示返回按钮 0不显示  1 显示
 				},
 				activeList: [],
-				classList: []
+				classList: [],
+				sortList: [{
+						tit: '活动专区',
+						bri: '简短简介',
+						img: '../../static/Framehhh.png',
+						cla: 'sortcon',
+						briCla:'di'
+					},
+					{
+						tit: '课程专区',
+						bri: '简短简介',
+						img: '../../static/Framesss.png',
+						cla: 'sortcon sortcon2',
+						briCla:'di2'
+					}
+				]
 			};
 		},
 		onLoad() {},
 		methods: {
-			getData() {
-				let data = {
-					openid: uni.getStorageSync('oId'),
-					ty: 2,
-					page: 1, //下拉获取更多的备用字段
-					lim: 12 //一次获取多少数据
+			gotoTab(e){
+				console.log(e.currentTarget.dataset.index.tit);
+				let aaa=e.currentTarget.dataset.index.tit
+				if(aaa=='活动专区'){
+					return uni.switchTab({
+						url:'/pages/activityPageNew/activityPageNew'
+					})
+				}else{
+					uni.switchTab({
+						url:'/pages/resource/resource'
+					})
 				}
-				this.$request('/selectActivity', "POST", data).then(res => {
-					// console.log(res[0]);
-					// this.activeList=[...this.activeList,...res[0]]
-					this.activeList = res[0]
+			},
+			gotoCost(){
+				uni.showToast({
+					title:'功能暂未开放,敬请期待',
+					icon:'none'
 				})
 			},
-			// 获取推荐课程list 数据
+			// 获取精选活动
+			// getData() {
+			// 	let data = {
+			// 		openid: uni.getStorageSync('oId'),
+			// 		ty: 2,
+			// 		page: 1, //下拉获取更多的备用字段
+			// 		lim: 12 //一次获取多少数据
+			// 	}
+			// 	this.$request('/selectActivity', "POST", data).then(res => {
+			// 		console.log('精选活动', res[0]);
+			// 		// this.activeList=[...this.activeList,...res[0]]
+			// 		this.activeList = res[0]
+			// 	})
+			// },
+			// 获取教研室活动list 数据
 			getlistBlock1Data() {
 				let data = {
 					openid: uni.getStorageSync('oId'),
@@ -88,8 +134,7 @@
 					lim: 12 //一次获取多少数据
 				}
 				this.$request('/selectActivity', "POST", data).then(res => {
-					console.log(res[0]);
-					// this.activeList=[...this.activeList,...res[0]]
+					console.log('推荐活动', res[0]);
 					this.classList = res[0]
 
 					// console.log('推荐课程',this.classList);
@@ -104,56 +149,15 @@
 				});
 
 			},
-			gotoTeDetail() {
-				const value = this.$store.state.user.openid;
-				if (value == '') return this.goLog()
-				uni.navigateTo({
-					url: "/pages/teachingDetail/teachingDetail",
-				});
-
-			},
-			// 跳转到专题教研活动查看更多
-			gotoActivity() {
-				const value = this.$store.state.user.openid;
-				if (value == '') return this.goLog()
-				uni.navigateTo({
-					url: "/pages/activityList_2/activityList_2",
-				});
-
-			},
-			// 跳转到详情页
-			gotoActivityDetail(e) {
-				// return console.log(e.currentTarget.dataset);
-				let aid = e.currentTarget.dataset.aid;
-				const value = this.$store.state.user.openid;
-				if (value == '') return this.goLog()
+			// gotoTeDetail() {
+			// 	const value = this.$store.state.user.openid;
+			// 	if (value == '') return this.goLog()
+			// 	uni.navigateTo({
+			// 		url: "/pages/teachingDetail/teachingDetail",
+			// 	});
 
-				uni.navigateTo({
-					url: `/pages/teachingDetail/teachingDetail?acId=${aid}`
-				});
+			// },
 
-			},
-			// 专题教研活动跳转外部链接
-			gotoHd(e) {
-				// return console.log(e);
-				let num = e.currentTarget.dataset['index'];
-				const value = this.$store.state.user.openid;
-				if (value == '') return this.goLog()
-				
-				// let num = e.currentTarget.dataset['index'];
-				const urls = [
-					"https://szptxnjys.yuketang.cn/pro/portal/announcementdetail/1181",
-					"https://szptxnjys.yuketang.cn/pro/portal/announcementdetail/1210",
-					"https://szptxnjys.yuketang.cn/pro/portal/announcementdetail/1183",
-					"https://szptxnjys.yuketang.cn/pro/portal/announcementdetail/1234",
-				];
-				if (num > 3) num = 3
-				
-				uni.navigateTo({
-					url: "/pages/skipone/skipone?url=" + encodeURIComponent(urls[num]),
-				});
-				
-			},
 			// 顶部大图跳转外部链接
 			gotoHome() {
 				// const web = this.classList[this.current];
@@ -166,13 +170,24 @@
 				uni.navigateTo({
 					url: "/pages/login_Wechat/login_Wechat",
 				});
-			}
+			},
+
 		},
+		// onReady(){
+		// 	this.$refs.listBlock1.getdata()	
+		// },
 		onShow() {
-			this.getData()
+			//获取 精选
+			// this.getData()
+			// 获取教研室
 			this.getlistBlock1Data()
+			this.getAllMessage() // 调用app.js中的方法
+
+			// 因为组件没有onshow
+			// 获取收藏事件
 			this.$refs.listBlock1.getdata()
-			this.$refs.listBlock1.getSub()
+			// 获取订阅事件
+			// this.$refs.listBlock1.getSub(0)
 		}
 	};
 </script>
@@ -180,118 +195,149 @@
 <style lang="scss" scoped>
 	.content {
 
-		// .listBlock1PIC {
-		// 	width: 160rpx;
-		// 	height: 160rpx;
-		// 	border-radius: 10rpx;
-		// }
-
-		.list1btn {
-			z-index: 5;
-			border: none;
-			padding: 0;
-			text-align: center;
-			// padding: 8px, 24px, 8px, 24px;
-			background-color: rgba(48, 129, 232, 1);
-			color: #fff;
-			border-radius: 100rpx;
-			float: right;
-			width: 144rpx;
-			height: 48rpx;
-			line-height: 48rpx;
-			letter-spacing: 1px;
-		}
-
-		// background-color: ;
-		// background-color: #f0f2f5;
-		.top {
+		// 分类区样式
+		.sortBlock {
 			width: 750rpx;
-			height: 288rpx;
+			margin: 20rpx 0;
+			background-color: rgba(255, 255, 255, 1);
 			display: flex;
-			margin-bottom: 20rpx;
-			align-items: center;
-			background-color: #fff;
-			justify-content: center;
+			justify-content: space-between;
+			padding: 30rpx;
+			position: relative;
 
-			image {
-				height: 246rpx;
-				width: 690rpx;
-				border-radius: 12rpx;
-			}
-		}
+			// 收费区
+			.sortCostcon {
+				padding: 30rpx;
+				width: 336rpx;
+				height: 300rpx;
+				flex-shrink: 0;
+				background-image: url('../../static/Rectangle1922.png');
+				background-repeat: no-repeat;
+				background-size: 100%;
 
-		.mid {
-			margin: 10px 0;
-			height: 498rpx;
+				.sortCostcontent {
+					display: flex;
+					flex-direction: column;
 
-			.activeData {
-				width: 290rpx;
-				display: inline-block;
-				padding-right: 20rpx;
+					.costTit {
+						font-weight: 400rpx;
+						font-size: 36rpx;
+						height: 48rpx;
+						line-height: 48rpx;
+					}
 
-				image {
-					width: 100%;
-					height: 80px;
-					border-radius: 10px;
-					margin-bottom: 10rpx;
+					.costbri {
+						color: rgba(244, 142, 143, 1);
+						font-size: 24rpx;
+						width: 400;
+						margin: 10rpx 0;
+					}
 				}
-
-				.activeTit {
-					// font-weight: 600;
-					height: 64rpx;
-					white-space: normal;
-					/*隐藏溢出*/
-					/*当文本溢出包含元素时显示省略符号来代表被修剪的文本*/
-					/*规定段落中的文本不进行换行*/
-					letter-spacing: 2rpx;
-					display: -webkit-box;
-					word-break: break-all;
-					text-overflow: ellipsis;
-					overflow: hidden;
-					-webkit-box-orient: vertical;
-					-webkit-line-clamp: 2;
-					/*设置 需要显示的行数*/
+				.costimgblc{
+					display: flex;
+					justify-content: flex-end;
+					.costImg {
+						width: 162rpx;
+						height: 162rpx;
+					}
 				}
+				
+			}
+
+			.sortleft {
+				flex: 1;
+				display: flex;
+				flex-direction: column;
+				justify-content: space-between;
+				margin-left: 20rpx;
 
-				.numData {
+				.sortcon2{
+					background-image: url('https://teacherapi.cocorobo.cn/teaching-file/static/Rectangle938.png') !important;
+				}
+				.sortcon {
+					width: 336rpx;
+					height: 140rpx;
+					background-image: url('https://teacherapi.cocorobo.cn/teaching-file/static/Rectangle937.png');
+					background-repeat: no-repeat;
+					background-size: 100%;
 					display: flex;
-					justify-content: space-between;
-					align-items: baseline;
+					padding: 20rpx;
 
-					// padding: 10rpx 0;
-					.proNum {
-						color: #999999;
-						// font-size: 14px;
+					.sortImg {
+						position: absolute;
+						left: 0;
+						top: 0;
+						width: 100%;
+						height: 100%;
 					}
 
-					.price {
-						color: #f68717;
-						// font-size: 18px;
+					.sortcontent {
+						display: flex;
+						width: 100%;
+						height: 100%;
+						color: #000;
+						.contentl {
+							width: 70%;
+							.tit {
+								font-size: 36rpx;
+								line-height: 48rpx;
+							}
+							.bri {
+								font-size: 24rpx;
+								height: 48rpx;
+								width: 144rpx;
+								line-height: 32rpx;
+								position: relative;
+								.di {
+									position: absolute;
+									bottom: 0;
+									left: 0;
+									color: rgba(243, 189, 91, 1);
+								}
+								.di2 {
+									position: absolute;
+									bottom: 0;
+									left: 0;
+									color: rgba(180, 193, 250, 1);
+								}
+							}
+						}
+						.sortleftImgBlock{
+							position: relative;
+							.sortleftImg {
+								position: absolute;
+								bottom: -10rpx;
+								left: 0;
+								height: 68rpx;
+								width: 68rpx;
+							}
+						}
 					}
 				}
-
-				.btn {
-					border: none;
-					padding: 0;
-					float: left;
-					text-align: center;
-					// padding: 8px 24px 8px 24px;
-					background-color: #3081e8;
-					color: #fff;
-					border-radius: 100rpx;
-					width: 144rpx;
-					height: 48rpx;
-					line-height: 48rpx;
-					letter-spacing: 1px;
-					margin-bottom: 30rpx;
-				}
 			}
 
-			.activeData:nth-child(1) {
-				margin-left: 15px;
+
+		}
+
+
+		// 顶部大图
+		.top {
+			width: 750rpx;
+			height: 288rpx;
+			display: flex;
+			margin-bottom: 20rpx;
+			align-items: center;
+			background-color: #fff;
+			justify-content: center;
+
+			image {
+				height: 246rpx;
+				width: 690rpx;
+				border-radius: 10rpx;
 			}
 		}
 
+
 		.title {
 			font-weight: bold;
 		}

+ 105 - 50
pages/jys/jys.vue

@@ -15,7 +15,7 @@
 						负责人:{{ actItemList.username }}
 					</view>
 					<view class="col sZw-font">
-						教研室标签:{{ typetext }}
+						教研室标签:暂无
 					</view>
 				</view>
 			</view>
@@ -34,14 +34,15 @@
 						</view>
 						<view class="name  sZw-font">
 							联系方式:
-							<input type="number" style=" text-align: right;" maxlength="11" placeholder="请输入联系方式"
-								placeholder-style="font-size: 28rpx; color: rgb(153, 153, 153);" v-model="phone" />
+							<input @input="handleInput" type="number" style=" text-align: right;" maxlength="11"
+								placeholder="请输入联系方式" placeholder-style="font-size: 28rpx; color: rgb(153, 153, 153);"
+								v-model="phone" />
 						</view>
 						<view class="name  sZw-font">
 							单位:
 							<input type="text" style=" text-align: right;" maxlength="15" placeholder="请输入单位"
 								placeholder-style="font-size: 28rpx; color: rgb(153, 153, 153);" v-model="stations" />
-						</view> 
+						</view>
 					</view>
 				</view>
 			</view>
@@ -54,7 +55,7 @@
 				<button style="background-colo:#0056a8;" @click="showPop" class="btn2 sZw-font">申请加入</button>
 			</view>
 		</view>
-		
+
 		<!-- 弹窗 -->
 		<view>
 			<view class="mask" v-show="showPopup" @click="closePopup"></view>
@@ -71,7 +72,7 @@
 				</view>
 			</view>
 		</view>
-		
+
 		<view>
 			<view class="mask" v-show="showPopupConfirm" @click="closePopup"></view>
 			<view class="popup-container" style="height: 175px;" v-show="showPopupConfirm">
@@ -81,15 +82,15 @@
 						</image>
 						<text style="margin-bottom: 24px;">报名成功</text>
 					</view>
-		
+
 				</view>
 			</view>
 		</view>
-		
-		
-		
-		
-		
+
+
+
+
+
 	</view>
 </template>
 
@@ -98,7 +99,7 @@
 		data() {
 			return {
 				navBarData: {
-					title: '教研室报名',
+					title: '活动报名',
 					btn: 1
 				},
 
@@ -106,57 +107,108 @@
 				showPopup: false,
 				// 成功弹窗
 				showPopupConfirm: false,
-				
+
 				// 用户名
 				applyname: '',
 				// 联系方式
 				phone: '',
 				// 单位
 				stations: '',
-				
-				
-				
-				
+
+				// 决定你能不能报名
+				isApply: false,
+
 				// 获取的渲染数据
 				actItemList: {},
-				
-				typetext: '',
-				isButtonDisabled: false,
 			};
 		},
 		methods: {
+			// 清空填写信息
 			button1Action() {
 				this.applyname = ''
 				this.phone = ''
 				this.stations = ''
 			},
-			// 确定按钮显示弹窗
-			showPop(){
-				if(this.applyname == '') return uni.showToast({title:'请输入姓名',icon:'none'})
-				if(this.phone == '') return uni.showToast({title:'请输入联系方式',icon:'none'})
-				if(this.stations == '') return uni.showToast({title:'请输入单位',icon:'none'})
+			handleInput(e) {
+				const {value} = e.target
+				
+				const newValue = value.replace(/[^\d]/g, '') // 只允许输入数字
 				
-				this.showPopup=true
+				if (newValue.length <= 11) {
+					this.phone = newValue
+				}
+			},
+			// 确定按钮显示弹窗
+			showPop() {
+				if (this.applyname == '') return uni.showToast({
+					title: '请输入姓名',
+					icon: 'none'
+				})
+				if (this.phone == '') return uni.showToast({
+					title: '请输入联系方式',
+					icon: 'none'
+				})
+				if (this.stations == '') return uni.showToast({
+					title: '请输入单位',
+					icon: 'none'
+				})
+				if (this.phone.length != 11) return uni.showToast({
+					title: '号码不足11位,请检查',
+					icon: 'none'
+				})
+				this.showPopup = true
 			},
 			// 确定报名
 			gotoSign() {
-				let data={
-					oid: this.$store.state.user.openid, //用户id
+				// 做最后判断防止同一时间进入报名页面都报名成功
+				this.$request('/selectIntercept', "POST", {
+					oid: this.$store.state.user.openid,
+					acid: this.acId
+				}).then(res => {
+					let c = res[0][0]
+					console.log(res[0][0]);
+					console.log(c.bnum >= c.pers * 1);
+					if (c.bnum >= c.pers * 1) {
+						return uni.showToast({
+							title: '已有人先您一步报名,名额已满',
+							icon: "none"
+						})
+					} else {
+						let data = {
+							oid: this.$store.state.user.openid, //用户id
+							acid: this.acId,
+							ty: 2,
+							ume: this.applyname,
+							pho: this.phone,
+							sta: this.stations
+						}
+						this.$request('/insertSignup', "POST", data).then(res => {
+							// console.log(res);
+
+							// 添加消息页面系统通知提示报名成功
+							this.addMessage()
+
+
+							// 弹窗关闭
+							this.showPopup = false
+							uni.navigateTo({
+								url: '/pages/Sign/Sign'
+							})
+						})
+					}
+				})
+			},
+			// 添加消息页面系统通知提示报名成功
+			addMessage() {
+				let data = {
+					oid: this.$store.state.user.openid,
 					acid: this.acId,
-					ty:2,
-					ume:this.applyname,
-					pho:this.phone,
-					sta:this.stations
+					type: 0,
 				}
-				this.$request('/insertSignup', "POST", data).then(res => {
+				this.$request('/insertMessage', "POST", data).then(res => {
 					console.log(res);
-					this.showPopup=false
-					uni.navigateTo({
-						url:'/pages/Sign/Sign'
-					})
-				})	
+				})
 			},
-
 			// 获取页面数据
 			getActivity() {
 				let data = {
@@ -170,9 +222,11 @@
 			},
 		},
 		onLoad(e) {
-			console.log('进来了',e);
-			this.acId=e.acId
-			this.navBarData.title=e.tit
+			console.log('进来了', e);
+			// 接受参数
+			this.acId = e.acId
+			// 导航栏显示教研室报名还是活动报名
+			this.navBarData.title = e.tit
 
 			this.getActivity()
 		}
@@ -325,6 +379,7 @@
 
 
 		}
+
 		.mask {
 			position: fixed;
 			top: 0;
@@ -336,7 +391,7 @@
 			overflow: hidden;
 			// display: none;
 		}
-		
+
 		.popup-container {
 			position: fixed;
 			top: 50%;
@@ -346,7 +401,7 @@
 			height: 260rpx;
 			z-index: 1000;
 			// display: none;
-		
+
 			.popup {
 				width: 100%;
 				height: 100%;
@@ -355,7 +410,7 @@
 				background-color: #fff;
 				border-radius: 16rpx;
 				overflow: hidden;
-		
+
 				.header {
 					flex: 1;
 					display: flex;
@@ -365,7 +420,7 @@
 					margin-top: 24px;
 					font-size: 34rpx;
 					font-weight: 600;
-		
+
 					image {
 						width: 150rpx;
 						height: 150rpx;
@@ -373,12 +428,12 @@
 						margin-bottom: 15px;
 					}
 				}
-		
+
 				.footer {
 					width: 100%;
 					display: flex;
 					overflow: hidden;
-		
+
 					.cancel-btn {
 						width: 50%;
 						height: 100rpx;
@@ -389,7 +444,7 @@
 						border-bottom-left-radius: 16rpx;
 						line-height: 50px;
 					}
-		
+
 					.confirm-btn {
 						width: 50%;
 						height: 100rpx;

+ 338 - 33
pages/login_Wechat/login_Wechat.vue

@@ -17,8 +17,9 @@
 			<view class="" style="position: relative;padding-left:30rpx;">
 				我已阅读并同意<text>《教育小程序服务条款》</text>和 <text>《 隐私协议》</text>新用户自动注册
 				<view class="quan" @click="isDui">
-					<image v-if="isShow" class="dui" src="https://teacherapi.cocorobo.cn/teaching-file/static//yym/dui.png"
-						mode="aspectFill"></image>
+					<image v-if="isShow" class="dui"
+						src="https://teacherapi.cocorobo.cn/teaching-file/static//yym/dui.png" mode="aspectFill">
+					</image>
 				</view>
 			</view>
 		</view>
@@ -29,6 +30,75 @@
 		<view class="footer" @click="goto">
 			<text>手机号登录/账号密码登录</text>
 		</view>
+
+
+		<view class="popupBlock" v-if="popupShow">
+			<view class="pop">
+				<view class="poptit">
+					完善信息
+				</view>
+				<view class="infoTxt">
+					<view class="txtcell">
+						<view class="">
+							<text class="dian">*</text><text class="celTit">姓名</text>
+						</view>
+						<input type="text" class="inpSty" maxlength="10" placeholder="请输入真实姓名"
+							placeholder-style="font-size: 28rpx; color: rgb(153, 153, 153);"
+							v-model="userData.username" />
+					</view>
+					<view class="txtcell">
+						<view class="">
+							<text class="dian">*</text><text class="celTit">联系方式</text>
+						</view>
+						<input @blur="handleInput" type="number" class="inpSty" maxlength="11" placeholder="请输入联系方式"
+							placeholder-style="font-size: 28rpx; color: rgb(153, 153, 153);" v-model="userData.tel" />
+
+					</view>
+					<view class="txtcell">
+						<view class="">
+							<text class="dian">*</text><text class="celTit">学校</text>
+						</view>
+						<view class="pickerBlock">
+							<picker mode="selector" @change="schChange" :range="scharray">
+								<view class="uni-input">{{!userData.sch?'请选择':userData.sch}}</view>
+							</picker>
+							<uni-icons type="right" class="icooo" size="20" color='rgba(0, 0, 0, 0.4)'></uni-icons>
+						</view>
+
+					</view>
+					<view class="txtcell">
+						<view class="">
+							<text class="dian">*</text><text class="celTit">专业</text>
+						</view>
+						<view class="pickerBlock">
+							<picker mode="selector" @change="speChange" :range="speList">
+								<view class="uni-input">{{!userData.spe?'请选择':userData.spe}}</view>
+							</picker>
+							<uni-icons type="right" class="icooo" size="20" color='rgba(0, 0, 0, 0.4)'></uni-icons>
+						</view>
+					</view>
+					<view class="txtcell">
+						<view class="">
+							<text class="celTit">职称</text><text
+								style="color: rgba(0, 0, 0, 0.26);padding-left: 10rpx;">(选填)</text>
+						</view>
+						<view class="pickerBlock">
+							<picker mode="selector" @change="rankChange" :range="rankList">
+								<view class="uni-input">{{!userData.rankl?'请选择':userData.rankl}}</view>
+							</picker>
+							<uni-icons type="right" class="icooo" size="20" color='rgba(0, 0, 0, 0.4)'></uni-icons>
+						</view>
+					</view>
+				</view>
+				<view :class="btnColor" @click="register">
+					完善信息并登录
+				</view>
+				<view class="logbri">
+					完善个人信息后即可加入“丽湖国际双创虚拟教研室”会员,免费获取海量精品资源~
+				</view>
+			</view>
+		</view>
+
 	</view>
 </template>
 
@@ -36,26 +106,91 @@
 	export default {
 		data() {
 			return {
+				logbtn: 'logbtn',
+				logbtn2: 'logbtn2',
+
 				avatarUrl: '',
 				nickname: '',
+				// 学校
+				scharray: ['深圳城市××大学', '深圳××大学', '深圳××大学', '深圳××大学'],
+				// 专业
+				speList: ['互联网', '网络通信', '航空', '汽修', '珠宝', '文秘', '设计'],
+				// 职称
+				rankList: ['xx', 'xx', 'xx'],
+				// 默认头像的
 				isShow: false,
+
+				// 完善信息弹窗的
+				popupShow: false,
+
 				navBarData: {
-					title: '登录页',
+					title: '登录',
 					btn: 1 //判断是否显示返回按钮
 				},
+
+				btnCol: [],
+
+				// 第一次登录
+				userData: {
+					openid: '',
+					username: '',
+					avatar: '',
+					tel: '',
+					sch: '',
+					spe: '',
+					rankl: '', //职称
+				}
 			};
 		},
+		computed: {
+			btnColor() {
+
+				let newArr = []
+				Object.keys(this.userData).forEach(key => {
+					if (this.userData[key] == '' && key != 'rankl') {
+						newArr.push(key)
+					}
+				});
+				console.log('newArr.length', newArr.length);
+				return newArr.length > 0 || this.userData.tel == 11 ? 'logbtn' : 'logbtn2'
+			}
+		},
 		methods: {
-			// 选择名称
+			// 判断手机号
+			handleInput(e) {
+				// console.log(e.target);
+				const {value} = e.target
+
+				const newValue = value.replace(/[^\d]/g, '') // 只允许输入数字
+				console.log(newValue);
+				
+				// if (newValue.length <= 11) {
+					this.userData.tel = newValue
+				// }
+				console.log(this.userData.tel);
+			},
+			// 选择用户名称
 			inpvalue(e) {
 				this.nickname = e.detail.value
 			},
+			schChange(e) {
+				console.log('picker发送选择改变,携带值为', e.detail.value)
+				this.userData.sch = this.scharray[e.detail.value]
+			},
+			speChange(e) {
+				console.log('picker发送选择改变,携带值为', e.detail)
+				this.userData.spe = this.speList[e.detail.value]
+			},
+			rankChange(e) {
+				console.log('picker发送选择改变,携带值为', e.detail)
+				this.userData.rankl = this.rankList[e.detail.value]
+			},
 			// 上传图片
 			onChooseAvatar(e) {
+				// 获取上传的图片
 				const {
 					avatarUrl
 				} = e.detail
-				console.log(avatarUrl);
 
 				let that = this
 				const uploadTask = uni.uploadFile({
@@ -104,8 +239,12 @@
 					});
 					return
 				}
-				if(!this.isShow) return uni.showToast({title: '请勾选条约',icon: 'error',duration: 1000});
-					
+				if (!this.isShow) return uni.showToast({
+					title: '请勾选条约',
+					icon: 'error',
+					duration: 1000
+				});
+
 				let oId = uni.getStorageSync('oId')
 				console.log('gotoIndex:', oId);
 				// let all = []
@@ -119,38 +258,87 @@
 					// 账号第一次登录,还没注册过
 					if (res[0] == false) {
 						console.log('还未注册过,开始注册');
-						this.$request('/login', 'POST', {
-							openid: oId,
-							Nme: this.nickname,
-							// avatar: 'https://teacherapi.cocorobo.cn/teaching-file/static//mine/Avatar_default.png'
-							avatar: this.avatarUrl
-						}).then(res => {
-							console.log('注册成功', res);
-							uni.setStorageSync('token', res.token)
-							// 注册过后重新登录
-							this.gotoIndex()
-						})
+						this.userData.openid = oId
+						this.userData.username = this.nickname
+						this.userData.avatar = this.avatarUrl
+						return this.popupShow = true
 					} else {
 						console.log('已注册过直接登录', res[0][0]);
 						// 修改昵称头像
-						this.$request('/updateUser',"POST",{
+						this.$request('/updateUser', "POST", {
 							openid: oId,
 							Nme: this.nickname,
 							avatar: this.avatarUrl
-						}).then(res=>{
-							console.log('updateUser',res);
+						}).then(res => {
+							console.log('updateUser', res);
 							this.$request('/selectUser', 'POST', {
 								oId: oId,
 							}).then(res => {
 								this.$store.dispatch('asyncUpdateUser', res[0][0])
+								uni.switchTab({
+									url: '/pages/index/index'
+								})
 							})
 						})
 					}
 				})
-				uni.switchTab({
-					url: '/pages/index/index'
-				})
+
 
+			},
+			register() {
+				// username: '',
+				// tel: '',
+				// sch: '请选择',
+				// spe: '请选择',
+				if (this.userData.username == '') return uni.showToast({
+					title: '请输入姓名',
+					icon: 'none'
+				});
+				if (this.userData.tel == '') return uni.showToast({
+					title: '请输入联系方式',
+					icon: 'none'
+				});
+				if (this.userData.sch == '') return uni.showToast({
+					title: '请输入学校',
+					icon: 'none'
+				});
+				if (this.userData.spe == '') return uni.showToast({
+					title: '请输入专业',
+					icon: 'none'
+				});
+				if (this.userData.tel.length != 11) return uni.showToast({
+					title: '号码不足11位,请检查',
+					icon: 'none'
+				});
+				// return console.log(this.userData);
+				let oId = uni.getStorageSync('oId')
+				this.$request('/login', 'POST', this.userData).then(res => {
+					console.log('注册成功', res);
+
+					// 添加消息页面系统通知提示已加入会员
+					this.addMessage()
+
+					this.$request('/selectUser', 'POST', {
+						oId: oId,
+					}).then(res => {
+						this.$store.dispatch('asyncUpdateUser', res[0][0])
+						uni.switchTab({
+							url: '/pages/index/index'
+						})
+					})
+				})
+			},
+			// 添加消息页面系统通知提示报名成功
+			addMessage() {
+				let opid = uni.getStorageSync('oId')
+				let data = {
+					oid: opid,
+					acid: '',
+					type: 2,
+				}
+				this.$request('/insertMessage', "POST", data).then(res => {
+					console.log(res);
+				})
 			},
 			// 跳转其他登录方式
 			goto() {
@@ -162,16 +350,18 @@
 			isDui() {
 				this.isShow = !this.isShow
 			},
-			getdata(){
-				this.$request('/selectUserInfo', "POST", {openid: uni.getStorageSync('oId')}).then(res => {
-					console.log('获取渲染数据',res[0][0]);
-					let data=res[0][0]
+			getdata() {
+				this.$request('/selectUserInfo', "POST", {
+					openid: uni.getStorageSync('oId')
+				}).then(res => {
+					console.log('获取渲染数据', res[0][0]);
+					let data = res[0][0]
 					console.log(data);
-					if(!data){
+					if (!data) {
 						return
-					}else{
-						this.avatarUrl=data.avatar
-						this.nickname=data.username
+					} else {
+						this.avatarUrl = data.avatar
+						this.nickname = data.username
 					}
 				})
 			}
@@ -191,6 +381,18 @@
 		background-color: #ffffff;
 	}
 
+	.dian {
+		color: rgba(245, 69, 69, 1);
+	}
+
+	.celTit {
+		color: rgba(0, 0, 0, 0.8);
+	}
+
+	.icooo {
+		transform: translate(0, 5rpx);
+	}
+
 	.block {
 		width: 750rpx;
 		height: 30vh;
@@ -222,6 +424,7 @@
 		display: flex;
 		align-items: center;
 		padding: 0rpx 50rpx;
+
 		.nc {
 			// width: 150rpx;
 			text-align: left;
@@ -237,7 +440,7 @@
 		padding: 0rpx 50rpx;
 		font-size: 13px;
 		margin-top: 80rpx;
-		
+
 		.quan {
 			position: absolute;
 			flex-shrink: 0;
@@ -277,4 +480,106 @@
 		// padding: 0rpx 10rpx;
 		font-size: 16px;
 	}
+
+	.popupBlock {
+		position: absolute;
+		left: 0;
+		top: 0;
+		width: 750rpx;
+		height: 100vh;
+		background-color: rgba(0, 0, 0, 0.6);
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		z-index: 10;
+
+		.pop {
+			width: 690rpx;
+			height: 936rpx;
+			background-color: #ffffff;
+			border-radius: 30rpx;
+			padding: 30rpx;
+
+			.poptit {
+				text-align: center;
+				height: 48rpx;
+				line-height: 48rpx;
+				color: rgba(0, 0, 0, 0.88);
+			}
+
+			.infoTxt {
+				width: 100%;
+				height: 448rpx;
+				margin-top: 40rpx;
+				margin-bottom: 40rpx;
+				display: flex;
+				flex-direction: column;
+				justify-content: space-between;
+
+				.txtcell {
+					display: flex;
+					justify-content: space-between;
+					align-items: center;
+					border-bottom: 1rpx rgba(231, 231, 231, 1) solid;
+					padding-bottom: 20rpx;
+
+					.inpSty {
+						right: 0;
+						bottom: 0;
+						text-align: right;
+					}
+
+					.pickerBlock {
+						display: flex;
+						align-items: center;
+						justify-content: flex-start;
+						color: rgba(0, 0, 0, 0.4);
+
+						.uni-input {
+							width: 100%;
+							height: 100%;
+						}
+					}
+
+				}
+			}
+
+			.logbtn2 {
+				background-color: rgba(0, 86, 168, 1);
+				width: 580rpx;
+				height: 88rpx;
+				border-radius: 60rpx;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				color: #fff;
+				font-size: 36rpx;
+				margin: 150rpx auto;
+				margin-bottom: 30rpx;
+			}
+
+			.logbtn {
+				width: 580rpx;
+				height: 88rpx;
+				border-radius: 60rpx;
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				color: #fff;
+				font-size: 36rpx;
+				background-color: rgba(139, 190, 255, 1);
+				margin: 150rpx auto;
+				margin-bottom: 30rpx;
+			}
+
+			.logbri {
+				width: 580rpx;
+				margin: auto;
+				text-align: center;
+				font-size: 24rpx;
+				color: rgba(48, 129, 232, 1);
+			}
+		}
+
+	}
 </style>

+ 60 - 22
pages/message/message.vue

@@ -21,9 +21,9 @@
 
         <view class="right">
           <view class="">
-            <view v-if="isAll" class="newMessage"></view>
+            <view v-if="acmsg" class="newMessage"></view>
           </view>
-          <view class="mesTime fz-font">07-12</view>
+          <view class="mesTime fz-font">{{xacmsg.create_at}}</view>
         </view>
       </view>
 
@@ -39,16 +39,16 @@
           <view class="mesBrief">
             <view class="tit">系统通知</view>
             <view class="breif fz-font" style="line-height: 40rpx"
-              >已加入“创业者管理能力基础训练”教研室</view
+              >已加入“{{xsysmsg.acName}}”{{xsysmsg.type>=2?'教研室':'活动'}}</view
             >
           </view>
         </view>
 
         <view class="right">
           <view class="">
-            <view v-if="xt" class="newMessage"></view>
+            <view v-if="sysmsg" class="newMessage"></view>
           </view>
-          <view class="mesTime fz-font">07-12</view>
+          <view class="mesTime fz-font">{{xsysmsg.create_at}}</view>
         </view>
       </view>
 
@@ -63,15 +63,15 @@
           <view class="mesBrief">
             <view class="tit">订阅消息</view>
             <view class="breif fz-font" style="line-height: 40rpx"
-              >欢迎订阅“创业者管理能力基础训练”讲座</view
+              >欢迎订阅“{{xdymsg.acName}}”{{xdymsg.type>=2?'教研室':'活动'}}</view
             >
           </view>
         </view>
         <view class="right">
           <view class="">
-            <view v-if="dy" class="newMessage"></view>
+            <view v-if="dymsg" class="newMessage"></view>
           </view>
-          <view class="mesTime fz-font">07-12</view>
+          <view class="mesTime fz-font">{{xdymsg.create_at}}</view>
         </view>
       </view>
     </view>
@@ -99,15 +99,17 @@ export default {
       navbarData: {
         title: "消息",
       },
-      // msgList:[
-      // 	{tit:'hd',isClick:0},
-      // 	{tit:'hd',isClick:0},
-      // 	{tit:'hd',isClick:0},
-      // ]
-      isAll: 1,
-      xt: 1,
-      dy: 1,
+    
+	  // 判断是否显示红点
+      acmsg: 0,
+	  sysmsg: 0,
+      dymsg: 0,
+	  // 判断是否登录
       msgLogin: '',
+	  // 最新一条数据
+	  xacmsg: {},
+	  xsysmsg: {},
+	  xdymsg: {},
     };
   },
   methods: {
@@ -115,29 +117,61 @@ export default {
       uni.navigateTo({
         url: "/pages/hdxx/hdxx",
       });
-      this.isAll = 0;
     },
     goToMeGXt() {
       uni.navigateTo({
         url: "/pages/messageSystem/messageSystem",
       });
-      this.xt = 0;
     },
     goToMegDy() {
       uni.navigateTo({
         url: "/pages/messageDy/messageDy",
       });
-      this.dy = 0;
     },
     gotoLogin() {
       uni.navigateTo({
         url: "/pages/login_Wechat/login_Wechat",
       });
     },
+	// 获得首页显示的第一条消息
+	// getOneMsg(){
+	// 	this.$request('/selectGroupMessage', "POST", {
+	// 		oid: this.$store.state.user.openid
+	// 	}).then(res => {
+	// 		console.log(res);
+	// 	})
+	// },
+	// 信息页面分组查询未读信息
+	getGroupMsg(){
+		this.$request('/selectGroupMessage', "POST", {
+			oid: this.$store.state.user.openid
+		}).then(res => {
+			console.log('出来了',res);
+			this.acmsg=0;
+			this.sysmsg=0;
+			this.dymsg=0;
+			res[0].forEach(e=>{
+				if(e.type==0){
+					this.acmsg=e.num
+				}else if(e.type==1){
+					this.sysmsg=e.num
+				}else{
+					this.dymsg=e.num
+				}
+			})
+			this.xacmsg=res[1][0];
+			this.xsysmsg=res[2][0];
+			this.xdymsg=res[3][0];
+		})
+	},
   },
   onShow() {
-    // this.msgLogin = uni.getStorageSync('msgLogin');
+	  // 判断是否登录
     this.msgLogin = this.$store.state.user.openid;
+	// 信息页面分组查询未读信息
+	this.getGroupMsg()
+	// 调用app.js中的方法
+	this.getAllMessage()    
   },
 };
 </script>
@@ -230,6 +264,7 @@ export default {
 
       .mesBrief {
         display: flex;
+		width: 450rpx;
         flex-direction: column;
         justify-content: space-between;
 
@@ -241,8 +276,11 @@ export default {
         }
 
         .breif {
-          // font-size: 16px;
-          color: rgba(51, 51, 51, 1);
+			width: 90%;
+			white-space: nowrap;
+			overflow: hidden;
+			text-overflow: ellipsis;
+			color: rgba(51, 51, 51, 1);
         }
       }
 

+ 158 - 70
pages/messageDy/messageDy.vue

@@ -2,94 +2,182 @@
 	<view class="messageDy">
 		<statusBar :item="navBarData"></statusBar>
 
-		<view class="content">
-			<view class="text">
-				<view class="header">
-					<view class="disC three-font">
-						欢迎订阅“创业者管理能力基础训练”讲座
-						<text class="sj fwb-font">13:28</text>
-					</view>
-				</view>
-				<view class="main">
-					<view class="fwb-font" style="text-indent: 0em">
-						尊敬的
-						<text>刘雨潼 </text>
-					</view>
+		<scroll-view scroll-y="true" :scroll-top="scrollTop" id="scrollview" class="scrollV"
+			:style="{height:screenHeight - navheight+'px'}">
+			<view class="reverse" id="msglistview">
+				<view class="content" v-for="(item,index) in list" :key="index">
+					<view class="conblock">
+						<view class="header">
+							<view class="disC three-font">
+								成功订阅[{{item.acName}}]{{item.type>=2?'教研室':'活动'}}
+							</view>
+						</view>
+						<view class="sj fwb-font">{{item.create_at}}</view>
+						<view class="main">
+							<view class="fwb-font">
+								尊敬的
+								<text>{{item.username}}</text>
+							</view>
 
-					<view class="fwb-font">
-						您已成功订阅
-						<text class="btn-font" style="color: #0056a8;">[创业者管理能力基础训练]讲座</text>
-						!欢迎加入我们的团队,我们期待与您一同合作并共同追求卓越教育。
+							<view class="fwb-font" style="text-indent: 2em;width: 100%;">
+								我们很高兴通知您,您已成功订阅
+								<text class="btn-font Xbold" style="color: #0056a8;">[{{item.acName}}]</text>
+								!欢迎加入我们的团队,我们期待与您一同合作并共同追求卓越教育。
+							</view>
+						</view>
 					</view>
 				</view>
 			</view>
-		</view>
+		</scroll-view>
 	</view>
 </template>
 
 <script>
-export default {
-	data() {
-		return {
-			navBarData: {
-				title: '订阅消息',
-				btn: 1
-			}
-		};
-	}
-};
+	export default {
+		data() {
+			return {
+				navBarData: {
+					title: '订阅消息',
+					btn: 1
+				},
+				newsLoading: 0, //0默认值  1加载中 2没有更多了
+				currentPage: 1,
+				list: [],
+				scrollTop: 0,
+				navheight: this.navheight, //导航栏高度
+				screenHeight: this.screenHeight
+			};
+		},
+		methods: {
+
+			// 获取数据
+			getdata() {
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					type: 2,
+					page: this.currentPage,
+					lim: 30
+				}
+				this.$request('/selectMessage', "POST", data).then(res => {
+					console.log('获取', res[0]);
+					// this.list = [this.list,...res[0]]
+					this.list = res[0]
+					// console.log('获取',this.list);
+				})
+			},
+			// 聊天记录自动跳转底部
+			scrollToBottom() {
+				let that = this
+				let query = uni.createSelectorQuery()
+				query.select('#scrollview').boundingClientRect()
+				query.select('#msglistview').boundingClientRect()
+				query.exec((res) => {
+					// console.log('res', res);
+					console.log('res', res[0].height, res[1].height);
+					if (res[1].height > res[0].height) {
+						that.scrollTop = res[1].height - res[0].height
+					}
+				})
+			},
+
+			// 更新已读
+			updateisread() {
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					type: 2,
+				}
+				this.$request('/updateIsRead', "POST", data).then(res => {
+					// console.log('获取', res);
+				})
+			},
+		},
+		// 进入页面渲染完毕后调用
+		onReady() {
+			// this.scrollToBottom()
+			this.scrollToBottom();
+			console.log(11111);
+		},
+		onLoad() {
+			this.getdata()
+			// 更新已读
+			this.updateisread()
+			// this.scrollToBottom()
+		}
+	};
 </script>
 
 <style lang="scss">
-	.messageDy{
-		padding-bottom: 80rpx;
+	.messageDy {
+		height: 100vh;
+		
 	}
-.content {
-	padding: 10px;
-	margin: 10px;
-	background-color: white;
-	border-radius: 8px;
-	// margin-top: 5px;
-	.disC{
-		display: flex;
-		justify-content: space-between;
-		align-items: baseline;
+
+	.scrollV {
+		// overflow: hidden;
+		// height: 200rpx !important;
+		// background-color: #0056a8;
 	}
-	.text {
-		.header {
-			view {
-				color: black;
-				// font-size: 16px;
-				font-weight: 600;
-				margin-bottom: 10px;
-				display: flex;
-				justify-content: space-between;
+
+
+
+	.reverse {
+		display: flex;
+		flex-direction: column-reverse;
+		padding-bottom: 80rpx;
+
+		.content {
+			padding: 10px;
+			margin: 10px;
+			background-color: white;
+			border-radius: 8px;
+			display: flex;
+			justify-content: center;
+
+			.conblock {
+				.header {
+					color: black;
+					font-weight: 600;
+					display: flex;
+					justify-content: space-between;
+
+					.disC {
+						display: flex;
+						width: 100%;
+						font-weight: bold;
+						justify-content: space-between;
+						align-items: baseline;
+						/*隐藏溢出*/
+						/*当文本溢出包含元素时显示省略符号来代表被修剪的文本*/
+						/*规定段落中的文本不进行换行*/
+						white-space: normal;
+						letter-spacing: 2rpx;
+						display: -webkit-box;
+						word-break: break-all;
+						text-overflow: ellipsis;
+						overflow: hidden;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 2;
+						/*设置 需要显示的行数*/
+					}
+				}
+
 				.sj {
 					color: #999999;
-					// font-size: 13px;
 					font-weight: 500;
+					padding: 10rpx 0;
 				}
-			}
-		}
-		.main {
-			color: #999999;
-			view {
-				font-weight: 400;
-				// font-size: 14px;
-				text-indent: 2em;
-				view {
-					color: #0056a8;
-					font-weight: 600;
+
+				.main {
+					color: #999999;
+					font-weight: 400;
+
+					.Xbold {
+						color: #0056a8;
+						font-weight: 600;
+					}
+
 				}
 			}
-			.custom-list {
-				padding-left: 5px;
-				padding-top: 3px;
-			}
-			.custom-list .list-item::before {
-				content: '• ';
-			}
 		}
 	}
-}
-</style>
+</style>

+ 155 - 85
pages/messageSystem/messageSystem.vue

@@ -1,112 +1,182 @@
 <template>
 	<view class="messageSys">
 		<statusBar :item="navBarData"></statusBar>
-<!-- 		<view class="content">
-			<view class="text">
-				<view class="header">
-					<view class="disC three-font">
-						活动发布成功
-						<text class="sj fwb-font">13:28</text>
-					</view>
-				</view>
-				<view class="main">
-					<view class="fwb-font">
-						恭喜!您已成功完成
-						<text class="btn-font" style="color: #0056a8;">“XXXX讲座”</text>
-						活动发布过程。您的活动现在已经在我们的平台上正式上线,可以被其他用户浏览和参加。请随时返回您的活动管理页面,以进行任何进一步的编辑、更新或促进活动的操作。
-					</view>
-				</view>
-			</view>
-		</view> -->
-		
-		<view class="content">
-			<view class="text">
-				<view class="header">
-					<view class="disC three-font">
-						成功加入[创业者管理能力基础训练]教研室
-						<text class="sj fwb-font">13:28</text>
-					</view>
-				</view>
-				<view class="main">
-					<view class="fwb-font" style="text-indent: 0em">
-						尊敬的
-						<text>刘雨潼</text>
-					</view>
+		<scroll-view scroll-y="true" :scroll-top="scrollTop" id="scrollview"  :style="{height:(screenHeight - navheight)+'px' }">
+			<view class="reverse" id="msglistview">
+				<view class="content" v-for="(item,index) in list" :key="index">
+					<view class="conblock">
+						<view class="header">
+							<view class="disC three-font">
+								成功加入[{{item.acName}}]{{item.type>=2?'教研室':'活动'}}
+							</view>
+						</view>
+						<view class="sj fwb-font">{{item.create_at}}</view>
+						<view class="main">
+							<view class="fwb-font">
+								尊敬的
+								<text>{{item.username}}</text>
+							</view>
 
-					<view class="fwb-font">
-						我们很高兴通知您,您已成功加入
-						<text class="btn-font" style="color: #0056a8;">[创业者管理能力基础训练]</text>
-						!欢迎加入我们的团队,我们期待与您一同合作并共同追求卓越教育。
+							<view class="fwb-font" style="text-indent: 2em;">
+								我们很高兴通知您,您已成功加入
+								<text class="btn-font" style="color: #0056a8;">[{{item.acName}}]</text>
+								!欢迎加入我们的团队,我们期待与您一同合作并共同追求卓越教育。
+							</view>
+						</view>
 					</view>
 				</view>
 			</view>
-		</view>
+		</scroll-view>
 	</view>
 </template>
 
 <script>
-export default {
-	data() {
-		return {
-			navBarData: {
-				title: '系统消息',
-				btn: 1
+	export default {
+		data() {
+			return {
+				navBarData: {
+					title: '系统消息',
+					btn: 1
+				},
+				newsLoading: 0, //0默认值  1加载中 2没有更多了
+				currentPage: 1,
+
+				navheight: this.navheight, //导航栏高度
+				scrollTop: 0,
+				// 渲染列表
+				list: [],
+			};
+		},
+		methods: {
+			// 获取数据
+			getdata() {
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					type: 1,
+					page: this.currentPage,
+					lim: 30
+				}
+				this.$request('/selectMessage', "POST", data).then(res => {
+					// console.log('获取', res[0]);
+					// this.list = [this.list,...res[0]]
+					this.list = res[0]
+					// console.log('获取',this.list);
+				})
+			},
+			updateisread() {
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					type: 1,
+				}
+				this.$request('/updateIsRead', "POST", data).then(res => {
+					// console.log('获取', res);
+				})
+			},
+			// 聊天记录自动跳转底部
+			scrollToBottom() {
+				let that = this
+				let query = uni.createSelectorQuery()
+				query.select('#scrollview').boundingClientRect()
+				query.select('#msglistview').boundingClientRect()
+				query.exec((res) => {
+					// console.log('res', res);
+					console.log('res',res[1].height, res[0].height);
+					// console.log(res[1].height, res[0].height);
+					if (res[1].height > res[0].height) {
+						that.scrollTop = res[1].height - res[0].height
+					}
+				})
 			}
-		};
+		},
+		onShow() {
+			// 获取页面数据
+			this.getdata()
+			// 更新已读
+			this.updateisread()
+		},
+		// 进入页面渲染完毕后调用
+		onReady() {
+			this.scrollToBottom()
+		},
+		onLoad() {
+			// this.userName = this.$store.state.user.userName
+			// this.getdata()
+		}
 	}
-};
 </script>
 
 <style lang="scss">
-	.messageSys{
+	.classTest {
+		font-size: 30px;
+	}
+
+	.messageSys {
 		padding-bottom: 80rpx;
+		
 	}
-.content {
-	padding: 10px;
-	margin: 10px;
-	background-color: white;
-	border-radius: 8px;
-	// margin-top: 5px;
-	.disC{
+
+
+	.reverse {
+		// flex: 1;
 		display: flex;
-		justify-content: space-between;
-		align-items: baseline;
-	}
-	.text {
-		.header {
-			view {
-				color: black;
-				// font-size: 16px;
-				font-weight: 600;
-				margin-bottom: 10px;
-				display: flex;
-				justify-content: space-between;
+		flex-direction: column-reverse;
+		.content {
+			padding: 10px;
+			margin: 10px;
+			background-color: white;
+			border-radius: 8px;
+
+			.conblock {
+				.header {
+					color: black;
+					font-weight: 600;
+					display: flex;
+					justify-content: space-between;
+
+					.disC {
+						display: flex;
+						width: 100%;
+						font-weight: bold;
+						justify-content: space-between;
+						align-items: baseline;
+						/*隐藏溢出*/
+						/*当文本溢出包含元素时显示省略符号来代表被修剪的文本*/
+						/*规定段落中的文本不进行换行*/
+						white-space: normal;
+						letter-spacing: 2rpx;
+						display: -webkit-box;
+						word-break: break-all;
+						text-overflow: ellipsis;
+						overflow: hidden;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 2;
+						/*设置 需要显示的行数*/
+					}
+				}
+
 				.sj {
 					color: #999999;
-					// font-size: 13px;
 					font-weight: 500;
+					padding: 10rpx 0;
 				}
-			}
-		}
-		.main {
-			color: #999999;
-			view {
-				font-weight: 400;
-				// font-size: 14px;
-				text-indent: 2em;
-				view {
-					color: #0056a8;
-					font-weight: 600;
+
+				.main {
+					color: #999999;
+
+					view {
+						font-weight: 400;
+						// font-size: 14px;
+
+
+						view {
+							color: #0056a8;
+							font-weight: 600;
+						}
+					}
+
+
 				}
 			}
-			.custom-list {
-				padding-left: 5px;
-				padding-top: 3px;
-			}
-			.custom-list .list-item::before {
-				content: '• ';
-			}
 		}
 	}
-}
-</style>
+</style>

+ 127 - 66
pages/mine/mine.vue

@@ -2,26 +2,33 @@
 	<view>
 		<statusBar :item="navBarData"></statusBar>
 		<view class="mineBox">
-			<view class="userInformation" @click="gotoMineEdit">
-				<view class="userAvatar">
+			<view class="userInformation" >
+				<view class="userAvatar" @click="gotoMineEdit">
 					<image
 						:src="userAvatar!=='' ? userAvatar : 'https://teacherapi.cocorobo.cn/teaching-file/static//mine/Avatar_default.png'"
 						mode="aspectFill"></image>
 				</view>
-				<view class="userInfo">
+				<view class="userInfo" @click="gotoMineEdit">
 					<view class="infoTextone">
-						<text class="twoZ-font">{{ username!=='' ? username : '未登录' }}</text>
+						<text class="twoZ-font">{{ !username ? '未登录' : username }}</text>
 						<!-- <span v-if="isManage!==''" class="manage bq-font">管理员</span> -->
 					</view>
 					<view class="infoTexttwo">
-						<!-- <text style="font-size: 26rpx;font-weight: 400;line-height: 42rpx;color: #999999;">{{signature!=='' ? signature : '个性签名' }}</text> -->
-						<text style="font-size: 26rpx;font-weight: 400;line-height: 42rpx;color: #999999;"></text>
+						<text style="font-size: 26rpx;font-weight: 400;line-height: 42rpx;color: #999999;">
+							{{signature!=='' ? signature : '个性签名' }}
+						</text>
+						<!-- <text style="font-size: 26rpx;font-weight: 400;line-height: 42rpx;color: #999999;"></text> -->
 					</view>
 				</view>
+			<!-- 	<view class="msgInfo">
+					<view class="msgImg" @click="goMsg">
+						消息
+					</view>
+				</view> -->
 			</view>
 			<view class="userOptionsBox">
 				<view class="optionsItemBox">
-					<view class="optionItem" @click="goToSub(1)">
+<!-- 					<view class="optionItem" @click="goToSub(1)">
 						<view class="option_left">
 							<span class="option_icon">
 								<image src="https://teacherapi.cocorobo.cn/teaching-file/static//mine/Subscribe.png" mode="aspectFill">
@@ -33,24 +40,40 @@
 							<image src="https://teacherapi.cocorobo.cn/teaching-file/static//mine/arrow-right.png" mode="aspectFill">
 							</image>
 						</view>
+					</view> -->
+					<view class="optionItem" @click="goMsg">
+						<view class="option_left">
+							<view class="option_icon">
+								<image style="width: 80%;height: 80%;" src="../../static/Vectorldang.png" mode="aspectFill">
+								</image>
+							</view>
+							<text class="option_text fwb-font">我的消息</text>
+						</view>
+						<view class="option_right">
+							<view class="msgq" v-if="msgn>0">
+								{{msgn}}
+							</view>
+							<image src="https://teacherapi.cocorobo.cn/teaching-file/static//mine/arrow-right.png" mode="aspectFill">
+							</image>
+						</view>
 					</view>
 					<view class="optionItem" @click="gotoMineCollect">
 						<view class="option_left">
 							<span class="option_icon">
-								<image src="https://teacherapi.cocorobo.cn/teaching-file/static//mine/Collect.png" mode="aspectFill">
+								<image src="https://teacherapi.cocorobo.cn/teaching-file/static/mine/Collect.png" mode="aspectFill">
 								</image>
 							</span>
 							<text class="option_text fwb-font">我的收藏</text>
 						</view>
 						<view class="option_right">
-							<image src="https://teacherapi.cocorobo.cn/teaching-file/static//mine/arrow-right.png" mode="aspectFill">
+							<image src="https://teacherapi.cocorobo.cn/teaching-file/static/mine/arrow-right.png" mode="aspectFill">
 							</image>
 						</view>
 					</view>
 					<view class="optionItem" @click="gotoMineActive">
 						<view class="option_left">
 							<span class="option_icon">
-								<image src="https://teacherapi.cocorobo.cn/teaching-file/static//mine/active.png" mode="aspectFill">
+								<image src="https://teacherapi.cocorobo.cn/teaching-file/static/mine/active.png" mode="aspectFill">
 								</image>
 							</span>
 							<text class="option_text fwb-font">我的活动</text>
@@ -60,7 +83,7 @@
 							</image>
 						</view>
 					</view>
-					<view class="optionItem" @click="gotoMineClass">
+<!-- 					<view class="optionItem" @click="gotoMineClass">
 						<view class="option_left">
 							<span class="option_icon">
 								<image src="https://teacherapi.cocorobo.cn/teaching-file/static//mine/myClass.png" mode="aspectFill">
@@ -72,8 +95,8 @@
 							<image src="https://teacherapi.cocorobo.cn/teaching-file/static//mine/arrow-right.png" mode="aspectFill">
 							</image>
 						</view>
-					</view>
-					<view class="optionItem" @click="gotomyRelease">
+					</view> -->
+<!-- 					<view class="optionItem" @click="gotomyRelease">
 						<view class="option_left">
 							<span class="option_icon">
 								<image src="https://teacherapi.cocorobo.cn/teaching-file/static//fabu.png" mode="aspectFill">
@@ -85,7 +108,7 @@
 							<image src="https://teacherapi.cocorobo.cn/teaching-file/static//mine/arrow-right.png" mode="aspectFill">
 							</image>
 						</view>
-					</view>
+					</view> -->
 				</view>
 				<view class="optionsItemBox">
 					<view class="optionItem">
@@ -140,86 +163,103 @@
 					title: '我的',
 					btn: 0
 				},
-			
+				msgn:0,
 				// 用户名
 				username: '',
 				// 头像
-				userAvatar: 'https://teacherapi.cocorobo.cn/teaching-file/static//mine/Avatar.png',
-				// 签名
+				userAvatar: 'https://teacherapi.cocorobo.cn/teaching-file/static/mine/Avatar.png',
+				// 学校
 				signature:'',
 				isManage: ''
 			};
 		},
 		methods: {
-			getFile(val) {
-				// console.log(val);
-
-				this.ajax
-					.post("https://cxcy.ssti.net.cn/api/UploadFirmFile", {
-						uid: this.$store.state.userInfo.userid,
-						file: JSON.stringify(val),
-					})
-					.then((res) => {
-						if (res.data == 1) {
-							this.$message.success("上传成功");
-						} else {
-							this.$message.error("上传失败");
-						}
-						this.getData();
-					});
-			},
-			goToSub(i) {
-				uni.navigateTo({
-					url: '/pages/mineSubscribe/mineSubscribe'
-				});
-			},
-
-			gotoMineClass() {
-				uni.navigateTo({
-					url: '/pages/mineClass/mineClass'
-				})
-			},
+			
+			// 我的收藏
 			gotoMineCollect() {
 				uni.navigateTo({
-					url: '/pages/mineCollect/mineCollect'
+					// url: '/pages/mineCollect/mineCollect'
+					url:'/pages/mineCollNew/mineCollNew'
 				})
 			},
+			// 我的设置
 			gotoMineEdit() {
 				uni.navigateTo({
 					url: '/pages/mineEdit/mineEdit'
 				})
 			},
-			gotoMineEdit() {
+			// 我的活动
+			gotoMineActive() {
 				uni.navigateTo({
-					url: '/pages/mineEdit/mineEdit'
+					url: '/pages/mineActive/mineActive'
 				})
 			},
-			gotoMineActive() {
+			// 信息
+			goMsg(){
 				uni.navigateTo({
-					url: '/pages/mineActive/mineActive'
+					url: '/pages/msg/msg'
 				})
 			},
-			gotomyRelease() {
-				const value = this.$store.state.user.openid;
-				if (value == '') {
-					uni.navigateTo({
-						url: "/pages/login_Wechat/login_Wechat",
-					});
-				} else {
-					uni.navigateTo({
-						url: '/pages/mineRelease/mineRelease'
-					})
-				}
+			// 获取未读信息
+			getMag() {
+				this.$request('/selectAllMessage', "POST", {
+					oid: this.$store.state.user.openid
+				}).then(res => {
+					console.log('获取未读信息',res[0][0].msg);
+					let num = res[0][0].msg
+					this.msgn=num
+					if (num == 0) {
+						uni.hideTabBarRedDot({
+							index: 3
+						})
+					} else {
+						
+						uni.setTabBarBadge({
+							index: 3,
+							text: num.toString()
+						})
+					}
+				})
 			}
+			// 我的发布
+			// gotomyRelease() {
+			// 	const value = this.$store.state.user.openid;
+			// 	if (value == '') {
+			// 		uni.navigateTo({
+			// 			url: "/pages/login_Wechat/login_Wechat",
+			// 		});
+			// 	} else {
+			// 		uni.navigateTo({
+			// 			url: '/pages/mineRelease/mineRelease'
+			// 		})
+			// 	}
+			// },
+			// 我的订阅
+			// goToSub(i) {
+			// 	uni.navigateTo({
+			// 		url: '/pages/mineSubscribe/mineSubscribe'
+			// 	});
+			// },
+			// 我的教研室
+			// gotoMineClass() {
+			// 	uni.navigateTo({
+			// 		url: '/pages/mineClass/mineClass'
+			// 	})
+			// },
 		},
 		onShow() {
+			this.getMag()    // 调用app.js中的方法
+			
 			console.log(this.$store.state);
+			
 			this.userAvatar = this.$store.state.user.avatar;
+			
 			this.username = this.$store.state.user.username;
-			this.signature=this.$store.state.user.brief;
 			
-			this.isManage = this.$store.state.user.openid;
-			console.log(this.isManage == "");
+			// 学校
+			this.signature=this.$store.state.user.school==null?'':this.$store.state.user.school;
+			// this.isManage = this.$store.state.user.openid;
+			// console.log(this.isManage == "");
 		}
 	};
 </script>
@@ -293,6 +333,19 @@
 					}
 				}
 			}
+			.msgInfo{
+				width: 70rpx;
+				position: relative;
+				height: 80%;
+				.msgImg{
+					position: absolute;
+					top: 0;
+					right: 0;
+					
+					width: 64rpx;
+					height: 64rpx;
+				}
+			}
 		}
 
 		// 个人资料选项
@@ -321,7 +374,7 @@
 						.option_icon {
 							height: 100%;
 							width: 40rpx;
-
+							
 							image {
 								width: 100%;
 								height: 100%;
@@ -336,10 +389,18 @@
 
 					.option_right {
 						height: 40rpx;
-
+						display: flex;
+						align-items: center;
+						.msgq{
+							width: 32rpx;height: 32rpx;background-color:rgba(213, 73, 65, 1);border-radius: 50rpx;
+							color: #fff;
+							font-size: 20rpx;
+							display: flex;justify-content: center;align-items: center;
+						}
 						image {
 							height: 34rpx;
 							width: 30rpx;
+							margin-left: 20rpx;
 						}
 					}
 				}

+ 5 - 10
pages/mineActive/mineActive.vue

@@ -2,11 +2,10 @@
 	<view>
 		<statusBar :item="navBarData"></statusBar>
 
-
-		<view class="activeBox" v-for="(item,index) in activeList" :key="index">
+		<listBlock1 :classList="activeList"></listBlock1>
+		<!-- <view class="activeBox" v-for="(item,index) in activeList" :key="index">
 			<view class="teaching_case">
 				<view class="img">
-					<!-- <image src="http://43.139.158.220:5007/img/static/activity/bg2.png" mode="aspectFill"></image> -->
 					<image :src="activeList[index].pic" mode="aspectFill"></image>
 
 				</view>
@@ -24,7 +23,7 @@
 					<view class="operate">
 						<view class="left">
 							<view class="money fNum-font"><text class="three-font">¥</text> {{ item.cost }}</view>
-							<!-- <view class="person">已报名{{ item.pers }}人</view> -->
+							<view class="person">已报名{{ item.bnum }}/{{ item.pers }}人</view>
 						</view>
 
 						<view class="Oright" @click="gotoDetail" :data-all="item">
@@ -37,7 +36,7 @@
 					</view>
 				</view>
 			</view>
-		</view>
+		</view> -->
 		<view class="" style="width: 100%;height: 50rpx;">
 
 		</view>
@@ -76,7 +75,7 @@
 					type: 2
 				}
 				this.$request('/selectOperator', "POST", data).then(res => {
-					console.log(res[0]);
+					console.log('获取数据',res[0]);
 					this.activeList = res[0]
 				})
 			}
@@ -187,10 +186,6 @@
 						display: flex;
 						justify-content: flex-end;
 						align-items: center;
-						// flex-direction: row;
-						// justify-content: space-around;
-						// align-items: flex-end;
-
 						.text {
 							font-size: 24rpx;
 							color: #3081E8;

+ 571 - 0
pages/mineCollNew/mineCollNew.vue

@@ -0,0 +1,571 @@
+<template>
+	<view class="mineCollNew">
+		<statusBar :item="navBarData"></statusBar>
+		<view class="top">
+			<view class="left" @click="acpag" :class="current == 0 ? info1 : info2">
+				<text class="">活动</text>
+				<view v-if="current == 0" class="yun">
+					<image src="https://teacherapi.cocorobo.cn/teaching-file/static//yym/Ellipse 10.png"
+						mode="aspectFill"></image>
+				</view>
+			</view>
+			<view class="right" @click="clapag" :class="current == 1 ? info1 : info2">
+				<text class="">课程</text>
+				<view v-if="current == 1" class="yun">
+					<image src="https://teacherapi.cocorobo.cn/teaching-file/static//yym/Ellipse 10.png"
+						mode="aspectFill"></image>
+				</view>
+			</view>
+		</view>
+		<swiper class="scroll-view-height" @change="swipeIndex" :current="current" :duration="300">
+			<swiper-item>
+				<scroll-view scroll-y="true" @scrolltolower="lower" style="height: 100%;">
+					<view class="">
+						<view class="listBlock1" v-for="(i,index) in aclist" :key="index+'a'" @click="gotoDetail"
+							:data-aid="i.acId">
+							<view class="img cell-img">
+								<image :src="i.pic" mode="aspectFill"></image>
+								<image class="star" @click.stop="coll" :data-e="i"
+									:src="collArr.includes(i.acId) ? pic_coll2 : pic_coll " mode=""></image>
+							</view>
+
+							<view class="right">
+								<view class="title">
+									<view class="tag bqZ-font">{{i.acshape}}</view>
+
+									<text class="btn-font" style="">
+										{{i.acName}}
+									</text>
+								</view>
+
+								<view class="introduce">
+									<view class="bri">
+										{{ i.brief }}
+									</view>
+									<view class="tim">
+										{{ i.create_at }}
+									</view>
+								</view>
+
+
+								<view class="operate">
+									<view class="left">
+										<view class="add fz-font">已报名{{i.bnum}}人</view>
+									</view>
+									<view class="Oright">
+										<view class="text">查看详情</view>
+										<view class="arrow">
+											<image
+												src="https://teacherapi.cocorobo.cn/teaching-file/static/mine/arrow-right-blue.png"
+												mode="aspectFill"></image>
+										</view>
+									</view>
+
+								</view>
+							</view>
+						</view>
+					</view>
+					<view class="loading">
+						<view v-if="newsLoading==1">数据加载中...</view>
+						<view v-if="newsLoading==2">没有更多了~~</view>
+					</view>
+				</scroll-view>
+			</swiper-item>
+
+			<swiper-item>
+				<scroll-view scroll-y="true" style="height: 100%;">
+					<view class="classListFlex">
+						<view class="cont" @click="gotoWeb" v-for="(item, index) in classlist" :index="index"
+							:key="index" :data-kid="item.href">
+							<image class="star" :src="pic_coll2" @click.stop="collcl" :data-e="item" mode="aspectFill">
+							</image>
+							<image class="img" :src="item.img" mode="aspectFill" />
+							<view class="tit btn-font">{{ item.ctit }}</view>
+							<view class="teacher fz-font">{{ item.school }}</view>
+						</view>
+					</view>
+					<!-- <view class="loading">
+						<view v-if="clLoading==1">数据加载中...</view>
+						<view v-if="clLoading==2">没有更多了~~</view>
+					</view> -->
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+
+		<view class="" style="height: 68rpx;width: 750rpx;">
+
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				navBarData: {
+					title: '我的收藏',
+					btn: 1
+				},
+				current: 0, //课程活动切换
+				info1: "info1", //类名
+				info2: "info2",
+
+				aclist: [], //活动数据list
+				classlist: [], //课程数据list
+
+
+				// 收藏活动list
+				collArr: [],
+				// 收藏课程list
+				collArrcl: [],
+
+				// 触底加载动画提示
+				newsLoading: 0, //0默认值  1加载中 2没有更多了
+				currentPage: 1,
+
+				clLoading: 0, //0默认值  1加载中 2没有更多了
+				clcurrentPage: 1,
+
+				pic_coll: 'https://teacherapi.cocorobo.cn/teaching-file/static/Stara.png',
+				pic_coll2: 'https://teacherapi.cocorobo.cn/teaching-file/static/mine/Collect_yellow.png',
+			};
+		},
+		methods: {
+			// 获取活动数据
+			getData() {
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					type: 0,
+					page: this.currentPage, //下拉获取更多的备用字段
+					lim: 15 //一次获取多少数据
+				}
+				this.$request('/selectCollAcList', 'POST', data).then(res => {
+					console.log('获取活动数据', res);
+					if (!res[0].length) {
+						this.newsLoading = 2
+					} else {
+						this.newsLoading = 0
+					}
+					this.aclist = [...this.aclist, ...res[0]]
+				})
+			},
+			// 获取课程数据
+			getColldata1cl() {
+				// console.log('触发课程收藏事件');
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					type: 1
+				}
+				this.$request('/selectOperatorTech', 'POST', data).then(res => {
+					console.log('获取课程数据', res);
+					// 每次调用前清零,防止push叠加错误
+					// this.classlist = []
+
+					if (!res[0].length) {
+						this.clLoading = 2
+					} else {
+						this.clLoading = 0
+					}
+
+					this.classlist = res[0]
+					// console.log(this.collArr);
+				})
+			},
+			// 获取活动收藏
+			getColldata() {
+				// console.log('触发活动收藏事件');
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					type: 0
+				}
+				this.$request('/selectOperator', 'POST', data).then(res => {
+					console.log('获取活动收藏', res);
+					// 每次调用前清零,防止push叠加错误
+					this.collArr = []
+					// 将acid遍历到collArr中
+					res[0].forEach(i => {
+						this.collArr.push(i.acId)
+					})
+					// console.log(this.collArr);
+				})
+			},
+			// 获取课程收藏数据
+			// getDatacl() {
+			// 	let data = {
+			// 		oid: this.$store.state.user.openid, //用户id
+			// 		// type: 0,
+			// 		// page: this.currentPage, //下拉获取更多的备用字段
+			// 		// lim: 15 //一次获取多少数据
+			// 	}
+			// 	this.$request('/selectCollClassList', 'POST', data).then(res => {
+			// 		console.log('获取课程收藏数据', res);
+
+			// 		// 每次调用前清零,防止push叠加错误
+			// 		// this.collArrcl = []
+					
+			// 		// 将cid遍历到collArr中
+			// 		res[0].forEach(i => {
+			// 			this.collArrcl.push(i.cid)
+			// 		})
+			// 	})
+			// },
+
+			// 跳转活动详情页
+			gotoDetail(e) {
+				let aid = e.currentTarget.dataset.aid;
+				uni.navigateTo({
+					url: `/pages/activityDetailNew/activityDetailNew?acId=${aid}`
+				});
+			},
+			// 查看课程外部链接
+			gotoWeb(e) {
+
+				// return console.log('aaaaaa', e.currentTarget.dataset);
+				let acid = e.currentTarget.dataset.kid
+				uni.navigateTo({
+					url: "/pages/skipone/skipone?url=" + encodeURIComponent(acid),
+				});
+
+			},
+
+
+			// 取消活动收藏事件
+			coll(event) {
+				let aId = event.currentTarget.dataset.e.acId
+
+				let data = {
+					acid: aId,
+					oid: this.$store.state.user.openid, //用户id
+					ty: 0
+				}
+
+				this.$request('/deleteOperator', 'POST', data).then(res => {
+					console.log(res);
+					this.aclist = this.aclist.filter(e => {
+						return e.acId != aId
+					})
+					// 防止一直取消收藏导致触发不了触底刷新
+					if (this.aclist.length < 15) {
+						this.lower()
+					}
+
+					// this.getData()
+				})
+			},
+			// 取消课程收藏事件
+			collcl(event) {
+				let cId = event.currentTarget.dataset.e.cid
+
+				let data = {
+					cid: cId,
+					oid: this.$store.state.user.openid, //用户id
+					ty: 1
+				}
+				
+				this.$request('/deleteOperator', 'POST', data).then(res => {
+					console.log('取消课程收藏',res);
+					this.classlist = this.classlist.filter(e => {
+						return e.cid != cId
+					})
+					// 防止一直取消收藏导致触发不了触底刷新
+					if (this.classlist.length < 15) {
+						this.cllower()
+					}
+					// this.getColldata1cl()
+				})
+			},
+			// 活动触底加载更多
+			lower() {
+				console.log('没触底?');
+				if (this.newsLoading == 2) return
+				this.newsLoading = 1
+				this.currentPage++
+				setTimeout(this.getData, 1000)
+			},
+			// 课程触底加载更多
+			// cllower() {
+			// 	console.log('没触底?');
+			// 	if (this.clLoading == 2) return
+			// 	this.clLoading = 1
+			// 	this.clcurrentPage++
+			// 	setTimeout(this.getColldata1cl, 1000)
+			// },
+			swipeIndex(index) {
+				this.current = index.detail.current;
+			},
+			// 区域滑动
+			acpag() {
+				this.current = 0;
+			},
+			clapag() {
+				this.current = 1;
+			},
+		},
+		onLoad() {
+			this.getData()
+			// this.getDatacl()
+			// 获取收藏事件
+			this.getColldata()
+			this.getColldata1cl()
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.mineCollNew {
+		display: flex;
+		flex-direction: column;
+		height: 100vh;
+
+		.classListFlex {
+			display: flex;
+			justify-content: space-between;
+			flex-wrap: wrap;
+			padding: 30rpx;
+		}
+
+		.cont {
+			background-color: #ffffff;
+			width: 332rpx;
+			padding: 20rpx 15rpx;
+			border-radius: 10px;
+			margin-bottom: 20rpx;
+			position: relative;
+
+			.star {
+				position: absolute;
+				right: 30rpx;
+				top: 30rpx;
+				width: 30rpx;
+				height: 30rpx;
+			}
+
+			.img {
+				width: 300rpx;
+				height: 170rpx;
+				border-radius: 10rpx;
+			}
+
+			.tit {
+				width: 257rpx;
+				margin: 10rpx 0;
+				font-weight: bold;
+				white-space: normal;
+				display: -webkit-box;
+				word-break: break-all;
+				text-overflow: ellipsis;
+				overflow: hidden;
+				-webkit-box-orient: vertical;
+				-webkit-line-clamp: 2;
+				/*设置 需要显示的行数*/
+			}
+
+			.teacher {
+				color: #999999;
+			}
+
+			.mon {
+				font-size: 34rpx;
+				color: rgba(246, 135, 23, 1);
+				font-weight: 34rpx;
+				margin-top: 10rpx;
+
+				.cost {
+					font-weight: 40rpx;
+				}
+			}
+		}
+
+		.loading {
+			height: 30rpx;
+			text-align: center;
+			padding-top: 20rpx;
+			padding-bottom: 100rpx;
+			font-size: 26rpx;
+			color: #888;
+			line-height: 2em;
+		}
+
+		.top {
+			width: 100%;
+			display: flex;
+			justify-content: space-between;
+			margin: 0;
+			background-color: #ffffff;
+			padding: 10px 150rpx;
+			height: 98rpx;
+
+			.info1 {
+				font-weight: bold !important;
+				position: relative;
+				color: rgba(0, 0, 0, 0.8);
+				font-size: 34rpx;
+				line-height: 48rpx;
+				width: 136rpx;
+				height: 48rpx;
+				text-align: center;
+
+				.yun {
+					width: 134rpx;
+					height: 32rpx;
+					position: absolute;
+					left: 0;
+					bottom: -10rpx;
+
+					image {
+						width: 100%;
+						height: 100%;
+					}
+				}
+			}
+
+			.info2 {
+				color: rgba(0, 0, 0, 0.6);
+				font-size: 34rpx;
+				font-weight: 400;
+				line-height: 48rpx;
+				width: 136rpx;
+				height: 48rpx;
+				text-align: center;
+				font-family: 微软雅黑;
+			}
+		}
+
+		.scroll-view-height {
+			flex: 1;
+		}
+
+
+		.listBlock1 {
+			display: flex;
+			justify-content: space-between;
+			background-color: #ffffff;
+			padding: 20rpx 30rpx;
+			width: 100%;
+
+			.img {
+				width: 160rpx;
+				height: 160rpx;
+				flex-shrink: 0;
+				position: relative;
+
+				.star {
+					position: absolute;
+					right: 10rpx;
+					top: 10rpx;
+					width: 30rpx;
+					height: 30rpx;
+				}
+
+				image {
+					width: 100%;
+					height: 100%;
+					border-radius: 10rpx;
+				}
+			}
+
+			.right {
+				padding-left: 20rpx;
+				flex: 1;
+				display: flex;
+				flex-direction: column;
+				justify-content: space-between;
+
+				.title {
+					display: flex;
+					width: 360rpx;
+					justify-content: flex-start;
+					align-items: center;
+
+					text {
+						font-weight: bold;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						white-space: nowrap;
+					}
+				}
+
+				.introduce {
+					font-size: 24rpx;
+					display: flex;
+					justify-content: space-between;
+
+					.bri {
+						width: 250rpx;
+						color: #a7a7a7;
+						overflow: hidden;
+						text-overflow: ellipsis;
+						white-space: nowrap;
+					}
+
+					.tim {
+						color: #a7a7a7;
+					}
+				}
+
+				.operate {
+					display: flex;
+					justify-content: space-between;
+
+					.left {
+						display: flex;
+						align-items: baseline;
+						position: relative;
+						width: 60%;
+
+						.add {
+							position: absolute;
+							bottom: 0;
+							left: 0;
+							width: 100%;
+							padding-left: 3rpx;
+							color: rgba(0, 0, 0, 0.6) !important;
+						}
+					}
+
+					.Oright {
+						// width: 80px;
+						display: flex;
+						justify-content: flex-end;
+						align-items: center;
+
+
+						.text {
+							font-size: 24rpx;
+							color: #3081E8;
+						}
+
+						.arrow {
+							display: flex;
+							justify-content: center;
+							margin-top: 5rpx;
+
+							image {
+								width: 32rpx;
+								height: 32rpx;
+							}
+						}
+					}
+
+
+				}
+			}
+
+			.tag {
+				border: 1px #00b2b6 solid;
+				flex-shrink: 0;
+				letter-spacing: 2rpx;
+				width: 104rpx;
+				height: 32rpx;
+				display: flex;
+				white-space: nowrap;
+				justify-content: center;
+				align-items: center;
+				border-radius: 4rpx;
+				margin-right: 10rpx;
+				color: #00b2b6;
+				line-height: 32rpx;
+			}
+		}
+	}
+</style>

+ 5 - 1
pages/mineCollect/mineCollect.vue

@@ -44,8 +44,10 @@
 					title: '我的收藏',
 					btn: 1
 				},
-				collArr: [], //无用了
+				collArr: [], 
 				classList: [],
+				
+				
 			};
 		},
 		methods: {
@@ -61,6 +63,7 @@
 					this.classList = res[0]
 				})
 			},
+			
 			// 这里获取的活动肯定是已收藏的,就不用判断直接删除就可以了
 			coll(event) {
 				
@@ -142,6 +145,7 @@
 				}
 
 				image {
+					flex-shrink: 0;
 					width: 32rpx;
 					height: 32rpx;
 				}

+ 93 - 55
pages/mineEdit/mineEdit.vue

@@ -13,7 +13,7 @@
 			</view>
 			<view class="setName">
 				<view class="edit_title">
-					<text>昵称</text>
+					<text>姓名</text>
 				</view>
 				<view class="input_details">
 					<view class="nickname">
@@ -50,7 +50,7 @@
 						</view>
 						<view class="input_details">
 							<view class="details">
-								<view class="uni-input text">{{schoolList[userData.school]}}</view>
+								<view class="uni-input text">{{userData.school}}</view>
 							</view>
 							<view class="arrow">
 								<image
@@ -62,8 +62,45 @@
 				</picker>
 			</view>
 			<view class="setPicker">
+				<picker mode="selector" :range="speList" :value="userData.spe" @change="handelspe">
+					<view class="content">
+						<view class="edit_title">
+							<text>专业</text>
+						</view>
+						<view class="input_details">
+							<view class="details">
+								<view class="uni-input text">{{userData.spe}}</view>
+							</view>
+							<view class="arrow">
+								<image
+									src="https://teacherapi.cocorobo.cn/teaching-file/static//mine/arrow-right_gray.png"
+									mode="aspectFill"></image>
+							</view>
+						</view>
+					</view>
+				</picker>
+			</view>
+			<view class="setPicker">
+				<picker mode="selector" :range="rankList" :value="userData.rankl" @change="handelrank">
+					<view class="content">
+						<view class="edit_title">
+							<text>职称</text>
+						</view>
+						<view class="input_details">
+							<view class="details">
+								<view class="uni-input text">{{userData.rankl}}</view>
+							</view>
+							<view class="arrow">
+								<image
+									src="https://teacherapi.cocorobo.cn/teaching-file/static//mine/arrow-right_gray.png"
+									mode="aspectFill"></image>
+							</view>
+						</view>
+					</view>
+				</picker>
+			</view>
+<!-- 			<view class="setPicker">
 				<picker mode="date" :value="userData.birthday" :start="startDate" :end="endDate" @change="bindDateChange">
-				<!-- <picker mode="date" :value="userData.date" @change="bindDateChange"> -->
 					<view class="content">
 						<view class="edit_title">
 							<text>生日</text>
@@ -80,8 +117,8 @@
 						</view>
 					</view>
 				</picker>
-			</view>
-			<view class="setPicker">
+			</view> -->
+<!-- 			<view class="setPicker">
 				<picker mode="selector" :range="hobbyList" :value="userData.tag"  @change="handelHobby">
 					<view class="content">
 						<view class="edit_title">
@@ -99,7 +136,7 @@
 						</view>
 					</view>
 				</picker>
-			</view>
+			</view> -->
 			<view class="setIntro">
 				<view class="edit_title">
 					<text>简介</text>
@@ -138,7 +175,6 @@
 		</view>
 
 		<view>
-			<!-- <view class="mask" v-show="showPopupConfirm" @click="closePopup"></view> -->
 			<view class="popup-container" style="height: 175px;" v-show="showPopupConfirm">
 				<view class="popup">
 					<view class="header" style="margin-top: 15px;">
@@ -177,6 +213,10 @@
 				genderList: ['男', '女'],
 				//学校选项
 				schoolList: ['深圳信息XX学院', '深圳XX学院', '深圳XX学院'],
+				//专业选项
+				speList: ['互联网', '网络通信', '航空', '汽修', '珠宝', '文秘', '设计'],
+				//职称选项
+				rankList: ['xx', 'xx', 'xx'],
 				// 兴趣选项
 				hobbyList: ['篮球','编程','钢琴','美术','摄影'],
 				
@@ -194,10 +234,10 @@
 					oid:'',
 					avatar: '', //头像
 					username: '', //用户名
-					sex:null, //用户性别
-					school:null,//学校
-					birthday: '',//生日
-					tag:null, //兴趣标签
+					sex:'', //用户性别
+					school:'',//学校
+					spe:'',//专业
+					rankl:'',//职称
 					brief: '', //用户简介
 				}
 
@@ -217,21 +257,11 @@
 			getData(){
 				const value = this.$store.state.user.openid;
 				if (value == '') return
-				
-				this.$request('/selectUserInfo', "POST", {openid: this.$store.state.user.openid,}).then(res => {
+				console.log('????', this.$store.state.user.openid);
+				this.$request('/selectUserInfo', "POST", {openid: this.$store.state.user.openid}).then(res => {
 					console.log('获取渲染数据',res[0][0]);
-					// res[0][0].birthday=
-					if(res[0][0].birthday==null) res[0][0].birthday=''
-					if(res[0][0].brief==null) res[0][0].brief=''
+					
 					this.userData=res[0][0]
-					// this.userData.oid=res[0][0].oid
-					// this.userData.avatar=res[0][0].avatar
-					// this.userData.username=res[0][0].username
-					// this.userData.sex=res[0][0].sex?res[0][0].sex :''
-					// this.userData.school=res[0][0].school?res[0][0].school :''
-					// this.userData.birthday=res[0][0].birthday ?res[0][0].birthday :''
-					// this.userData.tag=res[0][0].tag ?res[0][0].tag :''
-					// this.userData.brief=res[0][0].brief ?res[0][0].brief :''
 				})
 			},
 			// 取消操作
@@ -241,17 +271,17 @@
 			},
 			// 确认操作
 			conf() {
-				
 				this.showPopup = false;
 				this.showPopupConfirm=true
 				console.log('要上传修改的数据',this.userData);
 				this.$request('/updateUserInfo', "POST", this.userData).then(res => {
-					// console.log('修改的数据',res);
+					console.log('修改的数据',res);
 					
-					this.$request('/selectUser', 'POST', {
-						oId: uni.getStorageSync('oId'),
+					console.log('this',this);
+					this.$request('/selectUserInfo', 'POST', {
+						oId: this.$store.state.user.openid
 					}).then(res => {
-						console.log('selectUser', res[0][0]);
+						console.log('获取', res[0][0]);
 						this.$store.dispatch('asyncUpdateUser', res[0][0])
 					})
 					setTimeout(()=>{
@@ -275,19 +305,31 @@
 				console.log(e);
 				this.userData.sex = e.detail.value
 			},
-			handelHobby(e){
-				this.userData.tag = e.detail.value
-			},
-			// 生日
-			bindDateChange(e) {
-				this.userData.birthday = e.detail.value
-			},
+			// handelHobby(e){
+			// 	this.userData.tag = e.detail.value
+			// },
+			// // 生日
+			// bindDateChange(e) {
+			// 	this.userData.birthday = e.detail.value
+			// },
 			// handelGender(e) {
 			// 	this.gender = this.genderList[e.detail.value]
 			// },
 			// 学校
 			handelSchool(e) {
-				this.userData.school = e.detail.value
+				console.log(e);
+				this.userData.school = this.schoolList[e.detail.value] 
+			},
+			// 专业
+			handelspe(e) {
+				console.log('handelspe',e);
+				this.userData.spe = this.speList[e.detail.value]
+				 console.log('???',this.userData.spe );
+			},
+			// 职位
+			handelrank(e) {
+				console.log(e);
+				this.userData.rankl = this.rankList[e.detail.value] 
 			},
 			// 兴趣
 			handeHobby(e) {
@@ -296,17 +338,17 @@
 			
 			// 清除vuex的数据
 			gotoLogin() {
-				console.log(this.$store.state.user);
 				let user = {
-					avatar: "",
-					birthday: "",
-					brief: "",
-					id: "",
-					openid: "",
-					school: "null",
-					sex: null,
-					tag: null,
-					username: "暂无"
+					openid:'',
+					avatar: '', //头像
+					username: '', //用户名
+					sex:'', //用户性别
+					school:'',//学校
+					spe:'',//专业
+					rankl:'',//职称
+					// birthday: '',//生日
+					// tag:null, //兴趣标签
+					brief: '', //用户简介
 				}
 				
 				this.$store.dispatch('asyncUpdateUser', user)
@@ -376,11 +418,7 @@
 
 			.footer {
 				width: 100%;
-				// flex: 1;
 				display: flex;
-				// justify-content: space-around;
-				// align-items: end;
-				// padding-top: 17px;
 				overflow: hidden;
 
 				.cancel-btn {
@@ -416,7 +454,7 @@
 
 	.editBox {
 		width: 100%;
-		height: 840rpx;
+		// height: 800rpx;
 		display: flex;
 		flex-direction: column;
 		background-color: #fff;
@@ -501,7 +539,7 @@
 			display: flex;
 			flex-direction: column;
 			justify-content: space-evenly;
-			height: 216rpx;
+			height: 230rpx;
 			border-top: 1px solid #E7E7E7;
 
 			.input_details {
@@ -510,11 +548,11 @@
 
 				.selfdomIntro {
 					width: 100%;
-					height: 88rpx;
+					height: 120rpx;
 
 					textarea {
 						width: 100%;
-						height: 88rpx;
+						height: 120rpx;
 						font-size: 28rpx;
 						color: rgb(153, 153, 153);
 					}

+ 3 - 3
pages/mineRelease/mineRelease.vue

@@ -21,8 +21,8 @@
 
 					<view class="operate">
 						<view class="left">
-							<!-- <view class="person">浏览0 · 订阅{{ item.snum }} · 收藏{{ item.dnum }} · 已购0</view> -->
-							<view class="person"> 订阅{{ item.snum }} · 收藏{{ item.dnum }} </view>
+							<view class="person">浏览{{item.views}} · 订阅{{ item.snum }} · 收藏{{ item.dnum }} · 已购{{ item.bnum }}</view>
+							<!-- <view class="person"> 订阅{{ item.snum }} · 收藏{{ item.dnum }} </view> -->
 						</view>
 
 						<view class="Oright" @click="gotoActdetail" :data-info="item">
@@ -117,7 +117,7 @@
 					lim: 15 //一次获取多少数据
 				}
 				this.$request('/selectMyPublish', "POST", data).then(res => {
-					console.log("我的发布", res[0].length);
+					console.log("我的发布", res[0]);
 					// 看是否有发布过数据,没有的话提示通知
 					if (!res[0].length) {
 						this.newsLoading = 2

+ 262 - 0
pages/msg/msg.vue

@@ -0,0 +1,262 @@
+<template>
+	<view class="msg">
+		<statusBar :item="navBarData"></statusBar>
+		<view class="top">
+			<view class="left" @click="puMsg" :class="current == 0 ? info1 : info2">
+				<text class="">消息通知</text>
+				<view v-if="current == 0" class="yun">
+					<image src="https://teacherapi.cocorobo.cn/teaching-file/static//yym/Ellipse 10.png"
+						mode="aspectFill"></image>
+				</view>
+			</view>
+			<view class="right" @click="sysMsg" :class="current == 1 ? info1 : info2">
+				<text class="">系统通知</text>
+				<view v-if="current == 1" class="yun">
+					<image src="https://teacherapi.cocorobo.cn/teaching-file/static//yym/Ellipse 10.png"
+						mode="aspectFill"></image>
+				</view>
+			</view>
+		</view>
+		
+		<swiper class="scroll-view-height" @change="swipeIndex" :current="current" :duration="300">
+			<swiper-item>
+				<scroll-view scroll-y="true" style="height: 100%;">
+					<view class="">
+						<view class="" v-for="(item,index) in Msglist" :key="index">
+							<view class="msgBlock" v-if="item.type==0">
+								<view class="tit">
+									<view>活动报名成功</view>
+									<view class="msgtime">
+										{{item.create_at}}
+									</view>
+								</view>
+								<view class="contxt">恭喜!您已成功完成<text style="color: rgba(0, 86, 168, 1);">“{{item.acName}}”</text>活动报名。您的参与信息已经成功提交,您现在是我们活动的一部分,我们非常期待与您共度美好时光。</view>
+								<view class="contxt">
+									 以下是一些额外信息,以确保您充分了解您的参与:
+								</view>
+								<view class="contxt1" style="display: flex;">
+									<view class="" style="width: 2em;text-align: center;">•</view>
+									<view class=""> 活动名称: [{{item.acName}}]</view>
+								</view>
+								<view class="contxt1" style="display: flex;">
+									<view class="" style="width: 2em;text-align: center;">•</view>
+									<view class=""> 日期: [×××]</view>
+								</view>
+								<view class="contxt1" style="display: flex;">
+									<view class="" style="width: 2em;text-align: center;">•</view>
+									<!-- <view class=""> 时间: [{{item.begin_at}}]</view> -->
+									<view class=""> 时间: [×××]</view>
+								</view>
+								<view class="contxt1" style="display: flex;">
+									<view class="" style="width: 2em;text-align: center;">•</view>
+									<view class=""> 地点: [{{item.address}}]</view>
+								</view>
+							</view>
+							
+							<view class="msgBlock" v-if="item.type==1">
+								<view class="tit">
+									<view>活动开始提醒</view>
+									<text class="msgtime">{{item.create_at}}</text>
+								</view>
+								<view class="contxt">
+									<text style="color: rgba(0, 86, 168, 1);">“丽湖职教双创教育国际虚拟教研室 • 常规教研活动 第9期”</text>活动现在已经在我们的平台上正式上线,欢迎您点击浏览和积极参加。不要错过这个令人兴奋的机会,我们期待着与您一同度过难忘的时光。点击活动名称进入活动详情哦!
+								</view>
+							</view>
+						</view>
+					</view>
+					<!-- <view class="loading">
+						<view v-if="clLoading==1">数据加载中...</view>
+						<view v-if="clLoading==2">没有更多了~~</view>
+					</view> -->
+					
+				</scroll-view>
+			</swiper-item>
+		
+			<swiper-item>
+				<scroll-view scroll-y="true" style="height: 100%;">
+					<view class="">
+						<view class="" v-for="(item,index) in Msglist" :key="index">
+							<view class="msgBlock"  v-if="item.type==2">
+								<view class="tit">
+									<view>恭喜您,成功加入会员</view>
+									<text class="msgtime">{{item.create_at}}</text>
+								</view>
+								<view class="contxt1">
+									尊敬的<text style="color: rgba(0, 86, 168, 1);">{{item.username}}</text>, 
+								</view>
+								<view class="contxt">
+										我们很高兴通知您,您已成功加入<text style="color: rgba(0, 86, 168, 1);">[XXX小程序会员]</text>!欢迎加入我们的团队,我们期待与您一同合作并参与。
+								</view>
+							</view>
+						</view>
+					</view>
+					<!-- <view class="loading">
+						<view v-if="sysLoading==1">数据加载中...</view>
+						<view v-if="sysLoading==2">没有更多了~~</view>
+					</view> -->
+					
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+		
+	</view>
+</template>
+
+<script>
+	export default {
+		data() {
+			return {
+				navBarData: {
+					title: '活动消息',
+					btn: 1
+				},
+				Msglist:[],
+				currentPage:1,
+				current: 0, //登录方式切换
+				info1: "info1", //类名
+				info2: "info2",
+			};
+		},
+		methods:{
+			// 获取数据
+			getdata() {
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					page: this.currentPage,
+					lim: 30
+				}
+				this.$request('/selectMessage', "POST", data).then(res => {
+					console.log('获取', res);
+					// this.list = [this.list,...res[0]]
+					this.Msglist = res[0]
+					// console.log('获取',this.list);
+				})
+			},
+			// 更新已读
+			updateisread() {
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					// type: 2,
+				}
+				this.$request('/updateIsRead', "POST", data).then(res => {
+					// console.log('获取', res);
+				})
+			},
+			puMsg(){
+				this.current =0;
+			},
+			sysMsg(){
+				this.current = 1;
+			},
+			swipeIndex(index) {
+				this.current = index.detail.current;
+			},
+		},
+		onShow() {
+			this.getdata()
+			this.updateisread()
+		}
+	}
+</script>
+
+<style lang="scss">
+	.msg {
+		display: flex;
+		flex-direction: column;
+		flex: 1;
+		justify-content: space-between;
+		width: 750rpx;
+		height: 100vh;
+		.loading {
+			height: 30rpx;
+			text-align: center;
+			padding-top: 20rpx;
+			padding-bottom: 100rpx;
+			font-size: 26rpx;
+			color: #888;
+			line-height: 2em;
+		}
+		
+		.top {
+			display: flex;
+			justify-content: space-between;
+			margin: auto;
+			width: 100%;
+			background-color: #ffffff;
+			padding: 10px 20%;
+		
+			.info1 {
+				font-weight: bold !important;
+				position: relative;
+				color: rgba(0, 0, 0, 0.8);
+				font-size: 34rpx;
+				line-height: 48rpx;
+				width: 136rpx;
+				height: 48rpx;
+				text-align: center;
+				.yun {
+					width: 134rpx;
+					height: 32rpx;
+					position: absolute;
+					left: 0;
+					bottom: -10rpx;
+					image {
+						width: 100%;
+						height: 100%;
+					}
+				}
+			}
+		
+			.info2 {
+				color: rgba(0, 0, 0, 0.6);
+				font-size: 34rpx;
+				font-weight: 400;
+				line-height: 48rpx;
+				width: 136rpx;
+				height: 48rpx;
+				text-align: center;
+				font-family: 微软雅黑;
+			}
+		}
+		.scroll-view-height {
+			padding: 20rpx 0;
+			flex: 1;
+			.msgBlock{
+				width: 720rpx;
+				margin: auto;
+				background-color: #ffffff;
+				border-radius: 12px;
+				padding: 28rpx 24rpx 32rpx 24rpx;
+				margin-bottom: 20rpx;
+				.tit{
+					font-size: 34rpx;
+					font-weight: 400;
+					height: 48rpx;
+					line-height: 48rpx;
+					margin-bottom: 20rpx;
+					color: rgba(0, 0, 0, 0.8);
+					display: flex;
+					justify-content: space-between;
+					.msgtime{
+						line-height: 58rpx;
+							font-size: 28rpx;
+							color: rgba(0, 0, 0, 0.4);
+					}
+				}
+				.contxt{
+					text-indent: 2em;
+					color: rgba(0, 0, 0, 0.6);
+					font-size: 28rpx;
+					line-height: 40rpx;
+				}
+				.contxt1{
+					color: rgba(0, 0, 0, 0.6);
+					font-size: 28rpx;
+					line-height: 40rpx;
+				}
+			}
+			
+			
+		}
+	}
+</style>

+ 4 - 1
pages/publish/publish.vue

@@ -389,7 +389,8 @@
 				if (!this.activitytitle || this.activitytitle == null) return uni.showToast({title: '请填写标题',icon: 'none'})
 				if (!this.activityintro || this.activityintro == null) return uni.showToast({title: '请填写内容',icon: 'none'})
 				if (!this.imageValue || this.imageValue == null) return uni.showToast({title: '请添加图片',icon: 'none'})
-				if (!this.index && this.index == null) return uni.showToast({title: '请选择分类',icon: 'none'})
+				if (!this.index || this.index == null) return uni.showToast({title: '请选择分类',icon: 'none'})
+				if (!this.recruitment || this.recruitment == null) return uni.showToast({title: '请输入招募人数',icon: 'none'})
 
 				this.showPopup = true; //显示弹窗
 
@@ -430,6 +431,8 @@
 							uni.removeStorageSync('formData');
 						}, 2000)
 					// }
+				}).catch(err=>{
+					console.log(err);
 				})
 			},
 			// 修改上传

+ 63 - 376
pages/resource/resource.vue

@@ -21,32 +21,37 @@
 						mode="aspectFill"></image>
 				</view>
 			</view>
+			<view class="right" @click="costClass" :class="current == 2 ? info1 : info2">
+				<text class="">付费课程</text>
+				<view v-if="current == 2" class="yun">
+					<image src="https://teacherapi.cocorobo.cn/teaching-file/static//yym/Ellipse 10.png"
+						mode="aspectFill"></image>
+				</view>
+			</view>
 		</view>
 
-		<swiper class="scroll-view-height" :style="{ height: swiper + 'px' }" @change="swipeIndex" :current="current"
-			:duration="300">
+		<swiper class="scroll-view-height" @change="swipeIndex" :current="current" :duration="300">
 			<swiper-item>
-				<scroll-view scroll-y="true" :style="{ height: swiper + 'px' }">
-					<view class="contBox">
-						<view class="cont" @click="gotozyk" v-for="(item, index) in filteredClassList" :index="index"
-							:key="index" :data-reId="item.goto">
-							<image class="image" :src="item.url" mode="aspectFill" />
-							<view class="tit btn-font">{{ item.className }}</view>
-							<view class="teacher fz-font">主讲教师:{{ item.th_name }}</view>
-						</view>
+				<scroll-view scroll-y="true" style="height: 100%;">
+					<view class="">
+						<teaching-case ref="reso" :acList='filteredClassList'></teaching-case>
 					</view>
 				</scroll-view>
 			</swiper-item>
 
 			<swiper-item>
-				<scroll-view scroll-y="true" :style="{ height: swiper + 'px' }">
-					<view class="contBox">
-						<view class="cont" @click="gotoWeb" v-for="(item, index) in filteredClassList2" :index="index"
-							:key="index" :data-kid="item.goto">
-							<image class="image" :src="item.url" mode="aspectFill" />
-							<view class="tit btn-font">{{ item.className }}</view>
-							<view class="teacher fz-font">主讲教师:{{ item.th_name }}</view>
-						</view>
+				<scroll-view scroll-y="true" style="height: 100%;">
+					<view class="">
+						<teaching-case ref="tech" :acList='filteredClassList2'></teaching-case>
+					</view>
+				</scroll-view>
+			</swiper-item>
+
+			<swiper-item>
+				<scroll-view scroll-y="true" style="height: 100%;">
+					<view class=""
+						style="height: 100%; width: 750rpx;display: flex;justify-content: center;align-items: center;">
+						<image src="../../static/Frame.png" style="width: 400rpx;height: 400rpx;" mode=""></image>
 					</view>
 				</scroll-view>
 			</swiper-item>
@@ -59,312 +64,73 @@
 		data() {
 			return {
 				navBarData: {
-					title: "资源库",
+					title: "课程",
 					btn: 0,
 				},
+				indexId: 1,
 				current: 0, //登录方式切换
 				info1: "info1", //类名
 				info2: "info2",
-				swiper: 0,
+				// swiper: 0,
 				searchText: "", // 搜索文本
+				pic_coll: 'https://teacherapi.cocorobo.cn/teaching-file/static/Stara.png',
+				pic_coll2: 'https://teacherapi.cocorobo.cn/teaching-file/static/mine/Collect_yellow.png',
 
-				classList: [{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//pubic/img5.jpg",
-						className: "创新思维",
-						goto: "https://zyk.icve.com.cn/courseDetailed?id=efajaxyn4p1fahmj-32xng",
-						th_name: "吴伟",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/sc.jpg",
-						className: "商机识别与创业营销 ",
-						goto: "https://zyk.icve.com.cn/courseDetailed?id=bxmpaiwpzrjixvfpvdzj7w ",
-						th_name: "明照凤 ",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/sg.jpg",
-						className: "双创生态圈构建 ",
-						goto: "https://zyk.icve.com.cn/courseDetailed?id=ewvaiwparxiamjafg03aa ",
-						th_name: "徐文泽",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/cy.jpg",
-						className: "创业基础 ",
-						goto: "https://zyk.icve.com.cn/courseDetailed?id=f-enaxunb7ngggksdm0ivq",
-						th_name: "杨哲旗",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/ks.png",
-						className: "跨界产品研发实战 ",
-						goto: "https://zyk.icve.com.cn/courseDetailed?id=fjioasmspopfnyo0l7d2a",
-						th_name: "王程程",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/cs.jpg",
-						className: "创造性思维与创新方法训练 ",
-						goto: "https://zyk.icve.com.cn/courseDetailed?id=inanarowyjhlw5vrlnrchw",
-						th_name: "申珊珊",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/hs.jpg",
-						className: "行业创业实践 ",
-						goto: "https://zyk.icve.com.cn/courseDetailed?id=jkwpajcprqdgz4dlumimza",
-						th_name: "陆亚文",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/cx.png",
-						className: "创新方法与训练 ",
-						goto: "https://zyk.icve.com.cn/courseDetailed?id=klaqaycnir9cklu4y8yaia",
-						th_name: "张梦龙",
-					},
-				],
-
-
-
-
+				classList: [],
 
-
-
-
-
-
-
-				classList2: [{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/ydjk.png",
-						className: "运动与健康",
-						goto: "https://www.xuetangx.com/course/HUBU10011000132/16906642?channel=i.area.course_list_all",
-						th_name: "代方梅 史文文 等",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/shyy.png",
-						className: "生活英语听说",
-						goto: "https://www.xuetangx.com/course/THU05021000376?channel=i.area.course_list_all",
-						th_name: "杨芳 张文霞",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/yyll.jpg",
-						className: "科研伦理与学术规范",
-						goto: "https://www.xuetangx.com/course/BNU03031000037/16905009?channel=i.area.course_list_all",
-						th_name: "印波",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/kylw.png",
-						className: "如何写好科研论文",
-						goto: "https://www.xuetangx.com/course/THU04011000365/16906220?channel=i.area.course_list_all",
-						th_name: "高飞飞 张靖 等",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-1.jpg",
-						className: "中国共产党与中华民族伟大复兴",
-						goto: "https://www.xuetangx.com/course/zysy06011001641?channel=i.area.course_list_all",
-						th_name: "杜玉芳"
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-2.jpg",
-						className: "大国航母与舰载机",
-						goto: "https://www.xuetangx.com/course/NAU08091000091/16904996?channel=i.area.course_list_all",
-						th_name: "岳奎志 郭卫刚 等",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-4.jpg",
-						className: "体育与社会",
-						goto: "https://www.xuetangx.com/course/Wuhanty04021002450/16906830?channel=i.area.course_list_all",
-						th_name: "张德胜 李菁 等",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-5.png",
-						className: "公共管理学",
-						goto: "https://www.xuetangx.com/course/NUDT12041000081?channel=i.area.course_list_all",
-						th_name: "张学礼",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-6.png",
-						className: "心理学概论",
-						goto: "https://www.xuetangx.com/course/THU07111000416/16905032?channel=i.area.course_list_all",
-						th_name: "彭凯平"
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-7.png",
-						className: "C++语言程序设计基础",
-						goto: "https://www.xuetangx.com/course/THU08091000247/16906211?channel=i.area.course_list_all",
-						th_name: "郑莉 李超 等",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-8.png",
-						className: "《资治通鉴》导读",
-						goto: "https://www.xuetangx.com/course/THU03011000245/16905905?channel=i.area.course_list_all",
-						th_name: "张国刚",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-9.png",
-						className: "军事理论",
-						goto: "https://www.xuetangx.com/course/NDU00001001710?channel=i.area.course_list_all",
-						th_name: "徐焰杜 文龙 等",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-10.png",
-						className: "数据结构(上)",
-						goto: "https://www.xuetangx.com/course/THU08091000384/16906679?channel=i.area.course_list_all",
-						th_name: "邓俊辉",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-11.png",
-						className: "不朽的艺术:走进大师与经典",
-						goto: "https://www.xuetangx.com/course/THU13011000261/16904949?channel=i.area.course_list_all",
-						th_name: "肖鹰 孙晶",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-12.jpg",
-						className: "中国近现代史纲要",
-						goto: "https://www.xuetangx.com/course/THU03051000444/16905083?channel=i.area.course_list_all",
-						th_name: "翁贺凯",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-13.png",
-						className: "马克思主义基本原理",
-						goto: "https://www.xuetangx.com/course/THU03051000344/16906535?channel=i.area.course_list_all",
-						th_name: "刘震 刘恩至 等",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-14.png",
-						className: "数据结构(下)",
-						goto: "https://www.xuetangx.com/course/THU08091002048/16906478?channel=i.area.course_list_all",
-						th_name: "邓俊辉"
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-16.png",
-						className: "大学生心理健康",
-						goto: "https://www.xuetangx.com/course/THU07111000285/16905861?channel=i.area.course_list_all",
-						th_name: "李焰 刘丹 等",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-17.png",
-						className: "财务分析与决策",
-						goto: "https://www.xuetangx.com/course/THU02031000264?channel=i.area.course_list_all",
-						th_name: "肖星",
-					},
-					{
-						url: "https://teacherapi.cocorobo.cn/teaching-file/static//img/Cardimg-15.png",
-						className: "习近平新时代中国特色社会主义思想",
-						goto: "https://www.xuetangx.com/course/THU03051000744/16905028?channel=i.area.course_list_all",
-						th_name: "胡鞍钢",
-					},
-				],
+				classList2: [],
 			};
 		},
 		// 模糊搜索
 		computed: {
 			filteredClassList() {
 				const filteredList = this.classList.filter((item) =>
-					item.className.includes(this.searchText)
+					item.ctit.includes(this.searchText)
 				);
 				return this.searchText ? filteredList : this.classList;
 			},
 			filteredClassList2() {
 				const filterdList2 = this.classList2.filter((item) =>
-					item.className.includes(this.searchText)
+					item.ctit.includes(this.searchText)
 				);
 				return this.searchText ? filterdList2 : this.classList2;
 			},
+
 		},
 		methods: {
-		
-			gotozyk(e) {
-				const value = this.$store.state.user.openid;
-				if (value == '') {
-					uni.navigateTo({
-						url: "/pages/login_Wechat/login_Wechat",
-					});
-					return
-				}
-				let acid = e.currentTarget.dataset.reid
-				uni.navigateTo({
-					url: "/pages/skipone/skipone?url=" + encodeURIComponent(acid),
-				});
-				// 	const urls = [
-				// 		"https://zyk.icve.com.cn/courseDetailed?id=efajaxyn4p1fahmj-32xng",
-				// 		"https://zyk.icve.com.cn/courseDetailed?id=bxmpaiwpzrjixvfpvdzj7w ",
-				// 		"https://zyk.icve.com.cn/courseDetailed?id=ewvaiwparxiamjafg03aa ",
-				// 		"https://zyk.icve.com.cn/courseDetailed?id=f-enaxunb7ngggksdm0ivq",
-				// 		"https://zyk.icve.com.cn/courseDetailed?id=fjioasmspopfnyo0l7d2a",
-				// 		"https://zyk.icve.com.cn/courseDetailed?id=inanarowyjhlw5vrlnrchw",
-				// 		"https://zyk.icve.com.cn/courseDetailed?id=jkwpajcprqdgz4dlumimza",
-				// 		"https://zyk.icve.com.cn/courseDetailed?id=klaqaycnir9cklu4y8yaia"
-				// 	];
 
-			},
-			gotoWeb(e) {
-				const value = this.$store.state.user.openid;
-				if (value == '') {
-					uni.navigateTo({
-						url: "/pages/login_Wechat/login_Wechat",
-					});
-					return
+			// 获取资源库
+			getclassList() {
+				let data = {
+					openid: uni.getStorageSync('oId'),
 				}
-				// return console.log('aaaaaa', e.currentTarget.dataset);
-				let acid = e.currentTarget.dataset.kid
-				uni.navigateTo({
-					url: "/pages/skipone/skipone?url=" + encodeURIComponent(acid),
-				});
-				// if (this.current === 1) {
-				// 	const url_header = 'https://www.xuetangx.com/course'
-				// 	const urls = [
-				// 		"/HUBU10011000132/16906642?channel=i.area.course_list_all",
-				// 		"/THU05021000376?channel=i.area.course_list_all",
-				// 		"/BNU03031000037/16905009?channel=i.area.course_list_all",
-				// 		"/THU04011000365/16906220?channel=i.area.course_list_all",
-				// 		"/zysy06011001641?channel=i.area.course_list_all",
-				// 		"/NAU08091000091/16904996?channel=i.area.course_list_all",
-				// 		"/Wuhanty04021002450/16906830?channel=i.area.course_list_all",
-				// 		"/NUDT12041000081?channel=i.area.course_list_all",
-				// 		"/THU07111000416/16905032?channel=i.area.course_list_all",
-				// 		"/THU08091000247/16906211?channel=i.area.course_list_all",
-				// 		"/THU03011000245/16905905?channel=i.area.course_list_all",
-				// 		"/NDU00001001710?channel=i.area.course_list_all",
-				// 		"/THU08091000384/16906679?channel=i.area.course_list_all",
-				// 		"/THU13011000261/16904949?channel=i.area.course_list_all",
-				// 		"/THU03051000444/16905083?channel=i.area.course_list_all",
-				// 		"/THU03051000344/16906535?channel=i.area.course_list_all",
-				// 		"/THU08091002048/16906478?channel=i.area.course_list_all",
-				// 		"/THU07111000285/16905861?channel=i.area.course_list_all",
-				// 		"/THU02031000264?channel=i.area.course_list_all",
-				// 		"/THU03051000744/16905028?channel=i.area.course_list_all"
-				// 	];
-				// 	if (index >= 0 && index < urls.length) {
-				// 		const url = urls[index];
-				// 		uni.navigateTo({
-				// 			url: "/pages/skipone/skipone?url=" + url_header + encodeURIComponent(url),
-				// 		});
-				// 	}
-				// }
+				this.$request('/selectResource', "POST", data).then(res => {
+					// console.log('获取资源库', res);
+					this.classList = res[0]
+					this.classList2 = res[1]
+				})
 			},
 
-			toggleActive1() {
-				this.isActive1 = true;
-				this.isActive2 = false;
-				this.tab = true;
-			},
-			toggleActive2() {
-				this.isActive1 = false;
-				this.isActive2 = true;
-				this.tab = false;
-			},
 			swipeIndex(index) {
 				this.current = index.detail.current;
 			},
+			// 区域滑动
 			phoneLogin() {
 				this.current = 0;
 			},
 			accountLogin() {
 				this.current = 1;
 			},
-		},
-		onLoad() {
-			if (this.navheight) {
-				this.swiper = this.screenHeight - this.navheight - 140;
-			} else {
-				this.swiper = this.screenHeight - this.customBar - 150;
+			costClass() {
+				this.current = 2;
 			}
 		},
+		onShow() {
+			this.getAllMessage() // 调用app.js中的方法
+			this.getclassList()
+			this.$refs.reso.getdata()
+			this.$refs.tech.getdata()
+		},
 	};
 </script>
 
@@ -374,6 +140,10 @@
 	}
 
 	.resource {
+		display: flex;
+		flex-direction: column;
+		height: 100vh;
+
 		.search {
 			background-color: #ffffff;
 			position: relative;
@@ -383,54 +153,17 @@
 			justify-content: center;
 			align-items: center;
 
-			// background-color: rebeccapurple;
-			.inpSer {
-				width: 690rpx;
-				height: 65rpx;
-				margin: auto;
-				background-color: rgba(240, 242, 245, 1);
-				border-radius: 5rpx;
-				color: rgba(0, 0, 0, 0.26);
-				position: relative;
-
-				.inpTxt {
-					// padding: 0px, 12rpx, 0px, 12rpx;
-					color: #000;
-
-					height: 100%;
-					width: 100%;
-				}
-
-				input::placeholder {
-					color: #000;
-				}
-
-				.ico {
-					position: absolute;
-					top: 50%;
-					left: 20rpx;
-					transform: translate(0, -50%);
-					display: flex;
-					align-items: center;
-
-					image {
-						margin-right: 10rpx;
-					}
-				}
-			}
 		}
 
 		.top {
-			// width: 500rpx;
+			width: 100%;
 			display: flex;
 			justify-content: space-between;
 			margin: auto;
 			background-color: #ffffff;
-			padding: 10px 150rpx;
+			padding: 10px 60rpx;
+			height: 98rpx;
 
-			// margin-bottom: 40px;
-			// font-size: 18px;
-			// padding-top: 0;
 			.info1 {
 				font-weight: bold !important;
 				position: relative;
@@ -441,8 +174,6 @@
 				height: 48rpx;
 				text-align: center;
 
-				// font-family: PingFang SC;
-				// font-family: \9ed1\4f53;
 				.yun {
 					width: 134rpx;
 					height: 32rpx;
@@ -450,8 +181,6 @@
 					left: 0;
 					bottom: -10rpx;
 
-					// transform: translate(-50%,0%);
-					// box-shadow: 0px 10rpx 30rpx 6rpx #4a97f2;
 					image {
 						width: 100%;
 						height: 100%;
@@ -472,54 +201,12 @@
 		}
 
 		.scroll-view-height {
+			flex: 1;
+			width: 100%;
+			display: flex;
+			flex-wrap: wrap;
+			justify-content: space-between;
 
-			// background-color: ;
-			// height: 68vh;
-			// background-color: red;
-			// padding-bottom: 50px;
-			.contBox {
-				width: 100%;
-				padding: 10px 30rpx;
-				// height: 100%;
-				display: flex;
-				flex-wrap: wrap;
-				justify-content: space-between;
-				// background-color: greenyellow;
-				margin-bottom: 50px;
-
-				.cont {
-					background-color: #ffffff;
-					width: 332rpx;
-					padding: 20rpx 15rpx;
-					border-radius: 10px;
-					margin-bottom: 20rpx;
-
-					image {
-						width: 300rpx;
-						height: 170rpx;
-						border-radius: 10rpx;
-					}
-
-					.tit {
-						width: 257rpx;
-						margin: 10rpx 0;
-						// height: 80rpx;
-						font-weight: bold;
-						white-space: normal;
-						display: -webkit-box;
-						word-break: break-all;
-						text-overflow: ellipsis;
-						overflow: hidden;
-						-webkit-box-orient: vertical;
-						-webkit-line-clamp: 2;
-						/*设置 需要显示的行数*/
-					}
-
-					.teacher {
-						color: #999999;
-					}
-				}
-			}
 		}
 	}
 </style>

+ 67 - 25
pages/teachingDetail/teachingDetail.vue

@@ -26,7 +26,7 @@
 					成立日期:{{ actItemList.create_at}}
 				</view>
 				<view class="col fz-font">
-					当前人数:{{ actItemList.pers }}/50
+					当前人数:{{actItemList.bnum}}/{{ actItemList.pers }}人
 				</view>
 				<view class="tag col">
 					<view class="fz-font tag">教研标签:</view>
@@ -96,7 +96,7 @@
 		</view>
 
 		<!-- 当前成员 -->
-		<!-- <view style="padding: 0 30rpx; display: none;">
+		<view style="padding: 0 30rpx;">
 			<view class="member">
 				<view class="memberTop">
 					<view class="btn-font">当前成员</view>
@@ -108,23 +108,27 @@
 					</view>
 				</view>
 
-				<view class="pers">
-					
-					<view class="per">
+				<view class="pers" >
+					<view class="per"  v-for="(i,index) in applyUserlist" :key="index">
+						<image :src="i.avatar" mode=""></image>
 						<view class="perName fz-font">
-							暂无人员
+							{{i.username}}
 						</view>
 					</view>
+					
+					<!-- <view class="" v-if="!applyUserlist.length" style="width: 200rpx">
+						暂无人员
+					</view> -->
 				</view>
 			</view>
-		</view> -->
+		</view>
 
 		<!-- 申请加入 -->
 		<view class="btnBlock">
-			
-			<button class="btn btn1 zw-font" v-if="actItemList.openid==oid">本人创建,暂不支持加入</button>
-			<button class="btn zw-font" v-if="!isSign && actItemList.openid!=oid" @click="applyAdd">申请加入</button>
-			<button class="btn btn1 zw-font" v-if="isSign && actItemList.openid!=oid">已加入</button>
+			<button class="btn btn1 zw-font" v-if="actItemList.bnum>=actItemList.pers">报名人数已满</button>
+			<button class="btn btn1 zw-font" v-else-if="actItemList.openid==oid">本人创建,暂不支持加入</button>
+			<button class="btn zw-font" v-else-if="!isSign && actItemList.openid!=oid" @click="applyAdd">申请加入</button>
+			<button class="btn btn1 zw-font" v-else-if="isSign && actItemList.openid!=oid">已加入</button>
 		</view>
 	</view>
 </template>
@@ -134,7 +138,7 @@
 		data() {
 			return {
 				navbar: {
-					title: '教研室详情',
+					title: '活动详情',
 					btn: 1
 				},
 				// 用户openid
@@ -143,14 +147,18 @@
 				acId:'',
 				// 页面数据
 				actItemList: {},
+				
 				// 用户收藏列表
 				collArr:[],
+				
 				// 用户订阅列表
 				subArr:[],
+				
 				// 是否已加入
 				isSign:0,
-				clickedAcId:'',
 				
+				// 报名列表
+				applyUserlist:[],
 				
 				pic_coll:'https://teacherapi.cocorobo.cn/teaching-file/static//yym/Star 1 (Stroke) (2).png',
 				pic_coll2:'https://teacherapi.cocorobo.cn/teaching-file/static//mine/Collect_yellow.png',
@@ -229,10 +237,24 @@
 						this.$request('/insertOperator', 'POST', data).then(res => {
 							console.log(res);
 							this.getSub()
+							// 添加消息页面订阅通知提示订阅成功
+							this.addMessage()
 						})
 					}
 				})
 			},
+			// 添加消息页面订阅通知提示订阅成功
+			addMessage() {
+				let data = {
+					oid: this.$store.state.user.openid,
+					acid: this.acId,
+					type: 2,
+					con: ``
+				}
+				this.$request('/insertMessage', "POST", data).then(res => {
+					console.log(res);
+				})
+			},
 			// 申请加入
 			applyAdd() {
 				uni.navigateTo({
@@ -242,7 +264,7 @@
 			// 查看更多报名同学
 			gotoMorePer() {
 				uni.navigateTo({
-					url: '/pages/dy/dy'
+					url: `/pages/dy/dy?acId=${this.acId}`
 				})
 			},
 			// 获取是否订阅
@@ -252,7 +274,7 @@
 					type: 1
 				}
 				this.$request('/selectOperator', 'POST', data).then(res => {
-					console.log('获取', res);
+					console.log('获取订阅', res);
 					// 每次调用前清零,防止push叠加错误
 					this.subArr = []
 					// 将acid遍历到subArrsubArr中
@@ -270,7 +292,7 @@
 					type: 0
 				}
 				this.$request('/selectOperator', 'POST', data).then(res => {
-					console.log('获取收藏', res);
+					// console.log('获取收藏', res);
 					// 每次调用前清零,防止push叠加错误
 					this.collArr = []
 					// 将acid遍历到collArr中
@@ -287,16 +309,25 @@
 					type: 2
 				}
 				this.$request('/selectSignup', 'POST', data).then(res => {
-					console.log('获取报名', res[0][0]);
+					// console.log('获取报名', res[0][0]);
 					this.isSign=res[0][0].num
 				})
 			},
-			
-			goLog() {
-				uni.navigateTo({
-					url: "/pages/login_Wechat/login_Wechat",
-				});
+			// 获取报名用户
+			getUsers(){
+				let data = {
+					oid: this.$store.state.user.openid, //用户id
+					aid:this.acId,
+					type: 2,
+					page: 1, //下拉获取更多的备用字段
+					lim: 6 //一次获取多少数据
+				}
+				this.$request('/selectApplyUser', 'POST', data).then(res => {
+					console.log('获取报名用户列表', res[0]);
+					this.applyUserlist=res[0]
+				})
 			}
+			
 		},
 		onLoad(e) {
 			// console.log('接收参数',e);
@@ -307,9 +338,14 @@
 			// this.getActivity()
 			// 获取页面数据
 			this.getdata()
+			// 获取是否收藏
 			this.getColl()
+			// 获取是否订阅
 			this.getSub()
+			// 获取是否报名
 			this.btnEnroll()
+			// 获取报名人名单
+			this.getUsers()
 		}
 	}
 </script>
@@ -481,13 +517,14 @@
 
 			.pers {
 				display: flex;
-				justify-content: space-between;
+				flex-direction: column;
 				align-items: center;
+				width: 16%;
 
 				.per {
 					display: flex;
 					flex-direction: column;
-
+					justify-content: center;
 					image {
 						width: 72rpx;
 						height: 72rpx;
@@ -495,8 +532,13 @@
 					}
 
 					.perName {
-						// font-size: 14px;
 						text-align: center;
+						display: -webkit-box;
+						word-break: break-all;
+						text-overflow: ellipsis;
+						overflow: hidden;
+						-webkit-box-orient: vertical;
+						-webkit-line-clamp: 1;
 					}
 				}
 

+ 1 - 1
pages/teachingList/teachingList.vue

@@ -78,7 +78,7 @@
 			// 一进页面就加载数据
 			this.getData()
 			this.$refs.listBlock1.getdata()
-			this.$refs.listBlock1.getSub()
+			// this.$refs.listBlock1.getSub()
 		}
 	}
 </script>

BIN
static/Dropdown.png


BIN
static/Frame.png


BIN
static/Framehhh.png


BIN
static/Framesss.png


BIN
static/Framezzz.png


BIN
static/Rectangle1922.png


BIN
static/Starhhh.png


BIN
static/Vectorldang.png


BIN
static/hezi.png


BIN
static/union.png


+ 10 - 10
store/index.js

@@ -46,21 +46,21 @@ const store = new Vuex.Store({
 	state: {
 		//公共的变量,存储数据,这里的变量不能随便修改,只能通过触发mutations的方法才能改变
 		user: {
+			
 			openid: '',
-			avatar: "",
-			desc: "",
-			email: "",
-			phone: "",
-			sex: "",
-			token: "",
-			username: "暂无",
-			__v: 0,
-			_id: ""
+			avatar: '', //头像
+			username: '', //用户名
+			sex:'', //用户性别
+			school:'',//学校
+			spe:'',//专业
+			rankl:'',//职称
+			brief: '', //用户简介
+			tel: "",//联系方式
 		},
 		// 聊天记录
 		// message: [],
 		
-		formData: {}
+		// formData: {}
 	},
 	getters: {
 		getUser(state) {