Browse Source

文物跑活动

wangshuo 6 months ago
parent
commit
2e354a2325

+ 11 - 1
config/api.js

@@ -13,7 +13,7 @@ let methodsToken = ['profile', 'refreshUser', 'wxLogin', 'changeMobile', 'addCar
 	'getPhoneNumber', 'editApplyVolunteer', 'mobileBindVolunteer', 'getTeamDetails', 'examineTask', 'removeMemberm',
 	'getPhoneNumber', 'editApplyVolunteer', 'mobileBindVolunteer', 'getTeamDetails', 'examineTask', 'removeMemberm',
 	'getScoreLog', 'rankingList', 'getMainBodyColumnContentList', 'regionData', 'cityData', 'checkIn',
 	'getScoreLog', 'rankingList', 'getMainBodyColumnContentList', 'regionData', 'cityData', 'checkIn',
 	'getMainBodyUser', 'getUserContribute', 'getUserHonor', 'submitTask', 'exportPatrolRecord', 'userManageCrAuth',
 	'getMainBodyUser', 'getUserContribute', 'getUserHonor', 'submitTask', 'exportPatrolRecord', 'userManageCrAuth',
-	'getDevices'
+	'getDevices', 'submitIdentityInfo', 'submitActivitySignupInfo'
 ];
 ];
 const post = (method, data, callback, type, orgurl) => {
 const post = (method, data, callback, type, orgurl) => {
 	//填入默认主体id为1
 	//填入默认主体id为1
@@ -544,6 +544,16 @@ export const activityScheduleList = (data, callback) => get('api/activity/schedu
 // 活动报名参数
 // 活动报名参数
 export const activitySignupParams = (data, callback) => get('api/activity/signup_params/lists' + queryParams(data, true),
 export const activitySignupParams = (data, callback) => get('api/activity/signup_params/lists' + queryParams(data, true),
 	callback);
 	callback);
+// 主体用户身份信息列表
+export const getMemberList = (data, callback) => post('lists', data, callback, 'content/main_body_user_identity');
+// 主体用户身份信息提交
+export const submitIdentityInfo = (data, callback) => post('submitIdentityInfo', data, callback, 'content/main_body_user_identity');
+// 主体用户身份信息提交
+export const submitActivitySignupInfo = (data, callback) => post('submitActivitySignupInfo', data, callback, 'activity/signup');
+// 获取志愿者宣讲员
+export const getXuanjiangList = (data, callback) => get('api/volunteer/volunteer/getXuanjiangList' + queryParams(data, true), callback);
+// 获取志愿者宣讲员详情
+export const getXuanjiangDetails = (data, callback) => get('api/volunteer/volunteer/getXuanjiangDetails' + queryParams(data, true), callback);
 	
 	
 	
 	
 	
 	

+ 32 - 8
index_fenbao/XuanJiangYuan/XuanJiangYuan.vue

@@ -6,17 +6,17 @@
 				<u-search placeholder="搜索讲员" shape="square" :showAction="false" v-model="keyword"></u-search>
 				<u-search placeholder="搜索讲员" shape="square" :showAction="false" v-model="keyword"></u-search>
 			</view>
 			</view>
 			<!-- tab -->
 			<!-- tab -->
-			<view class="tab_box">
+			<!-- <view class="tab_box">
 				<view @click="TabBtn(index)" class="tab_item" v-for="(item, index) in tabList" :key="index" :class="{ tab_item_active: index == tabIndex }">
 				<view @click="TabBtn(index)" class="tab_item" v-for="(item, index) in tabList" :key="index" :class="{ tab_item_active: index == tabIndex }">
 					{{ item.name }}
 					{{ item.name }}
 				</view>
 				</view>
-			</view>
+			</view> -->
 			<!--  -->
 			<!--  -->
-			<view class="xjy_box" @click="xqBtn">
-				<img src="https://img2.baidu.com/it/u=443975182,626431415&fm=253&fmt=auto&app=120&f=JPEG?w=627&h=418" class="img" />
+			<view class="xjy_box" @click="$common.navigateTo('/index_fenbao/XuanJiangYuan/xjy_XiangQing?id=' + item.id)" v-for="item in xuangjiangyuanList" :key="item">
+				<img :src="item.image" class="img" />
 				<view style="margin-left: 60rpx">
 				<view style="margin-left: 60rpx">
-					<view class="xjy_name">徐有群</view>
-					<view class="xjy_addres">故宫博物院</view>
+					<view class="xjy_name">{{ item.name }}</view>
+					<view class="xjy_addres">{{ item.cr_title }}</view>
 					<view class="ckxq">查看详情</view>
 					<view class="ckxq">查看详情</view>
 				</view>
 				</view>
 			</view>
 			</view>
@@ -25,11 +25,16 @@
 </template>
 </template>
 
 
 <script>
 <script>
+let that;
 export default {
 export default {
+	onLoad(option) {
+		that = this;
+		that.getXuanjiangList();
+	},
 	data() {
 	data() {
 		return {
 		return {
 			tabIndex: 0,
 			tabIndex: 0,
-			keyword: '',
+			keywords: '',
 			tabList: [
 			tabList: [
 				{
 				{
 					name: '区域'
 					name: '区域'
@@ -40,13 +45,32 @@ export default {
 				{
 				{
 					name: '评分'
 					name: '评分'
 				}
 				}
-			]
+			],
+			xuangjiangyuanList: []
 		};
 		};
 	},
 	},
 	methods: {
 	methods: {
 		TabBtn(i) {
 		TabBtn(i) {
 			this.tabIndex = i;
 			this.tabIndex = i;
 		},
 		},
+		getXuanjiangList() {
+			this.$api.getXuanjiangList(
+				{ 
+					page: 1, 
+					pageSize: 20,
+					keywords: that.keywords
+				}, 
+				data => {
+					if (data.code == 0) {
+						that.$common.errorToShow(data.msg);
+						return;
+					} else {
+						that.xuangjiangyuanList = data.data;
+						console.log(that.xuangjiangyuanList, '文物跑活动宣讲员');
+					}
+				}
+			);
+		},
 		xqBtn() {
 		xqBtn() {
 			uni.navigateTo({
 			uni.navigateTo({
 				url: '/index_fenbao/XuanJiangYuan/xjy_XiangQing'
 				url: '/index_fenbao/XuanJiangYuan/xjy_XiangQing'

+ 212 - 0
index_fenbao/XuanJiangYuan/activity-review-details.vue

@@ -0,0 +1,212 @@
+<template>
+	<view class="box">
+		<u-navbar :autoBack="true" bgColor="rgba(255,255,255,0)"></u-navbar>
+		<view>
+			<u-swiper
+				@click="clickImg"
+				:list="imageList"
+				imgMode="aspectFill"
+				:height="200"
+				:indicator="true"
+				:autoplay="true"
+				:circular="true"
+				indicatorStyle="bottom: 25px"
+				indicatorMode="dot"
+				indicatorActiveColor="#fff"
+				indicatorInactiveColor="rgba(255, 255, 255, 0.35)"
+			></u-swiper>
+		</view>
+		<view class="box">
+			<view class="" style="display: flex; align-items: center; margin-left: 28rpx; margin-top: 30rpx">
+				<view style="color: #640000; margin-right: 20rpx; font-weight: 700; font-size: 36rpx">{{ list.title }}</view>
+			</view>
+			
+			<view v-if="list.intro" style="margin-left: 24rpx; display: flex; align-items: center; margin-top: 40rpx">
+				<view style="display: flex; align-items: center">
+					<uni-icons type="calendar" size="22" color="#940000"></uni-icons>
+					<view class="item_tit">介绍</view>
+				</view>
+			</view>
+			<view class="text">
+				<u-parse :content="list.content"></u-parse>
+			</view>
+		</view>
+		
+		<!-- 构件 -->
+		<view class="" v-if="association.length > 0">
+			<view style="margin-left: 24rpx; display: flex; align-items: center; margin-top: 40rpx">
+				<view style="display: flex; align-items: center">
+					<uni-icons type="cloud-download" size="22" color="#940000"></uni-icons>
+
+					<view class="item_tit">活动相关</view>
+				</view>
+			</view>
+
+			<view class="jj_btm">
+				<view @click="$common.navigateTo(item.page)" class="container" v-for="(item, index) in association" :key="item.index">
+					<view class="mn_box">
+						<image style="border-radius: 10rpx; width: 100%; height: 100%" :lazy-load="true" :src="item.image"></image>
+					</view>
+					<view class="mn_text">{{ item.title }}</view>
+				</view>
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+let that = this;
+export default {
+	data() {
+		return {
+			list: [],
+			association: [],
+			showadmin: false,
+			imageList: ['https://huli-app.wenlvti.net/app_static/WenWuGuanJia/image/sh_lb1.jpg']
+		};
+	},
+	onLoad(e) {
+		that = this;
+		this.getContentDetail(e.id);
+	},
+	methods: {
+		// 详情
+		getContentDetail(id) {
+			this.$api.getContentDetail(
+				{
+					main_body_id: 1,
+					id: id
+				},
+				function (res) {
+					// console.log(res, 666666666);
+					that.list = res.data;
+					let aa = Object.values(res.data.association_me_list);
+					that.association = aa.filter((item) => item.title !== '文保牌' && item.main_body_column_name !== '我和文物的故事');
+					if (res.data.images.length > 0) {
+						that.imageList = res.data.images;
+					}
+
+					let auth = that.$common.userInfo();
+					//获取用户权限
+					if (!(auth === 'undefined' || auth === '' || auth === [] || auth === null) && auth.token !== 'undefined') {
+						that.$api.userManageCrAuth(
+							{
+								main_body_id: 1,
+								cr_code: res.data.code
+							},
+							function (res) {
+								console.log(res);
+								if (res.data === true) {
+									that.showadmin = true;
+								}
+							}
+						);
+					}
+				}
+			);
+		},
+		// 图片预览
+		clickImg(index) {
+			// console.log(index, 555);
+			var imgs = this.imageList;
+			let temp = [imgs[index]];
+			// console.log('temp', temp);
+
+			uni.previewImage({
+				urls: imgs,
+				current: index,
+				success: function (data) {
+					console.log(data);
+				},
+				fail: function (err) {
+					console.log(err.errMsg);
+				}
+			});
+		}
+	}
+};
+</script>
+
+<style>
+/deep/.u-swiper-indicator__wrapper__dot--active {
+	width: 5px !important;
+}
+.box {
+	min-height: 100%;
+	height: auto;
+	width: 100%;
+	padding-bottom: 50rpx;
+	background-image: url('https://huli-app.wenlvti.net/app_static/wuyuan/static/shouhu/wyj-feiyi3-001.png');
+	background-repeat: repeat-y;
+	background-attachment: fixed;
+	background-size: 100% 100%;
+}
+.title {
+	font-size: 28rpx;
+	font-weight: 400;
+	color: #444444;
+	line-height: 44rpx;
+}
+.u-info {
+	font-size: 28rpx;
+	color: #444444;
+	line-height: 44rpx;
+	margin: 20rpx;
+	text-align: center;
+}
+.text {
+	margin: 20rpx;
+}
+.info {
+	display: flex;
+	justify-content: space-between;
+	flex-wrap: wrap;
+	margin: 20rpx;
+	margin-top: 16rpx;
+}
+.info_item {
+}
+.info > view {
+	margin-top: 20rpx;
+	font-size: 30rpx;
+	margin-left: 8rpx;
+	color: #940000;
+	/* font-weight: 900; */
+}
+.item_tit {
+	font-size: 32rpx;
+	color: #940000;
+	line-height: 48rpx;
+	font-weight: 700;
+}
+.jj_btm {
+	width: 92%;
+	margin: auto;
+	display: flex;
+	margin-top: 20rpx;
+	flex-wrap: wrap;
+	justify-content: space-between;
+}
+.mn_box {
+	width: 300rpx;
+	height: 200rpx;
+}
+.mn_text {
+	width: 298rpx;
+	font-size: 28rpx;
+	text-align: center;
+	color: #ffffff;
+	position: absolute;
+	top: 160rpx;
+	left: 2rpx;
+	line-height: 40rpx;
+	background: rgba(0, 0, 0, 0.3);
+	border-radius: 0px 0rpx 10rpx 10rpx;
+}
+.container {
+	position: relative;
+	margin-top: 20rpx;
+	/* 	width: 260rpx;
+	height: 182rpx; */
+}
+</style>

+ 169 - 0
index_fenbao/XuanJiangYuan/activity-review-list.vue

@@ -0,0 +1,169 @@
+<template>
+	<view class="box">
+		<u-navbar :autoBack="true" title="精彩回顾" bgColor="rgba(255,255,255,0)" :placeholder="true" titleStyle="font-weight:bold;color:#000000"></u-navbar>
+		<view class="fiex_top">
+			<view class="" style="border: 1px solid #eba869; width: 670rpx; margin: auto; margin-top: 32rpx">
+				<u-search
+					bgColor="transparent"
+					v-model="val"
+					shape="square"
+					:showAction="true"
+					actionText="搜索"
+					@custom="searchBtn"
+					:actionStyle="{ color: '#985741', fontSize: '28rpx', fontWeight: 'bold', backgroundColor: '#fff9e9' }"
+				></u-search>
+			</view>
+		</view>
+		<scroll-view v-if="list.length" style="height: 1200rpx; margin-left: 6rpx" scroll-y="true" @scrolltolower="LoadMore">
+			<view class="wenwu_box">
+				<view @click="detailsBtn(item.id)" class="" v-for="(item, index) in list" :key="item.id">
+					<view class="gc_item">
+						<view class="gc_box" style="">
+							<image style="width: 100%; height: 100%; border-radius: 15rpx" :src="item.thumbnail"></image>
+						</view>
+						<view class="tit">{{ item.title }}</view>
+						<!-- <view class="bg_box">湖里区</view> -->
+						<!-- <u-badge type="primary" max="99" :value="item.district" :absolute="true" :offset="[10, 5]"></u-badge> -->
+					</view>
+				</view>
+			</view>
+		</scroll-view>
+		<view v-else><u-empty mode="data" text="暂无数据"></u-empty></view>
+	</view>
+</template>
+
+<script>
+let that;
+export default {
+	data() {
+		return {
+			val: '',
+			page: 1,
+			list: [],
+			isLoading: false
+		};
+	},
+
+	onLoad() {
+		that = this;
+		this.getContentList();
+	},
+	methods: {
+		detailsBtn(id) {
+			uni.navigateTo({
+				url: '/index_fenbao/XuanJiangYuan/activity-review-details?id=' + id
+			});
+		},
+		getContentList(id) {
+			this.isLoading = true;
+			this.$api.getContentList(
+				{
+					page: this.page,
+					pageSize: '10',
+					model_id: 15, 
+					main_body_column_id: 186 ,
+					keywords: this.val
+				},
+				data => {
+					that.isLoading = false;
+					that.list = [...that.list, ...data.data];
+				}
+			);
+		},
+		searchBtn() {
+			this.page = 1;
+			this.list = [];
+			this.getContentList();
+		},
+		LoadMore() {
+			if (this.isLoading) {
+				return;
+			} else {
+				this.page++;
+				this.getContentList();
+			}
+		},
+		clear() {
+			this.val = '';
+		}
+	}
+};
+</script>
+
+<style>
+.box {
+	width: 100%;
+	padding-bottom: 50rpx;
+	background-image: url('https://huli-app.wenlvti.net/app_static/WenWuGuanJia/image/xbg_2.png');
+	background-size: 100% 100%;
+	background-attachment: fixed;
+	background-repeat: repeat-y;
+	height: auto;
+}
+
+.fiex_top {
+	/* margin-bottom: 20rpx; */
+}
+.top_box {
+	display: flex;
+	width: 90%;
+	margin: auto;
+	justify-content: space-between;
+}
+.tit_box {
+	display: flex;
+	align-items: center;
+	text-align: center;
+	width: 215rpx;
+	height: 56rpx;
+	justify-content: space-around;
+	border: 2rpx solid #eba869;
+}
+.tit {
+	overflow: hidden;
+	text-overflow: ellipsis;
+	white-space: nowrap;
+}
+.wenwu_box {
+	width: 92%;
+	margin: auto;
+	margin-top: 20rpx;
+	display: flex;
+	flex-flow: wrap;
+	justify-content: space-between;
+}
+.gc_item {
+	position: relative;
+	width: 324rpx;
+	color: #444444;
+	/* font-weight: 900; */
+	font-size: 32rpx;
+	margin-top: 20rpx;
+	font-family: 'MyGlobalFont';
+}
+.gc_box {
+	width: 333rpx;
+	height: 280rpx;
+}
+
+.bg_box {
+	width: 184rpx;
+	height: 62rpx;
+	margin: auto;
+	margin-top: 20rpx;
+	line-height: 62rpx;
+	color: #fef3e1;
+	font-size: 28rpx;
+	font-weight: 500;
+	background-image: url('/static/img/tab.png');
+	background-size: 100% 100%;
+}
+.u-search__action--active.data-v-0a306a29 {
+	height: 60rpx !important;
+	line-height: 60rpx !important;
+}
+.u-search__action--active.data-v-2d141374 {
+	height: 60rpx !important;
+	line-height: 60rpx !important;
+}
+</style>

+ 105 - 99
index_fenbao/XuanJiangYuan/bm_page.vue

@@ -12,7 +12,7 @@
 			<view class="ld">报名资料填写</view>
 			<view class="ld">报名资料填写</view>
 			<view class="radio_box">
 			<view class="radio_box">
 				<u-radio-group
 				<u-radio-group
-				  v-model="scheduleValue"
+				  v-model="activity_schedule_id"
 				  placement="column"
 				  placement="column"
 				 
 				 
 				>
 				>
@@ -29,25 +29,26 @@
 			</view>
 			</view>
 			 
 			 
 			<!-- 动态表单 -->
 			<!-- 动态表单 -->
-			<block v-for="item in signupParams" :key="item.id">
-			     <view @click="getTitle(item)" class="" style="margin-top: 30rpx;">
+			<block  v-for="item in signupParams" :key="item.id">
+			   <!-- @click="getTitle(item)" -->
+				 <view  class="" style="margin-top: 30rpx;">
 			       <text >{{ item.title }}</text>
 			       <text >{{ item.title }}</text>
 			       <!-- <text v-if="item.tip" class="tip">{{ item.tip }}</text> -->
 			       <!-- <text v-if="item.tip" class="tip">{{ item.tip }}</text> -->
 			       <!-- 根据 type 属性决定渲染哪种类型的输入 -->
 			       <!-- 根据 type 属性决定渲染哪种类型的输入 -->
 			       <u--input v-if="item.type === 'string'"
 			       <u--input v-if="item.type === 'string'"
 			               v-model="item.value"
 			               v-model="item.value"
 								 border="surround"
 								 border="surround"
-			                @change="onInput"
+			             @change="onInput(item)"
 			                :placeholder="item.tip" />
 			                :placeholder="item.tip" />
 				
 				
-			      <u-radio-group   v-if="item.type === 'radio'" placement="column">
+			      <u-radio-group v-if="item.type === 'radio'" placement="column">
 			         <u-radio v-for="(fruitName, fruitId) in item.params" :key="fruitId"
 			         <u-radio v-for="(fruitName, fruitId) in item.params" :key="fruitId"
 			                  :label="fruitName"
 			                  :label="fruitName"
-			                :name="fruitName"
+			                :name="item.name + '-' + fruitName"
 							  @change="radioChange"
 							  @change="radioChange"
 							  :customStyle="{ marginBottom: '8px', height: '30px' }"
 							  :customStyle="{ marginBottom: '8px', height: '30px' }"
 							  >
 							  >
-			           <!-- {{ fruitName }} -->
+			           {{ fruitName }}
 			         </u-radio>
 			         </u-radio>
 			       </u-radio-group>
 			       </u-radio-group>
 				
 				
@@ -55,7 +56,7 @@
 			     </view>
 			     </view>
 			   </block>
 			   </block>
 
 
-			<view class="bm_btn" @click="tjcyBtn">添加家庭成员</view>
+			<view class="bm_btn" @click="tjcyBtn">添加成员</view>
 			<view class="cy_box" v-for="(item,index) in cyList" :key="index">
 			<view class="cy_box" v-for="(item,index) in cyList" :key="index">
 				<view class=""  style="display: flex;">
 				<view class=""  style="display: flex;">
 					<view class="icon_box">
 					<view class="icon_box">
@@ -68,13 +69,13 @@
 					</view>
 					</view>
 				</view>
 				</view>
 			
 			
-				<view @click="removePassenger(index)" style="width: 60rpx;height: 60rpx;">
+				<view @click="removeMembers(index)" style="width: 60rpx;height: 60rpx;">
 				<u-icon name="trash" color="#858789" size="20" ></u-icon>	
 				<u-icon name="trash" color="#858789" size="20" ></u-icon>	
 				</view>
 				</view>
 			</view>
 			</view>
 			<!--  -->
 			<!--  -->
 	
 	
-			<view class="tjbm_btn">提交报名</view>
+			<view class="tjbm_btn" @click="submitActivitySignupInfo">提交报名</view>
 			<!-- 阅读协议 -->
 			<!-- 阅读协议 -->
 			<view class="ydxy">
 			<view class="ydxy">
 			 <u-checkbox-group @change="xyShow=!xyShow" >
 			 <u-checkbox-group @change="xyShow=!xyShow" >
@@ -93,7 +94,7 @@
 			<view style="margin-top: 20rpx"></view>
 			<view style="margin-top: 20rpx"></view>
 			<view class="bt_box">
 			<view class="bt_box">
 				
 				
-				<view @click="volhow=false" class="bt2">我已知悉</view>
+				<view class="bt2" @click="volhow=false">我已知悉</view>
 			</view>
 			</view>
 		</u-popup>
 		</u-popup>
 
 
@@ -106,65 +107,21 @@
 export default {
 export default {
 	data() {
 	data() {
 		return {
 		return {
-			 signupParams : [
-				 // {
-				 //     id: 1,
-				 //     name: "fruit",
-				 //     group: "basic",
-				 //     title: "请选择参赛类型",
-				 //     tip: "请选择一款水果",
-				 //     type: "radio",
-				 //     value: "",
-				 //     content: { 1: "1.5公里线路(适合家庭及儿童)", 2: "3公里线路(适合初学者)", 3: "5公里线路(适合跑步爱好者)" },
-				 //     rule: "required"
-				 // },
-			    {
-			        id: 2,
-			        name: "name",
-			        group: "basic",
-			        title: "姓名",
-			        tip: "请填写姓名",
-			        type: "string",
-			        value: "张宁",
-			        rule: "required"
-			    },
-				{
-				    id: 3,
-				    name: "name",
-				    group: "basic",
-				    title: "年龄",
-				    tip: "请填写年龄",
-				    type: "string",
-				    value: "18",
-				    rule: "required"
-				},
-			 {
-			     id: 4,
-			     name: "name",
-			     group: "basic",
-			     title: "手机",
-			     tip: "请填写手机号",
-			     type: "string",
-			     value: "1866166265",
-			     rule: "required"
-			 },
-		 
-			],
+			radioName: '',
+			signupParams : [],
 			activityId: 1,
 			activityId: 1,
 			activityDesc: '',
 			activityDesc: '',
 			activityTitle: '',
 			activityTitle: '',
 			volhow:false,
 			volhow:false,
 			xyShow:false,
 			xyShow:false,
-			mobile: '',
-			mailbox: '',
 			// 家庭成员
 			// 家庭成员
 			cyList:[],
 			cyList:[],
 			ydxyShow:false,
 			ydxyShow:false,
 			// 默认选中第一个
 			// 默认选中第一个
-			scheduleValue: 1,
+			activity_schedule_id: 1,
 			scheduleList: [],
 			scheduleList: [],
 			params:{
 			params:{
-				scheduleValue: 1,
+				activity_schedule_id: 1,
 			}
 			}
 		};
 		};
 	},
 	},
@@ -176,7 +133,17 @@ export default {
 		that.activityTitle = option.title;
 		that.activityTitle = option.title;
 		that.getActivityScheduleList(that.activityId);
 		that.getActivityScheduleList(that.activityId);
 		that.getActivitySignupParams(that.activityId);
 		that.getActivitySignupParams(that.activityId);
-		this.loadPassengers();
+		that.params.activity_id = option.id;
+	}, 
+	onShow() {
+		// console.log(uni.getStorageSync('selectedMembers'), 'selectedMembers');
+		that.loadMembers();
+	},
+	computed: {
+		// 筛选出 type 为 radio 的数据
+		radioItems() {
+		  return this.signupParams.filter((item) => item.type === "radio");
+		},
 	},
 	},
 	methods: {
 	methods: {
 		//获取活动日程列表
 		//获取活动日程列表
@@ -208,55 +175,94 @@ export default {
 						return;
 						return;
 					} else {
 					} else {
 						that.signupParams = data.data;
 						that.signupParams = data.data;
-						console.log(that.signupParams);
+						//这边需要把每个参都存到params里面
+						that.signupParams.forEach((item) => {
+							that.params[item.name] = '';
+						});
+						console.log(that.params,'sparams');
+						// console.log(that.signupParams,'that.signupParams')
 					}
 					}
 				}
 				}
 			);
 			);
 		},
 		},
-		  // 从本地存储中获取乘客信息
-		loadPassengers() {
-		    const storedSelectedPassengers = uni.getStorageSync('selectedPassengers');
-		    if (storedSelectedPassengers) {
-				this.cyList = storedSelectedPassengers;
-		    } else {
-		        this.cyList = [];
-		    }
+		submitActivitySignupInfo() {
+			console.log(that.xyShow);
+			if (that.xyShow === false) {
+				that.$common.errorToShow('请阅读并同意协议');
+				return;
+			}
+			let params = that.params;
+			if (that.cyList.length === 0) {
+				that.$common.errorToShow('请选择报名成员');
+				return;
+			}
+			params.identities = that.cyList.map(item => item.id).join(",");
+			console.log(params, 'params');
+			this.$api.submitActivitySignupInfo(params,
+				data => {
+					if (data.code == 0) {
+						that.$common.errorToShow(data.msg);
+						return;
+					} else {
+						that.$common.successToShow(data.msg);
+						if (data.code == 1) {
+							setTimeout(
+								function(){
+								  uni.navigateBack({
+									delta: 1
+								  });
+							}, 1500);
+						}
+					}
+				}
+			);
 		},
 		},
-		getTitle(title) {
-				console.log(title, 'title');
+		volhowChange(volhow){
+			that.volhow = !volhow;
+			console.log(that.volhow);
 		},
 		},
 		radioChange(n) {
 		radioChange(n) {
-			console.log(n, 'n');
-			let title = '性别';
-			that.params[title] = n;
-			console.log(that.params);
+			const [field, value] = n.split("-");
+			let title = field;
+			that.params[title] = value;
+			// console.log(that.params,'that.params');
 		},
 		},
 		scheduleChange(n) {
 		scheduleChange(n) {
-			that.scheduleValue = n;
-			that.params.scheduleValue = n;
-			console.log(that.params);
-	        console.log('scheduleChange',that.scheduleValue);
-	      },
-		onInput(e) {
-			// 更新字符串值
-			console.log(e)
+			that.activity_schedule_id = n;
+			that.params.activity_schedule_id = n;
+			// console.log(that.params);
+	        // console.log('scheduleChange',that.activity_schedule_id);
+	    },
+		onInput(item) {
+			that.$set(that.params, item.name, item.value); // 使用Vue的$set方法保证响应式
+			// console.log('this.params:', this.params);
+		},
+		tjcyBtn(){
+			uni.navigateTo({
+				url: '/index_fenbao/XuanJiangYuan/ck_page'
+			});
+		},
+		  // 从本地存储中获取乘客信息
+		loadMembers() {
+		    const storedSelectedMembers = uni.getStorageSync('selectedMembers');
+			// console.log(storedSelectedMembers, 'storedSelectedMembers')
+		    if (storedSelectedMembers) {
+				that.cyList = storedSelectedMembers;
+		    } else {
+		        that.cyList = [];
+		    }
 		},
 		},
-  tjcyBtn(){
-	uni.navigateTo({
-		url: '/index_fenbao/XuanJiangYuan/ck_page'
-	});
-},
-  removePassenger(index) {
-       // 移除乘客并更新本地存储
-       this.cyList.splice(index, 1);
-       // 更新本地存储中的乘客信息
-       uni.setStorageSync('passengers', this.cyList);
-       // 提示删除成功
-       uni.showToast({
-         title: '删除成功',
-         icon: 'success'
-       });
-     }
+		removeMembers(index) {
+		   // 移除乘客并更新本地存储
+		   that.cyList.splice(index, 1);
+		   // 更新本地存储中的乘客信息
+		   uni.setStorageSync('selectedMembers', that.cyList);
+		   // 提示删除成功
+		   uni.showToast({
+			 title: '删除成功',
+			 icon: 'success'
+		   });
+		}
    
    
 	}
 	}
 };
 };

+ 77 - 49
index_fenbao/XuanJiangYuan/ck_page.vue

@@ -2,16 +2,16 @@
   <view class="box">
   <view class="box">
     <u-navbar title="添加成员" autoBack :placeholder="true" bgColor="#fee1b9"></u-navbar>
     <u-navbar title="添加成员" autoBack :placeholder="true" bgColor="#fee1b9"></u-navbar>
     <view class="ban">
     <view class="ban">
-		<!-- 添加乘客按钮 -->
+		<!-- 添加成员按钮 -->
 		<view @click="showPopup = true" class="tjbm_btn2">添加成员</view>
 		<view @click="showPopup = true" class="tjbm_btn2">添加成员</view>
-      <!-- 显示已有的乘客 -->
-      <u-checkbox-group placement v-model="selectedPassengerIds" @change="onCheckboxChange">
+      <!-- 显示已有的成员 -->
+      <u-checkbox-group placement v-model="selectedMembersIds" @change="onCheckboxChange">
         <view
         <view
           class="form-group"
           class="form-group"
-          v-for="(item, index) in passengers"
+          v-for="(item, index) in memberList"
           :key="index"
           :key="index"
           @click.stop="toggleCheckbox(index)"
           @click.stop="toggleCheckbox(index)"
-          :class="{ 'selected': selectedPassengerIds.includes(item.id) }"
+          :class="{ 'selected': selectedMembersIds.includes(item.id) }"
         >
         >
           <view style="display: flex; align-items: center;">
           <view style="display: flex; align-items: center;">
             <view class="select-label">
             <view class="select-label">
@@ -20,7 +20,7 @@
             <view style="margin-left: 10px;">
             <view style="margin-left: 10px;">
               <view>姓名:{{ item.name }}</view>
               <view>姓名:{{ item.name }}</view>
               <view>手机: {{ item.mobile }}</view>
               <view>手机: {{ item.mobile }}</view>
-              <view>年龄:{{ item.age }}</view>
+              <view>年龄:{{ item.id_card }}</view>
             </view>
             </view>
           </view>
           </view>
         </view>
         </view>
@@ -29,16 +29,16 @@
      
      
       <view @click="submit" class="tjbm_btn">确认</view>
       <view @click="submit" class="tjbm_btn">确认</view>
 
 
-      <!-- 弹出层用于添加乘客 -->
+      <!-- 弹出层用于添加成员 -->
       <u-popup bgColor="#f2c8a2" :show="showPopup" mode="center" customStyle="width:600rpx;padding: 30rpx;" round="20rpx" @close="resetForm">
       <u-popup bgColor="#f2c8a2" :show="showPopup" mode="center" customStyle="width:600rpx;padding: 30rpx;" round="20rpx" @close="resetForm">
         <view class="popup-content">
         <view class="popup-content">
           <text class="popup-title">添加成员信息</text>
           <text class="popup-title">添加成员信息</text>
 		
 		
-          <u--input placeholderStyle={color: #c0c4cc} border='surround' placeholder="请输入姓名" v-model="newPassenger.name"  />
-          <u--input placeholderStyle={color: #c0c4cc} placeholder="请输入手机号" v-model="newPassenger.mobile"  />
-          <u--input placeholderStyle={color: #c0c4cc} placeholder="请输入年龄" v-model="newPassenger.age"  />
+          <u--input placeholderStyle={color: #c0c4cc} border='surround' placeholder="请输入姓名" v-model="newMember.name"  />
+          <u--input placeholderStyle={color: #c0c4cc} placeholder="请输入手机号" v-model="newMember.mobile"  />
+          <u--input placeholderStyle={color: #c0c4cc} placeholder="请输入身份证号" v-model="newMember.id_card"  />
           <view class="popup-btns">
           <view class="popup-btns">
-            <view class="bt2" @click="addPassengerAndClose">确定</view>
+            <view class="bt2" @click="addMemberAndClose">确定</view>
             <view class="bt1" @click="showPopup = false">取消</view>
             <view class="bt1" @click="showPopup = false">取消</view>
         
         
           </view>
           </view>
@@ -49,51 +49,78 @@
 </template>
 </template>
 
 
 <script>
 <script>
+//全局定义
+let that;
 export default {
 export default {
   data() {
   data() {
     return {
     return {
-      passengers: [],
-      newPassenger: { name: '', mobile: '', age: '' },
+      memberList: [],
+      newMember: { name: '', mobile: '', id_card: '' },
       showPopup: false,
       showPopup: false,
-      selectedPassengerIds: [], // 存储选中的乘客ID
+      selectedMembersIds: [], // 存储选中的成员ID
     };
     };
   },
   },
   onLoad() {
   onLoad() {
-    this.loadPassengers();
-    this.loadSelectedPassengers();
+	//启动时赋值
+	that = this;
+    that.getMemberList();
+    that.loadSelectedMemberList();
   },
   },
   methods: {
   methods: {
-    loadPassengers() {
-      const storedPassengers = uni.getStorageSync('passengers');
-      if (storedPassengers) {
-        this.passengers = storedPassengers.map((passenger, index) => ({ ...passenger, id: index }));
-      } else {
-        this.passengers = [];
-      }
+    getMemberList() {
+		this.$api.getMemberList(
+			{
+			},
+			data => {
+				if (data.code == 0) {
+					that.$common.errorToShow(data.msg);
+					return;
+				} else {
+					that.memberList = data.data;
+					console.log(that.memberList);
+				}
+			}
+		);
     },
     },
-    loadSelectedPassengers() {
-      const storedSelectedPassengers = uni.getStorageSync('selectedPassengers') || [];
-      this.selectedPassengerIds = storedSelectedPassengers.map(passenger => passenger.id);
+    loadSelectedMemberList() {
+      const storedSelectedMembers = uni.getStorageSync('selectedMembers') || [];
+      that.selectedMembersIds = storedSelectedMembers.map(members => members.id);
     },
     },
-    addPassengerAndClose() {
-      if (this.newPassenger.name && this.newPassenger.mobile && this.newPassenger.age) {
-        this.passengers.push({ ...this.newPassenger, id: this.passengers.length });
-        this.showPopup = false;
-        this.resetForm();
-        this.updateLocalStorage();
-      } else {
-        uni.showToast({
-          title: '请填写完整的乘客信息',
-          icon: 'none'
-        });
-      }
+    addMemberAndClose() {
+		console.log(that.newMember, 'new');
+		if (that.newMember.name && that.newMember.id_card) {
+			//提交身份信息
+			this.$api.submitIdentityInfo(
+				{
+					name: that.newMember.name,
+					id_card: that.newMember.id_card,
+					mobile: that.newMember.mobile
+				},
+				data => {
+					if (data.code == 0) {
+						that.$common.errorToShow(data.msg);
+						return;
+					} else {
+						that.showPopup = false;
+						that.$common.successToShow(data.msg);
+						that.getMemberList();
+					}
+				}
+			);
+			that.resetForm();
+			that.updateLocalStorage();
+		} else {
+			uni.showToast({
+			  title: '请填写完整的成员信息',
+			  icon: 'none'
+			});
+		}
     },
     },
     updateLocalStorage() {
     updateLocalStorage() {
-      // 更新本地存储的所有乘客信息
-      uni.setStorageSync('passengers', this.passengers);
-      // 更新本地存储的已选乘客信息
-      const selectedPassengers = this.passengers.filter(passenger => this.selectedPassengerIds.includes(passenger.id));
-      uni.setStorageSync('selectedPassengers', selectedPassengers);
+      // 更新本地存储的已选成员信息
+      const selectedMembers = that.memberList.filter(member => this.selectedMembersIds.includes(member.id));
+	  console.log(selectedMembers, 'selectedMembers')
+      uni.setStorageSync('selectedMembers', selectedMembers);
     },
     },
     submit() {
     submit() {
       this.updateLocalStorage();
       this.updateLocalStorage();
@@ -102,19 +129,20 @@ export default {
       });
       });
     },
     },
     resetForm() {
     resetForm() {
-      this.newPassenger = { name: '', mobile: '', age: '' };
+      this.newMember = { name: '', mobile: '', id_card: '' };
     },
     },
     onCheckboxChange(e) {
     onCheckboxChange(e) {
-      console.log('复选框变化:', e.detail);
+      console.log('复选框变化:', e);
     },
     },
     toggleCheckbox(index) {
     toggleCheckbox(index) {
-      const passengerId = this.passengers[index].id;
-      const isSelected = this.selectedPassengerIds.includes(passengerId);
+      const memberId = this.memberList[index].id;
+      const isSelected = this.selectedMembersIds.includes(memberId);
 
 
+		//如果在选择的成员里面则过滤掉,不再则push进去
       if (isSelected) {
       if (isSelected) {
-        this.selectedPassengerIds = this.selectedPassengerIds.filter(id => id !== passengerId);
+        this.selectedMembersIds = this.selectedMembersIds.filter(id => id !== memberId);
       } else {
       } else {
-        this.selectedPassengerIds.push(passengerId);
+        this.selectedMembersIds.push(memberId);
       }
       }
 
 
       // 立即更新本地存储以反映选择变化
       // 立即更新本地存储以反映选择变化

+ 55 - 9
index_fenbao/XuanJiangYuan/index.vue

@@ -35,25 +35,25 @@
 				<view class="gd">更多</view>
 				<view class="gd">更多</view>
 			</view>
 			</view>
 			<view class="list_box">
 			<view class="list_box">
-				<view @click="xqBtn" class="list_item" v-for="item in 4" :key="item">
+				<view @click="$common.navigateTo('/index_fenbao/XuanJiangYuan/xjy_XiangQing?id=' + item.id)" class="list_item" v-for="item in xuangjiangyuanList" :key="item">
 					<img
 					<img
 						style="width: 100%; height: 200rpx; border-radius: 10rpx"
 						style="width: 100%; height: 200rpx; border-radius: 10rpx"
-						src="https://img2.baidu.com/it/u=443975182,626431415&fm=253&fmt=auto&app=120&f=JPEG?w=627&h=418"
+						:src="item.image"
 					/>
 					/>
-					<view class="item_name">徐有群</view>
+					<view class="item_name">{{ item.name }}</view>
 				</view>
 				</view>
 			</view>
 			</view>
 			<!-- 优秀讲员 -->
 			<!-- 优秀讲员 -->
-			<view class="xjy">
+			<view class="xjy" @click="activityReviewBtn">
 				<view class="ld">精彩回顾</view>
 				<view class="ld">精彩回顾</view>
 				<view class="gd">更多</view>
 				<view class="gd">更多</view>
 			</view>
 			</view>
 			<scroll-view scroll-x enable-flex class="scroll-view_H" type="list">
 			<scroll-view scroll-x enable-flex class="scroll-view_H" type="list">
-				<view class="goods-item" v-for="item in 6" :key="item">
-					<image class="img" style="" src="http://t13.baidu.com/it/u=2921758692,2069247658&fm=224&app=112&f=JPEG?w=500&h=500" />
+				<view @click="$common.navigateTo('/index_fenbao/XuanJiangYuan/activity-review-details?id=' + item.id)" class="goods-item" v-for="item in activityReviewList" :key="item">
+					<image class="img" style="" :src="item.image" />
 					<view style="margin-left: 20rpx">
 					<view style="margin-left: 20rpx">
-						<view>故事</view>
-						<view class="gs_js">精彩瞬间</view>
+						<view>{{item.title}}</view>
+						<view class="gs_js">{{item.desc}}</view>
 					</view>
 					</view>
 				</view>
 				</view>
 			</scroll-view> 
 			</scroll-view> 
@@ -83,11 +83,15 @@ export default {
 	onShow(option) {
 	onShow(option) {
 		that.getActivityList();
 		that.getActivityList();
 		that.themeDetails();
 		that.themeDetails();
+		that.getActivityReviewList();
+		that.getXuanjiangList();
 	},
 	},
 	data() {
 	data() {
 		return {
 		return {
 			bannerlist: [],
 			bannerlist: [],
-			activityList: []
+			activityList: [],
+			activityReviewList: [],
+			xuangjiangyuanList: []
 		};
 		};
 	},
 	},
 	/* 页面触底 */
 	/* 页面触底 */
@@ -127,6 +131,43 @@ export default {
 				}
 				}
 			);
 			);
 		},
 		},
+		// 活动精彩
+		getActivityReviewList() {
+			this.$api.getContentList(
+				{ 
+					page: 1, 
+					pageSize: 4, 
+					model_id: 15, 
+					main_body_column_id: 186 ,
+				}, 
+				data => {
+					if (data.code == 0) {
+						that.$common.errorToShow(data.msg);
+						return;
+					} else {
+						that.activityReviewList = data.data;
+						console.log(that.activityReviewList, '文物跑活动宣传');
+					}
+				}
+			);
+		},
+		getXuanjiangList() {
+			this.$api.getXuanjiangList(
+				{ 
+					page: 1, 
+					pageSize: 4
+				}, 
+				data => {
+					if (data.code == 0) {
+						that.$common.errorToShow(data.msg);
+						return;
+					} else {
+						that.xuangjiangyuanList = data.data;
+						console.log(that.xuangjiangyuanList, '文物跑活动宣讲员');
+					}
+				}
+			);
+		},
 		// 详情
 		// 详情
 		goSignup() {
 		goSignup() {
 			uni.navigateTo({
 			uni.navigateTo({
@@ -139,6 +180,11 @@ export default {
 				url: '/index_fenbao/XuanJiangYuan/XuanJiangYuan'
 				url: '/index_fenbao/XuanJiangYuan/XuanJiangYuan'
 			});
 			});
 		},
 		},
+		activityReviewBtn() {
+			uni.navigateTo({
+				url: '/index_fenbao/XuanJiangYuan/activity-review-list'
+			});
+		},
 
 
 		xqBtn() {
 		xqBtn() {
 			uni.navigateTo({
 			uni.navigateTo({

+ 57 - 8
index_fenbao/XuanJiangYuan/xjy_XiangQing.vue

@@ -5,12 +5,12 @@
 			<view class="top_box">
 			<view class="top_box">
 				<img src="https://img2.baidu.com/it/u=443975182,626431415&fm=253&fmt=auto&app=120&f=JPEG?w=627&h=418" class="img" />
 				<img src="https://img2.baidu.com/it/u=443975182,626431415&fm=253&fmt=auto&app=120&f=JPEG?w=627&h=418" class="img" />
 				<view class="name_box">
 				<view class="name_box">
-					<view class="">徐有群</view>
-					<view class="name_js">,来自福建厦门,擅长中国历史文物讲解</view>
+					<view class="">{{details.name}}</view>
+					<view class="name_js">{{details.sex_text}},来自福建厦门,擅长中国历史文物讲解</view>
 				</view>
 				</view>
 			</view>
 			</view>
 			<view class="xxjs">
 			<view class="xxjs">
-				徐有群,男,来自福建厦门,擅长中国古代历史文物的讲解。他在多次大型展览中担任讲解员,深受观众喜爱。李明不仅对文物有深入的研究,还能生动地讲述文物背后的故事使观众在轻松愉快的氛围中了解历史。
+				{{details.intro}}
 			</view>
 			</view>
 			<view class="" style="display: flex">
 			<view class="" style="display: flex">
 				<img class="left_img" src="https://img2.baidu.com/it/u=443975182,626431415&fm=253&fmt=auto&app=120&f=JPEG?w=627&h=418" style="" />
 				<img class="left_img" src="https://img2.baidu.com/it/u=443975182,626431415&fm=253&fmt=auto&app=120&f=JPEG?w=627&h=418" style="" />
@@ -28,10 +28,10 @@
 			<!--  -->
 			<!--  -->
 			<view class="ld">历史讲解</view>
 			<view class="ld">历史讲解</view>
 			<scroll-view scroll-x enable-flex class="scroll-view_H" type="list">
 			<scroll-view scroll-x enable-flex class="scroll-view_H" type="list">
-				<view class="goods-item" v-for="item in 6" :key="item">
-					<image class="img" style="" src="http://t13.baidu.com/it/u=2921758692,2069247658&fm=224&app=112&f=JPEG?w=500&h=500" />
+				<view class="goods-item" v-for="item in xuanjiangActivityList" :key="item">
+					<image class="img" style="" :src="item.image" />
 					<view style="margin-left: 20rpx">
 					<view style="margin-left: 20rpx">
-						<view>故事</view>
+						<view>{{item.title}}</view>
 						<view class="gs_js">精彩瞬间</view>
 						<view class="gs_js">精彩瞬间</view>
 					</view>
 					</view>
 				</view>
 				</view>
@@ -61,11 +61,60 @@
 </template>
 </template>
 
 
 <script>
 <script>
+let that;
 export default {
 export default {
 	data() {
 	data() {
-		return {};
+		return {
+			xuanjiangActivityList: [],
+			details: [],
+			volunteer_id: ''
+		};
 	},
 	},
-	methods: {}
+	onLoad(option) {
+		that = this;
+		that.volunteer_id = option.id;
+		that.getXuanjiangDetails();
+		that.getActivityReviewList();
+	},
+	methods: {
+		getXuanjiangDetails() {
+			this.$api.getXuanjiangDetails(
+				{ 
+					volunteer_id: that.volunteer_id
+				}, 
+				data => {
+					if (data.code == 0) {
+						that.$common.errorToShow(data.msg);
+						return;
+					} else {
+						that.details = data.data;
+						console.log(that.details, '文物跑活动宣讲员详情');
+					}
+				}
+			);
+		},
+		// 活动精彩
+		getActivityReviewList() {
+			this.$api.getContentList(
+				{ 
+					page: 1, 
+					pageSize: 4, 
+					model_id: 15, 
+					main_body_column_id: 186 ,
+					volunteer_id: that.volunteer_id
+				}, 
+				data => {
+					if (data.code == 0) {
+						that.$common.errorToShow(data.msg);
+						return;
+					} else {
+						that.xuanjiangActivityList = data.data;
+						console.log(that.xuanjiangActivityList, '宣讲员参与的活动');
+					}
+				}
+			);
+		},
+	}
 };
 };
 </script>
 </script>
 
 

+ 2 - 0
index_fenbao/XuanJiangYuan/xq_page.vue

@@ -85,6 +85,8 @@ export default {
 		that = this;
 		that = this;
 		console.log(option);
 		console.log(option);
 		that.getActivityDetails(option.id);
 		that.getActivityDetails(option.id);
+		//清掉选择的成员缓存,报名页不清,这边清,避免从选择页进报名页时为空,也避免从本页进去时有参数
+		uni.removeStorageSync('selectedMembers');
 	},
 	},
 	methods: {
 	methods: {
 		getActivityDetails(id) {
 		getActivityDetails(id) {

+ 16 - 0
pages.json

@@ -172,6 +172,22 @@
 				{
 				{
 					"navigationBarTitleText" : ""
 					"navigationBarTitleText" : ""
 				}
 				}
+			},
+			{
+				"path" : "activity-review-list",
+				"style" : 
+				{
+					"navigationBarTitleText" : "",
+					"enablePullDownRefresh" : false
+				}
+			},
+			{
+				"path" : "activity-review-details",
+				"style" : 
+				{
+					"navigationBarTitleText" : "",
+					"enablePullDownRefresh" : false
+				}
 			}
 			}
 				
 				
 			]
 			]