lhl hace 3 años
padre
commit
c88cf5bc88

+ 17 - 0
api/help.js

@@ -7,4 +7,21 @@ export function getMyHelpApplyList(data) {
 		method: 'get',
 		data
 	})
+}
+
+// 获取帮扶列表
+export function getHelpList(data) {
+	return request({
+		url: '/api/help/index',
+		method: 'get',
+		data
+	})
+}
+
+export function getHelpIfy(data) {
+	return request({
+		url: '/api/help/ify',
+		method: 'get',
+		data
+	})
 }

+ 1 - 1
api/index.js

@@ -32,7 +32,7 @@ export function itemList(data) {
 //上传图片
 export function upload(data) {
 	return upFilse({
-		url: '/api/upload/image',
+		url: '/api/upload',
 		method: 'post',
 		data
 	});

+ 63 - 0
pages.json

@@ -910,6 +910,63 @@
 				"navigationBarTitleText": "申请帮扶",
 				"navigationStyle": "custom"
 			}
+		},
+		{
+			"path": "pages/fu/getPoints",
+			"style": {
+				"navigationBarTitleText": "如何获取积分",
+				"navigationBarBackgroundColor": "#FF727E",
+				"navigationBarTextStyle": "white"
+			}
+		},
+		{
+			"path": "pages/fu/helpInfo",
+			"style": {
+				"navigationBarTitleText": "帮扶公示",
+				"navigationBarBackgroundColor": "#FF727E",
+				"navigationBarTextStyle": "white"
+			}
+		},
+		{
+			"path": "pages/fu/helpDetail",		// 公示
+			"style": {
+				"navigationBarTitleText": "帮扶详情",
+				"navigationBarBackgroundColor": "#FF727E",
+				"navigationBarTextStyle": "white"
+			}
+		},
+		{
+			"path": "pages/fu/fuInfo",
+			"style": {
+				"navigationBarTitleText": "帮扶详情",
+				"navigationBarBackgroundColor": "#FF727E",
+				"navigationBarTextStyle":"white"
+			}
+		},
+		{
+			"path": "pages/fu/axjz",
+			"style": {
+				"navigationBarTitleText": "爱心帮扶",
+				"navigationBarBackgroundColor": "#FF727E",
+				"navigationBarTextStyle":"white",
+				"app-plus": {
+					"titleNView": {
+						"buttons": [ {
+							"color": "#FFFFFF",
+							"fontSize": "16px",
+							"colorPressed": "#fc5c82",
+							"float": "right",
+							"text": "筛选 "
+						}]
+					}
+				}
+			}
+		},
+		{
+			"path": "pages/fu/upLoadInfo",
+			"style": {
+				"navigationBarTitleText": "上传资料"
+			}
 		}
 		
 	],
@@ -931,6 +988,12 @@
 				"selectedIconPath": "static/tabBar/home-action.png",
 				"text": "首页"
 				// "visible":false
+			},
+			{
+				"pagePath": "pages/fu/axjz",
+				"iconPath": "static/tabBar/tab-fu.png",
+				"selectedIconPath": "static/tabBar/tab-fu-current.png",
+				"text": "爱心帮扶"
 			},
 			{
 				"pagePath": "pages/category/category",

+ 124 - 102
pages/applyHelp/index.vue

@@ -6,14 +6,14 @@
 		<view class="content_box">
 			<view class="row b-b">
 				<text class="tit">姓名</text>
-				<input class="input" type="text" :disabled="disabled" v-model="name" placeholder="请填写您的姓名"
+				<input class="input" type="text" :disabled="disabled" v-model="full_name" placeholder="请填写您的姓名"
 					placeholder-class="placeholder" />
 			</view>
-			<view class="row b-b">
+			<!-- <view class="row b-b">
 				<text class="tit">年龄</text>
 				<input class="input" type="text" :disabled="disabled" v-model="age" placeholder="请填写您的年龄"
 					placeholder-class="placeholder" />
-			</view>
+			</view> -->
 			<view class="row b-b">
 				<text class="tit">性别</text>
 				<input class="input" type="text" :disabled="disabled" v-model="sex" placeholder="请填写您的性别"
@@ -47,21 +47,21 @@
 			</view>
 			<view class="row b-b">
 				<text class="tit">身份证号</text>
-				<input class="input" type="number" :disabled="disabled" v-model="card" placeholder="请填写身份证号"
+				<input class="input" type="number" :disabled="disabled" v-model="id_card" placeholder="请填写身份证号"
 					placeholder-class="placeholder" />
 			</view>
-			<view class="row b-b" v-if="status =='' ">
+			<!-- <view class="row b-b" v-if="status =='' ">
 				<text class="tit">省市区</text>
 				<pickerAddress class="input" @change="onCityClick">{{address||'请选择省市区'}}</pickerAddress>
-			</view>
-			<view class="row b-b" v-if="status ==2 ">
+			</view> -->
+			<!-- <view class="row b-b" v-if="status ==2 ">
 				<text class="tit">省市区</text>
 				<input class="input" :disabled="disabled" v-model="address" placeholder="省市区"
 					placeholder-class="placeholder" />
-			</view>
+			</view> -->
 			<view class="row b-b">
-				<text class="tit">详细地址</text>
-				<input class="input" v-model="addr" :disabled="disabled" placeholder="请填写详细地址"
+				<text class="tit">家庭住址</text>
+				<input class="input" v-model="address" :disabled="disabled" placeholder="请填写详细地址"
 					placeholder-class="placeholder" />
 			</view>
 			<view class="row b-b">
@@ -150,33 +150,33 @@
 			<view class="content_box" style="padding-left: 40rpx;margin-bottom: 10rpx;">
 				<view class="row b-b">
 					<text class="tit">姓名</text>
-					<input class="input" type="text" v-model="ls.name" :disabled="disabled" placeholder="请填写您的姓名"
+					<input class="input" type="text" v-model="ls.full_name" :disabled="disabled" placeholder="请填写成员姓名"
 						placeholder-class="placeholder" />
 				</view>
 				<view class="row b-b">
 					<text class="tit">与本人关系</text>
-					<input class="input" type="text" v-model="ls.relationship" :disabled="disabled"
-						placeholder="请填写与本人关系" placeholder-class="placeholder" />
+					<input class="input" type="text" v-model="ls.relation" :disabled="disabled" placeholder="请填写与本人关系"
+						placeholder-class="placeholder" />
 				</view>
 				<view class="row b-b">
 					<text class="tit">身份证号</text>
-					<input class="input" type="text" v-model="ls.card" :disabled="disabled" placeholder="请填写身份证号"
+					<input class="input" type="text" v-model="ls.id_card" :disabled="disabled" placeholder="请填写身份证号"
 						placeholder-class="placeholder" />
 				</view>
 				<view class="row b-b">
 					<text class="tit">工作单位或就读学校</text>
-					<input class="input" type="text" v-model="ls.school" :disabled="disabled" placeholder="请填写工作单位或就读学校"
-						placeholder-class="placeholder" />
+					<input class="input" type="text" v-model="ls.work_unit" :disabled="disabled"
+						placeholder="请填写工作单位或就读学校" placeholder-class="placeholder" />
 				</view>
 				<view class="row b-b">
 					<text class="tit">健康状况</text>
-					<input class="input" type="text" v-model="ls.health" :disabled="disabled" placeholder="请填写健康状况"
+					<input class="input" type="text" v-model="ls.healthy" :disabled="disabled" placeholder="请填写健康状况"
 						placeholder-class="placeholder" />
 				</view>
 				<view class="row b-b">
 					<text class="tit">月收入(元)</text>
-					<input class="input" type="number" v-model="ls.money" :disabled="disabled" placeholder="请填写月收入(元)"
-						placeholder-class="placeholder" />
+					<input class="input" type="number" v-model="ls.monthly_income" :disabled="disabled"
+						placeholder="请填写月收入(元)" placeholder-class="placeholder" />
 				</view>
 			</view>
 		</view>
@@ -235,7 +235,9 @@
 				<view class="examine_name">帮扶情况描述</view>
 				<view class="textarea-box">
 					<textarea class="textarea" :disabled="disabled" v-model="content" maxlength="-1"
-						placeholder-style="color:#999999" placeholder="注:1.为了更加详细了解您的困难情况,请您陈述材料完整详细不少于500字。2.请您附上相关证明材料,如医疗材料:入院病案首页、出入院记录、检查报告、医疗票据选取三种以上,其他证明材料。" @blur="bindTextAreaBlur1" auto-height />
+						placeholder-style="color:#999999"
+						placeholder="注:1.为了更加详细了解您的困难情况,请您陈述材料完整详细不少于500字。2.请您附上相关证明材料,如医疗材料:入院病案首页、出入院记录、检查报告、医疗票据选取三种以上,其他证明材料。"
+						@blur="bindTextAreaBlur1" auto-height />
 				</view>
 			</view>
 		</view>
@@ -243,10 +245,9 @@
 			<view class="examine_list">
 				<view class="examine_name">上传凭证<text>(请您上传相关证明材料)</text></view>
 				<view class="examine_img">
-					<!-- <img-upload :imgArr="imgList" imgCount="6" ref="imgUpload"></img-upload> -->
 					<view class="add-img-box flex_item" v-if="status == ''">
 						<view class="add-img-item" v-for="(item, index) in imgList" :key="index">
-							<image class="add-img" @click.stop="imgInfo(index)" :src="item.url" mode="aspectFill">
+							<image class="add-img" @click.stop="imgInfo(index)" :src="item.fullurl" mode="aspectFill">
 							</image>
 							<image class="add-img-del" @click.stop="delImg(index)" src="/static/img/delete.png"></image>
 						</view>
@@ -256,7 +257,7 @@
 					</view>
 					<view class="add-img-box flex_item" v-if="status == 2">
 						<view class="add-img-item" v-for="(item, index) in imgList" :key="index">
-							<image class="add-img" @click.stop="imgInfo(index)" :src="item.url" mode="aspectFill">
+							<image class="add-img" @click.stop="imgInfo(index)" :src="item.fullurl" mode="aspectFill">
 							</image>
 						</view>
 					</view>
@@ -293,15 +294,16 @@
 			return {
 				ready: true,
 				id: '',
-				name: '', //姓名
+				full_name: '', //姓名
 				age: '', //年龄
 				sex: '', //性别
-				card: '', //身份证号
+				id_card: '', //身份证号
 				phone: '', //电话
-				address: '', //
+				address: '', //家庭住址
 				addr: '',
 				work: '', //工作单位
 				checkedList: ['团员', '预备党员', '党员', '群众'], //政治面貌列表
+				politics: '', //政治面貌
 				checkedtList: ['国有企业', '私营企业', '外资企业', '事业单位', '个位经营', '无'], //单位性质列表
 				identityList: ['居民', '村民', '农民工', '在岗', '下岗', '离退休', '病退病休'], //身份列表
 				maritalList: ['已婚', '未婚', '离异', '丧偶'], //婚姻状况列表
@@ -333,15 +335,15 @@
 					name: '其它',
 				}],
 				datalist: [{
-					// id:1,
-					name: "",
-					relationship: '',
-					card: '',
-					school: '',
-					health: '',
-					money: "",
+					full_name: "", //姓名
+					relation: '', //关系
+					id_card: '', //身份证
+					work_unit: '', //单位
+					healthy: '', //健康状态
+					monthly_income: "", //月收入
 				}], //家庭成员情况列表
 				maleLike: '', // 制困原因
