Prechádzať zdrojové kódy

活动+内容审核

xhj 2 rokov pred
rodič
commit
c32d39e45c

+ 100 - 0
match/activityDetail/activityDetail.css

@@ -0,0 +1,100 @@
+/* activityDetail.css */
+page{background: #fff;}
+.top{padding: 0rpx 0rpx 40rpx;border-bottom: 15rpx solid #f6f6f6;}
+.act-img{width: 100%;height: 461rpx;}
+.title{font-size: 40rpx;color: #000;line-height: 50rpx;margin: 45rpx 32rpx 16rpx;font-weight: bold;}
+.datas{font-size: 24rpx;color: #999;margin: 0 32rpx;}
+.money-box{
+	margin: 40rpx 32rpx;
+	font-size: 32rpx;
+	font-weight: 500;
+	color: #666666;
+	justify-content: space-between;
+	background: linear-gradient(90deg, #fff 0%, #FFE7E7 100%);
+	padding: 0 30rpx 0 0;
+	border-radius: 10rpx;
+}
+.money-box image{
+	width: 40rpx;
+	height: 41rpx;
+	margin-right: 22rpx;
+}
+.money{font-size: 40rpx;color: #DB2A2A;margin: 30rpx 0;}
+.money text{font-size: 20rpx;}
+
+.baoming-box{
+	margin: 0 32rpx;
+	font-size: 24rpx;
+	font-weight: 500;
+	color: #999999;
+	margin-top: 45rpx;
+}
+.baoming-box image{
+	width: 40rpx;
+	height: 44rpx;
+	margin-right: 20rpx;
+	margin-top: 10rpx;
+}
+.baoming-time{
+	margin-left: 62rpx;
+	font-weight: 500;
+	color: #333333;
+}
+
+.hddz-box{
+	margin: 0 32rpx;
+	font-size: 26rpx;
+	font-weight: 500;
+	color: #999999;
+}
+.hddz-box image{
+	width: 40rpx;
+	height: 44rpx;
+	margin-right: 20rpx;
+	margin-top: 10rpx;
+}
+.hddz-area{
+	margin-left: 62rpx;
+	font-weight: 500;
+	color: #333;
+}
+.hddz-area .rico{
+	width: 13rpx;
+	height: 24rpx;
+	margin-left: 20rpx;
+	margin-right: 0;
+}
+
+.date{border-bottom: 15rpx solid #f6f6f6;}
+.datass{font-size: 26rpx;color: #666;border-bottom: 1rpx solid #E9E9E9;padding: 20rpx 32rpx;}
+.date .datass:last-child{border-bottom: none;}
+.date .datass .ddflex{margin-bottom: 10rpx;}
+.dimg{width: 29rpx;height: 35rpx;margin-right: 15rpx;}
+.rico{width: 14rpx;height: 23rpx;margin-left: 20rpx;}
+.tit{font-size: 32rpx;color: #333;font-weight: bold;padding: 30rpx;justify-content: space-between;border-bottom: 1rpx solid #DEDEDE;}
+.content{font-size: 28rpx;color: #999;line-height: 44rpx;padding: 50rpx 0 120rpx;}
+.user-tag{
+	line-height: 28rpx;padding: 0 10rpx;background: linear-gradient(319deg, #E6BB82 0%, #FAE4CD 100%);border-radius: 3rpx;font-size: 20rpx;color: #84600A;
+	margin-right: 10rpx;
+	margin-top: 4rpx;
+}
+
+.bot{align-items: center;padding: 10rpx 30rpx 10rpx 0;border-top: 1rpx solid #e5e5e5;justify-content: space-between;}
+.btnfot{display: flex;justify-content: space-around;}
+.btns{flex: .65;justify-content: flex-end;}
+.botbtn{font-size: 22rpx;color: #6A6A6A;width: 95rpx !important;text-align: center;position: relative;margin: 0;background: none;border-radius: 0;padding: 0;line-height: initial;}
+.botbtn image{width: 40rpx;height: 34rpx;margin: 10rpx auto 5rpx;}
+.btn{width: 370rpx;height: 70rpx;background: var(--btn);border-radius: 35px;font-size: 36rpx;color: #fff;text-align: center;line-height: 70rpx;}
+.btn.end{background: #999;}
+
+.ceng{position: fixed;top: 0;left: 0;right: 0;bottom: 0;background: rgba(0,0,0,.5);z-index: 99;}
+.popup{position: fixed;left: 0;right: 0;bottom: 0;border-radius: 15rpx 15rpx 0 0;background: #fff;padding: 65rpx 32rpx 50rpx;z-index: 100;}
+.p-title{font-size: 32rpx;color: #333;font-weight: bold;}
+.p-bri{font-size: 28rpx;color: #999;margin-top: 15rpx;}
+.pop-tit{font-size: 28rpx;color: #000;font-weight: bold;}
+.pop-con{height: 320rpx;margin-top: 50rpx;}
+.p-list{flex-wrap: wrap;align-items: flex-start;}
+.p-list .li{background: #f5f5f5;border: 1rpx solid #e5e5e5;font-size: 28rpx;color: #666;height: 50rpx;line-height: 50rpx;border-radius: 25rpx;margin: 0 20rpx 20rpx 0;padding: 0 30rpx;}
+.p-list .li.active{border-color: var(--mina);color: var(--mina);background: #fef4f5;}
+.pop-btn{height: 70rpx;background: var(--btn);border-radius: 35px;font-size: 36rpx;color: #fff;text-align: center;line-height: 70rpx;}
+.close{position: absolute;top: 30rpx;right: 30rpx;width: 34rpx;height: 34rpx;}

+ 457 - 0
match/activityDetail/activityDetail.vue

@@ -0,0 +1,457 @@
+<template>
+	<view v-if="isShow">
+		<view class="top">
+			<view v-if="detail.imageList.length>0">
+				<swiper autoplay="true"
+					circular="true" duration="1000" class="act-img">
+					<block v-for="(item, index) in detail.imageList" :key="index">
+						<swiper-item autoplay="true">
+							<image class="act-img" lazy-load="true" :src="item.url"
+								mode="aspectFill"></image>
+						</swiper-item>
+					</block>
+				</swiper>
+			</view>
+			<image :src="detail.pic" mode="aspectFill" class="act-img" v-else></image>
+			<view class="title">{{detail.title}}</view>
+			<view class="datas">浏览 {{detail.popularity}}  收藏  {{detail.collect}}</view>
+			
+			<view class="baoming-box">
+				<view class="ddflex">
+					<image src="../static/images/bmsj.png"></image>
+					<text>报名时间</text>
+				</view>
+				<view class="baoming-time">{{formData(detail.enlistStartTime)}} 至 {{formData(detail.enlistEndTime)}}</view>
+				<view class="ddflex" style="margin-top: 25rpx;">
+					<image src="../static/images/bmfy.png" style="visibility: hidden;"></image>
+					<text>活动时间</text>
+				</view>
+				<view class="baoming-time">
+					{{formData(detail.startTime)}} 至 {{formData(detail.endTime)}}
+				</view>
+			</view>
+			
+			<view class="hddz-box" style="margin-top: 26rpx;" v-if="detail.address">
+				<view class="ddflex">
+					<image src="../static/images/hddz.png"></image>
+					<text>活动地点</text>
+				</view>
+				<!-- v-if="detail.address" -->
+				<view class="ddflex hddz-area" @click="openMap()">
+					<view class="fflex tover">{{detail.address}}</view>
+					<image src="../static/images/crico2.png" class="rico"></image>
+				</view>
+			</view>
+		</view>
+		
+		<view class="date">
+			<view class="datass ddflex" style="justify-content: space-between;" v-if="detail.card" @click="jumpUrl('/card/index/index?id='+detail.card.id)">
+				<view class="ddflex">
+					<image :src="detail.card.avatar?detail.card.avatar:'../../static/pages/images/userimg.png'" style="width:66rpx ;height: 66rpx;border-radius: 100%;" mode="aspectFill" class="dimg"></image>
+					<view>
+						<view style="font-size: 28rpx;font-weight: bold;color: #333333;line-height: 40rpx;">{{detail.card.realName}}</view>
+						<view style="margin-top: 3rpx;" class="ddflex">
+							<view class="user-tag">{{detail.card.companyName}}</view>
+							<view class="user-tag">{{detail.card.jobName}}</view>
+							<view class="user-tag">入司{{detail.card.inDate?monthDayDiff(detail.card.inDate):'1年'}}</view>
+						</view>
+					</view>
+				</view>
+				<image src="../static/images/crico2.png" class="rico"></image>
+			</view>
+		</view>
+		<view class="det">
+			<view class="tit ddflex">活动介绍<!-- <image src="../../static/pages/images/crico1.png" class="rico"></image> --></view>
+			<view class="content" style="padding: 0 30rpx;">
+				<mp-html :content="detail.text" :lazy-load="true" @imgtap="choose"></mp-html>
+			</view>
+		</view>
+		<view class="savepadding"></view>
+		<view class="bot fixed bgfff">
+			<view class="savepadding ddflex" style="justify-content: space-between;">
+				<view class="btnfot ddflex">
+					<navigator class="botbtn" open-type="switchTab" url="" hover-class="none">
+						<image src="/static/pages/images/sy.png"></image>主页
+					</navigator>
+					<view class="botbtn">
+						<image src="/static/pages/images/shoucang_h.png" v-if="detail.isCollect"></image>
+						<image src="/static/pages/images/shoucang.png" v-else></image>收藏
+					</view>
+					<view class="botbtn"><image src="../static/images/fxico1_1.png"></image>分享</view>
+					<!-- <button open-type="share" class="botbtn">
+						<image src="../../static/pages/images/fxico1_1.png"></image>分享
+					</button> -->
+				</view>
+				<view class="btns ddflex">
+					<view class="btn" v-if="detail.isEnlist">查看报名</view>
+					<block v-else>
+						<view class="btn" v-if="detail.state == 2">立即报名</view>
+						<view class="btn" v-if="detail.state == 3">报名结束</view>
+						<view class="btn" v-if="detail.state == 4">活动中</view>
+						<view class="btn end" v-if="detail.state == 5">活动结束</view>
+					</block>
+				</view>
+			</view>
+		</view>
+		<view class="ceng" v-if="popShow" @click="hidePop()"></view>
+		<view class="popup" v-if="popShow">
+			<image src="../../static/pages/images/clear.png" class="close" @click="hidePop()"></image>
+			<view class="p-title">{{detail.title}}</view>
+			<view class="p-bri tovers">{{detail.brief}}</view>
+			<view class="money free"><text>¥</text>{{price}}</view>
+			<view class="pop-tit">报名项目</view>
+			<view class="pop-con">
+				<view class="p-list ddflex">
+					<view :class="'li' + (priceIndex == index ? ' active' : '')" v-for="(item,index) in priceList" :key="index" @click="selProject(item,index)">{{item.title}}</view>
+				</view>
+			</view>
+			<view class="pop-btn" 马上报名</view>
+		</view>
+			
+	</view>
+</template>
+
+<script>
+const req = require('../../utils/request.js');
+const util = require('../../utils/util.js');
+const app = getApp();
+import mpHtml from "../../components/mp-html/components/mp-html/mp-html";
+export default {
+	components: {
+		mpHtml,
+	},
+	data() {
+		return {
+			isShow: false,
+			options: {},
+			detail: {},
+			isLogin: false,
+			userinfovip: {},
+			isIos: false,
+			priceIndex: 0,
+			priceList: [],
+			popShow: false,
+			priceId: '',
+			price: 0,
+			hideShare: true,
+			codeUrl: '',
+			
+			isShowUpdate: false, //是否显示更新信息弹窗
+			isUpdateInfo: false,//更新用户信息
+			isUpdateMobile: false,//绑定手机号
+			
+			enterTime : '',//进入页面时间
+			outTime : '',//页面卸载时间
+			stayTime : 0//页面停留时间
+		};
+	},
+	async onLoad(options) {
+		this.options = options;
+	},
+	async onShow() {
+		await this.getConfig();
+		await this.getData(true);
+	},
+	onReachBottom: function() {
+	},
+	methods: {
+		getConfig() {
+			var _this = this;
+			return new Promise((resolve, reject) => {
+				req.getRequest('/api/other/config', {}, function(res) {
+					_this.about = res;
+					_this.getSystem();
+					resolve();
+				});
+			});
+		},
+		getSystem(){
+			if(uni.getSystemInfoSync().platform == 'ios'){
+				if(this.about.is_open_iosPay == 1){
+					this.isIos = false;
+				}else{
+					this.isIos = true;
+				}
+			}else{
+				this.isIos = false;
+			}
+		},
+		getData(isShow){
+			return new Promise((resolve, reject) => {
+				req.getRequest('/api/match/detail',{id: this.options.id},async res => {
+					this.detail = res;
+					
+					// 外链活动
+					if(this.detail.type==2 && this.detail.text){
+						let url = this.detail.text
+						url = url + '?salesno=' + req.getStorage('userInfo').saleNo
+						// 如果打开的分享的销售员微页
+						// if(req.getStorage('shareId')){
+						// 	url = url + '?salesno=' + req.getStorage('shareId')
+						// }else{
+						// 	// 如果自己是销售员
+						// 	if(req.getStorage('userInfo').saleNo){
+						// 		url = url + '?salesno=' + req.getStorage('userInfo').saleNo
+						// 	}else{
+						// 		//当前绑定的微页或推荐的微页
+						// 		let salesno = await new Promise((r,j)=>{
+						// 			req.getLocation(res => {
+						// 				const to = {
+						// 					latitude: res.latitude,
+						// 					longitude: res.longitude
+						// 				};
+						// 				req.getRequest('/api/visiting/card/recommendCardInfo', to, res => {
+						// 					r(res.jobNumber?res.jobNumber:'')
+						// 				})
+						// 			});
+						// 		})
+						// 		url = url + '?salesno=' + salesno
+						// 	}
+						// }
+						uni.redirectTo({
+							url: '/pages/web/web?url='+encodeURIComponent(url)
+						});
+						
+						return false
+					}
+					
+					this.isShow = true;
+					resolve();
+				},isShow);
+			})
+		},
+		getPrice(){
+			return new Promise((resolve, reject) => {
+				req.getRequest('/api/match/price',{id: this.options.id},res=>{
+					this.priceList = res;
+					this.priceId = res[0].id;
+					let price = 0;
+					if(this.userinfovip.levelGrade>0&& !this.userinfovip.end){
+						price = res[0].vipMoney;
+					}else{
+						price = res[0].money;
+					}
+					this.price = price;
+					req.setStorage('actPrice',price)
+					resolve();
+				})
+			})
+		},
+		getuserVip() {
+			return new Promise((resolve,reject)=>{
+				req.getRequest('/api/user/levelDetails', {}, data => {
+					let expireTime = Array;
+					if (data.expireTime) {
+						expireTime = data.expireTime.split(" ");
+						data.expireTime = data.expireTime.replace(/-/g, '/');
+					} // 解决苹果不兼容---日期
+					let nowTime = new Date().getTime();
+					let endTime = new Date(data.expireTime).getTime();
+					let times = parseInt((endTime - nowTime) / 1000); // var expireTime= new Date(data.expireTime)
+					// console.log(times, nowTime, endTime, data.expireTime);
+					this.userinfovip = data;
+					if (times <= 0) {
+						this.userinfovip.end = true;
+					} else {
+						this.userinfovip.end = false;
+					}
+				});
+				resolve();
+			})
+		},
+		formatTimeCommStr(dataStr) {
+			return util.formatTimeCommStr(dataStr, 'M/D 00:00');
+		},
+		formData(validDate){
+			let time = new Date(validDate.replace(/-/g, '/'));
+			return util.formatTime(time).t2
+		},
+		formDataObj(validDate){
+			let time = new Date(validDate.replace(/-/g, '/'));
+			return util.formatTime(time)
+		},
+		formDatahd(){
+			if(this.detail.startTime&&this.detail.endTime){}
+			else return false
+			return this.formDataObj(this.detail.startTime).t2==this.formDataObj(this.detail.endTime).t2?
+			(this.formDataObj(this.detail.startTime).t2+' '+this.formDataObj(this.detail.startTime).t6+' - '+this.formDataObj(this.detail.endTime).t6)
+			:(this.formDataObj(this.detail.startTime).t5+' - '+this.formDataObj(this.detail.endTime).t5)
+		},
+		getBrowse(){
+			let params={
+				bindId: this.options.id,
+				type: 10
+			}
+			req.postRequest('/api/browse', params, data => {});
+		},
+		toActivity(item){
+			uni.navigateTo({
+				url: '/match/activityDetail/activityDetail?id=' + item.id
+			})
+		},
+		choose: function () {
+		  let freshen = false;
+		  this.$emit('freshen', {
+		    detail: freshen
+		  });
+		},
+		// clickCollect(){
+		// 	req.isLogin().then(success => {
+		// 		if(success){
+		// 			req.postRequest('/api/collect',{
+		// 				bindId: this.detail.id,
+		// 				type: 2
+		// 			},res=>{
+		// 				this.detail.isCollect = !this.detail.isCollect;
+		// 			})
+		// 		}
+		// 	})
+		// },
+		// 用户行为
+		userBehavior(type) {
+			var dataP = {};
+			dataP.type =2 //、产品 2、活动 3、未知 4、内容 5、课程 6、老师 7、素材 8、题目 9、资料领取 10、招聘职位 12、用户须知 13、素材 15、医院科室 16、海报 20、医生 21 新闻 23名片
+			dataP.behavior = type; //1、关注 2、收藏 3、点赞 4、浏览 5、确认 6、分享
+			dataP.bindId = this.detail.id;
+			req.postRequestLoding('/api/v3/behavior/save', dataP, data => {
+				if (type == 2) {
+					this.detail.isCollect = !this.detail.isCollect;
+					if(this.detail.isCollect){
+						req.saveBehaviorNew(this.detail.id,2,2)
+					}else{
+						req.saveBehaviorNew(this.detail.id,2,16)
+					}
+				}
+				if (type == 3) {
+					this.cardInfo.follow = !this.cardInfo.follow
+				}
+				if(type == 4) {
+					// req.saveBehaviorNew(this.detail.id,2,4)
+				}
+			});
+		},
+		showPop(){
+			let that = this;
+			that.jumpUrl('/match/sign/sign?id=' + that.detail.id);
+		},
+		hidePop(){
+			this.popShow = false;
+		},
+		selProject(it,idx){
+			if(this.priceIndex == idx) return false;
+			this.priceIndex = idx;
+			this.priceId = it.id;
+			console.log('priceId==' + this.priceId)
+			let price = 0;
+			if(this.userinfovip.levelGrade>0&& !this.userinfovip.end){
+				price = it.vipMoney;
+			}else{
+				price = it.money;
+			}
+			this.price = price;
+			req.setStorage('actPrice',price)
+		},
+		jumpUrl(url){
+			req.isLogin().then(success => {
+				if(success){
+					uni.navigateTo({
+						url: url
+					})
+				}
+			})
+			this.hidePop();
+		},
+		showShare() {
+			// console.log(11111,this.hideShare)
+			// #ifdef H5 
+			this.setData({
+				hideShare: false
+			});
+		
+			// #endif
+			// #ifndef H5
+			req.isLogin().then(success => {
+				// console.log(success)
+				if (success) {
+					this.getCodeUrl()
+					this.setData({
+						hideShare: false
+					});
+					// console.log(this.hideShare)
+				}
+			});
+			// #endif
+		},
+		getCodeUrl() {
+			let that = this;
+			let scene = that.detail.id;
+			// console.log(scene); //获取小程序码
+			const params = {
+				page: 'match/activityDetail/activityDetail',
+				scene: scene
+			};
+			req.getRequest('/api/program/codev', params, url => {
+				that.setData({
+					codeUrl: url
+				});
+			});
+		},
+		click(e) {
+			// console.log(e,"7899")
+			this.hideShare = e
+		},
+		loadCodeParams() {
+			let _ts = this;
+			return new Promise((resolve, reject) => {
+				let form = {
+					scene: _ts.options.scene
+				};
+				if (!_ts.options.scene) {
+					resolve();
+					return false;
+				}
+				req.getRequest('/api/code/params', form, data => {
+					let res = data.scene.split('_');
+					this.options.id = res[0];
+					req.setStorage('pidCode', data.userId);
+					resolve();
+				});
+			});
+		},
+		monthDayDiff(date){
+			return util.monthDayDiff(date)
+		},
+		
+		closeUpdate(){
+			this.isShowUpdate = false
+		},
+		updateInfo(e){
+			this.isUpdateInfo = e;
+		},
+		updateMobile(e){
+			this.isUpdateMobile = e;
+		},
+		getUpdate() {
+			console.log('getUpdate')
+			let userInfos = req.getStorage('userInfo')
+			// if ((!userInfos.avatar || userInfos.avatar.indexOf('thirdwx.qlogo') > -1 || !userInfos.nickName || userInfos.nickName.indexOf('用户') > -1) ) {
+			// 	console.log('没有昵称')
+			// 	this.isShowUpdate = true;
+			// 	this.isUpdateInfo = true;
+			// 	return false;
+			// }
+			if(!userInfos.mobile){
+				console.log('没有手机号')
+				this.isShowUpdate = true
+				this.isUpdateMobile = true
+				return false;
+			}
+			return true;
+		},
+	}
+};
+</script>
+
+<style>
+	@import "./activityDetail.css";
+</style>

+ 167 - 47
match/activityEdit/activityEdit.vue

@@ -10,18 +10,20 @@
 				</view>
 				<image v-else class="upload-image" :src="pic" @click="uploadImage(1)"></image>
 				<view class="form-limit">* 图片尺寸限制:680*350</view>
-				<view class="form-item-title">活动详情轮播图</view>
-				<view class="ddflex" style="margin-top: 30rpx;">
-					<view class="upload-photo-image" v-for="item ,index in fileList" @click="uploadImage(2,index+1)">
-						<image :src="item" mode="aspectFill"></image>
-						<image class="upload-photo-close" src="/static/pages/images/close3.png"
-							@click.stop="deleteImage(2,index+1)"></image>
-					</view>
-					<view class="upload-photo ddflex" @click="uploadImage(2)" v-if="fileList.length<9">
-						<image src="../static/images/photo.png"></image>
+				<block v-if="type==1">
+					<view class="form-item-title">活动详情轮播图</view>
+					<view class="ddflex" style="margin-top: 30rpx;">
+						<view class="upload-photo-image" v-for="item ,index in fileList" @click="uploadImage(2,index+1)">
+							<image :src="item" mode="aspectFill"></image>
+							<image class="upload-photo-close" src="/static/pages/images/close3.png"
+								@click.stop="deleteImage(2,index+1)"></image>
+						</view>
+						<view class="upload-photo ddflex" @click="uploadImage(2)" v-if="fileList.length<9">
+							<image src="../static/images/photo.png"></image>
+						</view>
 					</view>
-				</view>
-				<view class="form-limit">* 图片尺寸限制:670*350</view>
+					<view class="form-limit">* 图片尺寸限制:670*350</view>
+				</block>
 			</view>
 			<view class="form-border"></view>
 			<view class="form">
@@ -29,29 +31,103 @@
 				<view class="form-input-box">
 					<input v-model="title" placeholder-class="form-input-placeholder" placeholder="请输入活动标题" />
 				</view>
-				<view class="form-item-title">活动说明</view>
-				<view class="form-input-box">
-					<input v-model="brief" placeholder-class="form-input-placeholder" placeholder="请填写活动简介说明" />
-				</view>
-				<view class="form-item-title">
-					活动详情
-					<view class="more ddflex" @click="jumpUrl('/match/editorContent/editorContent')">
-						<text v-if="!text">编辑</text>
-						<text v-else style="color: var(--main);">已完善</text>
-						<image src="../../static/pages/images/more.png"></image>
+				<view class="form-item-title">活动类型</view>
+				<view class="form-input-box ddflex">
+					<view class="ddflex" @click="changeType(1)">
+						<image v-if="type!=1" style="width: 28rpx;height: 28rpx;margin-right: 10rpx;" src="/static/images/select.png"></image>
+						<image v-else style="width: 28rpx;height: 28rpx;margin-right: 10rpx;" src="/static/images/select_h.png"></image>
+						<view>普通活动</view>
 					</view>
-				</view>
-				<view class="form-input-box" style="padding: 18rpx 0;">
-				</view>
-				<view class="form-item-title">
-					自定义报名信息
-					<view class="more ddflex" @click="jumpUrl('/match/addForm/addForm')">
-						<text style="color: #999;" v-if="!extForm">添加(非必填)</text>
-						<text v-else style="color: var(--main);">已添加</text>
-						<image src="../../static/pages/images/more.png"></image>
+					<view class="ddflex" style="margin-left:30rpx" @click="changeType(2)">
+						<image v-if="type!=2" style="width: 28rpx;height: 28rpx;margin-right: 10rpx;" src="/static/images/select.png"></image>
+						<image v-else style="width: 28rpx;height: 28rpx;margin-right: 10rpx;" src="/static/images/select_h.png"></image>
+						<view>外链活动</view>
 					</view>
 				</view>
-				<view class="next-btn" @click="next">下一步</view>
+				<block v-if="type==2">
+					<view class="form-item-title">活动链接</view>
+					<view class="form-input-box">
+						<input v-model="link" placeholder-class="form-input-placeholder" placeholder="请填写活动链接" />
+					</view>
+				</block>
+				<block v-if="type==1">
+					<view class="form-item-title">活动说明</view>
+					<view class="form-input-box">
+						<input v-model="brief" placeholder-class="form-input-placeholder" placeholder="请填写活动简介说明" />
+					</view>
+					<view class="form-item-title">
+						活动详情
+						<view class="more ddflex" @click="jumpUrl('/match/editorContent/editorContent')">
+							<text v-if="!text">编辑</text>
+							<text v-else style="color: var(--main);">已完善</text>
+							<image src="../../static/pages/images/more.png"></image>
+						</view>
+					</view>
+					<view class="form-input-box" style="padding: 18rpx 0;">
+					</view>
+					<view class="form-item-title">
+						自定义报名信息
+						<view class="more ddflex" @click="jumpUrl('/match/addForm/addForm')">
+							<text style="color: #999;" v-if="!extForm">添加(非必填)</text>
+							<text v-else style="color: var(--main);">已添加</text>
+							<image src="../../static/pages/images/more.png"></image>
+						</view>
+					</view>
+					<view class="form-input-box" style="padding: 18rpx 0;">
+					</view>
+					<view class="form-item-title">
+						活动分类
+						<view class="more ddflex" @click="jumpUrl('/match/sort/sort')">
+							<text style="color: #999;" v-if="!matchType">添加(非必填)</text>
+							<text v-else style="color: var(--main);">已添加</text>
+							<image src="../../static/pages/images/more.png"></image>
+						</view>
+					</view>
+				</block>
+				<block v-if="type==2">
+					<view class="form-item-title ddflex" style="justify-content: space-between;">
+						是否全省通用
+						<switch v-model="isAllSee" :checked="isAllSee" style="transform:scale(0.7)" color="var(--main)"
+							@change="powerChange"></switch>
+					</view>
+					<block v-if="!isAllSee">
+						<view class="form-input-box" style="border-bottom: none;" @click="showPop()">
+							已选择{{checkNum}}个区域
+							<view class="more ddflex">
+								<!-- <text v-if="!text">编辑</text>
+								<text v-else style="color: var(--main);">已完善</text> -->
+								<image src="../../static/pages/images/more.png"></image>
+							</view>
+						</view>
+						<view class="form-item-title" style="color: red;font-size: 24rpx;margin-top: 0rpx;" v-if="checkNum==0">
+							*请选择活动生效区域
+						</view>
+						
+						<view class="mask" v-if="isShowPop" @click="hidePop"></view>
+						<view class="popup" v-if="isShowPop">
+							<view class="popupc ddflex">
+								<view class="pleft">
+									<view :class="'li ddflex' + (checkIndex == index ? ' active':'')" style="justify-content: space-between;"
+										v-for="(item,index) in industryList" :key="index" @click="checkIndustry(index)">
+										<view class="fflex tover">{{item.label}}</view>
+										<image v-if="item.isActive" style="width: 25rpx;height: 25rpx;margin-left: 10rpx;" src="/match/static/images/checkBox_h.png" @click.stop="checkBoxIndustry(index)"></image>
+										<image v-else style="width: 25rpx;height: 25rpx;margin-left: 10rpx;" src="/match/static/images/checkBox.png" @click.stop="checkBoxIndustry(index)"></image>
+									</view>
+								</view>
+								<view class="pright">
+									<view :class="'li ddflex' + (arrayIndex == index ? ' active':'')" style="justify-content: space-between;"
+										v-for="(item,index) in rightArray" :key="index" @click="checkArray(index)">
+										<view class="fflex tover">{{item.label}}</view>
+										<image v-if="item.isActive" style="width: 25rpx;height: 25rpx;margin-left: 10rpx;" src="/match/static/images/checkBox_h.png" @click.stop="checkBoxArray(index)"></image>
+										<image v-else style="width: 25rpx;height: 25rpx;margin-left: 10rpx;" src="/match/static/images/checkBox.png" @click.stop="checkBoxArray(index)"></image>
+									</view>
+								</view>
+							</view>
+						</view>
+					</block>
+				</block>
+				<view class="next-btn" v-if="type==1" @click="next">下一步</view>
+				<view class="next-btn" v-if="type==2" @click="submit()">提交</view>
 			</view>
 		</view>
 
@@ -59,7 +135,7 @@
 		<view v-if="stepTwo">
 			<view class="form">
 				<view class="form-title">报名设置</view>
-				<view class="form-item-title">最大报名人数</view>
+				<view class="form-item-title">活动最大报名人数</view>
 				<view class="form-number-select ddflex">
 					<view @click="jian">-</view>
 					<input v-model="personLimit" type="number" placeholder="最大报名人数"
@@ -69,6 +145,16 @@
 				<view class="form-item-title" style="color: red;font-size: 24rpx;margin-top: 20rpx;" v-if="checkNum==0">
 					*-1为不限制报名人数
 				</view>
+				<view class="form-item-title">单次最大报名人数</view>
+				<view class="form-number-select ddflex">
+					<view @click="jianEnlistPerson">-</view>
+					<input v-model="enlistPersonLimit" type="number" placeholder="单次最大报名人数"
+						placeholder-class="form-input-placeholder" />
+					<view @click="jiaEnlistPerson">+</view>
+				</view>
+				<view class="form-item-title" style="color: red;font-size: 24rpx;margin-top: 20rpx;" v-if="checkNum==0">
+					*-1为不限制单次最大报名人数
+				</view>
 				<view class="form-item-title">报名时间</view>
 				<view class="ddflex" style="margin-top: 20rpx;">
 					<picker v-model="enlistStartTime" mode="date" class="flex" @change="enlistStartTimeChange">
@@ -185,7 +271,11 @@
 				title: '',
 				brief: '',
 				text: '',
+				type:1,//1普通活动 2外链活动
+				link:'',
+				matchType:'',//活动分类
 				personLimit: -1,
+				enlistPersonLimit:-1,
 				enlistStartTime: '',
 				enlistEndTime: '',
 				startTime: '',
@@ -295,12 +385,20 @@
 					this.title = res.title
 					this.brief = res.brief
 					this.text = res.text
+					this.type = res.type?res.type:1
+					if(this.type==2){
+						this.link = res.text
+					}else{
+						this.link = ''
+					}
+					this.matchType = res.matchType?res.matchType:''
 					this.personLimit = res.personLimit
+					this.enlistPersonLimit = res.enlistPersonLimit&&res.enlistPersonLimit>0?res.enlistPersonLimit:-1
 					this.extForm = res.extForm
-					this.enlistStartTime = this.formatTime(res.enlistStartTime)
-					this.enlistEndTime = this.formatTime(res.enlistEndTime)
-					this.startTime = this.formatTime(res.startTime)
-					this.endTime = this.formatTime(res.endTime)
+					this.enlistStartTime = res.enlistStartTime?this.formatTime(res.enlistStartTime):''
+					this.enlistEndTime = res.enlistEndTime?this.formatTime(res.enlistEndTime):''
+					this.startTime = res.startTime?this.formatTime(res.startTime):''
+					this.endTime = res.endTime?this.formatTime(res.endTime):''
 					this.house = res.house?res.house:''
 					if(res.province&&res.city&&res.country){
 						this.regionCode = [res.province, res.city, res.country]
@@ -336,16 +434,16 @@
 				if (!this.pic) {
 					return req.msg('请上传封面图')
 				}
-				if (this.fileList.length == 0) {
+				if (this.type==1 && this.fileList.length == 0) {
 					return req.msg('请上传活动轮播图')
 				}
 				if (!this.title) {
 					return req.msg('请填写活动名称')
 				}
-				if (!this.brief) {
+				if (this.type==1 && !this.brief) {
 					return req.msg('请填写活动简介')
 				}
-				if (!this.text) {
+				if (this.type==1 && !this.text) {
 					return req.msg('请填写活动详情')
 				}
 				this.stepOne = false
@@ -504,28 +602,31 @@
 				if (!this.pic) {
 					return req.msg('请上传封面图')
 				}
-				if (this.fileList.length == 0) {
+				if (this.type==1 && this.fileList.length == 0) {
 					return req.msg('请上传活动轮播图')
 				}
 				if (!this.title) {
 					return req.msg('请填写活动名称')
 				}
-				if (!this.brief) {
+				if (this.type==2 && !this.link) {
+					return req.msg('请填写活动链接')
+				}
+				if (this.type==1 && !this.brief) {
 					return req.msg('请填写活动简介')
 				}
-				if (!this.text) {
+				if (this.type==1 && !this.text) {
 					return req.msg('请填写活动详情')
 				}
-				if (!this.enlistStartTime) {
+				if (this.type==1 && !this.enlistStartTime) {
 					return req.msg('请选择报名开始时间')
 				}
-				if (!this.enlistEndTime) {
+				if (this.type==1 && !this.enlistEndTime) {
 					return req.msg('请选择报名结束时间')
 				}
-				if (!this.startTime) {
+				if (this.type==1 && !this.startTime) {
 					return req.msg('请选择活动开始时间')
 				}
-				if (!this.endTime) {
+				if (this.type==1 && !this.endTime) {
 					return req.msg('请选择活动结束时间')
 				}
 				// if (!this.house) {
@@ -569,6 +670,7 @@
 					brief: this.brief,
 					text: this.text,
 					personLimit: this.personLimit,
+					enlistPersonLimit:this.enlistPersonLimit,
 					enlistStartTime: this.enlistStartTime,
 					enlistEndTime: this.enlistEndTime,
 					startTime: this.startTime,
@@ -581,7 +683,9 @@
 					address: this.address,
 					lng: this.longitude,
 					lat: this.latitude,
-					areaCodeList:areaCodeList
+					areaCodeList:areaCodeList,
+					type:this.type,
+					matchType:this.matchType
 				}
 				let prices = [{
 					title: "VIP",
@@ -594,6 +698,11 @@
 				}]
 				dataP.prices = prices
 				dataP.extForm = this.extForm?this.extForm:null
+				
+				if(dataP.type==2){
+					dataP.text = this.link
+				}
+				
 				let url = '/api/match/save'
 				if (this.id) {
 					dataP.id = this.id
@@ -647,6 +756,17 @@
 			jia(){
 				if(this.personLimit==-1) this.personLimit = 1
 				else this.personLimit = this.personLimit+1
+			},
+			jianEnlistPerson(){
+				if(this.enlistPersonLimit>0) this.enlistPersonLimit = this.enlistPersonLimit-1
+				if(this.enlistPersonLimit==0) this.enlistPersonLimit = -1
+			},
+			jiaEnlistPerson(){
+				if(this.enlistPersonLimit==-1) this.enlistPersonLimit = 1
+				else this.enlistPersonLimit = this.enlistPersonLimit+1
+			},
+			changeType(val){
+				this.type = val
 			}
 		},
 		mounted() {

+ 1 - 1
match/activityManage/activityManage.vue

@@ -22,7 +22,7 @@
 				</view>
 				<view class="flex">
 					<view class="act-title tovers">{{item.title}}</view>
-					<view class="act-time">活动时间:{{formatTime(item.endTime)}}</view>
+					<view class="act-time" v-if="item.endTime">活动时间:{{formatTime(item.endTime)}}</view>
 					<view class="act-time" style="color: red;" v-if="item.state==6">{{item.refuse}}</view>
 					<view class="act-bottom ddflex">
 						<view class="act-bottom-look ddflex">

+ 347 - 0
match/matchList/matchList.css

@@ -0,0 +1,347 @@
+page{
+	background-color: #f5f5f5;
+}
+.top-fixed{
+	position: fixed;
+	top: 0;
+	right: 0;
+	left: 0;
+	background-color: #fff;
+	z-index: 101;
+}
+.search-box{
+	padding: 30rpx;
+	background-color: #fff;
+}
+
+.search-text{
+	color: #999999;
+}
+
+
+.search-input{
+	height: 76rpx;
+	line-height: 76rpx;;
+	background: #F5F5F5;
+	border-radius: 60rpx;
+	padding: 0 26rpx;
+	font-size: 24rpx;
+}
+.search-input input{
+	font-size: 24rpx;
+}
+.search-input image{
+	width: 34rpx;
+	height: 34rpx;
+	margin-right: 26rpx;
+}
+.search-all{
+	color: #2a82fd;
+	font-size: 30rpx;
+	margin-left: 46rpx;
+}
+
+.filter{
+	padding: 0  0 0 30rpx;
+	text-align: center;
+	font-size: 28rpx;
+	color: #999999;
+	line-height: 41rpx;
+}
+.filter-item-icon{
+	margin-left: 15rpx;
+	width: 22rpx;
+	height: 13rpx;
+}
+.filter-item{
+	justify-content: center;
+}
+.f-active{
+	color: var(--main);
+}
+
+/* 弹窗 */
+/* 核销弹窗 */
+.ceng{position: fixed;top: 0;left: 0;right: 0;bottom: 0;background-color: rgba(0,0,0,.5);z-index: 99;}
+.hx-pop{overflow: hidden;position: fixed;left: 0;right: 0;top: 0;background-color: #fff;border-radius: 0rpx 0rpx 0rpx 0rpx;z-index: 100;transition: all .3s ease;}
+.default{position: absolute;top: 55rpx;right: 60rpx;font-size: 28rpx;color: #999;}
+.default image{width: 36rpx;height: 36rpx;margin-right: 14rpx;}
+.pop-tit{font-size: 32rpx;color: #263343;font-weight: bold;margin-top: 60rpx;padding: 0 60rpx;}
+.pop-con{padding: 0 60rpx;max-height: 500rpx;overflow: scroll;}
+
+.pop-list{flex-wrap: wrap;}
+.pop-list .li{height: 70rpx;font-size: 30rpx;color: #333;text-align: left;line-height: 70rpx;margin: 30rpx 0;border-bottom: 2rpx solid #ebebeb;}
+.pop-list .li:last-child{border-bottom:none}
+.pop-list .li.active{color: var(--main);}
+.pop-list .opt{padding: 0 20rpx; height: 60rpx;background: #fff;border-radius: 10rpx;font-size: 30rpx;color: #999;text-align: center;line-height: 60rpx;align-items: flex-start;margin: 30rpx 30rpx 0 0;border: 2rpx solid #ebebeb;}
+/* .pop-list .opt:nth-child(3n){margin-right: 0;} */
+.pop-list .opt.opt-active{color: var(--main);border: 2rpx solid var(--main);}
+.pop-time{margin-top: 30rpx;font-size: 30rpx;color: #333;}
+.pop-time text{margin: 0 25rpx;}
+.date-ipt{width: 262rpx;height: 70rpx;background: #F3F5F7;border-radius: 35rpx;box-sizing: border-box;padding: 0 30rpx;font-size: 28rpx;color: #A5A5A5;line-height: 70rpx;}
+.pop-btn{padding: 30rpx;}
+.pop-btn view{height: 90rpx;line-height: 90rpx;font-size: 32rpx;text-align: center;box-sizing: border-box;border-radius: 6rpx;}
+.pop-btn view:first-child{width: 250rpx; color: #fff;border-top: 1rpx solid #f5f5f5;line-height: 79rpx;background-color: #cccccc;margin-right: 30rpx;}
+.pop-btn view:last-child{color: #fff;background: var(--mina);}
+
+
+/* 列表*/
+/* 登记信息 */
+.register-box{
+	background: #FFFFFF;
+	border-radius:10rpx;
+	position: relative;
+	padding: 0 0rpx 30rpx;
+	margin: 30rpx;
+}
+.register-title{
+	font-size: 28rpx;
+	font-weight: bold;
+	color: #999999;
+	padding: 30rpx 30rpx;
+	padding-bottom: 21rpx;
+	flex-wrap: nowrap;
+}
+.card-name{
+	line-height: 50rpx;
+	font-size: 36rpx;
+	font-weight: bold;
+	color: #333333;
+}
+.card-tag{
+	padding: 0 10rpx;
+	line-height: 32rpx;
+	border-radius: 5rpx 5rpx 5rpx 5rpx;
+	opacity: 1;
+	border: 2rpx solid #FF5700;
+	font-size: 20rpx;
+	color: #FF5700;
+	text-align: center;
+	margin-right: 10rpx;
+}
+.card-area{
+	line-height: 46rpx;
+	background: #F8F8F8;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	padding:0 16rpx ;
+	font-size: 24rpx;
+	font-weight: 400;
+	color: #666666;
+	margin-top: 35rpx;
+}
+.card-area image{
+	width: 20rpx;
+	height: 24rpx;
+	margin-right: 10rpx;
+}
+.card-data{
+	font-size: 39rpx;
+	font-family: Arial-Regular, Arial;
+	font-weight: 400;
+	color: #333333;
+	line-height: 47rpx;
+	text-align: center;
+}
+.card-label{
+	line-height: 33rpx;
+	font-size: 24rpx;
+	font-family: PingFang SC-Medium, PingFang SC;
+	font-weight: 500;
+	color: #A1A1A1;
+	text-align: center;
+}
+.card-line{
+	width: 1rpx;
+	height: 66rpx;
+	background: #DEDEDE;
+}
+.register-state{
+	font-size: 24rpx;
+	font-weight: 500;
+	line-height: 36rpx;
+	color: #999999;
+}
+.register-title-icon{
+	width: 160rpx;
+	height: 160rpx;
+	opacity: 1;
+	margin-right: 20rpx;
+	border-radius: 10rpx;
+}
+.register-info-item{
+	margin-top: 30rpx;
+	align-items: flex-start;
+}
+.register-info-label{
+	line-height: 41rpx;
+	color: #999999;
+	font-size: 28rpx;
+	margin-right: 60rpx;
+}
+.register-info-data{
+	font-size: 28rpx;
+	color: #333333;
+	line-height: 41rpx;
+	text-align: right;
+}
+/* 开通项目 */
+.card-pic{
+	width: 172rpx;
+	height: 172rpx;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	margin-right: 15rpx;
+}
+.card-info{
+	
+}
+.card-title{
+	line-height: 54rpx;
+	font-size: 32rpx;
+	font-weight: bold;
+}
+.card-time{
+	line-height: 36rpx;
+	font-size: 24rpx;
+	color: #999999;
+}
+.card-price{
+	margin-top: 43rpx;
+	justify-content: space-between;
+}
+.card-price text:first-child{
+	font-size: 32rpx;
+	font-weight: 500;
+	color: #FF0000;
+}
+.card-price text:last-child{
+	font-size: 24rpx;
+	font-weight: 500;
+	color: #999999;
+}
+.register-option{
+	border-top: 1px solid #F5F5F5;
+	justify-content: space-between;
+	margin-top: 30rpx;
+	padding: 20rpx 30rpx 0;
+}
+.order-time{
+	font-size: 24rpx;
+	font-weight: 400;
+	color: #999999;
+}
+.option-btn{
+	padding: 0 40rpx;
+	line-height: 51rpx;
+	border-radius: 27rpx 27rpx 27rpx 27rpx;
+	opacity: 1;
+	border: 2rpx solid #CCCCCC;
+	font-size: 28rpx;
+}
+
+.bottom-btn{
+	background-color: #fff;
+	padding: 30rpx 0;
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	right: 0;
+}
+.btn-icon{
+	width: 29rpx;
+	height: 32rpx;
+	margin-right: 18rpx;
+}
+.bottom-btn .btn{
+	width: 690rpx;
+	height: 96rpx;
+	line-height: 96rpx;
+	background: #2A82FD;
+	border-radius: 48rpx 48rpx 48rpx 48rpx;
+	opacity: 1;
+	text-align: center;
+	color: #FFFFFF;
+	margin: auto;
+	justify-content: center;
+	font-size: 32rpx;
+}
+
+.review-btn{
+	padding: 6rpx 20rpx;
+	font-size: 26rpx;
+	background-color: var(--main);
+	color: #fff;
+	border-radius: 10rpx;
+}
+
+.ceng {
+    position: fixed;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background: rgba(0, 0, 0, 0.5);
+    z-index: 99;
+}
+.pop{
+	width:100%;
+	border-radius:16rpx 16rpx 0 0;
+	background: #fff;
+	position: fixed;
+	bottom:-100%;
+	left:0;
+	right:0;
+	padding:10rpx 0;
+	z-index: 100;
+	transition: all .3s ease;
+}
+.pop-item{
+	padding:30rpx;
+	font-size:28rpx;
+	text-align:center;
+	margin:0 30rpx 30rpx;
+	border-radius: 10rpx;
+}
+.pop-qx{
+	border-top:10rpx solid #f5f5f5;
+}
+.pop-scroll{
+	max-height: 750rpx;
+	overflow: scroll;
+}
+.pop-scroll::-webkit-scrollbar {
+	display: none;
+}
+.pop-textarea{
+	padding: 30rpx;
+	border: 1px solid #E5E5E5;
+	margin: 30rpx;
+}
+.pop-textarea textarea{
+	width: 100%;
+}
+.pop-title{
+	padding: 30rpx 30rpx 0;
+	font-size: 32rpx;
+}
+
+
+/* 活动 */
+.act-list{padding: 0 30rpx;}
+.act-list .li{margin-bottom: 10rpx;padding: 35rpx 0;border-bottom: 1rpx solid #E5E5E5;}
+.act-list .li:last-child{border-bottom: none;}
+.imgbox{width: 100%;height: 316rpx;border-radius: 16rpx;overflow: hidden;position: relative;margin-right: 25rpx;}
+.imgbox image{width: 100%;height: 100%;border-radius: 16rpx;}
+.infos{padding: 20rpx 22rpx 0;}
+.tag{display: block;height: 30rpx;border-radius: 6rpx 15rpx 15rpx 0;font-size: 20rpx;color: #fff;padding: 0 15rpx;position: absolute;top: 0;left: 0;background: #31a8fa;line-height: 30rpx;}
+.stas{align-items: flex-end;}
+.tag-box{font-size: 24rpx;color: #717580;line-height: 33rpx;}
+.tag-box text{margin-right: 15rpx;}
+.act-tit{font-size: 30rpx;color: #1A1F30;line-height: 42rpx;margin-bottom: 15rpx;font-weight: bold;}
+.area{font-size: 24rpx;color: #999;margin-top: 20rpx;}
+.area text{margin-right: 10rpx;}
+.money{font-size: 30rpx;color: var(--main);}
+.money text{font-size: 18rpx;}
+.act-btn{width: 172rpx;height: 64rpx;background: #27D699;border-radius: 32rpx;font-size: 28rpx;color: #fff;text-align: center;line-height: 64rpx;margin-bottom: 15rpx;margin-left: 30rpx;}
+.act-btn.end{background: #e3e3e3;color: #999;}
+.mede{position: fixed;left: 50%;transform: translateX(-50%);bottom: 30rpx;width: 328rpx;height: 80rpx;background: var(--btn);border-radius: 40rpx;font-size: 30rpx;color: #fff;text-align: center;line-height: 80rpx;}

+ 287 - 0
match/matchList/matchList.vue

@@ -0,0 +1,287 @@
+<template>
+	<view>
+		<view class="top-fixed">
+			<view class="search-box ddflex">
+				<view class="search-input ddflex fflex">
+					<image src="/static/images/ssico.png"></image>
+					<input @confirm="searchFn" confirm-type="search" @input="searchFn" v-model="searchVal" class="fflex"
+						placeholder="请输入活动名称" />
+				</view>
+				<view class="filter ddflex">
+					<view class="fflex">
+						<picker mode="selector" :range="rangeList" range-key="label" v-model="rangeIndex" @change="rangeChange">
+							<view class="filter-item fflex ddflex f-active" style="text-align: right;justify-content: flex-end;">
+								<text style="max-width: 150rpx;" class="tover">{{rangeList[rangeIndex].label}}</text>
+								<image class="filter-item-icon" src="../../static/images/down.png"></image>
+							</view>
+						</picker>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view style="height: 130rpx;"></view>
+		<!-- 订单列表 -->
+		<view style="position: relative;overflow: hidden;" v-if="dataList.length>0">
+			<!-- <view class="register-box" v-for="item,index in dataList" :key="index" @click="jumpUrl('/card/index/index?cardId='+item.id)">
+				<view class="register-title ddflex fflex">
+					<image class="register-title-icon" :src="item.avatar?item.avatar:'/static/images/userimg.png'" mode="aspectFill"></image>
+					<view class="flex" style="min-width: 0;">
+						<view class="ddflex">
+							<view class="card-name fflex tover">{{item.realName?item.realName:''}}</view>
+							<view style="font-size: 26rpx;color: var(--main);font-weight: 400;" v-if="item.auditState==1">审核成功</view>
+							<view class="review-btn" v-else-if="item.auditState==0" @click.stop="review(item,index)">审核</view>
+							<view style="font-size: 26rpx;color: red;font-weight: 400;" v-else-if="item.auditState==2">审核失败 {{item.auditFailReason}}</view>
+						</view>
+						<view class="ddflex" style="margin-top: 4rpx;">
+							<view class="card-tag">{{ item.jobName }}</view>
+							<view class="card-tag">入司{{item.inDate?monthDayDiff(item.inDate):'1年'}}</view>
+						</view>
+						<view class="card-area ddflex">
+							<image src="/card/static/images/area.png"></image>
+							<view class="flex tover">{{item.address}}</view>
+						</view>
+					</view>
+				</view>
+				<view class="ddflex" style="margin-top: 41rpx;">
+					<view class="flex">
+						<view class="card-data">{{item.cntCust?item.cntCust:0}}</view>
+						<view class="card-label">服务客户</view>
+					</view>
+					<view class="card-line"></view>
+					<view class="flex">
+						<view class="card-data">{{item.cntCntr?item.cntCntr:0}}</view>
+						<view class="card-label">保单件数</view>
+					</view>
+					<view class="card-line"></view>
+					<view class="flex">
+						<view class="card-data">{{item.thumbs?item.thumbs:0}}</view>
+						<view class="card-label">用户点赞</view>
+					</view>
+				</view>
+			</view> -->
+			<view class="act-list" v-if="dataList && dataList.length > 0">
+				<view class="li" v-for="(item, index) in dataList" :key="index" @click="toActivity(item)">
+					<view class="imgbox"><image :src="item.pic" mode="aspectFill"></image></view>
+					<view class="infos fflex">
+						<view class="act-tit tovers">{{ item.title }}</view>
+						<view class="stas ddflex">
+							<view class="fflex">
+								<view class="tag-box tovers">{{ item.brief }}</view>
+								<view class="area" v-if="item.time || item.enlistTime">
+									<view >报名截止时间:{{ item.enlistTime }}</view>
+									<view >活动结束时间:{{ item.time }}</view>
+									<view v-if="item.state>0 && item.state!=6">活动状态:{{item.stateName}}</view>
+									<view style="font-size: 26rpx;color: red;font-weight: 400;" v-else-if="item.state==6">审核失败 {{item.refuse}}</view>
+								</view>
+							</view>
+							<!-- 0待审核 6 审核失败 -->
+							<view class="act-btn" v-if="item.state==0" @click.stop="review(item,index)">审核</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view v-else class="nodata">
+			<image src="../../card/static/images/empty.png" mode="widthFix"></image>
+			<view>暂无数据</view>
+		</view>
+		
+		
+		
+		<view class="ceng" v-show="showPop" @click="showPop=false" @touchmove.stop.prevent="moveHandle">
+		</view>
+		<view :style="showPop?'bottom:0;':'bottom:-100%;'"
+			class="pop">
+			<view class="pop-scroll">
+				<view class="pop-title ddflex">审核活动 <view class="tover" style="max-width: 300rpx;margin-left: 20rpx;">{{clickItem.title}}</view></view>
+				<view class="pop-textarea">
+					<textarea v-model="tempData" placeholder="如审核不通过请填写不通过原因"></textarea>
+				</view>
+				<view style="font-size: 24rpx;color: #999;padding:0 30rpx 30rpx;">注:通过审核可直接点击通过,不通过审核请填写原因</view>
+			</view>
+			<view class="ddflex">
+				<view class="pop-item fflex" style="background-color: red;color: #fff;" @click="unpass">不通过</view>
+				<view class="pop-item fflex" style="background-color: var(--main);color: #fff;" @click="pass">通过</view>
+			</view>
+		</view>
+		
+		
+	</view>
+</template>
+
+<script>
+	const app = getApp();
+	const req = require("../../utils/request.js");
+	const util = require('../../utils/util.js');
+
+	export default {
+		components: {
+		},
+		props: {},
+		data() {
+			return {
+				statusBarHeight:0,
+				
+				page: 1,
+				limit: 10,
+				isLoad: true,
+				searchVal: '',
+				dataList: [],
+				isReference:false,
+				
+				clickItem:{},
+				clickIndex:-1,
+				showPop:false,
+				tempData:'',
+				
+				rangeIndex:1,
+				rangeList:[{
+					label:'全部',
+					value:-1
+				},{
+					label:'待审核',
+					value:0
+				},{
+					label:'审核失败',
+					value:6
+				},{
+					label:'报名中',
+					value:2
+				},{
+					label:'报名结束',
+					value:3
+				},{
+					label:'活动中',
+					value:4
+				},{
+					label:'活动结束',
+					value:5
+				}]
+			}
+		},
+		onLoad(options) {
+			this.getDataList()
+		},
+		onShow() {
+			if(this.isReference){
+				this.isReference = false
+				this.page=1;
+				this.isLoad = true
+				this.getDataList()
+			}
+		},
+		onReachBottom() {
+			this.page++;
+			this.getDataList();
+		},
+		methods: {
+			jumpUrl(url) {
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toActivity(item){
+				uni.navigateTo({
+					url: '/match/activityDetail/activityDetail?id=' + item.id
+				});
+			},
+			// 分页查询
+			getDataList() {
+				if (!this.isLoad) return false;
+				this.isLoad = false;
+				let queryParams = {
+					page: this.page,
+					limit: this.limit
+				}
+				if (this.searchVal) {
+					queryParams.title = this.searchVal
+				}
+				queryParams.state = this.rangeList[this.rangeIndex].value
+				if(queryParams.state==-1) delete queryParams.state
+				req.getRequest('/api/match/yzlPage', queryParams, data => {
+					data = data.list
+					if (data != null && data.length == this.limit) {
+						this.isLoad = true;
+					}
+					if (this.page == 1) {
+						this.dataList = [];
+					}
+					if (this.page > 0) {
+						data = this.dataList.concat(data);
+					}
+					this.dataList = data;
+					console.log('列表数据>>>', this.dataList);
+				})
+			},
+			// 搜索
+			searchFn() {
+				this.page = 1;
+				this.isLoad = true;
+				this.getDataList();
+			},
+			monthDayDiff(date) {
+				return util.monthDayDiff(date)
+			},
+			
+			review(item,index){
+				this.clickItem = item
+				this.clickIndex = index
+				this.tempData = item.refuse?item.refuse:''
+				this.showPop = true
+			},
+			pass(){
+				uni.showModal({
+					title:'提示',
+					content:"是否确定通过该活动审核",
+					success: (res) => {
+						if(res.confirm){
+							req.postRequest('/api/match/examine',{id:this.clickItem.id,state:1},data=>{
+								req.msg("活动已通过审核")
+								this.dataList[this.clickIndex].state = 2
+								this.dataList[this.clickIndex].stateName = '报名中'
+								this.clickIndex = -1
+								this.clickItem = {}
+								this.tempData = ''
+								this.showPop = false
+							})
+						}
+					}
+				})
+			},
+			unpass(){
+				if(!this.tempData){
+					return req.msg("请填写活动不通过原因")
+				}
+				uni.showModal({
+					title:'提示',
+					content:"是否确定不通过该活动审核",
+					success: (res) => {
+						if(res.confirm){
+							req.postRequest('/api/match/examine',{id:this.clickItem.id,state:6,refuse:this.tempData},data=>{
+								req.msg("活动未通过审核")
+								this.dataList[this.clickIndex].state = 6
+								this.dataList[this.clickIndex].stateName = '审核失败'
+								this.dataList[this.clickIndex].refuse = this.tempData
+								this.clickIndex = -1
+								this.clickItem = {}
+								this.tempData = ''
+								this.showPop = false
+							})
+						}
+					}
+				})
+			},
+			
+			rangeChange(e){
+				this.rangeIndex = e.detail.value
+				this.page = 1;
+				this.isLoad = true;
+				this.getDataList();
+			}
+		}
+	}
+</script>
+
+<style>
+	@import "./matchList.css";
+</style>

+ 34 - 0
match/sort/sort.css

@@ -0,0 +1,34 @@
+/* department.css */
+page{background: #f9f9f9;padding-bottom: 140rpx;}
+.tits{padding: 26rpx 40rpx 18rpx 43rpx;font-size: 28rpx;color: #aaa;}
+.list{background: #fff;}
+.list .li{border-bottom: 1rpx solid #E4E4E4;}
+.list .li:last-child{border-bottom: none;}
+.list .lit{padding: 0 30rpx 0 43rpx;height: 101rpx;font-size: 32rpx;color: #263343;}
+.operates{position: relative;}
+.point{padding: 15rpx;}
+.point text{display: block;width: 6rpx;height: 6rpx;background: #999;border-radius: 50%;margin: 0 4rpx;}
+.mask{position: fixed;left: 0;top: 0;right: 0;bottom: 0;z-index: 3;}
+.operate{position: absolute;right: 0;top: 45rpx;width: 216rpx;background: #FFFFFF;border: 1rpx solid #F2F2F2;box-shadow: 0 0 20rpx rgba(168, 168, 168, 0.16);padding: 0 25rpx;box-sizing: border-box;font-size: 28rpx;color: #333;border-radius: 10rpx;z-index: 5;}
+.operate::after{content: '';display: block;width: 0;height: 0;border: 10rpx solid transparent;border-top: none;border-bottom-color: #fff;box-shadow: 0 0 20rpx rgba(168, 168, 168, 0.16);position: absolute;right: 25rpx;top: -10rpx;}
+.operate .lis{border-bottom: 1rpx solid #D5D5D5;padding: 27rpx 0;}
+.operate .lis:last-child{border-bottom: none;}
+.operate .lis image{width: 30rpx;height: 30rpx;margin-right: 12rpx;}
+.lists{padding-bottom: 30rpx;}
+.lists .lis{font-size: 32rpx;color: #888;padding: 25rpx 53rpx;}
+.lists .lis::before{content: '';display: block;width: 11rpx;height: 12rpx;border: 1rpx solid #C7C7C7;border-top: none;border-right: none;margin-right: 9rpx;}
+.btns{position: fixed;left: 40rpx;right: 40rpx;bottom: 30rpx;z-index: 10;height: 80rpx;background: var(--main);border-radius: 40rpx;font-size: 32rpx;color: #fff;text-align: center;line-height: 80rpx;}
+.nodept{font-size: 30rpx;color: #333;padding: 300rpx 0 0;text-align: center;}
+.nodept navigator{width: 40%;height: 80rpx;background: var(--main);border-radius: 40rpx;font-size: 32rpx;color: #fff;text-align: center;line-height: 80rpx;margin: 40rpx auto 0;}
+/* 重命名部门 */
+.ceng{position: fixed;top: 0;left: 0;right: 0;bottom: 0;background: rgba(0,0,0,.5);z-index: 99;}
+.popup{position: fixed;left: 80rpx;right: 80rpx;top: 50%;transform: translateY(-50%);background: #fff;border-radius: 15rpx;padding: 60rpx 40rpx;z-index: 100;}
+.pop-ipt{background: #f9f9f9;height: 90rpx;border-radius: 45rpx;font-size: 32rpx;color: #333;padding: 20rpx 30rpx;box-sizing: border-box;width: 100%;}
+.placeholder{color: #ccc;}
+.pop-btn{margin-top: 40rpx;justify-content: space-between;}
+.cancel,.save{height: 80rpx;width: 47%;font-size: 30rpx;text-align: center;line-height: 80rpx;border-radius: 40rpx;}
+.cancel{background: #e5e5e5;color: #666;}
+.save{background: var(--main);color: #fff;}
+
+
+.del image{width: 38rpx;height: 38rpx;padding-left: 30rpx;margin-left: 30rpx;}

+ 103 - 0
match/sort/sort.vue

@@ -0,0 +1,103 @@
+<template>
+	<view v-if="isShow">
+		<block v-if="pageList && pageList.length > 0">
+			<view class="tits dflex">
+				<view class="flex">所有类目</view>
+			</view>
+			<view class="list">
+				<view class="li" v-for="(item, index) in pageList" :key="index">
+					<view class="lit ddflex" @click="selectNode(item)">
+						<view class="flex">{{ item.dictName}}</view>
+
+						<view class="del">
+							<image
+								:src="'/match/static/images/' + (categoryList==item.dictValue ? 'checkBox_h' : 'checkBox') + '.png'">
+							</image>
+						</view>
+					</view>
+					
+				</view>
+			</view>
+			<view class="btns" @click="submitSave()">确定</view>
+
+		</block>
+		
+	</view>
+</template>
+
+<script>
+	const req = require('../../utils/request.js');
+	const util = require('../../utils/util.js');
+	var app = getApp();
+	export default {
+		data() {
+			return {
+				isShow: false,
+				pageList: [],
+				categoryList: '', //选择的类目
+			};
+		},
+
+		onLoad(opt) {
+			let pages = getCurrentPages(); //获取所有页面栈实例列表
+			let prevPage = pages[pages.length - 2]; //上一页页面实例
+			this.categoryList = JSON.parse(JSON.stringify(prevPage.$vm.matchType)); //上页面选中的成员
+			console.log('this.deptObj》》》》》》》',this.categoryList);
+		},
+
+		onShow() {
+			this.getList();
+		},
+		methods: {
+			
+			selectNode(item){
+				if(this.categoryList!=item.dictValue){
+					this.categoryList = item.dictValue
+				}else{
+					this.categoryList = ''
+				}
+			},
+			
+			submitSave() {
+				let pages = getCurrentPages(); //获取所有页面栈实例列表
+				let prevPage = pages[pages.length - 2]; //上一页页面实例
+				prevPage.$vm.matchType = this.categoryList; //修改上一页
+				uni.navigateBack({
+					delta: 1
+				});
+			},
+
+			
+			getList() {
+				uni.showLoading({
+					title: '加载中'
+				});
+				let params = {
+					dictType:'match_type'
+				};
+				req.getRequest('/api/other/dict/info', params, res => {
+					if (res && res.length > 0) {
+						res.map(it => {
+							it.isOperate = false;
+							it.isShowChildren = true;
+							return it;
+						});
+					}
+					this.pageList = res;
+					this.isShow = true;
+					uni.hideLoading();
+				});
+			},
+			
+			jumpUrl(url) {
+				uni.navigateTo({
+					url: url
+				});
+			},
+		}
+	};
+</script>
+
+<style>
+	@import './sort.css';
+</style>

BIN
match/static/images/bmfy.png


BIN
match/static/images/bmsj.png


BIN
match/static/images/crico2.png


BIN
match/static/images/fxico1_1.png


BIN
match/static/images/hddz.png


+ 25 - 0
pages.json

@@ -5,6 +5,11 @@
 			"navigationBarTitleText": "线上会客厅",
 			"navigationStyle": "custom"
 		}
+	},{
+		"path": "pages/web/web",
+		"style": {
+			"navigationBarTitleText": ""
+		}
 	}],
 	"subPackages": [{
 			"root": "card",
@@ -58,6 +63,21 @@
 				"style": {
 					"navigationBarTitleText": "报名信息"
 				}
+			},{
+				"path": "matchList/matchList",
+				"style": {
+					"navigationBarTitleText": "活动审核"
+				}
+			},{
+				"path": "activityDetail/activityDetail",
+				"style": {
+					"navigationBarTitleText": "活动详情"
+				}
+			},{
+				"path": "sort/sort",
+				"style": {
+					"navigationBarTitleText": "活动分类"
+				}
 			}]
 		},
 		{
@@ -135,6 +155,11 @@
 				"style": {
 					"navigationBarTitleText": "内容管理"
 				}
+			},{
+				"path": "contentList/contentList",
+				"style": {
+					"navigationBarTitleText": "内容管理"
+				}
 			}]
 		}
 	],

+ 68 - 0
pages/web/web - 副本.vue

@@ -0,0 +1,68 @@
+<template>
+	<!--pages/web/web.wxml-->
+	<view>
+		<web-view :src="webUrl" v-if="webUrl!==''"></web-view>
+	</view>
+</template>
+
+<script>
+	// pages/web/web.js
+	const req = require("../../utils/request");
+	const app = getApp();
+
+	export default {
+		data() {
+			return {
+				webUrl: '',
+				back: false,
+			};
+		},
+
+		components: {},
+		props: {},
+		onLoad: function(options) {
+			this.query = options;
+			let that = this;
+			let token = req.getStorage('AUTH_TOKEN');
+			let webUrl = req.public.storemanagers + req.header.appId + '&token=' + token;
+			console.log('地址>>>>>',webUrl)
+
+			if (!req.getStorage('userInfo')) {
+				// console.log("111111111111111");
+				app.globalData.openPage('pages/authorize/authorize');
+			} else {
+				if (this.query.scene) {
+					let form = {
+						scene: this.query.scene
+					};
+					req.getRequest('/api/code/params', form, data => {
+						// console.log(
+						// 	"====================================================================================" +
+						// 	data.scene);
+						webUrl += '&orderId=' + data.scene;
+						this.setData({
+							webUrl: webUrl
+						});
+						// console.log(webUrl, "+++++++++++");
+					});
+				} else {
+					that.setData({
+						webUrl: webUrl
+					});
+					// console.log(webUrl);
+				}
+			}
+		},
+
+		onShow() {
+			if (this.back) {
+				uni.navigateBack();
+			}
+		},
+
+		methods: {}
+	};
+</script>
+<style>
+	@import "./web.css";
+</style>

+ 2 - 0
pages/web/web.css

@@ -0,0 +1,2 @@
+/* pages/web/web.wxss */
+

+ 69 - 0
pages/web/web.vue

@@ -0,0 +1,69 @@
+<template>
+	<!--pages/web/web.wxml-->
+	<view>
+		<web-view :src="webUrl" v-if="webUrl!==''"></web-view>
+	</view>
+</template>
+
+<script>
+	// pages/web/web.js
+	const req = require("../../utils/request");
+	const app = getApp();
+
+	export default {
+		data() {
+			return {
+				webUrl: '',
+				back: false,
+			};
+		},
+
+		components: {},
+		props: {},
+		onLoad: function(options) {
+			this.query = options;
+			let that = this;
+			let token = req.getStorage('AUTH_TOKEN');
+			let webUrl = options.url
+			this.webUrl = decodeURIComponent(webUrl)
+			console.log('地址>>>>>',webUrl)
+
+			// if (!req.getStorage('userInfo')) {
+			// 	// console.log("111111111111111");
+			// 	app.globalData.openPage('pages/authorize/authorize');
+			// } else {
+			// 	if (this.query.scene) {
+			// 		let form = {
+			// 			scene: this.query.scene
+			// 		};
+			// 		req.getRequest('/api/code/params', form, data => {
+			// 			// console.log(
+			// 			// 	"====================================================================================" +
+			// 			// 	data.scene);
+			// 			webUrl += '&orderId=' + data.scene;
+			// 			this.setData({
+			// 				webUrl: webUrl
+			// 			});
+			// 			// console.log(webUrl, "+++++++++++");
+			// 		});
+			// 	} else {
+			// 		that.setData({
+			// 			webUrl: webUrl
+			// 		});
+			// 		// console.log(webUrl);
+			// 	}
+			// }
+		},
+
+		onShow() {
+			if (this.back) {
+				uni.navigateBack();
+			}
+		},
+
+		methods: {}
+	};
+</script>
+<style>
+	@import "./web.css";
+</style>

BIN
static/images/down.png


BIN
static/pages/images/clear.png


BIN
static/pages/images/shoucang.png


BIN
static/pages/images/shoucang_h.png


BIN
static/pages/images/sy.png


+ 1 - 1
topic/content/content.vue

@@ -96,7 +96,7 @@ export default {
 		this.query = options
 		this.id = options.id;
 		await this.getDetail();
-		this.getContentList();
+		// this.getContentList();
 	},
 	async onShow(){
 		this.getConfig()

+ 196 - 15
topic/contentList/contentList.css

@@ -1,5 +1,6 @@
-/* contentList.css */
-page{background: #fff;}
+page{
+	background-color: #f5f5f5;
+}
 .top-fixed{
 	position: fixed;
 	top: 0;
@@ -39,25 +40,205 @@ page{background: #fff;}
 	font-size: 30rpx;
 	margin-left: 46rpx;
 }
-.ban{height: 275rpx;position: relative;margin: 40rpx 32rpx 15rpx;}
-.swiper{width: 100%;height: 275rpx;border-radius: 10rpx;}
-.swiper image{width: 100%;height: 100%;border-radius: 10rpx;}
-.dots{position: absolute;left: 50%;transform: translateX(-50%);bottom: 20rpx;z-index: 3;justify-content: center;}
-.dot{width: 46rpx;height: 4rpx;background: rgba(255,255,255,.5);margin: 0 3rpx;}
-.dot.active{background: #fff;}
-.title{font-size: 36rpx;color: #333;font-weight: bold;align-items: center;}
-.title::before{content: '';display: block;width: 6rpx;height: 38rpx;background: #108FFF;margin-right: 14rpx;}
-.box{padding: 30rpx 32rpx 0;}
-.bobo{border-bottom: 20rpx solid #F8F8F8;}
+
+.filter{
+	padding: 0  0 0 30rpx;
+	text-align: center;
+	font-size: 28rpx;
+	color: #999999;
+	line-height: 41rpx;
+}
+.filter-item-icon{
+	margin-left: 15rpx;
+	width: 22rpx;
+	height: 13rpx;
+}
+.filter-item{
+	justify-content: center;
+}
+.f-active{
+	color: var(--main);
+}
+
+/* 弹窗 */
+/* 核销弹窗 */
+.ceng{position: fixed;top: 0;left: 0;right: 0;bottom: 0;background-color: rgba(0,0,0,.5);z-index: 99;}
+.hx-pop{overflow: hidden;position: fixed;left: 0;right: 0;top: 0;background-color: #fff;border-radius: 0rpx 0rpx 0rpx 0rpx;z-index: 100;transition: all .3s ease;}
+.default{position: absolute;top: 55rpx;right: 60rpx;font-size: 28rpx;color: #999;}
+.default image{width: 36rpx;height: 36rpx;margin-right: 14rpx;}
+.pop-tit{font-size: 32rpx;color: #263343;font-weight: bold;margin-top: 60rpx;padding: 0 60rpx;}
+.pop-con{padding: 0 60rpx;max-height: 500rpx;overflow: scroll;}
+
+.pop-list{flex-wrap: wrap;}
+.pop-list .li{height: 70rpx;font-size: 30rpx;color: #333;text-align: left;line-height: 70rpx;margin: 30rpx 0;border-bottom: 2rpx solid #ebebeb;}
+.pop-list .li:last-child{border-bottom:none}
+.pop-list .li.active{color: var(--main);}
+.pop-list .opt{padding: 0 20rpx; height: 60rpx;background: #fff;border-radius: 10rpx;font-size: 30rpx;color: #999;text-align: center;line-height: 60rpx;align-items: flex-start;margin: 30rpx 30rpx 0 0;border: 2rpx solid #ebebeb;}
+/* .pop-list .opt:nth-child(3n){margin-right: 0;} */
+.pop-list .opt.opt-active{color: var(--main);border: 2rpx solid var(--main);}
+.pop-time{margin-top: 30rpx;font-size: 30rpx;color: #333;}
+.pop-time text{margin: 0 25rpx;}
+.date-ipt{width: 262rpx;height: 70rpx;background: #F3F5F7;border-radius: 35rpx;box-sizing: border-box;padding: 0 30rpx;font-size: 28rpx;color: #A5A5A5;line-height: 70rpx;}
+.pop-btn{padding: 30rpx;}
+.pop-btn view{height: 90rpx;line-height: 90rpx;font-size: 32rpx;text-align: center;box-sizing: border-box;border-radius: 6rpx;}
+.pop-btn view:first-child{width: 250rpx; color: #fff;border-top: 1rpx solid #f5f5f5;line-height: 79rpx;background-color: #cccccc;margin-right: 30rpx;}
+.pop-btn view:last-child{color: #fff;background: var(--mina);}
+
+
+/* 列表*/
+/* 开通项目 */
+.card-pic{
+	width: 172rpx;
+	height: 172rpx;
+	border-radius: 10rpx 10rpx 10rpx 10rpx;
+	opacity: 1;
+	margin-right: 15rpx;
+}
+.card-info{
+	
+}
+.card-title{
+	line-height: 54rpx;
+	font-size: 32rpx;
+	font-weight: bold;
+}
+.card-time{
+	line-height: 36rpx;
+	font-size: 24rpx;
+	color: #999999;
+}
+.card-price{
+	margin-top: 43rpx;
+	justify-content: space-between;
+}
+.card-price text:first-child{
+	font-size: 32rpx;
+	font-weight: 500;
+	color: #FF0000;
+}
+.card-price text:last-child{
+	font-size: 24rpx;
+	font-weight: 500;
+	color: #999999;
+}
+.register-option{
+	border-top: 1px solid #F5F5F5;
+	justify-content: space-between;
+	margin-top: 30rpx;
+	padding: 20rpx 30rpx 0;
+}
+.order-time{
+	font-size: 24rpx;
+	font-weight: 400;
+	color: #999999;
+}
+.option-btn{
+	padding: 0 40rpx;
+	line-height: 51rpx;
+	border-radius: 27rpx 27rpx 27rpx 27rpx;
+	opacity: 1;
+	border: 2rpx solid #CCCCCC;
+	font-size: 28rpx;
+}
+
+.bottom-btn{
+	background-color: #fff;
+	padding: 30rpx 0;
+	position: fixed;
+	bottom: 0;
+	left: 0;
+	right: 0;
+}
+.btn-icon{
+	width: 29rpx;
+	height: 32rpx;
+	margin-right: 18rpx;
+}
+.bottom-btn .btn{
+	width: 690rpx;
+	height: 96rpx;
+	line-height: 96rpx;
+	background: #2A82FD;
+	border-radius: 48rpx 48rpx 48rpx 48rpx;
+	opacity: 1;
+	text-align: center;
+	color: #FFFFFF;
+	margin: auto;
+	justify-content: center;
+	font-size: 32rpx;
+}
+
+.review-btn{
+	padding: 6rpx 20rpx;
+	font-size: 26rpx;
+	background-color: var(--main);
+	color: #fff;
+	border-radius: 10rpx;
+}
+
+.ceng {
+    position: fixed;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background: rgba(0, 0, 0, 0.5);
+    z-index: 99;
+}
+.pop{
+	width:100%;
+	border-radius:16rpx 16rpx 0 0;
+	background: #fff;
+	position: fixed;
+	bottom:-100%;
+	left:0;
+	right:0;
+	padding:10rpx 0;
+	z-index: 100;
+	transition: all .3s ease;
+}
+.pop-item{
+	padding:30rpx;
+	font-size:28rpx;
+	text-align:center;
+	margin:0 30rpx 30rpx;
+	border-radius: 10rpx;
+}
+.pop-qx{
+	border-top:10rpx solid #f5f5f5;
+}
+.pop-scroll{
+	max-height: 750rpx;
+	overflow: scroll;
+}
+.pop-scroll::-webkit-scrollbar {
+	display: none;
+}
+.pop-textarea{
+	padding: 30rpx;
+	border: 1px solid #E5E5E5;
+	margin: 30rpx;
+}
+.pop-textarea textarea{
+	width: 100%;
+}
+.pop-title{
+	padding: 30rpx 30rpx 0;
+	font-size: 32rpx;
+}
+
+
+/* 内容 */
+.rec{
+	padding: 0 30rpx;
+	background-color: #fff;
+}
 .rec .li{padding: 30rpx 0;border-bottom: 1rpx solid #EDEDED;align-items: center;}
 .rec-tit{font-size: 34rpx;color: #333;font-weight: bold;line-height: 47rpx;height: 141rpx;margin-bottom: 25rpx;}
 .author{font-size: 28rpx;color: #999;margin-right: 24rpx;}
 .author image{width: 32rpx;height: 32rpx;border-radius: 2rpx;margin-right: 10rpx;}
 .rec-time{font-size: 28rpx;color: #999;}
 .rec-img{width: 240rpx;height: 180rpx;margin-left: 55rpx;border-radius: 12rpx 12rpx 12rpx 12rpx;}
-
-
-/* 行业资讯 */
 .rec-association {
 	padding: 0rpx 30rpx 0;
 	opacity: 1;

+ 221 - 114
topic/contentList/contentList.vue

@@ -5,144 +5,251 @@
 				<view class="search-input ddflex fflex">
 					<image src="/static/images/ssico.png"></image>
 					<input @confirm="searchFn" confirm-type="search" @input="searchFn" v-model="searchVal" class="fflex"
-						placeholder="请输入关键词" />
+						placeholder="请输入内容名称" />
+				</view>
+				<view class="filter ddflex">
+					<view class="fflex">
+						<picker mode="selector" :range="rangeList" range-key="label" v-model="rangeIndex" @change="rangeChange">
+							<view class="filter-item fflex ddflex f-active" style="text-align: right;justify-content: flex-end;">
+								<text style="max-width: 150rpx;" class="tover">{{rangeList[rangeIndex].label}}</text>
+								<image class="filter-item-icon" src="../../static/images/down.png"></image>
+							</view>
+						</picker>
+					</view>
 				</view>
 			</view>
-			<view class="rec-association" v-if="cateList.length>0" style="">
-				<view class="dflex">
-					<view class="rec-association-nav fflex">
-						<scroll-view scroll-x="true" class="rec-association-scroll ddflex">
-							<view :class="'rec-association-scroll-item tover '+(cIndex == index?'rec-association-scroll-item-active':'')" @click="getCon(item,index)" v-for="item,index in cateList" :key="index">{{item.name}}</view>
-						</scroll-view>
-						<view class="rec-association-nav-m"></view>
+		</view>
+		<view style="height: 130rpx;"></view>
+		<!-- 订单列表 -->
+		<view style="position: relative;overflow: hidden;" v-if="dataList.length>0">
+			<!-- <view class="act-list" v-if="dataList && dataList.length > 0">
+				<view class="li" v-for="(item, index) in dataList" :key="index" @click="toActivity(item)">
+					<view class="imgbox"><image :src="item.pic" mode="aspectFill"></image></view>
+					<view class="infos fflex">
+						<view class="act-tit tovers">{{ item.title }}</view>
+						<view class="stas ddflex">
+							<view class="fflex">
+								<view class="tag-box tovers">{{ item.brief }}</view>
+								<view class="area" v-if="item.time || item.enlistTime">
+									<view >报名截止时间:{{ item.enlistTime }}</view>
+									<view >活动结束时间:{{ item.time }}</view>
+									<view v-if="item.state>0 && item.state!=6">活动状态:{{item.stateName}}</view>
+									<view style="font-size: 26rpx;color: red;font-weight: 400;" v-else-if="item.state==6">审核失败 {{item.refuse}}</view>
+								</view>
+							</view>
+							<view class="act-btn" v-if="item.state==0" @click.stop="review(item,index)">审核</view>
+						</view>
+					</view>
+				</view>
+			</view> -->
+			<view class="rec" v-if="dataList.length>0">
+				<view class="li" v-for="(item,index) in dataList" :key="index">
+					<navigator @click="toActivity(item)" hover-class="none" class="dflex">
+						<view class="flex">
+							<view class="rec-tit tovers3">{{item.title}}</view>
+							<view class="dflex">
+								<view class="rec-time">{{item.createDate}}</view>
+							</view>
+						</view>
+						<image :src="item.pic" mode="aspectFill" class="rec-img"></image>
+					</navigator>
+					<view class="ddflex" style="justify-content: flex-end;">
+						<view class="review-btn" v-if="item.status==0" @click.stop="review(item,index)">审核</view>
+						<view style="font-size: 26rpx;color: red;font-weight: 400;" v-else-if="item.status==1">审核失败 {{item.refuse}}</view>
 					</view>
 				</view>
 			</view>
 		</view>
+		<view v-else class="nodata">
+			<image src="../../card/static/images/empty.png" mode="widthFix"></image>
+			<view>暂无数据</view>
+		</view>
 		
-		<view :style="cateList.length>0?'height: 180rpx;':'height: 100rpx;'"></view>
 		
-		<view class="box">
-			<!-- <view class="title dflex">{{title}}</view> -->
-			<view class="rec" v-if="contentList.length>0">
-				<navigator :url="'/topic/content/content?id=' + item.id" hover-class="none" class="li dflex" v-for="(item,index) in contentList" :key="index">
-					<view class="flex">
-						<view class="rec-tit tovers3">{{item.title}}</view>
-						<view class="dflex">
-							<!-- <view class="author ddflex"><image src="../../static/pages/images/zbgw.png" mode="aspectFill"></image>欧衡</view> -->
-							<view class="rec-time">{{item.createDate}}</view>
-						</view>
-					</view>
-					<image :src="item.pic" mode="aspectFill" class="rec-img"></image>
-				</navigator>
+		
+		<view class="ceng" v-show="showPop" @click="showPop=false" @touchmove.stop.prevent="moveHandle">
+		</view>
+		<view :style="showPop?'bottom:0;':'bottom:-100%;'"
+			class="pop">
+			<view class="pop-scroll">
+				<view class="pop-title ddflex">审核内容 <view class="tover" style="max-width: 300rpx;margin-left: 20rpx;">{{clickItem.title}}</view></view>
+				<view class="pop-textarea">
+					<textarea v-model="tempData" placeholder="如审核不通过请填写不通过原因"></textarea>
+				</view>
+				<view style="font-size: 24rpx;color: #999;padding:0 30rpx 30rpx;">注:通过审核可直接点击通过,不通过审核请填写原因</view>
 			</view>
-			<view class="nodata" v-if="!contentList||contentList.length==0">
-				<image :src="picUrlss+'empty_zb.png'"></image>
-				<text>暂无资讯</text>
+			<view class="ddflex">
+				<view class="pop-item fflex" style="background-color: red;color: #fff;" @click="unpass">不通过</view>
+				<view class="pop-item fflex" style="background-color: var(--main);color: #fff;" @click="pass">通过</view>
 			</view>
 		</view>
+		
+		
 	</view>
 </template>
 
 <script>
-const req = require('../../utils/request.js');
-const api = require('../../utils/api.js');
-const util = require('../../utils/util.js');
-const app = getApp();
-export default {
-	data() {
-		return {
-			picUrlss: req.public.picUrls,
-			title: '',
-			swiperCurrent: 0,
-			bannerList: [],
-			form: {
-				page: 1,
-				limit: 10
-			},
-			contentList: [],
-			isLoad: true,
-			code:null,
-			cid:null,
-			cateList:[],
-			cIndex:0,
-			searchVal:''
-		};
-	},
-	async onLoad(options) {
-		this.title = options.title;
-		this.code = options.code;
-		uni.setNavigationBarTitle({
-			title: options.title
-		})
-		if(this.code)
-			await this.getCate()
-		this.getContentList();
-	},
-	onShow() {
-	},
-	onReachBottom(){
-		this.form.page++;
-		this.getContentList();
-	},
+	const app = getApp();
+	const req = require("../../utils/request.js");
+	const util = require('../../utils/util.js');
 
-	methods: {
-		async getCon(item,index){
-			this.cIndex = index;
-			this.cid = item.id
-			this.form.page = 1
-			this.isLoad = true;
-			this.getContentList();
+	export default {
+		components: {
 		},
-		// 获取分类
-		getCate(){
-			return new Promise((r,j)=>{
-				req.getRequest('/api/content/category/list',{parentCode: this.code},res=>{
-					this.cateList = res;
-					// 如果有二级分类,清处code和noCode
-					if(this.cateList&&this.cateList.length>0){
-						this.cid = res[0].id
-						this.code = null
-					}
-					r()
-				})
-			})
-		},
-		//为您推荐
-		getContentList() {
-			if (!this.isLoad) return false;
-			this.isLoad = false;
-			let form = this.form;
-			form.code = this.code;
-			// 如果有二级分类用分类id查
-			if(this.cid){
-				form.cid = this.cid
+		props: {},
+		data() {
+			return {
+				statusBarHeight:0,
+				
+				page: 1,
+				limit: 10,
+				isLoad: true,
+				searchVal: '',
+				dataList: [],
+				isReference:false,
+				
+				clickItem:{},
+				clickIndex:-1,
+				showPop:false,
+				tempData:'',
+				
+				rangeIndex:1,
+				rangeList:[{
+					label:'全部',
+					value:-1
+				},{
+					label:'待审核',
+					value:0
+				},{
+					label:'审核失败',
+					value:1
+				},{
+					label:'审核成功',
+					value:200
+				}]
 			}
-			if(this.searchVal) form.title = this.searchVal
-			else form.title = ''
-			if(req.getStorage("shareId")){
-				form.shareSaleNo = req.getStorage("shareId")
+		},
+		onLoad(options) {
+			this.getDataList()
+		},
+		onShow() {
+			if(this.isReference){
+				this.isReference = false
+				this.page=1;
+				this.isLoad = true
+				this.getDataList()
 			}
-			req.getRequest('/api/content/list', form,res => {
-				res = res?res:[]
-				if (res && res.length == 10) {
-					this.isLoad = true;
+		},
+		onReachBottom() {
+			this.page++;
+			this.getDataList();
+		},
+		methods: {
+			jumpUrl(url) {
+				uni.navigateTo({
+					url: url
+				})
+			},
+			toActivity(item){
+				uni.navigateTo({
+					url: '/topic/content/content?id=' + item.id
+				});
+			},
+			// 分页查询
+			getDataList() {
+				if (!this.isLoad) return false;
+				this.isLoad = false;
+				let queryParams = {
+					page: this.page,
+					limit: this.limit
 				}
-				if (this.form.page > 1) {
-					res = this.contentList.concat(res);
+				if (this.searchVal) {
+					queryParams.title = this.searchVal
 				}
-				this.contentList = res;
-			});
-		},
-		searchFn(){
-			this.form.page = 1
-			this.isLoad = true;
-			this.getContentList();
+				queryParams.status = this.rangeList[this.rangeIndex].value
+				if(queryParams.status==-1) delete queryParams.status
+				req.getRequest('/api/content/interfaceYzl/page', queryParams, data => {
+					data = data.list
+					if (data != null && data.length == this.limit) {
+						this.isLoad = true;
+					}
+					if (this.page == 1) {
+						this.dataList = [];
+					}
+					if (this.page > 0) {
+						data = this.dataList.concat(data);
+					}
+					this.dataList = data;
+					console.log('列表数据>>>', this.dataList);
+				})
+			},
+			// 搜索
+			searchFn() {
+				this.page = 1;
+				this.isLoad = true;
+				this.getDataList();
+			},
+			monthDayDiff(date) {
+				return util.monthDayDiff(date)
+			},
+			
+			review(item,index){
+				this.clickItem = item
+				this.clickIndex = index
+				this.tempData = item.refuse?item.refuse:''
+				this.showPop = true
+			},
+			pass(){
+				uni.showModal({
+					title:'提示',
+					content:"是否确定通过该内容审核",
+					success: (res) => {
+						if(res.confirm){
+							req.postRequest('/api/content/interfaceYzl/audit',{id:this.clickItem.id,status:200},data=>{
+								req.msg("内容已通过审核")
+								this.dataList[this.clickIndex].status = 200
+								this.clickIndex = -1
+								this.clickItem = {}
+								this.tempData = ''
+								this.showPop = false
+							})
+						}
+					}
+				})
+			},
+			unpass(){
+				if(!this.tempData){
+					return req.msg("请填写内容不通过原因")
+				}
+				uni.showModal({
+					title:'提示',
+					content:"是否确定不通过该内容审核",
+					success: (res) => {
+						if(res.confirm){
+							req.postRequest('/api/content/interfaceYzl/audit',{id:this.clickItem.id,status:1,refuse:this.tempData},data=>{
+								req.msg("内容未通过审核")
+								this.dataList[this.clickIndex].status = 1
+								this.dataList[this.clickIndex].refuse = this.tempData
+								this.clickIndex = -1
+								this.clickItem = {}
+								this.tempData = ''
+								this.showPop = false
+							})
+						}
+					}
+				})
+			},
+			
+			rangeChange(e){
+				this.rangeIndex = e.detail.value
+				this.page = 1;
+				this.isLoad = true;
+				this.getDataList();
+			}
 		}
 	}
-};
 </script>
 
 <style>
 	@import "./contentList.css";
-</style>
+</style>