wgl пре 4 година
родитељ
комит
db150b672b

+ 195 - 41
src/projects/business/views/Master/Activity/Add.vue

@@ -1,15 +1,14 @@
 <template>
-<div>
-    <header class="mui-bar mui-bar-nav">
-			<h1 class="mui-title">发起活动</h1>
-			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-		</header>
+	<div>
+		<common ref="common" @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle" :rightLink="rightLink" :doRightLink="doRightLink"></top-header>
+
 		<div class="mui-content vongi-fqhd">
 			<div class="margin10">
 				<form class="mui-input-group">
 					<div class="mui-input-row">
 						<label style="width:50%">查看活动模板</label>
-						<button class="mui-btn mui-btn-block mui-navigate-right" type='button' style="width:50%">
+						<button @click="goToTemplate" class="mui-btn mui-btn-block mui-navigate-right" type='button' style="width:50%">
 							查看
 						</button>
 					</div>
@@ -19,47 +18,29 @@
 				<form class="mui-input-group">
 					<div class="mui-input-row">
 						<label><i class="colorfe616c">*</i>活动标题</label>
-						<input type="text" class="mui-input-clear" placeholder="请输入">
+						<input v-model="subForm.title" type="text" class="mui-input-clear" placeholder="请输入">
 					</div>
 				</form>
 			</div>
-			<div class="vongi-fqhd-add margin10">
-				<a href="#addPopover"><span class="mui-icon mui-icon-plus"></span></a>
-			</div>
-			<div class="vongi-cashier margin10">
-				<div class="vongi-fqhd-addimg">
-					<img src="~$project/assets/img/02.jpg" alt="">
-					<!--<span>添加图片</span>
-					<i class="iconfont icon-23"></i>-->
-				</div>
-				<div class="vongi-cashier-text">
-					<a class="vongi-text-tit color333" href="">
-						名都喜欢羽毛球的业主朋友们,快快投入组织的怀抱吧——名都业主“羽你同行”俱乐部欢迎你!
-					</a>
-					<a><span class="mui-icon iconfont icon-guanbi1"></span></a>
-					<a><span class="mui-icon iconfont icon-jiantou1"></span></a>
+
+			<div v-for="(item,index) in subForm.contentList" class="vongi-cashier margin10">
+				<div @click="chooseImage(index)" class="vongi-fqhd-addimg">
+					<img v-if="item.picture" :src="item.picture">
+					<div v-else>
+						<span>添加图片</span>
+						<i class="iconfont icon-23"></i>
+					</div>
 				</div>
-			</div>
-			<div class="vongi-fqhd-add margin10">
-				<a href="#addPopover"><span class="mui-icon mui-icon-plus"></span></a>
-			</div>
-			<div class="vongi-cashier margin10">
-				<a class="vongi-fqhd-addimg" href="">
-					<!--<img src="~$project/assets/img/02.jpg" alt="">-->
-					<span>添加图片</span>
-					<i class="iconfont icon-23"></i>
-				</a>
 				<div class="vongi-cashier-text">
-					<a class="vongi-text-tit color333" href="">
-						名都喜欢羽毛球的业主朋友们,快快投入组织的怀抱吧——名都业主“羽你同行”俱乐部欢迎你!
-					</a>
-					<a><span class="mui-icon iconfont icon-guanbi1"></span></a>
+					<router-link :to="{name:'MasterActivityAddText',query:{index:index}}" class="vongi-text-tit color333" v-text="item.detail"></router-link>
+					<a @click="delItem(index)"><span class="mui-icon iconfont icon-guanbi1"></span></a>
 					<a><span class="mui-icon iconfont icon-jiantou1"></span></a>
 				</div>
 			</div>
+
 			<div class="vongi-fqhd-add margin10">
-				<a href="#addPopover"><span class="mui-icon mui-icon-plus"></span></a>
-				<div id="#addPopover" class="vongi-popover">
+				<a @click="addShow=true"><span class="mui-icon mui-icon-plus"></span></a>
+				<div v-show="addShow" class="vongi-popover">
 					<div class="mui-popover-arrow mui-bottom" style="left:43.5px"></div>
 					<ul class="mui-table-view mui-grid-view mui-grid-9">
 						<li class="mui-table-view-cell mui-media mui-col-xs-6">
@@ -69,7 +50,7 @@
 							</a>
 						</li>
 						<li class="mui-table-view-cell mui-media mui-col-xs-6">
-							<a href="#">
+							<a @click="addWord">
 								<span class="iconfont icon-wenzi color4fc5f7"></span>
 								<div class="mui-media-body">文字</div>
 							</a>
@@ -79,13 +60,186 @@
 			</div>
 
 		</div>
-</div>
+
+		<loading :visible="isLoading"></loading>
+	</div>
 </template>
 
 <script>