+				maleLikeListt: [],
 				characteristics: '', //对象特征
 				insurance: '', //是否医保
 				marital: '', //婚姻状况
@@ -355,18 +357,18 @@
 				type: 'date',
 				status: '', //审核通过
 				disabled: false,
-				yue:'',
-				nian:'',
-				all:'',
-				cid:'',
-				hpleType:'',
-				explain:'',
-				content:'',//孝善情况
+				yue: '',
+				nian: '',
+				all: '',
+				cid: '',
+				hpleType: '',
+				explain: '',
+				content: '', //孝善情况
 				imgList: [],
 				cloudimgList: [],
-				imgCount:9,//最多支持6张上传,可以修改
-				id:'',
-				list:[],//筹款类型
+				imgCount: 9, //最多支持6张上传,可以修改
+				id: '',
+				list: [], //筹款类型
 			};
 		},
 		onLoad(option) {
@@ -420,11 +422,12 @@
 				console.log(e)
 				if (len <= 3) {
 					obj.maleLike = e.detail.value.join(',');
+					this.maleLikeListt = e.detail.value
 				} else {
 					obj.$api.msg('最多选择三个')
-					let arr2 = e.detail.value.slice(0, 3)
-					console.log(arr2, 'arr2')
-					obj.maleLike = arr2.join(',');
+					// let arr2 = e.detail.value.slice(0, 3)
+					// console.log(arr2, 'arr2')
+					obj.maleLike = this.maleLikeListt.join(',');
 				}
 				for (let i = 0; i < obj.maleLikeList.length; i++) {
 					if (obj.maleLike.indexOf(obj.maleLikeList[i].name) != -1) {
@@ -433,6 +436,7 @@
 						obj.maleLikeList[i].cheched = false;
 					}
 				}
+				console.log(obj.maleLike, 'obj.maleLike++++++++')
 				obj.reload()
 			},
 			// 表单刷新
@@ -446,23 +450,45 @@
 			addlist(index) {
 				let obj = this
 				let addobj = {
-					name: "",
-					relationship: '',
-					card: '',
-					school: '',
-					health: '',
-					money: "",
+					full_name: "", //姓名
+					relation: '', //关系
+					id_card: '', //身份证
+					work_unit: '', //单位
+					healthy: '', //健康状态
+					monthly_income: "", //月收入
 				}
 				obj.datalist.push(addobj)
 			},
+			// 删除成员
 			dellist(index) {
 				this.datalist.splice(index, 1)
 			},
