Browse Source

Merge branch 'master' of http://git.liuniu946.com/xuhaolan/xhlred

hwq 3 years ago
parent
commit
ba17d3efd8
13 changed files with 1532 additions and 1033 deletions
  1. 10 0
      api/help.js
  2. 10 1
      api/user.js
  3. 3 2
      main.js
  4. 1 1
      manifest.json
  5. 14 11
      pages.json
  6. 3 2
      pages/applyHelp/cation.vue
  7. 41 17
      pages/applyHelp/index.vue
  8. 1332 920
      pages/index/index.vue
  9. 40 2
      pages/user/user.vue
  10. 70 72
      uni.scss
  11. 3 2
      utils/newRequest.js
  12. 4 2
      utils/request.js
  13. 1 1
      utils/wxAuthorized.js

+ 10 - 0
api/help.js

@@ -0,0 +1,10 @@
+import request from '@/utils/request'
+
+// 我的申请帮扶列表
+export function getMyHelpApplyList(data) {
+	return request({
+		url: '/api/help/applylst',
+		method: 'get',
+		data
+	})
+}

+ 10 - 1
api/user.js

@@ -33,4 +33,13 @@ export function getMyloveList(data) {
 		method: 'get',
 		data
 	})
-}
+}
+
+//登出
+ export function logout(data) {
+	 return request({
+	 	url: '/api/logout',
+	 	method: 'post',
+	 	data
+	 })
+ }

+ 3 - 2
main.js

@@ -1,6 +1,7 @@
 import Vue from 'vue'
 import store from './store'
-import App from './App'
+import App from './App'
+import uView from "uview-ui";
 Vue.prototype.$store = store
 // import VueClipboard from 'vue-clipboard2'
 
@@ -54,7 +55,7 @@ Vue.prototype.ScanAudio = function(e){
 //         music.pause(); //暂停播放
 // 				console.log('暂停播放')
 // }
-
+Vue.use(uView);
 
 Vue.config.productionTip = false
 Vue.prototype.$fire = new Vue();

+ 1 - 1
manifest.json

@@ -1,6 +1,6 @@
 {
     "name" : "孝感红十字会",
-    "appid" : "__UNI__D91A949",
+    "appid" : "__UNI__F405D65",
     "description" : "",
     "versionName" : "1.0.0",
     "versionCode" : "100",

+ 14 - 11
pages.json

@@ -524,17 +524,6 @@
 				"navigationBarTitleText": "救护员登记"
 			}
 		},
-		// {
-		// 	"path": "pages/cart/cart",
-		// 	"style": {
-		// 		// #ifndef MP
-		// 		"app-plus": {
-		// 			"titleNView": false
-		// 		},
-		// 			// #endif
-		// 		"navigationBarTitleText": "会员申请"
-		// 	}
-		// },
 		{
 			"path": "pages/joinSuc/joinSuc",
 			"style": {
@@ -907,6 +896,20 @@
 				"navigationBarTitleText": "电子名片",
 				"navigationStyle": "custom"
 			}
+		},
+		{
+			"path": "pages/applyHelp/cation",
+			"style": {
+				"navigationBarTitleText": "申请帮扶",
+				"navigationStyle": "custom"
+			}
+		},
+		{
+			"path": "pages/applyHelp/index",
+			"style": {
+				"navigationBarTitleText": "申请帮扶",
+				"navigationStyle": "custom"
+			}
 		}
 		
 	],

+ 3 - 2
pages/applyHelp/cation.vue

@@ -35,7 +35,8 @@
 	</view>
 </template>
 <script>