+	import * as API_Activity from '@/apis/Master/activity'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	import * as types from '$project/store/mutation-types'
+	import * as WxJsApi from '$project/utils/wxJsApi'
+	export default {
+		name: 'MasterActivityMyInfo',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+		},
+		data() {
+			return {
+				isLoading: false,
+
+				pageTitle: '发起活动',
+
+				subForm: {
+					title: '',
+					content: '',
+					contentList: [],
+				},
+				addShow: false,
+
+				rightLink: {
+					show: true,
+					icon: 'mui-btn mui-btn-primary',
+					style: 'width: 55px;height: 25px;margin-top:5px;margin-right: 0px;line-height: 5px;color: #fff;font-size:16px;border-radius:20px;',
+					title: '预览'
+				},
+			}
+		},
+		created() {
+			if (this.activity_form_data) {
+				this.subForm = this.activity_form_data;
+			}
+		},
+		methods: {
+			//获取详情
+			getInfo() {
+				this.isLoading = true;
+				API_Activity.getActivityInfo(this.id).then(response => {
+					this.isLoading = false;
+					this.detail = response;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//查看模板
+			goToTemplate() {
+				this.$router.push({
+					name: 'MasterActivityTemplate'
+				})
+			},
+			//向某个位置追加数据
+			pushList() {
+				var item = {
+					picture: '',
+					detail: ''
+				}
+				this.subForm.contentList.push(item);
+				this.set_activity_form_data(this.subForm)
+			},
+			//删除某个元素
+			delItem(index) {
+				this.subForm.contentList.splice(index, 1);
+				this.set_activity_form_data(this.subForm)
+			},
+			//增加文字
+			addWord() {
+				this.pushList();
+				console.log(this.subForm.contentList.length)
+				this.$router.push({
+					name: 'MasterActivityAddText',
+					query: {
+						index: this.subForm.contentList.length - 1
+					}
+				})
+			},
+			//微信选择图片
+			chooseImage(index) {
+				WxJsApi.chooseImage().then(res => {
+					var localData = res.localData;
+
+					if (localData.indexOf('data:image') != 0) {
+						//判断是否有这样的头部
+						localData = 'data:image/jpeg;base64,' + localData
+					}
+					localData = localData.replace(/\r|\n/g, '').replace('data:image/jgp', 'data:image/jpeg')
+					this.imgBase64 = localData;
+					//显示裁剪图片
+					//this.showCropper('faceImageUrl');
+					this.uploadpic(index);
+				}).catch(error => {
+					mui.toast(error);
+				})
+			},
+			//上传图片
+			uploadpic(index) {
+				this.isLoading = true;
+				WxJsApi.uploadPic(this.imgBase64).then(response => {
+					this.isLoading = false;
+
+					this.subForm.contentList[index]['picture'] = response;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//预览
+			doRightLink() {
+				if (!this.subForm.title) {
+					mui.toast('请输入活动标题');
+				} else {
+					this.set_activity_form_data(this.subForm)
+					//this.save();
+					this.$router.push({
+						name: 'MasterActivityAddPreview',
+					})
+				}
+			},
+			//提交保存
+			/* save() {
+				this.isLoading = true;
+				this.subForm.content = JSON.stringify(this.subForm.contentList);
+				API_Activity.addActivity(this.subForm).then(response => {
+					this.isLoading = false;
+
+					this.$router.push({
+						name: 'MasterActivityAddPreview',
+						query: {
+							id: response.id
+						}
+					})
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			}, */
+			asynCallBack() {
+
+			},
+			...mapMutations({
+				set_activity_form_data: types.SET_ACTIVITY_FORM_DATA,
+			})
+		},
+		mounted() {
+			//获取微信配置
+			WxJsApi.getWxConfig();
+		},
+		destroyed() {},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+				activity_form_data: 'activity_form_data',
+			})
+		},
+	}
 </script>
 
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>
 <style src="$project/assets/css/iconfont.css"></style>
-<style>
+<style scoped>
+	.vongi-text-tit {
+		min-height: 63px;
+	}
 </style>

+ 83 - 25
src/projects/business/views/Master/Activity/AddPreview.vue

@@ -1,41 +1,99 @@
 <template>
-<div>
-    <header class="mui-bar mui-bar-nav">
-			<h1 class="mui-title">活动详情</h1>
-			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-            <a class="mui-btn mui-btn-primary mui-pull-right">下一步</a>
-		</header>
+	<div>
+		<common ref="common" @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle" :rightLink="rightLink" :doRightLink="doRightLink"></top-header>
+
 		<div class="mui-content">
 			<div class="vongi-hddat-tit">
-				<h1>欢迎加入恒大名都业主羽毛球群</h1>
-				<h1>——羽你同行!</h1>
-				<h5>活动起止日期:2020-10-25 至 2020-11-25</h5>
+				<h1 v-text="subForm.title"></h1>
+				<h5>活动起止日期: 至 </h5>
 			</div>
 			<div class="vongi-hddat-text">
-				<div class="vongi-hddat-cont">
-					<p><img src="~$project/assets/img/huodo.png" width="100%" /></p>
-					<p>名都喜欢羽毛球的业主朋友们,快快投入组织的怀抱吧——名都业主“羽你同行”俱乐部欢迎你!</p>
-					<p>扫码入群,为健康动起来 ↓</p>
+				<div v-for="(item,index) in subForm.contentList" class="vongi-hddat-cont">
+					<p><img :src="item.picture" width="100%" /></p>
+					<p v-html="item.detail"></p>
 				</div>
 				<div class="vongi-hddat-cont vongi-hddat-center">
-					<p><img src="~$project/assets/img/huodoma.png" width="40%" /></p>
-					<p>咨询热线:13687155078</p>
-					<p>本活动发起人:12栋业主 李军 13687155078</p>
+					<p>本活动发起人: 业主 {{person_popedom.personName}} </p>
 				</div>
 			</div>
 		</div>
-</div>
+	</div>
 </template>
 
 <script>
-export default {
-        mounted() {
-            document.body.style.backgroundColor = '#fff';
-        },
-        destroyed() {
-            document.body.style.backgroundColor = '';
-        }
-    }
+	import * as API_Activity from '@/apis/Master/activity'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	import * as types from '$project/store/mutation-types'
+	export default {
+		name: 'MasterActivityAddText',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+		},
+		data() {
+			return {
+				isLoading: false,
+
+				pageTitle: '详情预览',
+
+				subForm: {
+					title: '',
+					content: '',
+					contentList: [],
+				},
+
+				rightLink: {
+					show: true,
+					icon: 'mui-btn mui-btn-primary',
+					style: 'width: auto;height: 25px;margin-top:5px;margin-right: 0px;line-height: 5px;color: #fff;font-size:16px;',
+					title: '下一步'
+				},
+			}
+		},
+		created() {
+			if (this.activity_form_data) {
+				this.subForm = this.activity_form_data;
+			}
+		},
+		methods: {
+
+			//下一步
+			doRightLink() {
+				this.$router.push({
+					name: 'MasterActivityAddSet'
+				})
+			},
+			asynCallBack() {
+
+			},
+			...mapMutations({
+				set_activity_form_data: types.SET_ACTIVITY_FORM_DATA,
+			})
+		},
+		mounted() {
+			document.body.style.backgroundColor = '#fff';
+		},
+		destroyed() {
+			document.body.style.backgroundColor = '';
+		},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+				activity_form_data: 'activity_form_data',
+			})
+		}
+	}
 </script>
 
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>

+ 223 - 23
src/projects/business/views/Master/Activity/AddSet.vue

@@ -1,51 +1,251 @@
 <template>
-<div>
-    <header class="mui-bar mui-bar-nav">
-			<h1 class="mui-title">活动设置</h1>
-			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-		</header>
+	<div>
+		<common ref="common" @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
 		<div class="mui-content vongi-fqhd">
 			<div class="mui-content-padded">
 				<h5>标题和封面</h5>
 			</div>
 			<div class="vongi-cashier margin10">
 				<div class="mui-col-xs-7">
-					<!--<textarea placeholder="请输入标题"></textarea>-->
-					<span class="color999">欢迎加入恒大名都业主羽毛球群——羽你同行</span>
-					<a href="" class="iconfont icon-bianji1"></a>
-				</div>				
-				<div class="flew mui-col-xs-5">
-					<img src="~$project/assets/img/02.jpg" alt="">
-					<a href="">更换封面</a>
-				</div>				
+					<textarea v-if="titleEditShow" v-model="setForm.title" placeholder="请输入标题"></textarea>
+					<div v-else>
+						<span class="color999" v-text="setForm.title"></span>
+						<a @click="titleEditShow=true" class="iconfont icon-bianji1"></a>
+					</div>
+				</div>
+				<div class="flew mui-col-xs-5" style="min-height:35px;">
+					<img v-if="setForm.frontCover" :src="setForm.frontCover">
+					<a @cick="chooseImage">更换封面</a>
+				</div>
 			</div>
 			<div class="vongi-qingjiadt vongi-editme">
 				<form class="mui-input-group">
 					<div class="mui-input-row">
 						<label style="width:40%"><i class="colorfe616c">*</i>活动起止日期</label>
-						<button class="mui-btn mui-btn-block mui-navigate-right mui-ellipsis" type='button' style="width:60%">
-							2020-10-25 至 2020-11-24
+						<button class="mui-btn mui-btn-block mui-ellipsis" type='button' style="width:60%">
+							<font @click="selectStartTime">{{setForm.startTime?setForm.startTime:'开始时间'}}</font> 至 <font @click="selectEndTime">{{setForm.endTime?setForm.endTime:'结束时间'}}</font>
 						</button>
 					</div>
 				</form>
 			</div>
 		</div>
 		<div class="fyy-footer vongi-footer">