-			radioChange(evt) {
-				this.checked = evt.detail.value;
+			//多张上传图片
+			scImg() {
+				let obj = this;
+				upload({
+					file: ''
+				})
+					.then(e => {
+						obj.imgList = [...obj.imgList, ...e];
+						console.log(obj.imgList,'imgList')
+						obj.imgCount = 6 - obj.imgList.length;
+					})
+					.catch(e => {});
 			},
-			radioChange1(evt) {
-				this.checked1 = evt.detail.value;
+			//点击图片显示大图
+			imgInfo(i) {
+				let tempList = [];
+				this.imgList.forEach(e => {
+					tempList.push(e.url);
+				});
+				//显示图片
+				uni.previewImage({
+					current: i,
+					loop: false,
+					urls: tempList,
+					indicator: 'default'
+				});
 			},
 			// 显示日期选择器
 			selectDatePicker(type, index) {
@@ -549,14 +575,14 @@
 			confirm() {
 
 				let obj = this;
-				if (obj.name == '') {
+				if (obj.full_name == '') {
 					this.$api.msg('请填写您的姓名!');
 					return;
 				}
-				if (obj.age == '') {
-					this.$api.msg('请填写您的年龄!');
-					return;
-				}
+				// if (obj.age == '') {
+				// 	this.$api.msg('请填写您的年龄!');
+				// 	return;
+				// }
 				if (obj.sex == '') {
 					this.$api.msg('请填写您的性别!');
 					return;
@@ -593,48 +619,32 @@
 					this.$api.msg('请填写您的单位性质!');
 					return;
 				}
-				let data = {};
-				if (obj.id) {
-					data = {
-						id: obj.id,
-						name: obj.name,
-						age: obj.age,
-						sex: obj.sex,
-						card: obj.card,
-						phone: obj.phone,
-						address: obj.address + ',' + obj.addr,
-						work: obj.work,
-						politic: obj.checked, //政治面貌
-						birthday: obj.birthday,
-						properties: obj.checked1 //单位性质
-					}
-				} else {
-					data = {
-						name: obj.name,
-						age: obj.age,
-						sex: obj.sex,
-						card: obj.card,
-						phone: obj.phone,
-						address: obj.address + ',' + obj.addr,
-						work: obj.work,
-						politic: obj.checked, //政治面貌
-						birthday: obj.birthday,
-						properties: obj.checked1 //单位性质
-					}
+
+				let data = {
+					// category_id: , 
+					// full_name: ,
+					// contact: ,
+					// id_card: ,
+					// title: ,
+					// info: ,
+					// userimage: ,
+					// userimages: ,
+					// sex: , 
+					// politics: , 
+					// birthday: ,
+					// address: ,
+					// company: ,
+					// unit_nature: ,
+					// monthly_income: ,
+					// annual_household_income: ,
+					// annual_household_income_average: ,
+					// identity: ,
+					// marriage: , 
+					// medical_insurance: , 
+					// object_features: , 
+					// reason: , 
+					// family: ,
 				}
-				add_help(data).then(function(e) {
-						obj.$api.msg(e.msg);
-						let id = e.data.id;
-						console.log(id)
-						setTimeout(function() {
-							uni.navigateTo({
-								url: '/pages/applyHelp/second?id=' + id
-							})
-						}, 1000);
-					})
-					.catch(e => {
-						obj.$api.msg(e.message);
-					});
 			},
 			navTo(url) {
 				uni.navigateTo({
@@ -896,4 +906,16 @@
 			color: #E62129 !important;
 		}
 	}
+
+	.add-img-item {
+		margin-bottom: 25rpx;
+		width: 33.33%;
+		position: relative;
+
+		.add-img {
+			padding: 0rpx 10rpx;
+			width: 100%;
+			height: 214rpx;
+		}
+	}
 </style>

+ 399 - 0
pages/fu/axjz.vue

@@ -0,0 +1,399 @@
+<template>
+	<view class="container">
+		<scroll-view class="scroll-list" scroll-x>
+			<view class="scoll-box" v-for="(ls,index) in cationList" :key="index" :class="{ active: ls.id === currentId }" @click="tabtap(ls.id)">
+				<view class="scoll-name">{{ ls.name }}</view>
+			</view>
+		</scroll-view>
+		<swiper v-if="tabCurrentIndex == 0" class="swiper-box" duration="300" @change="changeTab">
+			<swiper-item class="tab-content">
+				<scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadData">
+					<!-- 空白页 -->
+					<empty v-if="list.length === 0"></empty>
+					<!-- 订单列表 -->
+					<view >
+						<view class="fu-box" v-for='(item, index) in list' :key="index" @click="toDetail(item)">
+							<view class="img-box">
+								<image class="fu-img" :src="item.image" mode="aspectFill"></image>
+								<text class="fu-cname">{{ item.cname }}</text>
+							</view>
+							<view class="fu-right">
+								<view>
+									<view class="fu-tit">{{ item.title }}</view>
+									<view class="fu-text">{{ item.info }}</view>
+								</view>
+								<view class="fu-bottom" v-if="item.is_show == 1">
+									<view class="fu-shenqing">已有{{ item.sales }}人申请</view>
+									<text class="fu-jifen">+{{ item.integral }}积分</text>
+								</view>
+								<view class="fu-bottom" v-if="item.is_show == 0">
+									<text class="fu-shenqing">资金:{{ item.money }}</text>
+									<view class="fu-shenqing">帮扶人:{{ item.name }}</view>
+								</view>
+							</view>
+						</view>
+					</view>
+					<uni-load-more :status="loadingType"></uni-load-more>
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+		
+		<u-popup v-model="show" mode="right">
+			<view class="popup-box">
+				<view class="pop-bfu">
+					<view class="bfu-btn" :class="{'checkBtn': type == 2 }" @click="shaixuan(2)">
+						未帮扶
+						<image class="btn-img" v-if="type == 2" src="../../static/images/icon_pick.png"></image>
+					</view>
+					<view class="bfu-btn" :class="{'checkBtn': type == 1 }" @click="shaixuan(1)">
+						帮扶中
+						<image class="btn-img" v-if="type == 1" src="../../static/images/icon_pick.png"></image>
+					</view>
+					<view class="bfu-btn" :class="{'checkBtn': type == 3 }" @click="shaixuan(3)">
+						公示中
+						<image class="btn-img" v-if="type == 3" src="../../static/images/icon_pick.png"></image>
+					</view>
+				</view>
+				<view class="pop-bfu">
+					
+					<view class="bfu-btn" :class="{'checkBtn': type == 4 }" @click="shaixuan(4)">
+						已完结
+						<image class="btn-img" v-if="type == 4" src="../../static/images/icon_pick.png"></image>
+					</view>
+				</view>
+				<view class="qr-btn">
+					<text class="btn-qr" @click="comfim">确认</text>
+				</view>
+			</view>
+		</u-popup>
+		
+	</view>
+</template>
+
+<script>
+	import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+	import empty from '@/components/empty';
+	
+	import { getHelpList, getHelpIfy } from '@/api/help.js'
+	import { one_help,  } from '@/api/index.js';
+	import { getUserInfo } from '@/api/login.js';
+	import { getList } from '@/api/applyHelp.js';
+	export default {
+		components: {
+			uniLoadMore,
+			empty,
+		},
+		data() {
+			return {
+				tabCurrentIndex:0,
+				page: 1, //当前页数
+				limit: 10,//每次信息条数
+				loadingType: 'more',
+				list: [],
+				userInfo:'',
+				keyword:'',
+				money:'',//捐款金额
+				integral:'',//捐款积分
+				cationList: [],	// 分类列表
+				currentId:0,
+				show: false,	// 弹窗开关
+				type: 2,	// 筛选条件 1-帮扶中  2-未帮扶  3-公示中  4-已完成
+			};
+		},
+		onLoad() {
+			this.getHelpIfy();
+		},
+		onShow() {
+			this.page = 1;
+			this.loadingType = 'more';
+			this.list = [];
+			// this.loadData();
+		},
+		// 搜索按钮点击
+		onNavigationBarButtonTap() {
+			this.show = true;
+		},
+		watch:{
+			// keyword(n, o){
+			// 	this.keyword = n;
+			// 	this.loadData();
+			// },
+		},
+		methods: {
+			// 获取帮扶分类
+			getHelpIfy() {
+				getHelpIfy().then( ({data}) => {
+					this.cationList = data
+				})
+			},
+			// GetCation(){
+			// 	let obj = this;
+			// 	getList({})
+			// 		.then(({ data }) => {
+			// 			let res =[{
+			// 				cate_name:'全部',
+			// 				id:0
+			// 			}]
+			// 			res.unshift(0,0); 
+			// 			Array.prototype.splice.apply(data,res); 
+			// 			obj.cationList =  data;
+			// 		})
+			// 		.catch(err => {
+			// 			console.log(err);
+			// 		});
+			// },
+			//获取订单列表
+			loadData() {
+				let obj = this;
+				if (obj.loadingType === 'noMore') {
+					//防止重复加载
+					return;
+				}
+				// 修改当前对象状态为加载中
+				obj.loadingType = 'loading';
+				getHelpList({
+					page:obj.page,
+					limit:obj.limit,
+					cid:obj.currentId,
+					type: obj.type
+				})
+					.then(data => {
+						obj.list = obj.list.concat(data.data);
+						obj.page++;
+						if (obj.limit == data.data.length) {
+							//判断是否还有数据, 有改为 more, 没有改为noMore
+							obj.loadingType = 'more';
+							return;
+						} else {
+							//判断是否还有数据, 有改为 more, 没有改为noMore
+							obj.loadingType = 'noMore';
+						}
+					})
+			},
+			//一级分类点击
+			tabtap(item) {
+				let obj = this;
+				obj.currentId = item;
+				obj.page = 1;
+				obj.loadingType = 'more';
+				obj.list = [];
+				obj.loadData()
+			},
+			toDetail(item) {
+				if ( item.is_show == 1 ) {
+					uni.navigateTo({
+						url: '/pages/fu/fuInfo?id=' + item.id
+					})
+				} else {
+					uni.navigateTo({
+						url: '/pages/fu/helpDetail?id=' + item.id
+					})
+				}
+				
+			},
+			// 筛选 1-帮扶中   2-未帮扶
+			shaixuan(i) {
+					this.type = i;
+			},
+			comfim() {
+				this.show = false;
+				this.page = 1;
+				this.loadingType = 'more';
+				this.list = [];
+				this.loadData()
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		height: 100%;
+		.container{
+			height: 100%;
+		}
+	}
+	.swiper-box {
+		height: calc(100% - 40px);
+		padding: 20rpx 30rpx 0 30rpx;
+		.list-scroll-content {
+			height: 100%;
+		   // padding-bottom: 25rpx;
+		}
+	}
+	.scroll-list {
+		width: 100%;
+		overflow: hidden;
+		white-space: nowrap;
+		background-color: #FFFFFF;
+		font-size: 32rpx;
+		height: 40px;
+		.scoll-box {
+			text-align: center;
+			display: inline-block;
+			margin: 0rpx 38rpx;
+			// padding: 15rpx 0rpx;
+			.scoll-img {
+				width: 130rpx;
+				height: 85rpx;
+				border-radius: 100%;
+				image {
+					width: 85rpx;
+					height: 100%;
+					border-radius: 100%;
+				}
+			}
+			.scoll-name {
+				padding-top: 15rpx;
+			}
+			&.active {
+				color: $motif-color;
+				border-bottom:6rpx solid $motif-color;
+			}
+		}
+	}
+	.fu-box {
+		padding: 14rpx 20rpx 28rpx 20rpx;
+		background: #FFFFFF;
+		box-shadow: 0px 0px 40rpx 0px rgba(0, 0, 0, 0.06);
+		border-radius: 12rpx;
+		display: flex;
+		align-items: center;
+		margin-bottom: 20rpx;
+		&:last-of-type {
+			margin-bottom: 0;
+		}
+		.img-box {
+			position: relative;
+		}
+		.fu-img {
+			width: 220rpx;
+			height: 182rpx;
+			border-radius: 8rpx;
+		}
+		.fu-cname {
+			position: absolute;
+			top: 0;
+			left: 0;
+			background: #FF727E;
+			color: #FFFFFF;
+			padding: 0 10rpx;
+			border-radius: 8rpx 0 8rpx 0;
+			font-size: 24rpx;
+		}
+		.fu-right {
+			margin-left: 20rpx;
+			width: 62%;
+			.fu-tit {
+				overflow: hidden;
+				text-overflow: ellipsis;
+				white-space: nowrap;
+				font-size: 36rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #222222;
+			}
+			.fu-text {
+				margin-top: 17rpx;
+				overflow : hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 2;
+				-webkit-box-orient: vertical;
+				font-size: $font-sm;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #666666;
+			}
+			.fu-bottom {
+				margin-top: 20rpx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				.fu-shenqing {
+					font-size: 21rpx;
+					font-family: PingFang;
+					font-weight: 500;
+					color: #FF727E;
+				}
+				.fu-jifen {
+					padding: 0 5rpx;
+					border: 1px solid #FF0000;
+					border-radius: 5rpx;
+					font-size: 21rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #FF0000;
+				}
+				.fu-yjs {
+					font-size: 21rpx;
+					font-family: PingFang;
+					font-weight: 500;
+					color: #999999;
+				}
+				.fu-sczl {
+					padding: 5rpx 17rpx;
+					font-size: 21rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #FFFFFF;
+					background: #FF727E;
+					border-radius: 23rpx;
+				}
+			}
+		}
+	}
+	.popup-box {
+		padding: 100rpx 0 100rpx 20rpx ;
+		
+		.pop-bfu {
+			display: flex;
+			margin-bottom: 30rpx;
+			.bfu-btn {
+				width: 140rpx;
+				height: 66rpx;
+				background: #EDEDED;
+				border: 1px solid #EDEDED;
+				font-size: $font-base;
+				// padding: 10rpx 30rpx;
+				margin-right: 20rpx;
+				color: #FF727E;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				position: relative;
+				.btn-img {
+					position: absolute;
+					bottom: 0;
+					right: 0;
+					width: 24rpx;
+					height: 24rpx;
+				}
+			}
+			.checkBtn {
+				border: 1px solid #FF727E;
+				background: #FF727E;
+				color: #FFFFFF;
+			}
+		}
+		.qr-btn {
+			margin-right: 20rpx;
+			margin-top: 100rpx;
+			display: flex;
+			align-items: center;
+			justify-content: flex-end;
+			.btn-qr {
+				color: #FFFFFF;
+				background: $motif-color;
+				font-size: $font-lg;
+				font-weight: 500;
+				width: 200rpx;
+				height: 66rpx;
+				border-radius: 33rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+			}
+		}
+	}
+</style>

+ 455 - 0
pages/fu/fuInfo.vue

@@ -0,0 +1,455 @@
+<template>
+	<view class="container">
+		<view class="swiper">
+			<view class="swiper-box">
+				<swiper circular="true" autoplay="true" @change="swiperChange">
+					<swiper-item v-for="swiper in banner" :key="swiper.id"><image :src="swiper"></image></swiper-item>
+				</swiper>
+				<view class="indicator"><view class="dots" v-for="(swiper, index) in banner" :class="[swiperCurrent >= index ? 'on' : '']" :key="index"></view></view>
+			</view>
+		</view>
+		
+		<view class="info-item">
+			<view class="flex_item">
+				<view class="list-tip">{{list.cname}}</view>
+				<view class="info-title clamp">{{list.title}}</view>
+			</view>
+			<view class="info-tip">{{list.info}}</view>
+			<view class="info-number">
+				<!-- <view v-if="starting == true">
+					<view class="flex_item">
+						<view class="name-text">还剩</view>
+						<uni-countdown
+							color="#E62129"
+							background-color="#ffffff"
+							:show-day="true"
+							:day='startday'
+							:hour="starthour"
+							:minute="startminute"
+							:second="startsecond"
+						></uni-countdown>
+					</view>
+				</view>
+				<view class="starting" v-if="starting == false">活动已结束</view> -->
+				<view>资金:{{list.money }}</view>
+				<view v-if="starting == true">已有{{list.sales}}人申请</view>
+				<view v-if="starting == false">已结束</view>
+			</view>
+		</view>
+		<view class="introduce-item">
+			<view class="introduce-title ellipsis">项目介绍</view>
+			<view class="introduce-info">
+				<rich-text :nodes="list.description"></rich-text>
+			</view>
+		</view>
+		<!-- <view class="introduce-item">
+			<view class="introduce-title ellipsis">捐款通道</view>
+			<view class="introduce-info">银行账户:{{list.bank_account}}</view>
+		</view> -->
+		<view class="btn-bottom">
+			<view class="btn-left">
+				<view class="submit" v-if="starting == true && list.is == 0" @click="shenqing"><text class="">申请援助</text></view>
+				<view class="submit yijieshu"  v-if="starting == true && list.is == 1"><text class="">已申请援助</text></view>
+				<view class="submit yijieshu"  v-if="starting == false" ><text class="">已结束</text></view>
+			</view>
+			<view class="btn-right">
+				<view class="" @click="loveDona">
+					爱心捐款
+				</view>
+			</view>
+		</view>
+	
+		
+		<uni-popup ref="popup" type="center">
+			<view class="pop-box">
+				<image class="pop-img" src="../../static/images/sqyz.png"></image>
+				<view class="pop-frame">
+					<view class="pop-text">是否确认申请援助</view>
+					<view class="pop-btnBox">
+						<view class="pop-btn" @click="close">取消</view>
+						<view class="pop-btn queren" @click="corfim()">确认</view>
+					</view>
+				</view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+	import uniPopup from '@/components/uni-popup/uni-popup.vue';
+	import { one_detail, enroll } from '@/api/applyHelp.js';
+	import { timeComputed } from '@/utils/rocessor.js';
+	import uniCountdown from '@/components/uni-countdown/uni-countdown.vue';
+	import {
+			weixindata
+		} from '@/utils/wxAuthorized.js';
+	export default {
+		components: {
+			uniPopup,
+			uniCountdown
+		},
+		data() {
+			return {
+				id:'',
+				money:99,
+				list: '',
+				description:'',
+				swiperCurrent: 0, //轮播图
+				swiperHeight: 300,
+				banner:[],//轮播图
+				img:'',
+				startday:0,
+				starthour:0,//距离今天开始时间
+				startminute:0,
+				startsecond:0,
+				title:'',
+				endTime:'',//结束时间
+				starting: false, //判断活动是否结束
+			};
+		},
+		onLoad(option) {
+			console.log(333,option)
+			this.id = option.id;
+			this.loadData();
+			this.IndexShare();
+		},
+		
+		methods: {
+			loadData(){
+				let obj = this;
+				let id = obj.id;
+				console.log(9090,id)
+				one_detail({
+					id: obj.id
+				}).then(data => {
+					console.log(9785,data.data)
+						obj.list = data.data;
+						obj.banner =  data.data.slider_image;
+						console.log('轮播图', obj.banner)
+						if (obj.list.description) {
+							obj.description = obj.list.description.replace(/\<img/gi, '<img class="rich-img"');
+							obj.description.repeat(/[&]quot;/g,'')
+							console.log(obj.description,'123456')
+						} //小程序商品详情图超出屏幕问题
+						let time = data.data.endActivityTime;
+						this.endTime = time*1000;
+						obj.StartDate();
+					})
+			},
+			IndexShare() {
+				let obj = this;
+				let id = obj.id
+				one_detail({
+					id: obj.id
+				}).then(data => {
+					console.log(9785,data.data)
+						let img = data.data.slider_image[0]
+						let title = data.data.title
+						let info = data.data.info
+						let item = {
+							link:  'http://dxhred.igxys.com/index/#/pages/fu/fuInfo?id=' +id,// 分享链接
+							imgUrl: img,
+							desc: info,
+							title: title,
+							success: console.log('分享加载成功')
+						};
+						console.log('分享',item)
+						weixindata(item);
+					})
+				
+			},
+			StartDate() {
+				let obj = this;
+				// 获取当前时间
+				let now = new Date();
+				let year = now.getFullYear(); //得到年份
+				let month = now.getMonth(); //得到月份
+				let date = now.getDate(); //得到日期
+				let hour = now.getHours(); //得到小时
+				let minu = now.getMinutes(); //得到分钟
+				let sec = now.getSeconds(); //得到秒
+				//获取现在时间的时间戳
+				let time = new Date(year, month, date, hour, minu, sec);
+				let nowTime = time.getTime();
+				if (nowTime < obj.endTime) {
+					console.log(nowTime,obj.endTime)
+					console.log('现在时间小于活动时间,活动进行中');
+					obj.starting = true;
+					console.log(obj.starting, '显示');
+					let starTime = obj.endTime - nowTime;
+					console.log(starTime,'starTime')
+					let day =  Math.floor(starTime / 1000 / 60 / 60 / 24); //获取剩余天数
+					let hours = Math.floor((starTime / 1000 / 60 / 60) % 24); //获取剩余小时数
+					let minutes = Math.floor((starTime / 1000 / 60) % 60); //获取分钟
+					let seconds = Math.floor((starTime / 1000) % 60); //获取秒数
+					obj.startday = day;
+					obj.starthour = hours;
+					obj.startminute = minutes;
+					obj.startsecond = seconds;
+					console.log('时间差是: '+ obj.startday + '天, ' + obj.starthour + '小时, ' + obj.startminute + '分钟, ' + obj.startsecond + '秒', '距离活动结束还剩多少时间');
+				}else{
+					obj.starting = false;
+				}
+			},
+			//轮播图
+			swiperChange(e) {
+				const index = e.detail.current;
+				this.swiperCurrent = index;
+			},
+			// 申请援助
+			shenqing() {
+				this.$refs.popup.open()
+			},
+			// 爱心捐款
+			loveDona(){
+				console.log('爱心捐款',this.id)
+				uni.navigateTo({
+					url: '/pages/applic/loveDonate?id=' + this.id
+				});
+				// pages/applic/loveDonate
+			},
+			// 关闭弹窗
+			close() {
+				this.$refs.popup.close()
+			},
+			// 确认
+			corfim() {
+				enroll({
+					hid: this.id,
+				}).then(res => {
+					this.close();
+					this.$api.msg('申请成功');
+					this.loadData();
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background: #F5F5F5;
+		.container{
+			height: 100%;
+			padding-bottom: 180rpx;
+		}
+	}
+	.rich-img {
+		width: 100% !important;
+		height: auto;
+	}
+	//轮播图
+	.swiper {
+		width: 100%;
+		display: flex;
+		justify-content: center;
+		.swiper-box {
+			width: 100%;
+			height:650rpx;
+			overflow: hidden;
+			// box-shadow: 0upx 8upx 25upx rgba(0, 0, 0, 0.2);
+			//兼容ios,微信小程序
+			position: relative;
+			z-index: 1;
+			swiper {
+				width: 100%;
+				height: 100%;
+				swiper-item {
+					image {
+						width: 100%;
+						height: 100%;
+					}
+				}
+			}
+			.indicator {
+				position: absolute;
+				bottom: 20upx;
+				left: 20upx;
+				background-color: rgba(255, 255, 255, 0.4);
+				width: 150upx;
+				height: 5upx;
+				border-radius: 3upx;
+				overflow: hidden;
+				display: flex;
+				.dots {
+					width: 0upx;
+					background-color: rgba(255, 255, 255, 1);
+					transition: all 0.3s ease-out;
+					&.on {
+						width: (100%/3);
+					}
+				}
+			}
+		}
+	}
+	.info-item{
+		background-color: #FFFFFF;
+		padding: 45rpx 25rpx;
+		.list-tip{
+			background-color: $motif-color;
+			color: #FFFFFF;
+			border-radius:8rpx;
+			padding: 5rpx 12rpx;
+			padding-bottom: 8rpx !important;
+			margin-right: 15rpx;
+			text-align: center;
+			font-size: 24rpx;
+		}
+		.info-title{
+			max-width: 75%;
+			font-size:36rpx;
+			font-weight:500;
+			color:rgba(34,34,34,1);
+		}
+		.info-tip{
+			font-weight:400;
+			color:rgba(102,102,102,1);
+			font-size: 28rpx;
+			padding: 15rpx 0rpx;
+		}
+		.info-number{
+			padding-top: 25rpx;
+			color: #EF3D28;
+			font-size: 24rpx;
+			// text-align: right;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			.name-text{
+				color: #666666;
+			}
+			.starting{
+				font-size: 32rpx;
+				font-weight: bold;
+			}
+		}
+	}
+	.introduce-item{
+		background-color: #FFFFFF;
+		padding: 45rpx 25rpx;
+		margin-top: 25rpx;
+		.introduce-title{
+			padding-bottom: 40rpx;
+			font-size: 36rpx;
+			font-family: PingFang;
+			font-weight: 500;
+			color: #222222;
+		}
+		.introduce-info{
+			font-size: 28rpx;
+			font-weight: 500;
+			color: #222222;
+		}
+	}
+	.static{
+		padding: 0rpx !important;
+		width: 70%;
+		padding-left:25rpx !important;
+	}
+	.btn-bottom{
+		position:fixed;
+		bottom: 0rpx;
+		padding: 24rpx 32rpx;
+		// height: 88rpx;
+		width: 100%;
+		color: #FFFFFF;
+		background-color: #FFFFFF;
+		display: flex;
+		justify-content: space-between;
+	}
+	.btn-left{
+		padding: 12rpx 0;
+		width: 45%;
+		// padding: 25rpx 180rpx;
+		// background:rgba(223,312,18,1);
+		background: $motif-color;
+		border-radius:50rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+	}
+	.btn-right{
+		padding: 6rpx 0;
+		width: 45%;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+		// padding: 25rpx 180rpx;
+		// background:rgba(223,36,18,1);
+		background: $motif-color;
+		border-radius:50rpx;
+	}
+	// .submit{
+		// width: 45%;
+		// text-align: center;
+		// padding: 50rpx 0rpx;
+		// font-size: $font-lg;
+		// text{
+		// 	padding: 25rpx 180rpx;
+		// 	// background:rgba(223,36,18,1);
+		// 	background: $motif-color;
+		// 	border-radius:50rpx;
+		// }
+	// }
+	.yijieshu {
+		// padding: 12rpx 0;
+		// width: 45%;
+		// background-color: #999999;
+		text{
+			color: #C3C3C3;
+		}
+	}
+	.red{
+		text{
+			padding: 25rpx 180rpx;
+			background:rgba(223,36,18,0.6);
+			border-radius:50rpx;
+		}
+	}
+	.pop-box {
+		.pop-img {
+			width: 542rpx;
+			height: 280rpx;
+			display: block;
+		}
+		.pop-frame {
+			margin: 0 16rpx;
+			padding: 35rpx 40rpx;
+			background: #FFFFFF;
+			box-shadow: 0px 5rpx 20rpx 0px rgba(0, 0, 0, 0.1);
+			border-radius: 0 0 10rpx 10rpx;
+			.pop-text {
+				margin-top: 30rpx;
+				font-size: 36rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333C4C;
+				line-height: 40rpx;
+				text-align: center;
+			}
+			.pop-btnBox {
+				margin-top: 78rpx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				.pop-btn {
+					width: 199rpx;
+					height: 78rpx;
+					border: 1px solid #FF727E;
+					border-radius: 10rpx;
+					font-size: 32rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #FF727E;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+				}
+				.queren {
+					background: #FF727E;
+					color: #FFFFFF;
+				}
+			}
+		}
+	}
+</style>

+ 308 - 0
pages/fu/getPoints.vue

@@ -0,0 +1,308 @@
+<template>
+	<view class="content">
+		<view class="now-vip">
+			<view class="top-vip">
+				<view>当前等级</view>
+				<view>爱心积分</view>
+			</view>
+			<view class="top-num">
+				<view :class="{'num-dj': userInfo.level == 0}">
+					<image class="icon-vip" v-for="i in userInfo.level" src="../../static/images/vip.png"></image>
+				</view>
+				<view v-if="userInfo.level !== 4 ">{{ userInfo.all_integral }}/{{ userInfo.next_integral }}</view>
+				<view v-if="userInfo.level == 4">{{ userInfo.all_integral }}/{{ userInfo.all_integral }}</view>
+			</view>
+			<view class="line-progress">
+				<u-line-progress active-color="#E62129" :percent="percent" :show-percent="false" :height="14"></u-line-progress>
+			</view>
+			<view class="vip-icon">
+				<view>
+					<image v-for="i in userInfo.level" class="icon-vip" src="../../static/images/vip.png"></image>
+				</view>
+				<view v-if="userInfo.level !== 4">
+					<image v-for="i in userInfo.level + 1" class="icon-vip" src="../../static/images/vip.png"></image>
+				</view>
+				<view v-if="userInfo.level == 4">
+					<image v-for="i in userInfo.level" class="icon-vip" src="../../static/images/vip.png"></image>
+				</view>
+			</view>
+		</view>
+		<!-- 成长体系 -->
+		<view class="cztx-box">
+			<view class="cztx-tit">成长体系</view>
+			<view class="cztx-vip-box">
+				<view class="experience-box">
+					<view class="exper1">
+						<view class="line-exper1" :class="{'line-sel': userInfo.level > 0 }"></view>
+						<image class="exper1-img" src="../../static/images/v1.png"></image>
+					</view>
+					<view class="exper2">
+						<view class="exper-text">孝心新贵</view>
+						<view class="line-exper2" :class="{'line-sel': userInfo.level > 1 }"></view>
+						<image class="exper2-img" src="../../static/images/v2.png"></image>
+					</view>
+					<view class="exper3">
+						<view class="exper-text">乐善好施</view>
+						<view class="line-exper3" :class="{'line-sel': userInfo.level > 2 }"></view>
+						<image class="exper3-img" src="../../static/images/v3.png"></image>
+					</view>
+					<view class="exper4">
+						<view class="exper-text">爱心巨匠</view>
+						<view class="line-exper4" :class="{'line-sel': userInfo.level > 3 }"></view>
+						<image class="exper4-img" src="../../static/images/v4.png"></image>
+					</view>
+				</view>
+				<view class="cztx-experience">您可以通过更多公益行为来获得经验值</view>
+			</view>
+		</view>
+		<!-- 如何获得爱心积分 -->
+		<!-- <view class="love-box">
+			<view class="love-tit">如何获得爱心积分?</view>
+			<view class="love-text">下列操作可以帮助你获得爱心积分:</view>
+			<view class="love-frame">
+				<u-table>
+						<u-tr class="frame-tit">
+							<u-th class="frame-tit">操作</u-th>
+							<u-th class="frame-tit">获得积分</u-th>
+						</u-tr>
+						<u-tr class='frame-tr'>
+							<u-td class='frame-td'>首次登录</u-td>
+							<u-td class='frame-td'>100</u-td>
+						</u-tr>
+						<u-tr class='frame-tr'>
+							<u-td class='frame-td'>帮扶1次</u-td>
+							<u-td class='frame-td'>10</u-td>
+						</u-tr>
+						<u-tr class='frame-tr'>
+							<u-td class='frame-td'>分享1次</u-td>
+							<u-td class='frame-td'>5(每日上限15)</u-td>
+						</u-tr>
+						<u-tr class='frame-tr'>
+							<u-td class='frame-td'>在线满5分钟</u-td>
+							<u-td class='frame-td'>5(每日上限20)</u-td>
+						</u-tr>
+						<u-tr class='frame-tr'>
+							<u-td class='frame-td'>连续签到满1次</u-td>
+							<u-td class='frame-td'>1(每日递增,最高7)</u-td>
+						</u-tr>
+					</u-table>
+			</view>
+		</view> -->
+	</view>
+</template>
+
+<script>
+import { mapState } from 'vuex';
+export default {
+	data() {
+		return {
+			percent:'',
+		}
+	},
+	onLoad() {
+		this.loadData();
+	},
+	computed: {
+		...mapState('user', ['userInfo']),
+	},
+	methods: {
+		loadData() {
+			let obj = this;
+			if (obj.userInfo.level == 4) {
+				obj.percent = 100;
+			} else {
+				obj.percent = (obj.userInfo.all_integral / obj.userInfo.next_integral) * 100;
+			}
+			obj.percent = parseInt(obj.percent);
+			console.log(obj.percent,obj.userInfo);
+		}
+	}
+}
+</script>
+
+<style lang="scss">
+page {
+	height: 100%;
+	background: #FFFFFF;
+}
+.content {
+	padding: 80rpx 60rpx 80rpx;
+	.now-vip {
+		.top-vip {
+			display: flex;
+			align-items: center;
+			justify-content: space-around;
+			font-size: $font-base;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #666666;
+			line-height: 1;
+		}
+		.top-num {
+			display: flex;
+			align-items: center;
+			justify-content: space-around;
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #222222;
+			line-height: 1;
+			margin-top: 22rpx;
+			.num-dj {
+				visibility: hidden;
+			}
+			.icon-vip {
+				width: 37rpx;
+				height: 32rpx;
+				margin-left: 5rpx;
+			}
+		}
+		.line-progress {
+			padding: 30rpx 54rpx 24rpx;
+		}
+		.vip-icon {
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			.icon-vip {
+				width: 37rpx;
+				height: 32rpx;
+				margin-left: 5rpx;
+			}
+		}
+	}
+	.cztx-box {
+		margin-top: 90rpx;
+		.cztx-tit {
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #222222;
+		}
+		.cztx-vip-box {
+			.experience-box {
+				display: flex;
+				align-items: flex-end;
+				justify-content: space-around;
+				padding: 14rpx 40rpx 0 60rpx;
+				.exper-text {
+					font-size: $font-sm;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #222222;
+					margin-bottom: 30rpx;
+				}
+				.exper1 {
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					.line-exper1 {
+						width: 14rpx;
+						height: 26rpx;
+						background: #EDEDED;
+						border-radius: 7rpx 7rpx 0px 0px;
+						margin-bottom: 24rpx;
+					}
+					.exper1-img {
+						width: 30rpx;
+						height: 26rpx;
+					}
+				}
+				.exper2 {
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					.line-exper2 {
+						width: 14rpx;
+						height: 104rpx;
+						background: #EDEDED;
+						border-radius: 7rpx 7rpx 0px 0px;
+						margin-bottom: 24rpx;
+					}
+					.exper2-img {
+						width: 50rpx;
+						height: 32rpx;
+					}
+				}
+				.exper3 {
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					.line-exper3 {
+						width: 14rpx;
+						height: 182rpx;
+						background: #EDEDED;
+						border-radius: 7rpx 7rpx 0px 0px;
+						margin-bottom: 24rpx;
+					}
+					.exper3-img {
+						width: 68rpx;
+						height: 32rpx;
+					}
+				}
+				.exper4 {
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					.line-exper4 {
+						width: 14rpx;
+						height: 260rpx;
+						background: #EDEDED;
+						border-radius: 7rpx 7rpx 0px 0px;
+						margin-bottom: 24rpx;
+					}
+					.exper4-img {
+						width: 87rpx;
+						height: 32rpx;
+					}
+				}
+				.line-sel {
+					background: #E62129 !important;
+				}
+			}
+			.cztx-experience {
+				margin-top: 50rpx;
+				text-align: center;
+				font-size: $font-sm;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #222222;
+			}
+		}
+	}
+	.love-box {
+		margin-top: 96rpx;
+		line-height: 1;
+		.love-tit {
+			font-size: 36rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #222222;
+		}
+		.love-text {
+			font-size: $font-base;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #222222;
+			margin: 21rpx 0 35rpx;
+		}
+		.love-frame {
+			width: 100%;
+			border-radius: 12rpx;
+			// border: 1px solid rgba(155,155,155,.3);
+			.frame-tit {
+				border-radius: 12rpx 12rpx 0 0;
+				height: 84rpx;
+			}
+			.frame-tr{
+				height: 84rpx;
+				.frame-td{
+					font-size: 28rpx;
+					font-weight: 500;
+					color: #222222;
+				}
+			}
+		}
+	}
+}
+</style>

+ 359 - 0
pages/fu/helpDetail.vue

@@ -0,0 +1,359 @@
+<template>
+	<view class="container">
+		<view class="swiper">
+			<view class="swiper-box">
+				<swiper circular="true" autoplay="true" @change="swiperChange">
+					<swiper-item v-for="swiper in banner" :key="swiper.id"><image :src="swiper"></image></swiper-item>
+				</swiper>
+				<view class="indicator"><view class="dots" v-for="(swiper, index) in banner" :class="[swiperCurrent >= index ? 'on' : '']" :key="index"></view></view>
+			</view>
+		</view>
+		
+		<view class="info-item">
+			<view class="flex_item">
+				<view class="list-tip">{{list.cname}}</view>
+				<view class="info-title clamp">{{list.title}}</view>
+			</view>
+			<view class="info-tip">{{list.info}}</view>
+			<view class="info-number">
+				<view>资金:{{ list.money }}</view>
+				<view>帮扶人:{{ list.arr.name }}</view>
+			</view>
+		</view>
+		<view class="introduce-item">
+			<view class="introduce-title ellipsis">项目介绍</view>
+			<view class="introduce-info">
+				<rich-text :nodes="list.description"></rich-text>
+			</view>
+		</view>
+		
+		<view class="introduce-item" v-if="list.arr.info1.remark">
+			<view class="introduce-title ellipsis">帮扶详情</view>
+			<view class="introduce-info">
+				<view>{{ list.arr.info1.remark }}</view>
+				<view class="img-box">
+					<image class="img-info" v-for="item in imgList" :src="item" mode="widthFix"></image>
+				</view>
+			</view>
+		</view>
+		
+		
+	</view>
+</template>
+
+<script>
+	import uniPopup from '@/components/uni-popup/uni-popup.vue';
+	import { one_detail, enroll } from '@/api/applyHelp.js';
+	import { timeComputed } from '@/utils/rocessor.js';
+	import uniCountdown from '@/components/uni-countdown/uni-countdown.vue';
+	export default {
+		components: {
+			uniPopup,
+			uniCountdown
+		},
+		data() {
+			return {
+				id:'',
+				list: '',
+				description:'',
+				swiperCurrent: 0, //轮播图
+				swiperHeight: 300,
+				banner:[],//轮播图
+				
+				startday:0,
+				starthour:0,//距离今天开始时间
+				startminute:0,
+				startsecond:0,
+				
+				endTime:'',//结束时间
+				starting: false, //判断活动是否结束
+				imgList: [],	// 图片
+			};
+		},
+		onLoad(option) {
+			this.id = option.id;
+			this.loadData();
+		},
+		methods: {
+			loadData(){
+				let obj = this;
+				one_detail({
+					id: obj.id
+				}).then(data => {
+						obj.list = data.data;
+						if (data.data.arr.info1.img) {
+							obj.imgList = data.data.arr.info1.img.split(';');	// 上传资料图片
+						}
+							
+						obj.banner =  data.data.slider_image;
+						if (obj.list.description) {
+							obj.description = obj.list.description.replace(/\<img/gi, '<img class="rich-img"');
+						} //小程序商品详情图超出屏幕问题
+						let time = data.data.endActivityTime;
+						this.endTime = time*1000;
+						obj.StartDate();
+					})
+			},
+			StartDate() {
+				let obj = this;
+				// 获取当前时间
+				let now = new Date();
+				let year = now.getFullYear(); //得到年份
+				let month = now.getMonth(); //得到月份
+				let date = now.getDate(); //得到日期
+				let hour = now.getHours(); //得到小时
+				let minu = now.getMinutes(); //得到分钟
+				let sec = now.getSeconds(); //得到秒
+				//获取现在时间的时间戳
+				let time = new Date(year, month, date, hour, minu, sec);
+				let nowTime = time.getTime();
+				if (nowTime < obj.endTime) {
+					console.log(nowTime,obj.endTime)
+					console.log('现在时间小于活动时间,活动进行中');
+					obj.starting = true;
+					let starTime = obj.endTime - nowTime;
+					console.log(starTime,'starTime')
+					let day =  Math.floor(starTime / 1000 / 60 / 60 / 24); //获取剩余天数
+					let hours = Math.floor((starTime / 1000 / 60 / 60) % 24); //获取剩余小时数
+					let minutes = Math.floor((starTime / 1000 / 60) % 60); //获取分钟
+					let seconds = Math.floor((starTime / 1000) % 60); //获取秒数
+					obj.startday = day;
+					obj.starthour = hours;
+					obj.startminute = minutes;
+					obj.startsecond = seconds;
+					console.log('时间差是: '+ obj.startday + '天, ' + obj.starthour + '小时, ' + obj.startminute + '分钟, ' + obj.startsecond + '秒', '距离活动结束还剩多少时间');
+				}else{
+					obj.starting = false;
+				}
+			},
+			//轮播图
+			swiperChange(e) {
+				const index = e.detail.current;
+				this.swiperCurrent = index;
+			},
+			// 申请援助
+			shenqing() {
+				this.$refs.popup.open()
+			},
+			// 关闭弹窗
+			close() {
+				this.$refs.popup.close()
+			},
+			// 确认
+			corfim() {
+				enroll({
+					hid: this.id,
+				}).then(res => {
+					this.close();
+					this.$api.msg('申请成功');
+					this.loadData();
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	page {
+		background: #F5F5F5;
+		.container{
+			height: 100%;
+			padding-bottom: 180rpx;
+		}
+	}
+	.rich-img {
+		width: 100% !important;
+		height: auto;
+	}
+	//轮播图
+	.swiper {
+		width: 100%;
+		display: flex;
+		justify-content: center;
+		.swiper-box {
+			width: 100%;
+			height:650rpx;
+			overflow: hidden;
+			// box-shadow: 0upx 8upx 25upx rgba(0, 0, 0, 0.2);
+			//兼容ios,微信小程序
+			position: relative;
+			z-index: 1;
+			swiper {
+				width: 100%;
+				height: 100%;
+				swiper-item {
+					image {
+						width: 100%;
+						height: 100%;
+					}
+				}
+			}
+			.indicator {
+				position: absolute;
+				bottom: 20upx;
+				left: 20upx;
+				background-color: rgba(255, 255, 255, 0.4);
+				width: 150upx;
+				height: 5upx;
+				border-radius: 3upx;
+				overflow: hidden;
+				display: flex;
+				.dots {
+					width: 0upx;
+					background-color: rgba(255, 255, 255, 1);
+					transition: all 0.3s ease-out;
+					&.on {
+						width: (100%/3);
+					}
+				}
+			}
+		}
+	}
+	.info-item{
+		background-color: #FFFFFF;
+		padding: 45rpx 25rpx;
+		.list-tip{
+			background-color: $motif-color;
+			color: #FFFFFF;
+			border-radius:8rpx;
+			padding: 5rpx 12rpx;
+			padding-bottom: 8rpx !important;
+			margin-right: 15rpx;
+			text-align: center;
+			font-size: 24rpx;
+		}
+		.info-title{
+			max-width: 75%;
+			font-size:36rpx;
+			font-weight:500;
+			color:rgba(34,34,34,1);
+		}
+		.info-tip{
+			font-weight:400;
+			color:rgba(102,102,102,1);
+			font-size: 28rpx;
+			padding: 15rpx 0rpx;
+		}
+		.info-number{
+			padding-top: 25rpx;
+			color: #EF3D28;
+			font-size: 24rpx;
+			font-weight: normal;
+			display: flex;
+			align-items: center;
+			justify-content: space-between;
+			.name-text{
+				color: #666666;
+			}
+			.starting{
+				font-size: 32rpx;
+				font-weight: bold;
+			}
+		}
+	}
+	.introduce-item{
+		background-color: #FFFFFF;
+		padding: 45rpx 25rpx;
+		margin-top: 25rpx;
+		.introduce-title{
+			padding-bottom: 40rpx;
+			font-size: 36rpx;
+			font-family: PingFang;
+			font-weight: 500;
+			color: #222222;
+
+		}
+		.introduce-info{
+			font-size: 28rpx;
+			font-weight: 500;
+			color: #222222;
+		}
+		.img-box {
+			width: 100%;
+		}
+		.img-info {
+			width: 100%;
+			display: block;
+			margin-top: 30rpx;
+		}
+	}
+	.static{
+		padding: 0rpx !important;
+		width: 70%;
+		padding-left:25rpx !important;
+	}
+	.submit{
+		position:fixed;
+		bottom: 0rpx;
+		width: 100%;
+		color: #FFFFFF;
+		text-align: center;
+		background-color: #FFFFFF;
+		padding: 50rpx 0rpx;
+		font-size: $font-lg;
+		text{
+			padding: 25rpx 180rpx;
+			// background:rgba(223,36,18,1);
+			background: $motif-color;
+			border-radius:50rpx;
+		}
+	}
+	.yijieshu {
+		text{
+			background: #999999;
+		}
+	}
+	.red{
+		text{
+			padding: 25rpx 180rpx;
+			background:rgba(223,36,18,0.6);
+			border-radius:50rpx;
+		}
+	}
+	.pop-box {
+		.pop-img {
+			width: 542rpx;
+			height: 280rpx;
+			display: block;
+		}
+		.pop-frame {
+			margin: 0 16rpx;
+			padding: 35rpx 40rpx;
+			background: #FFFFFF;
+			box-shadow: 0px 5rpx 20rpx 0px rgba(0, 0, 0, 0.1);
+			border-radius: 0 0 10rpx 10rpx;
+			.pop-text {
+				margin-top: 30rpx;
+				font-size: 36rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #333C4C;
+				line-height: 40rpx;
+				text-align: center;
+			}
+			.pop-btnBox {
+				margin-top: 78rpx;
+				display: flex;
+				align-items: center;
+				justify-content: space-between;
+				.pop-btn {
+					width: 199rpx;
+					height: 78rpx;
+					border: 1px solid #FF727E;
+					border-radius: 10rpx;
+					font-size: 32rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #FF727E;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+				}
+				.queren {
+					background: #FF727E;
+					color: #FFFFFF;
+				}
+			}
+		}
+	}
+</style>

+ 186 - 0
pages/fu/helpInfo.vue

@@ -0,0 +1,186 @@
+<template>
+	<view class="container">
+		<!-- <view class="top">
+			普及培训
+		</view> -->
+		<swiper class="swiper-box" duration="300" @change="changeTab">
+			<swiper-item class="tab-content">
+				<scroll-view class="list-scroll-content" scroll-y @scrolltolower="loadData">
+					<!-- 空白页 -->
+					<empty v-if="loadingType === true && list.length === 0"></empty>
+					<!-- 订单列表 -->
+					<view class="order-item" @click="ToDetail(item)" v-for="(item, index) in list" :key="index">
+						<view class="list-cell">
+							<image class="image" :src="item.img"></image>
+							<view class="list-tpl">{{ item.title }}</view>
+						</view>
+					</view>
+				</scroll-view>
+			</swiper-item>
+		</swiper>
+	</view>
+</template>
+<script>
+import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+import empty from '@/components/empty';
+import uniPopup from '@/components/uni-popup/uni-popup.vue';
+import { training } from '@/api/index.js';
+export default {
+	components: {
+		uniLoadMore,
+		empty,
+		uniPopup
+	},
+	data() {
+		return {
+			page: 1, //当前页数
+			limit: 6, //每次信息条数
+			list: [],
+			loadingType: 'more', //加载更多状态
+		};
+	},
+	onLoad() {
+		console.log(22)
+		this.loadData();
+	},
+	methods: {
+		//获取订单列表
+		loadData(type) {
+			//这里是将订单挂载到tab列表下
+			let obj = this;
+			if (type != 'refresh') {
+				console.log(obj.loadingType, '456');
+				//没有更多数据直接跳出方法
+				if (obj.loadingType === 'nomore') {
+					return;
+				} else {
+					// 设置当前为数据载入中
+					obj.loadingType = 'loading';
+				}
+			} else {
+				//当重新加载数据时更新状态为可继续添加数据
+				obj.loadingType = 'more';
+			}
+			training({})
+				.then(data => {
+					if (type === 'refresh') {
+						obj.list = [];
+					}
+					let arr = data.data
+					obj.list = obj.list.concat(arr);
+					//判断是否还有下一页,有是more  没有是nomore
+					if (obj.limit == arr.length) {
+						obj.page++;
+						obj.loadingType = 'more';
+					} else {
+						obj.loadingType = 'nomore';
+					}
+					// 判断是否为刷新数据
+					if (type === 'refresh') {
+						console.log('refresh');
+						// 判断是否为点击搜索按钮跳转加载
+						if (obj.loading == 1) {
+							uni.hideLoading();
+						} else {
+							uni.stopPullDownRefresh();
+						}
+					}
+				})
+				.catch(e => {
+					obj.loadingType = 'nomore';
+					uni.hideLoading();
+				});
+		},
+		//跳转到详情
+		ToDetail(e) {
+			let type = e.type;
+			let id = e.id;
+			uni.navigateTo({
+				url: '/pages/train/sign?type=' + type+'&id='+id
+			});
+		}
+	}
+};
+</script>
+
+<style lang="scss">
+page {
+	background: #F2F2F2;
+	height: 100%;
+	padding-bottom: 25rpx;
+}
+.container {
+	height: 100%;
+	.top{
+		background-color: #FFFFFF;
+		height: 88rpx;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+		font-size: 36rpx;
+		font-weight: 500;
+		color: #333333;
+	}
+	.swiper-box {
+		height:100%;
+		.list-scroll-content {
+			height:100%;
+		}
+	}
+}
+.scroll-list {
+	width: 100%;
+	overflow: hidden;
+	white-space: nowrap;
+	background-color: #ffffff;
+	font-size: 32rpx;
+	.scoll-box {
+		text-align: center;
+		display: inline-block;
+		margin: 0rpx 38rpx;
+		padding: 15rpx 0rpx;
+		.scoll-img {
+			width: 130rpx;
+			height: 85rpx;
+			border-radius: 100%;
+			image {
+				width: 85rpx;
+				height: 100%;
+				border-radius: 100%;
+			}
+		}
+		.scoll-name {
+			padding-top: 15rpx;
+		}
+		&.active {
+			color: #ef3d28;
+			border-bottom: 6rpx solid #ef3d28;
+		}
+	}
+}
+
+.order-item {
+	width: 100%;
+	padding: 0rpx 25rpx;
+	padding-top: 25rpx !important;
+	.list-cell {
+		background-color: #ffffff;
+		border-radius: 20rpx;
+		width: 100%;
+		box-shadow: 0px 0px 40px 0px rgba(0, 0, 0, 0.06);
+		.image {
+			width: 100%;
+			height: 300rpx;
+			border-top-left-radius: 25rpx;
+			border-top-right-radius: 25rpx;
+		}
+		.list-tpl {
+			padding: 25rpx 25rpx;
+			padding-bottom: 35rpx !important;
+			font-size: 34rpx;
+			color: #222222;
+			font-weight:500;
+		}
+	}
+}
+</style>

+ 195 - 0
pages/fu/upLoadInfo.vue

@@ -0,0 +1,195 @@
+<template>
+	<view class="container">
+		<view class="up-tit">请退供相关图片描述 以便我们后续跟进</view>
+		<view class="add-img-box flex_item">
+			<view class="add-img-item"  v-for="(item, index) in imgList" :key="index">
+				<image class="add-img" @click.stop="imgInfo(index)" :src="item" mode="aspectFill"></image>
+				<image class="add-img-del" @click.stop="delImg(index)" src="/static/img/delete.png"></image>
+			</view>
+			<view v-if='imgCount > 0' class="add-img-item" @click.stop="scImg()">
+				<image class="add-img" src="../../static/images/sctp.png"></image>
+			</view>
+		</view>
+		<view class="mark-box">
+			<view class="mark-tit">补充描述</view>
+			<textarea class="mark-text" v-model="mark" placeholder="填写描述"></textarea>
+		</view>
+		<view class="up-btn" v-if="type == 0" @click="submit">提交</view>
+		<view class="up-btn" v-if="type == 1" @click="submit">修改</view>
+	</view>
+</template>
+
+<script>
+import { upload,add_four_help } from '@/api/index.js';
+import { means, get_means } from '@/api/applyHelp.js';
+export default {
+	data() {
+		return {
+			imgList: [],	// 图片
+			cloudimgList: [],
+			mark: '',	// 描述
+			imgCount: 6,	// 最多传6张
+			id: '',
+			type: 0,
+		}
+	},
+	onLoad(option) {
+		this.id = option.id;
+		if ( option.type ) {
+			this.type = 1;
+			get_means({
+				id: this.id
+			}).then(({data}) => {
+				this.imgList = data.img;
+				this.mark = data.remark; 
+			})
+		}
+	},
+	methods: {
+		//多张上传图片
+		scImg() {
+			let obj = this;
+			upload({
+				file: ''
+			})
+				.then(e => {
+					let list = []
+					obj.imgList = [...obj.imgList, e[0].url];
+					console.log(obj.imgList);
+					obj.imgCount = 6 - obj.imgList.length;
+				})
+				.catch(e => {});
+		},
+		//点击图片显示大图
+		imgInfo(i) {
+			let tempList = [];
+			this.imgList.forEach(e => {
+				tempList.push(e);
+			});
+			//显示图片
+			uni.previewImage({
+				current: i,
+				loop: false,
+				urls: this.imgList,
+				indicator: 'default'
+			});
+		},
+		//删除图片
+		delImg(i) {
+			uni.showModal({
+				content: '确定删除这张吗',
+				success: res => {
+					if (res.confirm) {
+						this.imgList.splice(i, 1);
+						this.imgCount++;
+					} else if (res.cancel) {
+					}
+				}
+			});
+		},
+		// 提交
+		submit() {
+			let obj = this;
+			
+			let arr = obj.imgList.join(';');
+			console.log(arr,'arr')
+			
+			console.log(this.mark);
+			if (!obj.imgList) {
+				obj.$api.msg('请上传图片');
+				return;
+			}
+			if (!obj.mark) {
+				obj.$api.msg('请填写描述');
+				return;
+			}
+			means({
+				id: obj.id,
+				img: arr,
+				remark: obj.mark,
+			}).then(({data}) => {
+				obj.$api.msg('上传成功');
+				uni.navigateBack();
+			}).catch(e => {
+				console.log(e);
+			})
+		},
+	}
+}
+</script>
+
+<style lang="scss">
+.container {
+	.up-tit {
+		padding: 24rpx 30rpx;
+		font-size: $font-base;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #333333;
+	}
+	.add-img-box {
+		width: 100%;
+		flex-wrap: wrap;
+		// justify-content: center;
+		padding: 30rpx 30rpx 0 30rpx;
+		background: #FFFFFF;
+		border-bottom: 1px solid #F0F0F0;
+	}
+	.add-img-item {
+		margin-bottom: 25rpx;
+		width: 33.33%;
+		position: relative;
+		.add-img {
+			padding: 0rpx 10rpx;
+			width: 100%;
+			height: 214rpx;
+			display: block;
+		}
+	}
+	.add-img-del {
+		position: absolute;
+		width: 40rpx;
+		height: 40rpx;
+		right: 10rpx;
+		top: 0;
+		// bottom: 155rpx;
+		//background-color: rgba(238, 0, 0, 1);
+		border-radius: 20rpx;
+	}
+	.mark-box {
+		display: flex;
+		align-items: flex-start;
+		background: #FFFFFF;
+		padding: 40rpx 30rpx 0 30rpx;
+		.mark-tit {
+			margin-right: 40rpx;
+			font-size: $font-base;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #333333;
+			flex-shrink: 0;
+		}
+		.mark-text {
+			font-size: $font-base - 2rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #999999;
+		}
+	}
+	.up-btn {
+		margin: auto;
+		margin-top: 120rpx;
+		width: 560rpx;
+		height: 80rpx;
+		background: #FF727E;
+		border-radius: 40rpx;
+		font-size: 30rpx;
+		font-family: PingFang SC;
+		font-weight: 500;
+		color: #FFFFFF;
+		display: flex;
+		align-items: center;
+		justify-content: center;
+	}
+}
+</style>

BIN
static/images/v1.png


BIN
static/images/v2.png


BIN
static/images/v3.png


BIN
static/images/v4.png


BIN
static/images/vip.png


BIN
static/tabBar/tab-fu-current.png


BIN
static/tabBar/tab-fu.png