-import { getList,gethelp } from '@/api/applyHelp.js';
+import { getList,gethelp } from '@/api/applyHelp.js';
+import { getMyHelpApplyList } from '@/api/help.js'
 import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
 import empty from '@/components/empty';
 export default {
@@ -105,7 +106,7 @@ export default {
 			}
 			// 修改当前对象状态为加载中
 			navItem.loadingType = 'loading';
-			gethelp({
+			getMyHelpApplyList({
 				page: navItem.page,
 				limit:navItem.limit,
 				type: state,

+ 41 - 17
pages/applyHelp/index.vue

@@ -1,11 +1,14 @@
      <template>
 	<view class="cantent">
 		<!-- <view class="tip">孝心缝帮扶:仅限服装行业从业者申请哦~</view> -->
-		<view class="flex til-list" v-if="!id">
+		<!-- <view class="flex til-list" v-if="!id">
 			<view class="red">基本信息</view>
 			<view class="">信息选择</view>
 			<view class="">家庭成员情况</view>
 			<view class="">详细情况</view>
+		</view> -->
+		<view class="tit-tip">
+			基本信息
 		</view>
 		<view class="flex til-list" v-if="id && status == ''">
 			<view class="red">基本信息</view>
@@ -33,20 +36,32 @@
 				<input class="input" type="text" :disabled="disabled" v-model="sex"  placeholder="请填写您的性别" placeholder-class="placeholder" />
 			</view>
 		</view>
-		<view class="content_box">
-			<view class="list-name">政治面貌</view>
-			<view class="uni-list">
-				<radio-group @change="radioChange">
-					<view class="radio-list flex_item">
-						<label class="uni-list-cell uni-list-cell-pd flex_item" v-for="(item, index) in outlook" :key="item.name">
-							<view><radio :disabled="disabled" style="transform:scale(0.7)" color='#FF727E' :value="item.name" :checked="index === current" /></view>
-							<view>{{item.name}}</view>
-						</label>
-					</view>
-				</radio-group>
+		<!-- <view class="content_box">
+			<view class="list-name">政治面貌</view>
+			<view class="uni-list">
+				<radio-group @change="radioChange">
+					<view class="radio-list flex_item">
+						<label class="uni-list-cell uni-list-cell-pd flex_item" v-for="(item, index) in outlook" :key="item.name">
+							<view><radio :disabled="disabled" style="transform:scale(0.7)" color='#FF727E' :value="item.name" :checked="index === current" /></view>
+							<view>{{item.name}}</view>
+						</label>
+					</view>
+				</radio-group>
+			</view>
+		</view> -->
+		
+		<view class="content_box">
+			<view class="row b-b" v-if="status =='' ">
+				<text class="tit">政治面貌</text>
+				<picker mode="" :range="checkedList" @change="changeChecked">
+					<input class="input" disabled v-model="checked" placeholder="请选择政治面貌" placeholder-class="placeholder" />
+				</picker>
+				<!-- <pickerAddress class="input"  @change="onCityClick">{{checked||'请选择省市区'}}</pickerAddress> -->
+			</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="content_box">
 			<view class="row" v-if="status == ''" @click="selectDatePicker(type)">
 				<text class="tit">出生日期:</text>
 				<input class="input" type="text"  v-model="birthday" disabled="true"  placeholder-class="placeholder" />
@@ -123,7 +138,8 @@ export default {
 			phone:'',//电话
 			address:'',//
 			addr:'',
-			work:'',//工作单位
+			work:'',//工作单位
+			checkedList: ['团员','预备党员','党员','群众'],//政治面貌
 			outlook:[{
 				id:1,
 				name:'团员'
@@ -185,7 +201,11 @@ export default {
 			url: '/pages/applyHelp/cation'
 		});
 	},
-	methods: {
+	methods: {
+		// 选择政治面貌
+		changeChecked(e) {
+			console.log(e)
+		},
 		radioChange(evt){
 			this.checked = evt.detail.value;
 		},
@@ -553,5 +573,9 @@ page {
 		color: #6786FB;
 	}
 }
-
+.tit-tip {
+	color: #ff727e;
+	font-size: 36rpx;
+	padding: 10rpx 0 10rpx 20rpx;
+}
 </style>

+ 1332 - 920
pages/index/index.vue

@@ -1,921 +1,1333 @@
-<template>
-	<view class="content">
-		<!-- 轮播 -->
-		<view class="carousel-section">
-			<swiper class="carousel" :autoplay="true" :interval="3000" :duration="1000">
-				<swiper-item v-for="item in carouselList" :key="item.id">
-					<!-- #ifdef H5 -->
-					<image :src="baseURL + item.image"></image>
-					<!-- #endif -->
-
-				</swiper-item>
-			</swiper>
-		</view>
-		<!-- 上半部分菜单 -->
-		<view class="box-top"></view>
-		<view class="top-box flex">
-			<view class="top-item" v-for="item in navList" @click="navTo(item.path)">
-				<view class="item-tit">{{item.tit}}</view>
-				<view class="item-content">{{item.content}}</view>
-				<image :src="item.bgimg" mode="" class="item-logo"
-					:style="{width:item.bgwidth,height:item.bgheight,top:item.bgtop,left:item.bgleft}"></image>
-			</view>
-		</view>
-		<!-- 下半部分菜单 -->
-		<view class="bottom-box flex">
-			<view class="btm-left" @click="navTo('/pages/applic/location')">
-				<view class="tit">救在身边救护员</view>
-				<view class="left-content">实时救护,就在身边</view>
-				<image src="../../static/icon/tb-5.png" mode="" class="bglogo"></image>
-			</view>
-			<view class="btm-right">
-				<view class="b-l-item" @click="navTo('/pages/applic/aid')">
-					<view class="tit">救护站</view>
-					<view class="left-content">附近的救护站都在这里</view>
-					<image src="../../static/icon/tb-6.png" mode="" class="right-logo"></image>
-				</view>
-				<view class="b-l-item" @click="navTo('/pages/applic/aed')">
-					<view class="tit">智能AED</view>
-					<view class="left-content">查找附近AED设备</view>
-					<image src="../../static/icon/tb-7.png" mode="" class="right-logo right-logo-2"></image>
-				</view>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import {
-		loadIndexs,
-		bannerlist,
-		getListAED,
-		getDistance,
-		getListMechanism,
-		getdis,
-		tocall,
-		getCompany
-	} from '@/api/index.js';
-	import {
-		saveUrl,
-		interceptor
-	} from '@/utils/loginUtils.js';
-	import {
-		mapState,
-		mapMutations
-	} from 'vuex';
-	import {
-		userinfo
-	} from '@/api/user.js';
-	import uniPopup from '@/components/uni-popup/uni-popup.vue';
-	import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
-	import {
-		getLoca
-	} from '@/utils/wxAuthorized.js';
-	import {
-		getcomAddress
-	} from '@/api/index.js';
-	import topTitle from '../../components/top-title/top-title.vue';
-	export default {
-		components: {
-			uniPopup,
-			uniLoadMore,
-			topTitle
-		},
-		data() {
-			return {
-				navList: [{
-						tit: '我要报名',
-						content: '志愿者捐献者报名',
-						path: '/pages/applic/applicList',
-						bgimg: '../../static/icon/tb-1.png',
-						bgwidth: '84rpx',
-						bgheight: '111rpx',
-						bgtop: '84rpx',
-						bgleft: '210rpx'
-					}, {
-						tit: '红十字事业',
-						content: '红十字事业介绍',
-						path: '/pages/applic/cause',
-						bgimg: '../../static/icon/tb-2.png',
-						bgwidth: '128rpx',
-						bgheight: '127rpx',
-						bgtop: '69rpx',
-						bgleft: '181rpx'
-					},
-					{
-						tit: '我要捐赠',
-						content: '在线捐款渠道',
-						path: '/pages/applic/love',
-						bgimg: '../../static/icon/tb-3.png',
-						bgwidth: '120rpx',
-						bgheight: '120rpx',
-						bgtop: '75rpx',
-						bgleft: '192rpx'
-					},
-					{
-						tit: '红十字知识',
-						content: '急救知识科普',
-						path: '/pages/applic/science',
-						bgimg: '../../static/icon/tb-4.png',
-						bgwidth: '120rpx',
-						bgheight: '120rpx',
-						bgtop: '75rpx',
-						bgleft: '192rpx'
-					}
-				],
-				carouselList: [], //轮播
-			};
-		},
-		onShow() {
-			saveUrl();
-			// let token = uni.getStorageSync('token');
-			console.log(11, this);
-			console.log(this.userInfo, 'this.userInfo++++++++++++++++')
-			if (!this.userInfo.id) {
-				// 登录拦截
-
-				uni.showModal({
-					title: '登录',
-					content: '您未登录,是否马上登陆?',
-					success: e => {
-						if (e.confirm) {
-							interceptor();
-						}
-					},
-					fail: e => {
-						console.log(e);
-					}
-				});
-			}
-			this.loadData();
-			getCompany().then(res => {
-				console.log(res)
-			})
-		},
-		onLoad() {
-			saveUrl();
-		},
-		computed: {
-			...mapState('user', ['userInfo', 'hasLogin']),
-			...mapState(['baseURL']),
-		},
-		methods: {
-			...mapMutations('user', ['setUserInfo']),
-			//提示
-			tishi() {
-				uni.showModal({
-					title: '提示',
-					content: '获取当前位置信息失败,是否刷新页面。',
-					success: function(res) {
-						if (res.confirm) {
-							window.location.reload();
-							console.log('用户点击确定');
-						} else if (res.cancel) {
-							console.log('用户点击取消');
-						}
-					}
-				})
-			},
-			loadData() {
-				let obj = this;
-				loadIndexs({}).then(({
-					data
-				}) => {
-					obj.carouselList = data.banner
-					// obj.carouselList = data.banner; //轮播图
-				});
-			},
-			navTo(url) {
-				uni.navigateTo({
-					url
-				});
-			},
-		}
-	};
-</script>
-
-<style lang="scss">
-	a {
-		text-decoration: none;
-		color: #5f5f5f;
-	}
-
-	.content {
-		// line-height: 1;
-		background-color: #ffabab;
-		// padding-bottom: 60rpx;
-	}
-
-	.popup_row {
-		width: 100%;
-		height: 500rpx;
-		background-color: #ffffff;
-		border-radius: 20rpx;
-		display: flex;
-		justify-content: center;
-		align-items: center;
-
-		.rows {
-			width: 100%;
-			padding: 0 24rpx;
-
-			.rows-item {
-				height: 80rpx;
-				line-height: 80rpx;
-				text-align: center;
-				width: 100%;
-				font-size: 32rpx;
-				color: #303133;
-				// border-bottom: 1rpx solid #f0f0f0;
-			}
-
-			// .row-1 {
-			// 	margin: auto;
-			// 	.first_aid {
-			// 		width: 300rpx;
-			// 		height: 300rpx;
-			// 	}
-			// }
-			// .row-2 {
-			// 	font-size: 38rpx;
-			// 	margin-top: 20rpx;
-			// }
-		}
-	}
-
-	.content {
-		background-color: #f8f8f8;
-		height: 100%;
-
-		/* 头部 轮播图 */
-		.carousel-section {
-			// padding-top: 10px;
-			overflow: hidden;
-			background-color: #fff;
-
-			.carousel {
-				width: 750rpx;
-				height: 504rpx;
-				margin: 0 auto;
-				overflow: hidden;
-
-				.carousel-item {
-					width: 100%;
-					height: 100%;
-					overflow: hidden;
-				}
-
-				image {
-					width: 100%;
-					height: 100%;
-				}
-			}
-		}
-
-		// 分类
-		.cate-section {
-			justify-content: space-around;
-			background-color: #fff;
-			padding: 46rpx 0 30rpx;
-
-			.cate-item {
-				width: 25%;
-				flex-direction: column;
-				text-align: center;
-				align-items: center;
-				justify-content: center;
-
-				.img-wrapper {
-					width: 100rpx;
-					height: 88rpx;
-					background: #eef4ff;
-					border-radius: 14rpx;
-					position: relative;
-
-					image {
-						position: absolute;
-						left: 50%;
-						top: 50%;
-						transform: translate(-50%, -50%);
-					}
-
-					.img1 {
-						width: 100rpx;
-						height: 84rpx;
-					}
-
-					.img2 {
-						width: 100rpx;
-						height: 85rpx;
-					}
-
-					.img3 {
-						width: 100rpx;
-						height: 84rpx;
-
-					}
-
-					.img4 {
-						width: 100rpx;
-						height: 88rpx;
-					}
-
-				}
-
-				.item-title {
-					margin-top: 15rpx;
-					font-size: 24rpx;
-					font-family: PingFang SC;
-					font-weight: 500;
-					color: #333333;
-				}
-			}
-		}
-
-		// 红会科普
-		.science-section {
-			width: 100%;
-			background-color: #ffffff;
-			margin-top: 18rpx;
-			padding-top: 30rpx;
-
-			.science-title {
-				display: flex;
-				justify-content: center;
-				align-items: center;
-				padding-bottom: 22rpx;
-
-				.title {
-					width: 285rpx;
-					height: 64rpx;
-					background-color: #ca121e;
-					border-radius: 32rpx;
-					color: #ffffff;
-					font-size: 32rpx;
-					line-height: 64rpx;
-					text-align: center;
-				}
-
-				image {
-					width: 68rpx;
-					height: 43rpx;
-					margin-left: 16rpx;
-					margin-right: 16rpx;
-				}
-			}
-
-			.science-box {
-				padding-left: 15rpx;
-				padding-right: 15rpx;
-				padding-bottom: 20rpx;
-				border-bottom: 1rpx solid #f0f0f0;
-				white-space: nowrap;
-				display: flex;
-				width: 100%;
-
-				// .uni-scroll-view-content{
-				// 	display: flex;
-				// }
-				.science-content {
-					// width: 100%;
-
-					// display: flex;
-					display: -webkit-box;
-
-					.science-item {
-						margin-right: 24rpx;
-						width: 198rpx;
-						display: flex;
-						flex-direction: column;
-						align-items: center;
-						text-align: center;
-
-						image {
-							width: 100%;
-							height: 145rpx;
-						}
-
-						.article-title {
-							width: 198rpx;
-							color: #333;
-							font-size: 25rpx;
-							padding-top: 20rpx;
-							padding-bottom: 16rpx;
-							font-weight: 900;
-						}
-
-						.article-content {
-							width: 198rpx;
-							color: #999999;
-							font-size: 18rpx;
-							overflow: hidden;
-							text-overflow: ellipsis;
-							display: -webkit-box;
-							word-break: break-all;
-							-webkit-box-orient: vertical;
-							-webkit-line-clamp: 2;
-						}
-					}
-				}
-			}
-
-			.science-more {
-				display: flex;
-				justify-content: center;
-				align-items: center;
-				color: #cb131c;
-				font-size: 30rpx;
-				padding-top: 18rpx;
-				padding-bottom: 18rpx;
-
-				image {
-					width: 20rpx;
-					height: 27rpx;
-				}
-			}
-		}
-
-		// sos急救中心
-		.system {
-			width: 100%;
-			background-color: #ffffff;
-			margin-top: 18rpx;
-			padding: 40rpx 30rpx 35rpx 30rpx;
-			margin-bottom: 20rpx;
-
-			.system-map {
-				margin: 30rpx auto 0;
-				width: 689rpx;
-				height: 312rpx;
-				background-color: #ffffff;
-				// padding: 0 30rpx;
-				padding-bottom: 45rpx;
-				// .map-box {
-				// 	width: 100%;
-				// 	height: 312rpx;
-				// 	// background-color: #fff;
-
-				// }
-			}
-		}
-
-		// AED
-		.list-box {
-			padding: 0rpx 25rpx 24rpx;
-			// margin-bottom: 84rpx;
-			background-color: #fff;
-
-			.system-title {
-				display: flex;
-				justify-content: flex-start;
-				align-items: center;
-				height: 130rpx;
-				// padding-bottom: 22rpx;
-				background-color: #ffffff;
-
-				.title {
-					width: 285rpx;
-					height: 64rpx;
-					background-color: #ca121e;
-					border-radius: 32rpx;
-					color: #ffffff;
-					font-size: 32rpx;
-					line-height: 64rpx;
-					text-align: center;
-				}
-
-				.img {
-					width: 68rpx;
-					height: 43rpx;
-					margin-left: 16rpx;
-					margin-right: 16rpx;
-
-					image {
-						width: 68rpx;
-						height: 43rpx;
-					}
-				}
-			}
-		}
-
-		.map-box {
-			width: 100%;
-			height: 366rpx;
-		}
-
-		.list-tpl {
-			background-color: #ffffff;
-			margin: 25rpx 0rpx;
-			padding: 25rpx 25rpx;
-			font-size: 28rpx;
-			border-radius: 15rpx;
-			display: flex;
-			justify-content: space-between;
-			align-items: center;
-			border-bottom: 1px solid #f1f1f1;
-
-			.list-left {
-				display: flex;
-				width: 100%;
-
-				.number {
-					font-size: 32rpx;
-					margin-right: 14rpx;
-				}
-
-				.info {
-					width: 100%;
-
-					.title {
-						font-size: 32rpx;
-						color: #222222;
-						font-weight: 500;
-					}
-
-					.addr {
-						width: 400rpx;
-						margin-top: 20rpx;
-						font-size: 20rpx;
-						font-family: PingFang SC;
-						font-weight: 500;
-						color: #999999;
-					}
-				}
-			}
-
-			.image {
-				width: 10%;
-				text-align: center;
-
-				image {
-					width: 50rpx;
-					height: 50rpx;
-				}
-
-				.tip {
-					color: #7f7f7f;
-					font-size: 21rpx;
-				}
-			}
-		}
-	}
-
-	// .red-box {
-	// 	margin: 20rpx 0;
-	// 	height: 521rpx;
-	// 	padding: 40rpx 23rpx 35rpx 23rpx;
-	// 	background-color: #fff;
-
-	// 	.red-nav {
-	// 		justify-content: space-between;
-	// 		margin-top: 23rpx;
-
-	// 		.left-nav {
-	// 			width: 332rpx;
-	// 			height: 392rpx;
-	// 			background: #FFF3F5;
-	// 			background-image: url(../../static/img/m1.png);
-	// 			background-size: 100% 100%;
-	// 		}
-
-	// 		.right-nav {
-	// 			width: 357rpx;
-	// 			height: 392rpx;
-	// 			flex-direction: column;
-	// 			justify-content: space-between;
-
-	// 			// background: #F6F6FF;
-	// 			.right-top-nav {
-	// 				width: 357rpx;
-	// 				height: 204rpx;
-	// 				background: #F6F6FF;
-	// 				background-image: url(../../static/img/m2.png);
-	// 				background-size: 100% 100%;
-	// 			}
-
-	// 			.right-bottom-nav {
-	// 				width: 357rpx;
-	// 				height: 173rpx;
-	// 				justify-content: space-between;
-
-	// 				view {
-	// 					width: 171rpx;
-	// 					height: 173rpx;
-	// 				}
-
-	// 				.left-item {
-	// 					background: #F5EFFE;
-	// 					background-image: url(../../static/img/m3.png);
-	// 					background-size: 100% 100%;
-	// 				}
-
-	// 				.right-item {
-	// 					background: #EDFEFE;
-	// 					background-image: url(../../static/img/m4.png);
-	// 					background-size: 100% 100%;
-	// 				}
-	// 			}
-	// 		}
-	// 	}
-	// }
-	.red-box {
-		margin: 20rpx 0;
-		// height: 393rpx;
-		padding: 30rpx 30rpx 40rpx 30rpx;
-		background-color: #fff;
-
-		.red-nav {
-			padding-top: 25rpx;
-			display: flex;
-			justify-content: space-between;
-
-			.nav-item {
-				width: 330rpx;
-				height: 175rpx;
-				background: #FFF4F2;
-				border-radius: 15rpx;
-
-				image {
-					width: 330rpx;
-					height: 175rpx;
-				}
-			}
-		}
-	}
-
-	.popup_row2 {
-		// margin-top: 108rpx;
-		height: 440rpx;
-		border-radius: 25rpx;
-		width: 100%;
-		padding: 24rpx;
-		background-color: #f8f8f8;
-		z-index: 999;
-
-		.title {
-			border-bottom: 2rpx solid #F2F2F2;
-			color: #E63931;
-			font-size: 32rpx;
-			padding-left: 4rpx;
-			padding-bottom: 16rpx;
-			display: flex;
-			justify-content: space-between;
-
-			// align-items: center;
-			.cancel {
-				margin-left: 52rpx;
-				width: 36rpx;
-				height: 36rpx;
-
-				image {
-					width: 36rpx;
-					height: 36rpx;
-				}
-			}
-		}
-
-		.inpBox {
-			margin-top: 52rpx;
-			border: 2px solid #f2f2f2;
-			padding: 12rpx 24rpx;
-			color: #FF9797;
-			border-radius: 8rpx;
-
-			.input-placeholder {
-				// height: 70rpx;
-				font-size: 32rpx;
-				color: #FF9797;
-			}
-		}
-
-		.inpedit {
-			margin-top: 24rpx;
-			margin-left: 14rpx;
-			font-size: 28rpx;
-			color: #FF9797;
-		}
-
-		.comfirm {
-			display: flex;
-			justify-content: flex-end;
-			margin-top: 54rpx;
-
-			.comfirm1 {
-				padding: 12rpx 24rpx;
-				border-radius: 12rpx;
-				color: #FFFFFF;
-				background-color: #E63931;
-			}
-		}
-	}
-
-	.location-item {
-		z-index: 1000;
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-		border-bottom: 1rpx solid #E7E8EA;
-		padding: 15rpx 0;
-
-		.box-left {
-			display: flex;
-
-			.img01 {
-				width: 8rpx;
-				height: 28rpx;
-				margin-right: 18rpx;
-
-				image {
-					width: 8rpx;
-					height: 28rpx;
-				}
-			}
-
-			.img02 {
-				width: 117rpx;
-				height: 117rpx;
-				border-radius: 50%;
-
-				image {
-					width: 117rpx;
-					height: 117rpx;
-					border-radius: 50%;
-				}
-			}
-
-			.info {
-				margin-left: 16rpx;
-
-				.info-header {
-					display: flex;
-					align-items: center;
-
-					.name {
-						font-size: 32rpx;
-						color: #333333;
-					}
-
-					.distance {
-						margin-left: 25rpx;
-						font-size: 28rpx;
-						color: #303133;
-					}
-
-					.location-icon {
-						margin-left: 10rpx;
-						width: 20rpx;
-						height: 26rpx;
-
-						image {
-							width: 20rpx;
-							height: 26rpx;
-							display: inline;
-						}
-					}
-				}
-
-				.address {
-					font-size: 26rpx;
-					color: #333333;
-					margin-top: 33rpx;
-				}
-			}
-		}
-
-		.box-right {
-			.img {
-				height: 107rpx;
-
-				image {
-					width: 107rpx;
-					height: 107rpx;
-				}
-			}
-
-			.called {
-				margin-right: 16rpx;
-				height: 107rpx;
-				line-height: 107rpx;
-				font-size: 28rpx;
-				color: #CB131C;
-			}
-		}
-	}
-
-	.box-top {
-		height: 36rpx;
-		height: 36rpx;
-		border-radius: 36rpx 36rpx 0 0;
-		// margin: -36rpx auto;
-		margin-bottom: -36rpx;
-		position: relative;
-		top: -36rpx;
-		background-color: #fff;
-		z-index: 9;
-	}
-
-	.top-box {
-		background-color: #fff;
-		flex-wrap: wrap;
-		justify-content: center;
-		padding: 14rpx 0 50rpx;
-		margin-bottom: 20rpx;
-
-		.top-item {
-			margin: 10rpx;
-			width: 327rpx;
-			height: 210rpx;
-			background: linear-gradient(0deg, #FFF0ED, #FFFFFF, #FFF0ED);
-			box-shadow: 0px 0px 20rpx 0px rgba(255, 52, 52, 0.06);
-			border-radius: 10rpx;
-			position: relative;
-			padding: 25rpx 20rpx;
-
-			.item-tit {
-				font-size: 32rpx;
-				font-family: PingFang SC;
-				font-weight: bold;
-				color: #333333;
-			}
-
-			.item-content {
-				font-size: 22rpx;
-				font-family: PingFang SC;
-				font-weight: 500;
-				color: #C3C3C3;
-				padding-top: 10rpx;
-			}
-
-			.item-logo {
-				position: absolute;
-			}
-		}
-	}
-
-	.bottom-box {
-		justify-content: center;
-		flex-wrap: wrap;
-		background-color: #fff;
-
-		.tit {
-			font-size: 28rpx;
-			font-family: PingFang SC;
-			font-weight: bold;
-			color: #333333;
-		}
-
-		.left-content {
-			padding-top: 5rpx;
-			font-size: 20rpx;
-			font-family: PingFang SC;
-			font-weight: 500;
-			max-width: 210rpx;
-			color: #C3C3C3;
-		}
-
-		.btm-left {
-			height: 334rpx;
-			width: 261rpx;
-			// background-color: #009100;
-			padding: 30rpx 20rpx;
-			position: relative;
-
-			.bglogo {
-				position: absolute;
-				width: 189rpx;
-				height: 194rpx;
-				bottom: 23rpx;
-				left: 35rpx;
-			}
-		}
-
-		.btm-right {
-			width: 438rpx;
-			height: 334rpx;
-
-			// background-color: #03A9F4;
-			.b-l-item {
-				width: 438rpx;
-				height: 167rpx;
-				// background-color: red;
-				position: relative;
-				padding: 50rpx 36rpx;
-
-				.right-logo {
-					position: absolute;
-					width: 195rpx;
-					height: 137rpx;
-					top: 6rpx;
-					left: 240rpx;
-				}
-
-				.right-logo-2 {
-					width: 90rpx;
-					height: 130rpx;
-					top: 13rpx;
-					left: 290rpx;
-				}
-			}
-		}
-	}
+<template>
+	<view class="content">
+		<!-- 轮播 -->
+		<view class="carousel-section">
+			<swiper class="carousel" :autoplay="true" :interval="3000" :duration="1000">
+				<swiper-item v-for="item in carouselList" :key="item.id">
+					<image :src="baseURL + item.image"></image>
+				</swiper-item>
+			</swiper>
+		</view>
+
+		<!-- 分类 -->
+		<view class="cate-section flex">
+			<view class="cate-item flex" @click="tocontribution">
+				<view class="img-wrapper flex">
+					<image src="../../static/icon/icon1.png" mode="" class="img1"></image>
+				</view>
+				<view class="item-title">遗体器官捐献</view>
+			</view>
+			<view class="cate-item flex" @click="toapplic">
+				<view class="img-wrapper flex">
+					<image src="../../static/icon/icon2.png" mode="" class="img2"></image>
+				</view>
+				<view class="item-title">造血干细胞捐献</view>
+			</view>
+			<view class="cate-item flex" @click="toOrgan">
+				<view class="img-wrapper flex">
+					<image src="../../static/icon/icon3.png" mode="" class="img3"></image>
+				</view>
+				<view class="item-title">培训报名</view>
+			</view>
+			<view class="cate-item flex" @click="tohelpActi">
+				<view class="img-wrapper flex">
+					<image src="../../static/icon/icon4.png" mode="" class="img4"></image>
+				</view>
+				<view class="item-title">志愿者登记</view>
+			</view>
+		</view>
+
+		<!-- 爱心红会 -->
+		<view class="red-box">
+			<top-title :title="'爱心红会'"></top-title>
+			<view class="red-nav flex">
+				<view class="left-nav" @click="navTo('/pages/donate/donate')"></view>
+				<view class="right-nav flex">
+					<view class="right-top-nav" @click="navTo('/pages/donate/idonate?type=1')"></view>
+					<view class="right-bottom-nav flex">
+						<view class="left-item" @click="navTo('/pages/applic/love')"></view>
+						<view class="right-item" @click="navTo('/pages/applic/science')"></view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<!--  sos急救系统 -->
+		<view class="system">
+			<top-title :title="'救在身边'" navurl="/pages/applic/location" :show_more="true"></top-title>
+			<view class="system-map">
+				<map class="map-box" id="map" show-location :markers="jzsbmarker" :scale="scale" :latitude="latitude4"
+					:longitude="longitude4" ref="map" @markertap="markertap" :show-location="false"></map>
+			</view>
+			<view class="" style="padding-top: 80rpx;">
+				<view v-for="(item,index) in jzsblist" :key="item.id">
+					<view class="location-item">
+						<view class="box-left">
+							<view class="img01">
+								<image src="../../static/img/line01.png" mode=""></image>
+							</view>
+							<view class="img02" v-if="item.info !=null">
+								<image src="../../static/img/002.png" mode=""></image>
+							</view>
+							<view class="img02" v-else>
+								<image src="../../static/img/002.png" mode=""></image>
+							</view>
+							<view class="info">
+								<view class="info-header">
+									<view class="name">
+										救护员{{ index +1 }}
+									</view>
+									<view class="distance">
+										{{ item.num }}km
+									</view>
+									<view class="location-icon">
+										<image src="../../static/img/location-icon.png" mode=""></image>
+									</view>
+								</view>
+								<view class="address">
+									{{ item.address }}
+								</view>
+							</view>
+						</view>
+						<view class="box-right" @click="rescue(item,index)">
+							<view class="img" v-if="!item.is">
+								<image src="../../static/img/rescue.png" mode=""></image>
+							</view>
+							<view class="called" v-if="item.is">
+								已呼叫
+							</view>
+						</view>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="list-box">
+			<view class="system-title">
+				<top-title :title="'救护站'" :navurl="'/pages/applic/aid'" :show_more="true"></top-title>
+			</view>
+			<view id="container">
+				<map class="map-box" id="map" show-location :markers="jhzmarker" :scale="scale" :latitude="latitude4"
+					:longitude="longitude4" ref="map" style="height: 450rpx" @markertap="jhzmarkertap" :show-location="false"></map>
+			</view>
+			<view class="">
+				<view class="list-tpl flex" @click="openAddress(item)" v-for="(item, index) in Mechanism"
+					:key="item.id">
+					<template>
+						<view class="list-left">
+							<view class="info">
+								<view class="title">{{ item.name }}</view>
+								<view class="addr">地址:{{ item.detailed_address }}</view>
+							</view>
+						</view>
+						<view class="image">
+							<image src="../../static/img/img10.png"></image>
+							<view class="tip" v-if="item.space > 999">>999m</view>
+							<view class="tip" v-else>{{ item.space }}m</view>
+						</view>
+					</template>
+				</view>
+				<!-- <uni-load-more :status="loadingType"></uni-load-more> -->
+			</view>
+		</view>
+		<view class="list-box" style="margin-top: 20rpx;">
+			<view class="system-title">
+				<top-title :title="'智能AED'" :navurl="'/pages/applic/aed'" :show_more="true"></top-title>
+			</view>
+			<view id="container">
+				<map class="map-box" id="map" show-location :markers="aedmarker" :scale="scale" :latitude="latitude4"
+					:longitude="longitude4" ref="map" style="height: 450rpx" @markertap="aedmarkertap" :show-location="false"></map>
+			</view>
+			<view class="">
+				<view class="list-tpl flex" @click="openAddress(item)" v-for="(item, index) in AEDList" :key="item.id">
+					<template>
+						<view class="list-left">
+							<view class="info">
+								<view class="title">{{ item.introduction }}</view>
+								<view class="addr">地址:{{ item.address }}</view>
+							</view>
+						</view>
+						<view class="image">
+							<image src="../../static/img/img10.png"></image>
+							<view class="tip" v-if="item.space > 999">>999m</view>
+							<view class="tip" v-else>{{ item.space }}m</view>
+						</view>
+					</template>
+				</view>
+			</view>
+		</view>
+		<uni-popup ref="popup" type="bottom" @click="close">
+			<view class="popup_row">
+				<view class="rows">
+					<view class="rows-item" @click="toGaodeMap">高德地图</view>
+					<view class="rows-item" @click="tobaiDuMap">百度地图</view>
+					<view class="rows-item" @click="totengxunMap">腾讯地图</view>
+				</view>
+			</view>
+		</uni-popup>
+		<uni-popup ref="popup2" type="center" @click="close2">
+			<view class="popup_row2">
+				<view class="title">
+					<view class="title-left">
+						请输入您的手机号,等待救援!
+					</view>
+					<view class="cancel" @click="cancel">
+						<image src="../../static/img/cancel1.png" mode=""></image>
+					</view>
+				</view>
+				<view class="inpBox">
+					<input type="text" value="" placeholder="请输入您的手机号" v-model="to_phone" />
+				</view>
+				<view class="inpedit">
+					可在方框中修改您的手机号
+				</view>
+				<view class="comfirm">
+					<view class="comfirm1" @click="comfirm1()">
+						确认
+					</view>
+				</view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+	import {
+		loadIndexs,
+		bannerlist,
+		getListAED,
+		getDistance,
+		getListMechanism,
+		getdis,
+		tocall
+	} from '@/api/index.js';
+	import {
+		saveUrl,
+		interceptor
+	} from '@/utils/loginUtils.js';
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex';
+	import {
+		userinfo
+	} from '@/api/user.js';
+	import uniPopup from '@/components/uni-popup/uni-popup.vue';
+	import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+	import {
+		getLoca
+	} from '@/utils/wxAuthorized.js';
+	import {
+		getcomAddress
+	} from '@/api/index.js';
+	import topTitle from '../../components/top-title/top-title.vue';
+	export default {
+		components: {
+			uniPopup,
+			uniLoadMore,
+			topTitle
+		},
+		data() {
+			return {
+				name: '',
+				uid: '',
+				phone: '',
+				to_phone: '',
+				jzsbmarker: [],
+				jzsblist: [],
+				jhzmarker: [],
+				aedmarker: [],
+				carouselList: [], //轮播
+				science: [], //文章列表
+				page: 1,
+				limit: 10,
+				AEDList: [],
+				Mechanism: [],
+				latitude2: '',
+				longitude2: '',
+				latitude4: '',
+				longitude4: '',
+				address: '',
+				loadingType: 'more',
+				markerList: [],
+				marker: [],
+				longitude: '121.15829821166992',
+				latitude: '30.044394499237708',
+				longitude1: '120.553638',
+				latitude1: '30.547011',
+				scale: '12', //地图缩放程度
+				scale1: '15',
+				showbox: false,
+				showTEXT: false,
+				addressData: {
+					name: '',
+					mobile: '',
+					latitude: 0, //纬度
+					longitude: 0, //经度
+					address: {
+						province: '',
+						city: '',
+						district: '',
+						detail: ''
+					},
+					area: '',
+					default: false
+				}
+			};
+		},
+		onShow() {
+			saveUrl();
+			// let token = uni.getStorageSync('token');
+			console.log(11, this);
+			if (!this.hasLogin) {
+				// 登录拦截
+				// interceptor();
+				uni.showModal({
+					title: '登录',
+					content: '您未登录,是否马上登陆?',
+					success: e => {
+						if (e.confirm) {
+							interceptor();
+						}
+					},
+					fail: e => {
+						console.log(e);
+					}
+				});
+			} else {
+				this.loadData();
+			}
+		},
+		onLoad() {
+			saveUrl();
+			let obj = this;
+			try {
+				let locationAddress;
+				// #ifdef H5
+				let wxOjb = require('jweixin-module');
+				locationAddress = wxOjb.getLocation;
+				// #endif
+				// #ifdef MP
+				locationAddress = uni.getLocation;
+				// #endif
+				// #ifdef H5
+				wxOjb.ready(() => {
+					console.log('加载完毕注册事件');
+					locationAddress({
+						type: 'gcj02',
+						success: function(res) {
+							console.log('获取经纬度', res);
+							obj.longitude4 = res.longitude;
+							obj.latitude4 = res.latitude;
+							obj.marker = [{
+								longitude: res.longitude,
+								latitude: res.latitude,
+								iconPath: '/static/img/img19.png',
+								width: '45',
+								height: '45'
+							}];
+							obj.loadData();
+						},
+						fail(e) {
+							console.log('失败', e);
+							// window.location.reload();
+							obj.tishi()
+						}
+					});
+				});
+				// #endif
+
+				// #ifdef MP
+				locationAddress({
+					type: 'gcj02',
+					success: function(res) {
+						console.log('获取经纬度', res);
+						obj.longitude4 = res.longitude;
+						obj.latitude4 = res.latitude;
+						obj.marker = [{
+							longitude: res.longitude,
+							latitude: res.latitude,
+							iconPath: '/static/img/img19.png',
+							width: '45',
+							height: '45'
+						}];
+						obj.loadData();
+					},
+					fail(e) {
+						console.log('失败', e);
+						obj.tishi()
+					}
+				});
+				// #endif
+			} catch (e) {
+				let locationAddress;
+				// #ifdef H5
+				let wxOjb = require('jweixin-module');
+				locationAddress = wxOjb.getLocation;
+				// #endif
+				// #ifdef MP
+				locationAddress = uni.getLocation;
+				// #endif
+				// #ifdef H5
+				wxOjb.ready(() => {
+					console.log('加载完毕注册事件');
+					locationAddress({
+						type: 'gcj02',
+						success: function(res) {
+							console.log('获取经纬度', res);
+							obj.longitude4 = res.longitude;
+							obj.latitude4 = res.latitude;
+							obj.loadData();
+						},
+						fail(e) {
+							console.log('失败', e);
+							obj.tishi()
+						}
+					});
+				});
+				// #endif
+				// #ifdef MP
+				locationAddress({
+					type: 'gcj02',
+					success: function(res) {
+						console.log('获取经纬度', res);
+						obj.longitude4 = res.longitude;
+						obj.latitude4 = res.latitude;
+						obj.loadData();
+					},
+					fail(e) {
+						console.log('失败', e);
+						obj.tishi()
+					}
+				});
+				// #endif
+			}
+		},
+		computed: {
+			...mapState('user', ['userInfo', 'baseURL', 'hasLogin']),
+			...mapState(['baseURL']),
+		},
+		// 下拉加载
+		onReachBottom() {
+			this.loadData();
+		},
+		methods: {
+			...mapMutations('user', ['setUserInfo']),
+			tocontribution() {
+				uni.navigateTo({
+					// url: "/pages/applic/contribution"
+					url: '/pages/form/applicationForm'
+				});
+			},
+			//提示
+			tishi() {
+				uni.showModal({
+					title: '提示',
+					content: '获取当前位置信息失败,是否刷新页面。',
+					success: function(res) {
+						if (res.confirm) {
+							window.location.reload();
+							console.log('用户点击确定');
+						} else if (res.cancel) {
+							console.log('用户点击取消');
+						}
+					}
+				})
+			},
+			// 调用高德
+			toGaodeMap() {
+				let latitude = this.latitude2;
+				let longitude = this.longitude2;
+				let address = this.address;
+				console.log('选择高德', latitude, longitude, address);
+				// window.location.href =  'https://uri.amap.com/marker?position=30.537043,120.567191&name=浙江省嘉兴市桐乡市高桥镇高桥大道51号'
+				window.location.href = `https://uri.amap.com/marker?position=${longitude},${latitude}&name=${address}`;
+
+				// window.location.href = `http://uri.amap.com/navigation?from=114.02597366,22.54605355&to=114.029243,22.609562&mode=car&src=nyx_super`
+				// http://uri.amap.com/navigation?from=" + fromLongitude + "," + fromLatitude + "&to="+ longitude + "," + latitude + "&mode=car&src=nyx_super
+			},
+			// 调用腾讯
+			totengxunMap() {
+				let latitude = this.latitude2;
+				let longitude = this.longitude2;
+				let address = this.address;
+				console.log('选择腾讯', latitude, longitude);
+				window.location.href =
+					`http://apis.map.qq.com/uri/v1/marker?marker=coord:${latitude},${longitude};addr:${address}`;
+			},
+			// 调用百度
+			tobaiDuMap() {
+				let latitude = this.latitude2;
+				let longitude = this.longitude2;
+				let latitude6 = this.latitude4;
+				let longitude6 = this.longitude4;
+				let address = this.address;
+				console.log('选择百度', latitude, longitude);
+				console.log('获取当前经纬度', latitude6, longitude6);
+				window.location.href =
+					`http://api.map.baidu.com/direction?origin=latlng:${latitude6},${longitude6}|name:我的位置&destination=${latitude},${longitude}&mode=driving&region=${address}&output=html&src=webapp.baidu.openAPIdemo`;
+				//`bdapp://map/navi?location=${longitude},${latitude}&coord_type=gc02&title=${address}&content=${address}&output=html&src=andr.baidu.openAPIdemo `
+			},
+			// 调用谷歌
+			toGoogleMap() {
+				let latitude = this.latitude2;
+				let longitude = this.longitude2;
+				console.log('选择谷歌', latitude, longitude);
+			},
+			tolocation() {
+				uni.navigateTo({
+					url: '/pages/applic/location'
+				});
+			},
+			toapplic() {
+				uni.navigateTo({
+					url: '/pages/applic/appliSystem'
+				});
+			},
+			tohelpActi() {
+				uni.navigateTo({
+					// url: "/pages/applic/tohelpActi"
+					url: '/pages/form/tovolApply'
+				});
+			},
+			toOrgan() {
+				console.log('kepuxingbaoming');
+				uni.navigateTo({
+					url: '/pages/train/index'
+				});
+			},
+			// 点击图标
+			markertap(e) {
+				console.log(e.target.markerId);
+				this.$refs.popup.open();
+				let obj = this;
+				for (let i = 0; i < obj.marker.length; i++) {
+					if (e.target.markerId == obj.marker[i].id) {
+						obj.latitude2 = obj.marker[i].latitude;
+						obj.longitude2 = obj.marker[i].longitude;
+						obj.address = obj.marker[i].address;
+					}
+				}
+			},
+			aedmarkertap(e) {
+				console.log(e.target.markerId);
+				let obj = this;
+				for (let i = 0; i < obj.aedmarker.length; i++) {
+					if (e.target.markerId == obj.marker[i].id) {
+						obj.latitude2 = obj.marker[i].latitude;
+						obj.longitude2 = obj.marker[i].longitude;
+						obj.address = obj.marker[i].address;
+					}
+				}
+				obj.$refs.popup.open();
+			},
+			jhzmarkertap(e) {
+				console.log(e.target.markerId);
+				let obj = this;
+				for (let i = 0; i < obj.jhzmarker.length; i++) {
+					if (e.target.markerId == obj.marker[i].id) {
+						obj.latitude2 = obj.marker[i].latitude;
+						obj.longitude2 = obj.marker[i].longitude;
+						obj.address = obj.marker[i].address;
+					}
+				}
+				obj.$refs.popup.open();
+			},
+			loadData() {
+				let obj = this;
+				console.log('打印当前经纬度', obj.longitude4, obj.latitude4);
+				userinfo({}).then(({
+					data
+				}) => {
+					obj.setUserInfo(data);
+					loadIndexs({}).then(({
+						data
+					}) => {
+						console.log(data,'index')
+						obj.carouselList = data.banner; //轮播图
+						bannerlist().then(({
+							data
+						}) => {
+							console.log(data);
+							obj.science = data;
+						});
+					});
+				});
+				if (obj.loadingType === 'noMore') {
+					//防止重复加载
+					return;
+				}
+				// 修改当前对象状态为加载中
+				obj.loadingType = 'loading';
+				getListAED({
+					page: 1,
+					limit: 2
+				}).then(({
+					data
+				}) => {
+					console.log(data, 999);
+					// obj.AEDList = data
+					for (let i = 0; i < data.length; i++) {
+						data[i].space = obj.space(obj.latitude4, obj.longitude4, data[i].latitude, data[i].longitude);
+					}
+					obj.AEDList = data;
+					let arr = data.map(item => ({
+						latitude: item.latitude,
+						longitude: item.longitude,
+						iconPath: '/static/img/img014.png',
+						width: '35',
+						height: '35',
+						id: item.id,
+						address: item.address
+					}));
+					obj.aedmarker = obj.marker.concat(arr)
+					console.log(obj.AEDList, '999++++++++++++++++++++++++++');
+					obj.markerList = data;
+				});
+				getListMechanism({
+					page: 1,
+					limit: 2
+				}).then(({
+					data
+				}) => {
+					console.log(data, '机构+++++++++++++')
+					for (let i = 0; i < data.length; i++) {
+						data[i].space = obj.space(obj.latitude4, obj.longitude4, data[i].latitude, data[i].longitude);
+					}
+					let arr = data.map(item => ({
+						latitude: item.latitude,
+						longitude: item.longitude,
+						iconPath: '/static/img/img014.png',
+						width: '35',
+						height: '35',
+						id: item.id,
+						address: item.address
+					}));
+					obj.jhzmarker = obj.marker.concat(arr)
+					obj.Mechanism = data;
+					console.log(obj.Mechanism, '888++++++++++++++++++++++++++');
+				})
+				getdis({
+					lng1: obj.longitude4,
+					lat1: obj.latitude4,
+					page: 1,
+					limit: 2
+				}).then((res) => {
+					let data = res.data;
+					data = data.slice(0,2)
+					console.log('就在身边请求数据', data);
+					console.log('data.phone333', data.phone)
+					data = data.map(d => {
+						return {
+							...d,
+							iscall: true
+						}
+					})
+					obj.jzsblist = data;
+				
+					let arr = data.map(item => ({
+						latitude: item.latitude,
+						longitude: item.longitude,
+						iconPath: '/static/img/img014.png',
+						width: '35',
+						height: '35',
+						id: item.id,
+						address: item.address
+					}))
+					obj.jzsbmarker = obj.marker.concat(arr)
+				}).catch(err => {
+					console.log(err);
+				});
+			},
+			// 导航
+			openAddress(item) {
+				let obj = this;
+				obj.latitude2 = item.latitude;
+				obj.longitude2 = item.longitude;
+				obj.address = item.address;
+				this.$refs.popup.open();
+			},
+			Jump(item) {
+				// console.log(item);
+				if (item.url != '') {
+					window.open(item.url);
+					return;
+				}
+				uni.navigateTo({
+					url: '/pages/applic/info?id=' + item.id
+				});
+			},
+			open() {
+				this.$refs.popup.open();
+			},
+			close() {
+				this.$refs.popup.close();
+			},
+			navTo(url) {
+				uni.navigateTo({
+					url
+				});
+			},
+			space(lat1, lng1, lat2, lng2) {
+				console.log(lat1, lng1, lat2, lng2);
+				var radLat1 = (lat1 * Math.PI) / 180.0;
+				var radLat2 = (lat2 * Math.PI) / 180.0;
+				var a = radLat1 - radLat2;
+				var b = (lng1 * Math.PI) / 180.0 - (lng2 * Math.PI) / 180.0;
+				var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math
+					.pow(Math.sin(b / 2), 2)));
+				s = s * 6378.137;
+				s = Math.round(s * 10000) / 10000;
+				return s * 1000; // 单位米
+			},
+			// 立即救援
+			rescue(item, index) {
+				let obj = this;
+				uni.showModal({
+					content: '是否发起求救?',
+					success: res => {
+						if (res.confirm) {
+							this.$refs.popup2.open(item, index);
+							obj.name = item.name;
+							obj.uid = item.uid;
+							obj.phone = item.phone;
+							obj.iscall = false
+							console.log('点击救援时item.phone:', obj.phone)
+						}
+					}
+				})
+			},
+			comfirm1: function() {
+				let obj = this
+				if (obj.to_phone.toString().trim() == '') {
+					// uni.showModal({
+					// 	title:'输入框为空',
+					// 	// content:JSON.stringify(obj)
+					// })
+				} else {
+					console.log('obj.to_phone1111', obj.to_phone)
+					const reg = /^(\+?0?86-?)?1[\d]\d{9}$/;
+					if (!reg.test(obj.to_phone)) {
+						obj.$api.msg('请填写正确的手机号码');
+						return;
+					}
+					console.log('name:', obj.name)
+					console.log('uid:', obj.uid)
+					console.log('phone', obj.phone)
+					console.log('to_phone', obj.to_phone)
+					console.log('longitude', obj.longitude)
+					console.log('latitude', obj.latitude)
+					console.log('iscall', obj.iscall)
+					tocall({
+						name: obj.name,
+						uid: obj.uid,
+						phone: obj.phone,
+						longitude: obj.longitude4,
+						latitude: obj.latitude4,
+						to_phone: obj.to_phone
+					}).then((data) => {
+						console.log(99988, data)
+						uni.showModal({
+							title: '请耐心等待救援',
+							success: res => {
+								if (res.confirm) {
+									window.location.reload(); //重新刷新页面
+								}
+							}
+						})
+						obj.$refs.popup2.close();
+						obj.iscall = false
+						console.log(123, obj.iscall)
+					})
+				}
+			},
+		}
+	};
+</script>
+
+<style lang="scss">
+	a {
+		text-decoration: none;
+		color: #5f5f5f;
+	}
+
+	.content {
+		// line-height: 1;
+		background-color: #ffabab;
+		// padding-bottom: 60rpx;
+	}
+
+	.popup_row {
+		width: 100%;
+		height: 500rpx;
+		background-color: #ffffff;
+		border-radius: 20rpx;
+		display: flex;
+		justify-content: center;
+		align-items: center;
+
+		.rows {
+			width: 100%;
+			padding: 0 24rpx;
+
+			.rows-item {
+				height: 80rpx;
+				line-height: 80rpx;
+				text-align: center;
+				width: 100%;
+				font-size: 32rpx;
+				color: #303133;
+				// border-bottom: 1rpx solid #f0f0f0;
+			}
+
+			// .row-1 {
+			// 	margin: auto;
+			// 	.first_aid {
+			// 		width: 300rpx;
+			// 		height: 300rpx;
+			// 	}
+			// }
+			// .row-2 {
+			// 	font-size: 38rpx;
+			// 	margin-top: 20rpx;
+			// }
+		}
+	}
+
+	.content {
+		background-color: #f8f8f8;
+		height: 100%;
+
+		/* 头部 轮播图 */
+		.carousel-section {
+			// padding-top: 10px;
+			overflow: hidden;
+			background-color: #fff;
+
+			.carousel {
+				width: 705rpx;
+				height: 375rpx;
+				margin: 0 auto;
+				border-radius: 20rpx;
+				overflow: hidden;
+
+				.carousel-item {
+					width: 100%;
+					height: 100%;
+					padding-left: 30rpx;
+					padding-right: 30rpx;
+					overflow: hidden;
+				}
+
+				image {
+					width: 100%;
+					height: 375rpx;
+					border-radius: 20rpx;
+				}
+			}
+		}
+
+		// 分类
+		.cate-section {
+			justify-content: space-around;
+			background-color: #fff;
+			padding: 46rpx 0 30rpx;
+
+			.cate-item {
+				width: 25%;
+				flex-direction: column;
+				text-align: center;
+				align-items: center;
+				justify-content: center;
+
+				.img-wrapper {
+					width: 100rpx;
+					height: 88rpx;
+					background: #eef4ff;
+					border-radius: 14rpx;
+					position: relative;
+
+					image {
+						position: absolute;
+						left: 50%;
+						top: 50%;
+						transform: translate(-50%, -50%);
+					}
+
+					.img1 {
+						width: 100rpx;
+						height: 84rpx;
+					}
+
+					.img2 {
+						width: 100rpx;
+						height: 85rpx;
+					}
+
+					.img3 {
+						width: 100rpx;
+						height: 84rpx;
+
+					}
+
+					.img4 {
+						width: 100rpx;
+						height: 88rpx;
+					}
+
+				}
+
+				.item-title {
+					margin-top: 15rpx;
+					font-size: 24rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #333333;
+				}
+			}
+		}
+
+		// 红会科普
+		.science-section {
+			width: 100%;
+			background-color: #ffffff;
+			margin-top: 18rpx;
+			padding-top: 30rpx;
+
+			.science-title {
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				padding-bottom: 22rpx;
+
+				.title {
+					width: 285rpx;
+					height: 64rpx;
+					background-color: #ca121e;
+					border-radius: 32rpx;
+					color: #ffffff;
+					font-size: 32rpx;
+					line-height: 64rpx;
+					text-align: center;
+				}
+
+				image {
+					width: 68rpx;
+					height: 43rpx;
+					margin-left: 16rpx;
+					margin-right: 16rpx;
+				}
+			}
+
+			.science-box {
+				padding-left: 15rpx;
+				padding-right: 15rpx;
+				padding-bottom: 20rpx;
+				border-bottom: 1rpx solid #f0f0f0;
+				white-space: nowrap;
+				display: flex;
+				width: 100%;
+
+				// .uni-scroll-view-content{
+				// 	display: flex;
+				// }
+				.science-content {
+					// width: 100%;
+
+					// display: flex;
+					display: -webkit-box;
+
+					.science-item {
+						margin-right: 24rpx;
+						width: 198rpx;
+						display: flex;
+						flex-direction: column;
+						align-items: center;
+						text-align: center;
+
+						image {
+							width: 100%;
+							height: 145rpx;
+						}
+
+						.article-title {
+							width: 198rpx;
+							color: #333;
+							font-size: 25rpx;
+							padding-top: 20rpx;
+							padding-bottom: 16rpx;
+							font-weight: 900;
+						}
+
+						.article-content {
+							width: 198rpx;
+							color: #999999;
+							font-size: 18rpx;
+							overflow: hidden;
+							text-overflow: ellipsis;
+							display: -webkit-box;
+							word-break: break-all;
+							-webkit-box-orient: vertical;
+							-webkit-line-clamp: 2;
+						}
+					}
+				}
+			}
+
+			.science-more {
+				display: flex;
+				justify-content: center;
+				align-items: center;
+				color: #cb131c;
+				font-size: 30rpx;
+				padding-top: 18rpx;
+				padding-bottom: 18rpx;
+
+				image {
+					width: 20rpx;
+					height: 27rpx;
+				}
+			}
+		}
+
+		// sos急救中心
+		.system {
+			width: 100%;
+			background-color: #ffffff;
+			margin-top: 18rpx;
+			padding: 40rpx 30rpx 35rpx 30rpx;
+			margin-bottom: 20rpx;
+
+			.system-map {
+				margin: 30rpx auto 0;
+				width: 689rpx;
+				height: 312rpx;
+				background-color: #ffffff;
+				// padding: 0 30rpx;
+				padding-bottom: 45rpx;
+				// .map-box {
+				// 	width: 100%;
+				// 	height: 312rpx;
+				// 	// background-color: #fff;
+
+				// }
+			}
+		}
+
+		// AED
+		.list-box {
+			padding: 0rpx 25rpx 24rpx;
+			// margin-bottom: 84rpx;
+			background-color: #fff;
+
+			.system-title {
+				display: flex;
+				justify-content: flex-start;
+				align-items: center;
+				height: 130rpx;
+				// padding-bottom: 22rpx;
+				background-color: #ffffff;
+
+				.title {
+					width: 285rpx;
+					height: 64rpx;
+					background-color: #ca121e;
+					border-radius: 32rpx;
+					color: #ffffff;
+					font-size: 32rpx;
+					line-height: 64rpx;
+					text-align: center;
+				}
+
+				.img {
+					width: 68rpx;
+					height: 43rpx;
+					margin-left: 16rpx;
+					margin-right: 16rpx;
+
+					image {
+						width: 68rpx;
+						height: 43rpx;
+					}
+				}
+			}
+		}
+
+		.map-box {
+			width: 100%;
+			height: 366rpx;
+		}
+
+		.list-tpl {
+			background-color: #ffffff;
+			margin: 25rpx 0rpx;
+			padding: 25rpx 25rpx;
+			font-size: 28rpx;
+			border-radius: 15rpx;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			border-bottom: 1px solid #f1f1f1;
+
+			.list-left {
+				display: flex;
+				width: 100%;
+
+				.number {
+					font-size: 32rpx;
+					margin-right: 14rpx;
+				}
+
+				.info {
+					width: 100%;
+
+					.title {
+						font-size: 32rpx;
+						color: #222222;
+						font-weight: 500;
+					}
+
+					.addr {
+						width: 400rpx;
+						margin-top: 20rpx;
+						font-size: 20rpx;
+						font-family: PingFang SC;
+						font-weight: 500;
+						color: #999999;
+					}
+				}
+			}
+
+			.image {
+				width: 10%;
+				text-align: center;
+
+				image {
+					width: 50rpx;
+					height: 50rpx;
+				}
+
+				.tip {
+					color: #7f7f7f;
+					font-size: 21rpx;
+				}
+			}
+		}
+	}
+
+	.red-box {
+		margin: 20rpx 0;
+		height: 521rpx;
+		padding: 40rpx 23rpx 35rpx 23rpx;
+		background-color: #fff;
+
+		.red-nav {
+			justify-content: space-between;
+			margin-top: 23rpx;
+
+			.left-nav {
+				width: 332rpx;
+				height: 392rpx;
+				background: #FFF3F5;
+				background-image: url(../../static/img/m1.png);
+				background-size: 100% 100%;
+			}
+
+			.right-nav {
+				width: 357rpx;
+				height: 392rpx;
+				flex-direction: column;
+				justify-content: space-between;
+
+				// background: #F6F6FF;
+				.right-top-nav {
+					width: 357rpx;
+					height: 204rpx;
+					background: #F6F6FF;
+					background-image: url(../../static/img/m2.png);
+					background-size: 100% 100%;
+				}
+
+				.right-bottom-nav {
+					width: 357rpx;
+					height: 173rpx;
+					justify-content: space-between;
+
+					view {
+						width: 171rpx;
+						height: 173rpx;
+					}
+
+					.left-item {
+						background: #F5EFFE;
+						background-image: url(../../static/img/m3.png);
+						background-size: 100% 100%;
+					}
+
+					.right-item {
+						background: #EDFEFE;
+						background-image: url(../../static/img/m4.png);
+						background-size: 100% 100%;
+					}
+				}
+			}
+		}
+	}
+
+	.popup_row2 {
+		// margin-top: 108rpx;
+		height: 440rpx;
+		border-radius: 25rpx;
+		width: 100%;
+		padding: 24rpx;
+		background-color: #f8f8f8;
+		z-index: 999;
+
+		.title {
+			border-bottom: 2rpx solid #F2F2F2;
+			color: #E63931;
+			font-size: 32rpx;
+			padding-left: 4rpx;
+			padding-bottom: 16rpx;
+			display: flex;
+			justify-content: space-between;
+
+			// align-items: center;
+			.cancel {
+				margin-left: 52rpx;
+				width: 36rpx;
+				height: 36rpx;
+
+				image {
+					width: 36rpx;
+					height: 36rpx;
+				}
+			}
+		}
+
+		.inpBox {
+			margin-top: 52rpx;
+			border: 2px solid #f2f2f2;
+			padding: 12rpx 24rpx;
+			color: #FF9797;
+			border-radius: 8rpx;
+
+			.input-placeholder {
+				// height: 70rpx;
+				font-size: 32rpx;
+				color: #FF9797;
+			}
+		}
+
+		.inpedit {
+			margin-top: 24rpx;
+			margin-left: 14rpx;
+			font-size: 28rpx;
+			color: #FF9797;
+		}
+
+		.comfirm {
+			display: flex;
+			justify-content: flex-end;
+			margin-top: 54rpx;
+
+			.comfirm1 {
+				padding: 12rpx 24rpx;
+				border-radius: 12rpx;
+				color: #FFFFFF;
+				background-color: #E63931;
+			}
+		}
+	}
+
+	.location-item {
+		z-index: 1000;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		border-bottom: 1rpx solid #E7E8EA;
+		padding: 15rpx 0;
+
+		.box-left {
+			display: flex;
+
+			.img01 {
+				width: 8rpx;
+				height: 28rpx;
+				margin-right: 18rpx;
+
+				image {
+					width: 8rpx;
+					height: 28rpx;
+				}
+			}
+
+			.img02 {
+				width: 117rpx;
+				height: 117rpx;
+				border-radius: 50%;
+
+				image {
+					width: 117rpx;
+					height: 117rpx;
+					border-radius: 50%;
+				}
+			}
+
+			.info {
+				margin-left: 16rpx;
+
+				.info-header {
+					display: flex;
+					align-items: center;
+
+					.name {
+						font-size: 32rpx;
+						color: #333333;
+					}
+
+					.distance {
+						margin-left: 25rpx;
+						font-size: 28rpx;
+						color: #303133;
+					}
+
+					.location-icon {
+						margin-left: 10rpx;
+						width: 20rpx;
+						height: 26rpx;
+
+						image {
+							width: 20rpx;
+							height: 26rpx;
+							display: inline;
+						}
+					}
+				}
+
+				.address {
+					font-size: 26rpx;
+					color: #333333;
+					margin-top: 33rpx;
+				}
+			}
+		}
+
+		.box-right {
+			.img {
+				height: 107rpx;
+
+				image {
+					width: 107rpx;
+					height: 107rpx;
+				}
+			}
+
+			.called {
+				margin-right: 16rpx;
+				height: 107rpx;
+				line-height: 107rpx;
+				font-size: 28rpx;
+				color: #CB131C;
+			}
+		}
+	}
 </style>

+ 40 - 2
pages/user/user.vue

@@ -56,6 +56,24 @@
 				<view class="item-right">
 					>
 				</view>
+			</view>
+			<view class="nav-item flex" @click="navTo('/pages/applyHelp/cation')" >
+				<view class="item-left flex">
+					<image src="../../static/icon/i9.png" mode="" class="img4"></image>
+					<view class="title">申请帮扶</view>
+				</view>
+				<view class="item-right">
+					>
+				</view>
+			</view>
+			<view class="nav-item flex" @click="loginout" >
+				<view class="item-left flex">
+					<image src="../../static/icon/i9.png" mode="" class="img4"></image>
+					<view class="title">退出</view>
+				</view>
+				<view class="item-right">
+					>
+				</view>
 			</view>
 		</view>
 		<!-- <view class="tt">
@@ -99,7 +117,8 @@
 	} from '@/utils/loginUtils.js';
 	import { detail_training } from '@/api/train.js';
 	import {
-		userinfo
+		userinfo,
+		logout
 	} from '@/api/user.js';
 	// #ifdef H5
 	import {
@@ -156,7 +175,26 @@
 			...mapState('user', ['hasLogin', 'userInfo'])
 		},
 		methods: {
-			...mapMutations('user', ['setUserInfo']),
+			...mapMutations('user', ['setUserInfo','logout']),
+			loginout() {
+				let obj = this;
+				uni.showModal({
+					content: '确定要退出登录么',
+					success: e => {
+						if (e.confirm) {
+							logout({}).then(e => {
+									obj.logout();
+									uni.switchTab({
+										url: '/pages/index/index'
+									})
+								})
+								.catch(e => {
+									console.log(e);
+								});
+						}
+					}
+				});
+			},
 			tojkjl() {
 				uni.navigateTo({
 					url: '/pages/user/jkjl'

+ 70 - 72
uni.scss

@@ -1,72 +1,70 @@
-@import 'uview-ui/theme.scss';
-/* 页面左右间距 */
-$page-row-spacing: 30rpx;
-//页面基础颜色
-$page-color-base: #f8f8f8;//页面背景颜色
-$page-color-light: #f8f6fc;
-// 主题颜色
-$base-color: #FB4849;//项目颜色
-$box-shadow-color:#457DBF;//阴影颜色
-$font-color:#457DBF;//字体颜色
-$font-color-spec: #457DBF;//可操作文字颜色
-$background-color:#457DBF;//按钮背景颜色
-$motif-color: #FF727E;
-// 小图标大小
-$uni-img-size-base:36rpx;
-/* 文字尺寸 */
-$font-sm: 24rpx;
-$font-base: 28rpx;
-$font-lg: 32rpx;
-/*文字颜色*/
-$font-color-dark: #303133;//黑
-$font-color-base: #606266;//基础
-$font-color-light: #909399;//灰色
-$font-color-disabled: #c0c4cc;//禁用
-/* 边框颜色 */
-$border-color-dark: #dcdfe6;//黑
-$border-color-base: #e4e7ed;//基础灰
-$border-color-light: #ebeef5;//亮灰
-// uni自带边框颜色
-$uni-border-color:#ebeef5;
-/*颜色*/
-$color-yellow: #fd5b23;
-$color-gray: #999999;
-$color-green: #5dbc7c;
-$color-red: #dd524d;
-$color-red1: #FC4141;
-/* 图片加载中颜色 */
-$image-bg-color: #eee;
-/* 行为相关颜色 */
-$uni-color-primary: #dd524d;
-$uni-color-success: #4cd964;
-$uni-color-warning: #f0ad4e;
-$uni-color-error: #dd524d;
-// 提交框阴影
-$box-shadow: 0rpx 0rpx 10rpx 10rpx #f3f3f3;
-// 圆角
-$border-radius-sm: 15rpx;
-// 渐变背景颜色
-$bg-green-gradual: linear-gradient(#5dbc7c, #71d094);
-/* 功能栏字体大小 */
-%font-title {
-	font-size: $font-lg + 2rpx;
-	color: $font-color-dark;
-	line-height: 1;
-	font-weight: bold;
-}
-// 功能栏字体包裹框
-%font-title-box {
-	flex: 1;
-	display: flex;
-	flex-direction: column;
-}
-/*功能栏左侧小图标*/
-%f-left-icon {
-	height: $font-lg + 2rpx;
-	width: 8rpx;
-	background-image: $bg-green-gradual;
-	margin-right: 10rpx;
-	border-radius: 10rpx;
-}
-
-$m-color: #FA7E67;
+@import 'uview-ui/theme.scss';
+/* 页面左右间距 */
+$page-row-spacing: 30rpx;
+//页面基础颜色
+$page-color-base: #f8f8f8;//页面背景颜色
+$page-color-light: #f8f6fc;
+// 主题颜色
+$base-color: #FB4849 ;//项目颜色
+$box-shadow-color:#457DBF ;//阴影颜色
+$font-color:#457DBF ;//字体颜色
+$font-color-spec: #457DBF ;//可操作文字颜色
+$background-color: #457DBF ;//按钮背景颜色
+$motif-color: #FF727E;
+// 小图标大小
+$uni-img-size-base:36rpx;
+/* 文字尺寸 */
+$font-sm: 24rpx ;
+$font-base: 28rpx ;
+$font-lg: 32rpx ;
+/*文字颜色*/
+$font-color-dark: #303133 ;//黑
+$font-color-base: #606266 ;//基础
+$font-color-light: #909399 ;//灰色
+$font-color-disabled: #c0c4cc ;//禁用
+/* 边框颜色 */
+$border-color-dark: #dcdfe6 ;//黑
+$border-color-base: #e4e7ed ;//基础灰
+$border-color-light: #ebeef5 ;//亮灰
+// uni自带边框颜色
+$uni-border-color:#ebeef5 ;
+/*颜色*/
+$color-yellow: #fd5b23;
+$color-gray: #999999;
+$color-green: #5dbc7c;
+$color-red: #dd524d;
+$color-red1: #FC4141;
+/* 图片加载中颜色 */
+$image-bg-color: #eee;
+/* 行为相关颜色 */
+$uni-color-primary: #dd524d;
+$uni-color-success: #4cd964;
+$uni-color-warning: #f0ad4e;
+$uni-color-error: #dd524d;
+// 提交框阴影
+$box-shadow: 0rpx 0rpx 10rpx 10rpx #f3f3f3;
+// 圆角
+$border-radius-sm: 15rpx;
+// 渐变背景颜色
+$bg-green-gradual: linear-gradient(#5dbc7c, #71d094);
+/* 功能栏字体大小 */
+%font-title {
+	font-size: $font-lg + 2rpx;
+	color: $font-color-dark;
+	line-height: 1;
+	font-weight: bold;
+}
+// 功能栏字体包裹框
+%font-title-box {
+	flex: 1;
+	display: flex;
+	flex-direction: column;
+}
+/*功能栏左侧小图标*/
+%f-left-icon {
+	height: $font-lg + 2rpx;
+	width: 8rpx;
+	background-image: $bg-green-gradual;
+	margin-right: 10rpx;
+	border-radius: 10rpx;
+}

+ 3 - 2
utils/newRequest.js

@@ -62,8 +62,9 @@ let service = {
 				method: requestData.method || 'GET',
 				data: requestData.data,
 				header: data.header || service.header,
-				success: res => {
-					if (res.statusCode == 200) {
+				success: res => {
+					console.log(res,'newrequest res+++++++++++++++++')
+					if (res.statusCode == 200 || res.statusCode == 401) {
 						try {
 							resolve(service.response.success(res));
 						} catch (e) {

+ 4 - 2
utils/request.js

@@ -9,8 +9,10 @@ import {
 // 请求完成后拦截
 service.interceptors.response(
 	response => {
-		try {
-			let res = response.data;
+		try {
+			console.log(response,'response+++++++++++++++')
+			let res = response.data;
+			console.log(res.code,'res.code++++++++++++++++++')
 			// 解析字符串为数字
 			if (res.code != 1) {
 				if (res.code == 401) {

+ 1 - 1
utils/wxAuthorized.js

@@ -91,7 +91,7 @@ export function weixindata(config) {
 		appId = data.appId;
 		// 微信信息配置
 		weixinObj.config({
-			debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
+			debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
 			appId: data.appId, // 必填,企业号的唯一标识,此处填写企业号corpid
 			timestamp: data.timestamp, // 必填,生成签名的时间戳
 			nonceStr: data.nonceStr, // 必填,生成签名的随机串