-			<form class="mui-input-group vongi-xieyi">
-					<div class="mui-input-row mui-radio mui-left">
-						<label class="mui-h6">我已阅读并同意<span class="color4fc5f7">《小鹏管家用户责任承诺书》</span></label>
-						<input name="radio1" type="radio">
-					</div>
-				</form>
-			<div class="bindfyy-btn"><button type="submit" class="mui-btn mui-btn-primary ">提交审核</button></div>
+			<!-- <form class="mui-input-group vongi-xieyi">
+				<div class="mui-input-row mui-radio mui-left">
+					<label class="mui-h6">我已阅读并同意<span class="color4fc5f7">《小鹏管家用户责任承诺书》</span></label>
+					<input name="radio1" type="radio">
+				</div>
+			</form> -->
+			<div class="bindfyy-btn"><button @click="save" type="button" class="mui-btn mui-btn-primary ">提交审核</button></div>
 		</div>
-</div>
+
+		<loading :visible="isLoading"></loading>
+	</div>
 </template>
 
 <script>
+	require('$project/assets/js/mui.picker.min.js');
+	import * as API_Activity from '@/apis/Master/activity'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	import * as types from '$project/store/mutation-types'
+	import * as WxJsApi from '$project/utils/wxJsApi'
+	import {
+		currentTimeStamp,
+		parseUnixTime,
+		unixTimeStamp
+	} from '$project/utils'
+	export default {
+		name: 'MasterActivityAddSet',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+		},
+		data() {
+			return {
+				isLoading: false,
+
+				pageTitle: '活动设置',
+
+				subForm: {
+					title: '',
+					content: '',
+					contentList: [],
+				},
+
+				setForm: {
+					id: '',
+					title: '',
+					frontCover: '',
+					startTime: '',
+					endTime: ''
+				},
+
+				titleEditShow: false,
+			}
+		},
+		created() {
+			if (this.activity_form_data) {
+				this.subForm = this.activity_form_data;
+				this.setForm.title = this.subForm.title;
+				if (this.subForm.contentList.length > 0 && this.subForm.contentList[0]['picture']) {
+					this.setForm.frontCover = this.subForm.contentList[0]['picture'];
+				}
+			}
+		},
+		methods: {
+			//微信选择图片
+			chooseImage() {
+				WxJsApi.chooseImage().then(res => {
+					var localData = res.localData;
+
+					if (localData.indexOf('data:image') != 0) {
+						//判断是否有这样的头部
+						localData = 'data:image/jpeg;base64,' + localData
+					}
+					localData = localData.replace(/\r|\n/g, '').replace('data:image/jgp', 'data:image/jpeg')
+					this.imgBase64 = localData;
+					//显示裁剪图片
+					//this.showCropper('faceImageUrl');
+					this.uploadpic();
+				}).catch(error => {
+					mui.toast(error);
+				})
+			},
+			//上传图片
+			uploadpic() {
+				this.isLoading = true;
+				WxJsApi.uploadPic(this.imgBase64).then(response => {
+					this.isLoading = false;
+
+					this.setForm.frontCover = response;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//下一步
+			doRightLink() {
+				this.$router.push({
+					name: 'MasterActivityAddSet'
+				})
+			},
+			selectStartTime() {
+				var _this = this;
+				var picker = new mui.DtPicker({
+					"type": "date",
+					"beginYear": 2020,
+					"endYear": 2040,
+					"beginDate": new Date(),
+					"value": _this.setForm.startTime
+				});
+				picker.show(function(rs) {
+					_this.setForm.startTime = rs.text;
+					if (unixTimeStamp(_this.setForm.startTime) > unixTimeStamp(_this.setForm.endTime)) {
+						_this.setForm.endTime = _this.setForm.startTime;
+					}
+					picker.dispose();
+				});
+			},
+			selectEndTime() {
+				var _this = this;
+				var picker = new mui.DtPicker({
+					"type": "date",
+					"beginYear": 2020,
+					"endYear": 2040,
+					"beginDate": new Date(_this.setForm.startTime),
+					"value": _this.setForm.endTime
+				});
+				picker.show(function(rs) {
+					_this.setForm.endTime = rs.text;
+					picker.dispose();
+				});
+			},
+			//检测
+			checkForm() {
+				if (!this.setForm.title) {
+					mui.toast('请输入标题');
+					return false;
+				} else if (!this.setForm.frontCover) {
+					mui.toast('请上传封面图片');
+					return false;
+				} else if (!this.setForm.startTime) {
+					mui.toast('请选择活动开始时间');
+					return false;
+				} else if (!this.setForm.endTime) {
+					mui.toast('请选择活动结束时间');
+					return false;
+				} else {
+					return true;
+				}
+			},
+			//保存
+			save() {
+				if (this.checkForm()) {
+					this.isLoading = true;
+					this.subForm.content = JSON.stringify(this.subForm.contentList);
+					API_Activity.addActivity(this.subForm).then(response => {
+						this.isLoading = false;
+
+						this.setForm.id = response.id;
+						this.submit();
+					}).catch(error => {
+						this.isLoading = false;
+						mui.toast(error);
+					})
+				}
+			},
+			//提交
+			submit() {
+				this.isLoading = true;
+				API_Activity.setActivity(this.setForm).then(response => {
+					this.isLoading = false;
+
+					mui.toast('提交成功,等待审核');
+					//清空数据
+					this.set_activity_form_data(null);
+					this.$router.push({
+						name: 'MasterActivityMyList'
+					})
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			asynCallBack() {
+
+			},
+			...mapMutations({
+				set_activity_form_data: types.SET_ACTIVITY_FORM_DATA,
+			})
+		},
+		mounted() {
+			//获取微信配置
+			WxJsApi.getWxConfig();
+		},
+		destroyed() {},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+				activity_form_data: 'activity_form_data',
+			})
+		}
+	}
 </script>
 
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>
 <style src="$project/assets/css/iconfont.css"></style>
+<style src="$project/assets/css/mui.picker.min.css"></style>
 <style>
 </style>

+ 87 - 10
src/projects/business/views/Master/Activity/AddText.vue

@@ -1,14 +1,12 @@
 <template>
-<div>
-   <header class="mui-bar mui-bar-nav">
-			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-			<h1 class="mui-title">编辑文字</h1>
-			<a class="mui-btn mui-pull-right mui-btn-blue">完成</a>
-		</header>
+	<div>
+		<common ref="common" @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle" :rightLink="rightLink" :doRightLink="doRightLink"></top-header>
+
 		<div class="mui-content">
 			<div class="vongi-edit">
-				<textarea placeholder="请输入正文" class="flew"></textarea>
-				<div class="vongi-edit-footer">
+				<textarea v-model="detail" placeholder="请输入正文" class="flew"></textarea>
+				<!-- <div class="vongi-edit-footer">
 					<div class="vongi-edit-bl flew-sp flew-items">
 						<span class="iconfont icon-bold"></span>
 						<span class="iconfont icon-italic"></span>
@@ -25,15 +23,94 @@
 						<span class="iconfont icon-fengexian"></span>
 						<span class="iconfont icon-quotation_marks"></span>
 					</div>
-				</div>
+				</div> -->
 			</div>
 		</div>
-</div>
+	</div>
 </template>
 
 <script>
+	import * as API_Activity from '@/apis/Master/activity'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	import * as types from '$project/store/mutation-types'
+	export default {
+		name: 'MasterActivityAddText',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+		},
+		data() {
+			return {
+				isLoading: false,
+
+				pageTitle: '编辑文字',
+
+				index: this.$route.query.index,
+				subForm: {
+					title: '',
+					content: '',
+					contentList: [],
+				},
+
+				detail: '',
+
+				rightLink: {
+					show: true,
+					icon: 'mui-btn mui-btn-primary',
+					style: 'width: 55px;height: 25px;margin-top:5px;margin-right: 0px;line-height: 5px;color: #fff;font-size:16px;',
+					title: '完成'
+				},
+			}
+		},
+		created() {
+			if (this.activity_form_data) {
+				this.subForm = this.activity_form_data;
+				this.detail = this.subForm.contentList[this.index]['detail'];
+			}
+		},
+		methods: {
+
+			//完成
+			doRightLink() {
+				if (!this.detail) {
+					mui.toast('请输入内容');
+				} else {
+					var item = this.subForm.contentList[this.index];
+					item.detail = this.detail;
+					this.$set(this.subForm.contentList, this.index, item);
+					this.set_activity_form_data(this.subForm);
+					this.$router.go(-1);
+				}
+			},
+			asynCallBack() {
+
+			},
+			...mapMutations({
+				set_activity_form_data: types.SET_ACTIVITY_FORM_DATA,
+			})
+		},
+		mounted() {},
+		destroyed() {},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+				activity_form_data: 'activity_form_data',
+			})
+		}
+	}
 </script>
 
+
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>
 <style src="$project/assets/css/iconfont.css"></style>
 <style>

+ 126 - 28
src/projects/business/views/Master/Activity/ExamineInfo.vue

@@ -1,23 +1,22 @@
 <template>
 	<div>
-		<header class="mui-bar mui-bar-nav">
-			<h1 class="mui-title">申请详情</h1>
-			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-		</header>
+		<common ref="common" @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
 		<div class="mui-content">
 			<div class="mui-content-padded vongi-editme vongi-qingjiadt">
 				<form class="mui-input-group">
 					<div class="mui-input-row">
 						<label>申请人</label>
-						<span>孙鹏</span>
+						<span v-text="detail.applicant"></span>
 					</div>
 					<div class="mui-input-row">
 						<label>房号</label>
-						<span>1-1-2201</span>
+						<span v-text="detail.roomNumber"></span>
 					</div>
 					<div class="mui-input-row">
 						<label>申请时间</label>
-						<span>2020-10-10 10:00:00</span>
+						<span v-text="detail.applicationTime"></span>
 					</div>
 				</form>
 			</div>
@@ -27,63 +26,162 @@
 				<div class="mui-card">
 					<div class="mui-card-content">
 						<div class="mui-card-content-inner">
-							<img src="~$project/assets/img/huodo.png" />
+							<img :src="detail.frontCover" />
 						</div>
 					</div>
 					<div class="mui-card-footer">
-						<a class="mui-navigate-right">
-							欢迎加入恒大名都业主羽毛球群——羽你同行!
-						</a>
+						<router-link :to="{name:'MasterActivityInfo',query:{id:detail.id}}" class="mui-navigate-right">
+							{{detail.title}}
+						</router-link>
 					</div>
 				</div>
 				<div class="flew-sp">
 					活动起止日期
-					<span>2020-10-25 至 2020-11-24</span>
+					<span>{{detail.startTime}} 至 {{detail.endTime}}</span>
 				</div>
 			</div>
-			<div class="fyy-scon-botton">
-				<div class="examine-btn examine-btn1">离开</div>
-				<div class="examine-btn examine-btn2">进入</div>
+			<div v-if="detail.verify==0" class="fyy-scon-botton">
+				<div class="examine-btn examine-btn1" @click="doAction(2)">拒绝</div>
+				<div class="examine-btn examine-btn2" @click="doAction(1)">同意</div>
 			</div>
 			<!--状态-->
 			<div class="mui-content-padded vongi-editme vongi-qingjiadt">
 				<form class="mui-input-group">
 					<div class="mui-input-row">
 						<label>申请状态</label>
-						<span class="color55f868">已通过</span>
-						<!--<span class="colorfe616c">已拒绝</span>-->
+						<span v-if="detail.verify<=1" class="color55f868" v-text="getStatusName(detail.verify)"></span>
+						<span v-if="detail.verify==2" class="colorfe616c" v-text="getStatusName(detail.verify)"></span>
 					</div>
-					<div class="mui-input-row">
+					<div v-if="detail.verifyMsg" class="mui-input-row">
 						<label>审核意见</label>
-						<span class="vongi-span">同意</span>
+						<span class="vongi-span" v-text="detail.verifyMsg"></span>
 					</div>
-					<div class="mui-input-row">
-						<label>申请时间</label>
-						<span>2020-10-10 10:00:00</span>
+					<div v-if="detail.verifyTime" class="mui-input-row">
+						<label>审核时间</label>
+						<span v-text="detail.verifyTime"></span>
 					</div>
 				</form>
 			</div>
 			<!--弹窗-->
-			<div class="mui-popup mui-popup-in vongi-mui-pop" style="display: block;">
+			<div v-if="openFormVisible" class="mui-popup mui-popup-in vongi-mui-pop">
 				<div class="mui-popup-inner vongi-pop-inner">
 					<div class="mui-popup-title">审核意见</div>
 					<div class="mui-popup-input">
-						<textarea id="textarea" rows="3" placeholder="可输入审核意见"></textarea>
+						<textarea v-model="subForm.verifyMsg" rows="3" placeholder="可输入审核意见"></textarea>
 					</div>
 				</div>
-				<div class="mui-popup-buttons"><span class="mui-popup-button">取消</span><span class="mui-popup-button mui-popup-button-bold">确定</span></div>
+				<div class="mui-popup-buttons">
+					<span class="mui-popup-button" @click="openFormVisible=false">取消</span>
+					<span class="mui-popup-button mui-popup-button-bold" @click="submit">确定</span>
+				</div>
 			</div>
-			<div class="mui-popup-backdrop mui-active" style="display: block;"></div>
+			<div v-if="openFormVisible" class="mui-popup-backdrop mui-active" @click="openFormVisible=false"></div>
 		</div>
+
+		<loading :visible="isLoading"></loading>
 	</div>
 </template>
 
 <script>
+	import * as API_Activity from '@/apis/Master/activity'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	export default {
+		name: 'MasterActivityExamineInfo',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+		},
+		data() {
+			return {
+				isLoading: false,
+
+				pageTitle: '申请详情',
+
+				detail: {},
+
+				openFormVisible: false,
+
+				subForm: {
+					id: this.$route.query.id,
+					verify: '',
+					verifyMsg: '',
+				}
+			}
+		},
+		created() {},
+		methods: {
+			//获取详情
+			getInfo() {
+				this.isLoading = true;
+				API_Activity.getActivityInfo(this.subForm.id).then(response => {
+					this.isLoading = false;
+					this.detail = response;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//获取审核状态
+			getStatusName(status) {
+				let statusArr = ['待审核', '已批准', '未批准'];
+				return statusArr[status];
+			},
+			//审批
+			doAction(status) {
+				this.subForm.verify = status;
+				this.openFormVisible = true;
+				this.subForm.verifyMsg = status == 1 ? '同意' : '拒绝';
+			},
+			//检测
+			checkForm() {
+				if (!this.subForm.id) {
+					mui.toast('id不存在');
+					return false;
+				} else {
+					return true;
+				}
+			},
+			//提交
+			submit() {
+				if (this.checkForm()) {
+					this.isLoading = true;
+					API_Activity.examineActivity(this.subForm).then(response => {
+						this.isLoading = false;
+						mui.toast('处理成功');
+						this.$router.go(-1);
+					}).catch(error => {
+						this.isLoading = false;
+						mui.toast(error);
+					})
+				}
+			},
+			asynCallBack() {
+
+			},
+		},
+		mounted() {
+			this.getInfo();
+		},
+		destroyed() {},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+			})
+		}
+	}
 </script>
 
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>
 <style src="$project/assets/css/iconfont.css"></style>
 <style>
 </style>
-
-

+ 148 - 55
src/projects/business/views/Master/Activity/ExamineList.vue

@@ -1,99 +1,192 @@
 <template>
 	<div>
-		<header class="mui-bar mui-bar-nav">
-			<h1 class="mui-title">活动审批</h1>
-			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-		</header>
+		<common ref="common" @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
 		<div class="mui-content vongi-hdsq">
 			<div id="slider" class="mui-slider mui-fullscreen ">
 				<div id="sliderSegmentedControl" class="mui-scroll-wrapper mui-slider-indicator mui-segmented-control mui-segmented-control-inverted">
 					<div class="mui-scroll">
-						<a class="mui-control-item mui-active" href="#item1mobile">
-							<span class="fyy-badge">待处理<span class="mui-badge">5</span></span>
-						</a>
-						<a class="mui-control-item" href="#item2mobile">
+						<router-link :to="{name:'MasterActivityExamineList',query:{isVerify:0}}" :class="'mui-control-item '+(listForm.isVerify==0?'mui-active':'')">
+							<span class="fyy-badge">待处理<span class="mui-badge" v-if="firstRecordsTotal" v-text="firstRecordsTotal"></span></span>
+						</router-link>
+						<router-link :to="{name:'MasterActivityExamineList',query:{isVerify:1}}" :class="'mui-control-item '+(listForm.isVerify==1?'mui-active':'')">
 							已处理
-						</a>
+						</router-link>
 					</div>
 				</div>
-				<div class="mui-slider-group">
-					<div id="item1mobile" class="mui-slider-item mui-control-content">
+
+				<NullList :remark="'暂无审批记录'" v-if="!recordList.length"></NullList>
+
+				<div v-if="recordList.length" class="mui-slider-group">
+					<div v-show="listForm.isVerify==0" class="mui-slider-item mui-control-content">
 						<div class="mui-scroll-wrapper">
 							<div class="mui-scroll">
 								<ul class="mui-table-view">
-									<li class="mui-table-view-cell">
-										<a href="">
+									<li v-for="(item,index) in recordList" :key="item.id" class="mui-table-view-cell">
+										<router-link :to="{name:'MasterActivityExamineInfo',query:{id:item.id}}">
 											<div class="mui-media-body flew-sp">
-												<div class="mui-col-xs-9">欢迎加入恒大名都业主羽毛球群——羽你同行!欢迎加入恒大名都业主羽毛球群——羽你同行!</div>
-												<div class="mui-col-xs-3"><button type="button" class="mui-btn mui-btn-primary mui-btn-outlined">待审核</button></div>
+												<div class="mui-col-xs-9" v-text="item.title"></div>
+												<div class="mui-col-xs-3"><button type="button" class="mui-btn mui-btn-primary mui-btn-outlined" v-text="getStatusName(item.verify)"></button></div>
 											</div>
 											<p class="flew-items flew-sp">
-												发   起  人:李广宵 1-1-2201
-												<span class='mui-ellipsis'>2020-10-10 10:00:00</span>
-											</p>	
-										</a>
-									</li>
-									<li class="mui-table-view-cell">
-										<a href="">
-											<div class="mui-media-body flew-sp">
-												<div class="mui-col-xs-9">欢迎加入恒大名都业主羽毛球群——羽你同行!欢迎加入恒大名都业主羽毛球群——羽你同行!</div>
-												<div class="mui-col-xs-3"><button type="button" class="mui-btn mui-btn-primary mui-btn-outlined">待审核</button></div>
-											</div>
-											<p class="flew-items flew-sp">
-												发   起  人:李广宵 1-1-2201
-												<span class='mui-ellipsis'>2020-10-10 10:00:00</span>
-											</p>	
-										</a>
+												发 起 人:{{item.applicant}} {{item.roomNumber}}
+												<span class='mui-ellipsis'>{{item.createTime}}</span>
+											</p>
+										</router-link>
 									</li>
 								</ul>
 							</div>
 						</div>
 					</div>
-					<div id="item2mobile" class="mui-slider-item mui-control-content">
+					<div v-show="listForm.isVerify==1" class="mui-slider-item mui-control-content">
 						<div class="mui-scroll-wrapper">
 							<div class="mui-scroll">
 								<ul class="mui-table-view">
-									<li class="mui-table-view-cell">
-										<a href="">
-											<div class="mui-media-body flew-sp">
-												<div class="mui-col-xs-9">欢迎加入恒大名都业主羽毛球群——羽你同行!欢迎加入恒大名都业主羽毛球群——羽你同行!</div>
-												<div class="mui-col-xs-3"><button type="button" class="mui-btn mui-btn-success mui-btn-outlined">已同意</button></div>
-											</div>
-											<p class="flew-items flew-sp">
-												发   起  人:李广宵 1-1-2201
-												<span class='mui-ellipsis'>2020-10-10 10:00:00</span>
-											</p>	
-										</a>
-									</li>
-									<li class="mui-table-view-cell">
-										<a href="">
+									<li v-for="(item,index) in recordList" :key="item.id" class="mui-table-view-cell">
+										<router-link :to="{name:'MasterActivityExamineInfo',query:{id:item.id}}">
 											<div class="mui-media-body flew-sp">
-												<div class="mui-col-xs-9">欢迎加入恒大名都业主羽毛球群——羽你同行!欢迎加入恒大名都业主羽毛球群——羽你同行!</div>
-												<div class="mui-col-xs-3"><button type="button" class="mui-btn mui-btn-danger mui-btn-outlined">已拒绝</button></div>
+												<div class="mui-col-xs-9" v-text="item.title"></div>
+												<div class="mui-col-xs-3"><button type="button" class="mui-btn mui-btn-primary mui-btn-outlined" v-text="getStatusName(item.verify)"></button></div>
 											</div>
 											<p class="flew-items flew-sp">
-												发   起  人:李广宵 1-1-2201
-												<span class='mui-ellipsis'>2020-10-10 10:00:00</span>
-											</p>	
-										</a>
+												发 起 人:{{item.applicant}} {{item.roomNumber}}
+												<span class='mui-ellipsis'>{{item.createTime}}</span>
+											</p>
+										</router-link>
 									</li>
 								</ul>
 							</div>
 						</div>
 					</div>
-
 				</div>
 			</div>
-
 		</div>
+		<loading :visible="isLoading"></loading>
 	</div>
 </template>
 
 <script>
+	import * as API_Activity from '@/apis/Master/activity'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import NullList from '$project/components/NullList.vue'
+	import isReachBottom from '$project/utils/isReachBottom'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	export default {
+		name: 'MasterActivityExamineList',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+			NullList
+		},
+		data() {
+			return {
+				isLoading: false,
+
+				pageTitle: '活动审批',
+
+				listForm: {
+					pageIndex: 1,
+					pageSize: 20,
+					totalPage: 1,
+					isVerify: this.$route.query.isVerify ? this.$route.query.isVerify : 0,
+				},
+				recordList: [],
+
+				firstRecordsTotal: 0,
+			}
+		},
+		created() {},
+		methods: {
+			//获取列表
+			getList() {
+				this.isLoading = true;
+				API_Activity.getExamineActivityList(this.listForm).then(response => {
+					if (response) {
+						if (this.listForm.pageIndex == 1) {
+							this.recordList = response.data;
+							this.listForm.pageIndex = response.pageNumber;
+							this.listForm.totalPage = response.totalPage;
+						} else {
+							this.recordList = [
+								...this.recordList,
+								...response.data
+							];
+						}
+					}
+					this.listForm.pageIndex++;
+					this.isLoading = false;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//下拉事件
+			handleScrool() {
+				if (isReachBottom()) {
+					console.log('到达底部')
+					if (this.listForm.pageIndex <= this.listForm.totalPage && this.isLoading == false) {
+						this.getList();
+					} else {
+						return;
+					}
+				}
+			},
+			//切换
+			reloadList(status) {
+				this.listForm.isVerify = status;
+				this.listForm.pageIndex = 1;
+				this.getList();
+			},
+			//获取审核状态
+			getStatusName(status) {
+				let statusArr = ['待审核', '已批准', '未批准'];
+				return statusArr[status];
+			},
+			goToAdd() {
+				this.$router.push({
+					name: 'MasterActivityAdd'
+				})
+			},
+			asynCallBack() {
+
+			},
+		},
+		mounted() {
+			this.getList();
+			//监控下拉加载事件
+			var _this = this;
+			window.addEventListener('scroll', _this.handleScrool);
+		},
+		destroyed() {
+			//销毁监听事件
+			var _this = this;
+			window.removeEventListener('scroll', _this.handleScrool);
+		},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+			})
+		},
+		watch: {
+			//本页面监听到路由(参数)改变
+			'$route': function(to, from) {
+				this.reloadList(to.query.isVerify ? to.query.isVerify : 0)
+			}
+		},
+	}
 </script>
 
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>
 <style src="$project/assets/css/iconfont.css"></style>
 <style>
 </style>
-

+ 94 - 22
src/projects/business/views/Master/Activity/Info.vue

@@ -1,42 +1,114 @@
 <template>
 	<div>
-		<header class="mui-bar mui-bar-nav">
-			<h1 class="mui-title">活动详情</h1>
-			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-		</header>
+		<common ref="common" @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
 		<div class="mui-content">
 			<div class="vongi-hddat-tit">
-				<h1>欢迎加入恒大名都业主羽毛球群</h1>
-				<h1>——羽你同行!</h1>
-				<h5>活动起止日期:2020-10-25 至 2020-11-25</h5>
+				<h1 v-text="detail.title"></h1>
+				<h5>活动起止日期:{{detail.startTime}} 至 {{detail.endTime}}</h5>
 			</div>
 			<div class="vongi-hddat-text">
-				<div class="vongi-hddat-cont">
-					<p><img src="~$project/assets/img/huodo.png" width="100%" /></p>
-					<p>名都喜欢羽毛球的业主朋友们,快快投入组织的怀抱吧——名都业主“羽你同行”俱乐部欢迎你!</p>
-					<p>扫码入群,为健康动起来 ↓</p>
+				<div v-for="(item,index) in contentList" class="vongi-hddat-cont">
+					<p><img :src="item.picture" width="100%" /></p>
+					<p v-html="item.detail"></p>
 				</div>
 				<div class="vongi-hddat-cont vongi-hddat-center">
-					<p><img src="~$project/assets/img/huodoma.png" width="40%" /></p>
-					<p>咨询热线:13687155078</p>
-					<p>本活动发起人:12栋业主 李军 13687155078</p>
+					<!-- <p><img src="~$project/assets/img/huodoma.png" width="40%" /></p>
+					<p>咨询热线:13687155078</p> -->
+					<p>本活动发起人:{{detail.roomNumber}}业主 {{detail.applicant}}</p>
 				</div>
 			</div>
 		</div>
+
+		<loading :visible="isLoading"></loading>
 	</div>
 </template>
 
-<script scoped>
-    export default {
-        mounted() {
-            document.body.style.backgroundColor = '#fff';
-        },
-    }
+<script>
+	import * as API_Activity from '@/apis/Master/activity'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	import {
+		isJSON,
+	} from '$project/utils'
+	export default {
+		name: 'MasterActivityMyInfo',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+		},
+		data() {
+			return {
+				isLoading: false,
+
+				pageTitle: '活动详情',
+
+				id: this.$route.query.id,
+				detail: {},
+			}
+		},
+		created() {},
+		methods: {
+			//获取详情
+			getInfo() {
+				this.isLoading = true;
+				API_Activity.getActivityInfo(this.id).then(response => {
+					this.isLoading = false;
+					this.detail = response;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//获取审核状态
+			getStatusName(status) {
+				let statusArr = ['待审核', '已批准', '未批准'];
+				return statusArr[status];
+			},
+			asynCallBack() {
+
+			},
+		},
+		mounted() {
+			document.body.style.backgroundColor = '#fff';
+			this.getInfo();
+		},
+		destroyed() {
+			document.body.style.backgroundColor = '';
+		},
+		computed: {
+			contentList: {
+				// getter
+				get: function() {
+					if(isJSON(this.detail.content)){
+						return JSON.parse(this.detail.content);
+					}else{
+						return [];
+					}
+				},
+				// setter
+				set: function(newValue) {
+					console.log(newValue)
+				}
+			},
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+			})
+		}
+	}
 </script>
 
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>
 <style src="$project/assets/css/iconfont.css"></style>
 <style>
 </style>
-
-

+ 116 - 23
src/projects/business/views/Master/Activity/List.vue

@@ -1,37 +1,130 @@
 <template>
-<div>
-    <header class="mui-bar mui-bar-nav">
-			<h1 class="mui-title">小区活动</h1>
-			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-		</header>
+	<div>
+		<common ref="common" @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
 		<div class="mui-content">
-			<div class="vongi-sqhd-list">
-				<p class="vongi-center">2020-10-14 15:43:01</p>
-				<a href="" class="mui-card">
-					<div class="mui-card-content">
-						<div class="mui-card-content-inner">
-							<img src="~$project/assets/img/huodo.png" width="100%" />
-						</div>
-					</div>
-					<div class="mui-card-footer mui-ellipsis mui-navigate-right">欢迎加入恒大名都业主羽毛球群——羽你同行!</div>
-				</a>
-			</div>
-			<div class="vongi-sqhd-list">
-				<p class="vongi-center">2020-10-14 15:43:01</p>
-				<a href="" class="mui-card">
+			<div v-for="(item,index) in recordList" class="vongi-sqhd-list">
+				<p class="vongi-center" v-text="item.startTime"></p>
+				<router-link :to="{name:'MasterActivityInfo',query:{id:item.id}}" class="mui-card">
 					<div class="mui-card-content">
 						<div class="mui-card-content-inner">
-							<img src="~$project/assets/img/huodo.png" width="100%" />
+							<img :src="item.frontCover" width="100%" />
 						</div>
 					</div>
-					<div class="mui-card-footer mui-ellipsis mui-navigate-right">欢迎加入恒大名都业主羽毛球群——羽你同行!</div>
-				</a>
+					<div class="mui-card-footer mui-ellipsis mui-navigate-right" v-text="item.title"></div>
+				</router-link>
 			</div>
 		</div>
-</div>
+		<NullList :remark="'暂无活动'" v-if="!recordList.length"></NullList>
+
+		<loading :visible="isLoading"></loading>
+	</div>
 </template>
 
 <script>
+	import * as API_Activity from '@/apis/Master/activity'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import NullList from '$project/components/NullList.vue'
+	import isReachBottom from '$project/utils/isReachBottom'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	export default {
+		name: 'MasterActivityList',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+			NullList
+		},
+		data() {
+			return {
+				isLoading: false,
+
+				pageTitle: '小区活动',
+
+				listForm: {
+					pageIndex: 1,
+					pageSize: 20,
+					totalPage: 1,
+				},
+				recordList: [],
+			}
+		},
+		created() {},
+		methods: {
+			//获取列表
+			getList() {
+				this.isLoading = true;
+				API_Activity.getActivityList(this.listForm).then(response => {
+					if (response) {
+						if (this.listForm.pageIndex == 1) {
+							this.recordList = response.data;
+							this.listForm.pageIndex = response.pageNumber;
+							this.listForm.totalPage = response.totalPage;
+						} else {
+							this.recordList = [
+								...this.recordList,
+								...response.data
+							];
+						}
+					}
+					this.listForm.pageIndex++;
+					this.isLoading = false;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//下拉事件
+			handleScrool() {
+				if (isReachBottom()) {
+					console.log('到达底部')
+					if (this.listForm.pageIndex <= this.listForm.totalPage && this.isLoading == false) {
+						this.getList();
+					} else {
+						return;
+					}
+				}
+			},
+			//获取审核状态
+			getStatusName(status) {
+				let statusArr = ['待审核', '已批准', '未批准'];
+				return statusArr[status];
+			},
+			goToAdd() {
+				this.$router.push({
+					name: 'MasterActivityAdd'
+				})
+			},
+			asynCallBack() {
+
+			},
+		},
+		mounted() {
+			this.getList();
+			//监控下拉加载事件
+			var _this = this;
+			window.addEventListener('scroll', _this.handleScrool);
+		},
+		destroyed() {
+			//销毁监听事件
+			var _this = this;
+			window.removeEventListener('scroll', _this.handleScrool);
+		},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+			})
+		}
+	}
 </script>
 
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>

+ 80 - 36
src/projects/business/views/Master/Activity/MyInfo.vue

@@ -1,23 +1,22 @@
 <template>
 	<div>
-		<header class="mui-bar mui-bar-nav">
-			<h1 class="mui-title">申请详情</h1>
-			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-		</header>
+		<common ref="common" @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
 		<div class="mui-content">
 			<div class="mui-content-padded vongi-editme vongi-qingjiadt">
 				<form class="mui-input-group">
 					<div class="mui-input-row">
 						<label>申请人</label>
-						<span>孙鹏</span>
+						<span v-text="detail.applicant"></span>
 					</div>
 					<div class="mui-input-row">
 						<label>房号</label>
-						<span>1-1-2201</span>
+						<span v-text="detail.roomNumber"></span>
 					</div>
 					<div class="mui-input-row">
 						<label>申请时间</label>
-						<span>2020-10-10 10:00:00</span>
+						<span v-text="detail.applicationTime"></span>
 					</div>
 				</form>
 			</div>
@@ -27,63 +26,108 @@
 				<div class="mui-card">
 					<div class="mui-card-content">
 						<div class="mui-card-content-inner">
-							<img src="~$project/assets/img/huodo.png" />
+							<img :src="detail.frontCover" />
 						</div>
 					</div>
 					<div class="mui-card-footer">
-						<a class="mui-navigate-right">
-							欢迎加入恒大名都业主羽毛球群——羽你同行!
-						</a>
+						<router-link :to="{name:'MasterActivityInfo',query:{id:detail.id}}" class="mui-navigate-right">
+							{{detail.title}}
+						</router-link>
 					</div>
 				</div>
 				<div class="flew-sp">
 					活动起止日期
-					<span>2020-10-25 至 2020-11-24</span>
+					<span>{{detail.startTime}} 至 {{detail.endTime}}</span>
 				</div>
 			</div>
-			<div class="fyy-scon-botton">
-				<div class="examine-btn examine-btn1">离开</div>
-				<div class="examine-btn examine-btn2">进入</div>
-			</div>
 			<!--状态-->
 			<div class="mui-content-padded vongi-editme vongi-qingjiadt">
 				<form class="mui-input-group">
 					<div class="mui-input-row">
 						<label>申请状态</label>
-						<span class="color55f868">已通过</span>
-						<!--<span class="colorfe616c">已拒绝</span>-->
+						<span v-if="detail.verify<=1" class="color55f868" v-text="getStatusName(detail.verify)"></span>
+						<span v-if="detail.verify==2" class="colorfe616c" v-text="getStatusName(detail.verify)"></span>
 					</div>
-					<div class="mui-input-row">
+					<div v-if="detail.verifyMsg" class="mui-input-row">
 						<label>审核意见</label>
-						<span class="vongi-span">同意</span>
+						<span class="vongi-span" v-text="detail.verifyMsg"></span>
 					</div>
-					<div class="mui-input-row">
-						<label>申请时间</label>
-						<span>2020-10-10 10:00:00</span>
+					<div v-if="detail.verifyTime" class="mui-input-row">
+						<label>审核时间</label>
+						<span v-text="detail.verifyTime"></span>
 					</div>
 				</form>
 			</div>
-			<!--弹窗-->
-			<div class="mui-popup mui-popup-in vongi-mui-pop" style="display: block;">
-				<div class="mui-popup-inner vongi-pop-inner">
-					<div class="mui-popup-title">审核意见</div>
-					<div class="mui-popup-input">
-						<textarea id="textarea" rows="3" placeholder="可输入审核意见"></textarea>
-					</div>
-				</div>
-				<div class="mui-popup-buttons"><span class="mui-popup-button">取消</span><span class="mui-popup-button mui-popup-button-bold">确定</span></div>
-			</div>
-			<div class="mui-popup-backdrop mui-active" style="display: block;"></div>
 		</div>
+
+		<loading :visible="isLoading"></loading>
 	</div>
 </template>
 
 <script>
+	import * as API_Activity from '@/apis/Master/activity'
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	export default {
+		name: 'MasterActivityMyInfo',
+		components: {
+			Common,
+			Loading,
+			TopHeader,
+		},
+		data() {
+			return {
+				isLoading: false,
+
+				pageTitle: '申请详情',
+
+				id: this.$route.query.id,
+				detail: {},
+			}
+		},
+		created() {},
+		methods: {
+			//获取详情
+			getInfo() {
+				this.isLoading = true;
+				API_Activity.getActivityInfo(this.id).then(response => {
+					this.isLoading = false;
+					this.detail = response;
+				}).catch(error => {
+					this.isLoading = false;
+					mui.toast(error);
+				})
+			},
+			//获取审核状态
+			getStatusName(status) {
+				let statusArr = ['待审核', '已批准', '未批准'];
+				return statusArr[status];
+			},
+			asynCallBack() {
+
+			},
+		},
+		mounted() {
+			this.getInfo();
+		},
+		destroyed() {},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+			})
+		}
+	}
 </script>
 
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>
 <style src="$project/assets/css/iconfont.css"></style>
 <style>
 </style>
-
-

+ 14 - 4
src/projects/business/views/Master/Activity/MyList.vue

@@ -10,7 +10,7 @@
 						<router-link :to="{name:'MasterActivityMyInfo',query:{id:item.id}}">
 							<div class="mui-media-body flew-sp">
 								<div class="mui-col-xs-9" v-text="item.title"></div>
-								<div class="mui-col-xs-3"><button type="button" class="mui-btn mui-btn-greye mui-btn-outlined">待审核</button></div>
+								<div class="mui-col-xs-3"><button type="button" class="mui-btn mui-btn-greye mui-btn-outlined" v-text="getStatusName(item.verify)"></button></div>
 							</div>
 							<p class="flew-items flew-sp">
 								活动时间:{{item.startTime}}至{{item.endTime}}
@@ -20,11 +20,15 @@
 					</li>
 				</ul>
 			</div>
-
 		</div>
+
+		<NullList :remark="'暂无活动记录'" v-if="!recordList.length"></NullList>
+
 		<div class="fyy-footer">
 			<div class="bindfyy-btn"><button @click="goToAdd" type="button" class="mui-btn mui-btn-primary ">发起活动</button></div>
 		</div>
+
+		<loading :visible="isLoading"></loading>
 	</div>
 </template>
 
@@ -33,7 +37,8 @@
 	import Common from '$project/components/Common.vue'
 	import Loading from '$project/components/Loading.vue'
 	import TopHeader from '$project/components/TopHeader.vue'
-	import NavMenu from '@/components/NavMenu.vue'
+	import NullList from '$project/components/NullList.vue'
+	import isReachBottom from '$project/utils/isReachBottom'
 	import {
 		mapGetters,
 		mapMutations
@@ -44,7 +49,7 @@
 			Common,
 			Loading,
 			TopHeader,
-			NavMenu
+			NullList,
 		},
 		data() {
 			return {
@@ -96,6 +101,11 @@
 					}
 				}
 			},
+			//获取审核状态
+			getStatusName(status) {
+				let statusArr = ['待审核', '已批准', '未批准'];
+				return statusArr[status];
+			},
 			goToAdd() {
 				this.$router.push({
 					name: 'MasterActivityAdd'

+ 47 - 14
src/projects/business/views/Master/Activity/Template.vue

@@ -1,13 +1,11 @@
 <template>
 	<div>
-		<header class="mui-bar mui-bar-nav">
-			<h1 class="mui-title">活动详情</h1>
-			<a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>
-		</header>
+		<common ref="common" @asynCallBack="asynCallBack"></common>
+		<top-header :pageTitle="pageTitle"></top-header>
+
 		<div class="mui-content">
 			<div class="vongi-hddat-tit">
 				<h1>欢迎加入恒大名都业主羽毛球群</h1>
-				<h1>——羽你同行!</h1>
 				<h5>活动起止日期:2020-10-25 至 2020-11-25</h5>
 			</div>
 			<div class="vongi-hddat-text">
@@ -18,7 +16,7 @@
 				</div>
 				<div class="vongi-hddat-cont vongi-hddat-center">
 					<p><img src="~$project/assets/img/huodoma.png" width="40%" /></p>
-					<p>咨询热线:13687155078</p>
+					<p>咨询热线:136****0123</p>
 					<p>本活动发起人:12栋业主 李军 13687155078</p>
 				</div>
 			</div>
@@ -26,17 +24,52 @@
 	</div>
 </template>
 
-<script scoped>
-    export default {
-        mounted() {
-            document.body.style.backgroundColor = '#fff';
-        },
-    }
+<script>
+	import Common from '$project/components/Common.vue'
+	import Loading from '$project/components/Loading.vue'
+	import TopHeader from '$project/components/TopHeader.vue'
+	import {
+		mapGetters,
+		mapMutations
+	} from 'vuex'
+	export default {
+		name: 'MasterActivityTemplate',
+		components: {
+			Common,
+			Loading,
+			TopHeader
+		},
+		data() {
+			return {
+				isLoading: false,
+
+				pageTitle: '活动详情',
+			}
+		},
+		created() {},
+		methods: {
+			asynCallBack() {
+
+			},
+		},
+		mounted() {
+			document.body.style.backgroundColor = '#fff';
+		},
+		destroyed() {
+			document.body.style.backgroundColor = '';
+		},
+		computed: {
+			...mapGetters({
+				openId: 'wx_openid',
+				token: 'token',
+				person_data: 'person_data',
+				person_popedom: 'person_popedom',
+			})
+		}
+	}
 </script>
 
 <style scoped src="$project/assets/css/xpwyfyy.css"></style>
 <style src="$project/assets/css/iconfont.css"></style>
 <style>
 </style>
-
-

+ 3 - 1
src/store/getters.js

@@ -32,4 +32,6 @@ export const wd_message_num = state => state.wd_message_num
 
 export const invitation_code = state => state.invitation_code
 
-export const default_examine_person = state => state.default_examine_person
+export const default_examine_person = state => state.default_examine_person
+
+export const activity_form_data = state => state.activity_form_data

+ 1 - 0
src/store/mutation-types.js

@@ -17,3 +17,4 @@ export const SET_REGISTER_EXAMINE_FORM = 'SET_REGISTER_EXAMINE_FORM'
 export const SET_WD_MESSAGE_NUM = 'SET_WD_MESSAGE_NUM'
 export const SET_INVITATION_CODE = 'SET_INVITATION_CODE'
 export const SET_DEFAULT_EXAMINE_PERSON = 'SET_DEFAULT_EXAMINE_PERSON'
+export const SET_ACTIVITY_FORM_DATA = 'SET_ACTIVITY_FORM_DATA'

+ 7 - 1
src/store/mutations.js

@@ -15,7 +15,8 @@ import {
 	setWxPayBackUrl,
 	setWdMessageNum,
 	setInvitationCode,
-	setDefaultExaminePerson
+	setDefaultExaminePerson,
+	setActivityFormData
 } from '../utils/storage'
 
 var storage_prefix = process.env.VUE_APP_LOCAL_STORAGE_PREFIX;
@@ -115,6 +116,11 @@ const mutations = {
 		state.default_examine_person = data
 	},
 
+	[types.SET_ACTIVITY_FORM_DATA](state, data) {
+		setActivityFormData(storage_prefix, data)
+		state.activity_form_data = data
+	},
+
 }
 
 export default mutations

+ 3 - 1
src/store/state.js

@@ -14,7 +14,8 @@ import {
 	getWxPayBackUrl,
 	getWdMessageNum,
 	getInvitationCode,
-	getDefaultExaminePerson
+	getDefaultExaminePerson,
+	getActivityFormData
 } from '../utils/storage'
 
 var storage_prefix = process.env.VUE_APP_LOCAL_STORAGE_PREFIX;
@@ -40,6 +41,7 @@ const state = {
 	wd_message_num: getWdMessageNum(storage_prefix),
 	invitation_code: getInvitationCode(storage_prefix),
 	default_examine_person: getDefaultExaminePerson(storage_prefix),
+	activity_form_data: getActivityFormData(storage_prefix)
 }
 
 export default state

+ 16 - 0
src/utils/index.js

@@ -320,3 +320,19 @@ export const getDiffDate = (stime, etime) => {
 	}
 	return diffdate;
 }
+
+export const isJSON = (str) => {
+	if (typeof str == 'string') {
+		try {
+			var obj = JSON.parse(str);
+			if (typeof obj == 'object' && obj) {
+				return true;
+			} else {
+				return false;
+			}
+		} catch (e) {
+			console.log('error:' + str + '!!!' + e);
+			return false;
+		}
+	}
+}

+ 4 - 0
src/utils/storage.js

@@ -113,3 +113,7 @@ export const setInvitationCode = (channel, data) => set(channel + '_invitation_c
 export const getDefaultExaminePerson = (channel) => get(channel + '_default_examine_person')
 
 export const setDefaultExaminePerson = (channel, data) => set(channel + '_default_examine_person', data)
+
+export const getActivityFormData = (channel) => get(channel + '_activity_form_data')
+
+export const setActivityFormData = (channel, data) => set(channel + '_activity_form_data', data)