lhl 3 gadi atpakaļ
vecāks
revīzija
3647bdf87e
100 mainītis faili ar 4678 papildinājumiem un 1087 dzēšanām
  1. 27 0
      api/ask.js
  2. 8 0
      api/index.js
  3. 36 0
      api/mourn.js
  4. 8 0
      api/order.js
  5. 5 1
      components/espempty.vue
  6. 51 23
      components/top-title/top-title.vue
  7. 20 6
      main.js
  8. 5 1
      manifest.json
  9. 99 12
      pages.json
  10. 555 0
      pages/applic/aed.vue
  11. 559 0
      pages/applic/aid.vue
  12. 507 265
      pages/applic/contribution.vue
  13. 1 1
      pages/applic/location.vue
  14. 1 1
      pages/applic/science.vue
  15. 10 4
      pages/article/detail.vue
  16. 62 2
      pages/article/list.vue
  17. 41 9
      pages/article/lists.vue
  18. 510 467
      pages/category/category.vue
  19. 5 5
      pages/form/donaSuccess.vue
  20. 214 0
      pages/form/loveitem.vue
  21. 335 279
      pages/index/index.vue
  22. 463 0
      pages/mourn/detail.vue
  23. 302 0
      pages/mourn/index.vue
  24. 5 5
      pages/redirect/redirect.vue
  25. 259 0
      pages/share/search.vue
  26. 582 0
      pages/share/subsidy.vue
  27. 5 5
      pages/user/user.vue
  28. BIN
      static/audio/bg-music.mp3
  29. BIN
      static/icon/blackf.png
  30. BIN
      static/icon/delimg.png
  31. BIN
      static/icon/search.png
  32. BIN
      static/images/listtop.jpg
  33. BIN
      static/img/bz-bg.png
  34. BIN
      static/img/huak.png
  35. BIN
      static/img/mourn-bg.png
  36. BIN
      static/img/mourn-btm.png
  37. BIN
      static/img/online-tit.png
  38. BIN
      static/img/online00.png
  39. BIN
      static/img/online01.png
  40. BIN
      static/img/online02.png
  41. BIN
      static/img/online03.png
  42. BIN
      static/img/up-img.png
  43. 2 0
      store/index.js
  44. 1 1
      unpackage/dist/build/h5/index.html
  45. BIN
      unpackage/dist/build/h5/static/audio/bg-music.mp3
  46. BIN
      unpackage/dist/build/h5/static/icon/blackf.png
  47. BIN
      unpackage/dist/build/h5/static/icon/delimg.png
  48. BIN
      unpackage/dist/build/h5/static/icon/index1.png
  49. BIN
      unpackage/dist/build/h5/static/icon/index10.png
  50. BIN
      unpackage/dist/build/h5/static/icon/index11.png
  51. BIN
      unpackage/dist/build/h5/static/icon/index2.png
  52. BIN
      unpackage/dist/build/h5/static/icon/index3.png
  53. BIN
      unpackage/dist/build/h5/static/icon/index4.png
  54. BIN
      unpackage/dist/build/h5/static/icon/index5.png
  55. BIN
      unpackage/dist/build/h5/static/icon/index6.png
  56. BIN
      unpackage/dist/build/h5/static/icon/index7.png
  57. BIN
      unpackage/dist/build/h5/static/icon/index8.png
  58. BIN
      unpackage/dist/build/h5/static/icon/index9.png
  59. BIN
      unpackage/dist/build/h5/static/icon/search.png
  60. BIN
      unpackage/dist/build/h5/static/images/listtop.jpg
  61. BIN
      unpackage/dist/build/h5/static/img/bz-bg.9e05be61.png
  62. BIN
      unpackage/dist/build/h5/static/img/bz-bg.png
  63. BIN
      unpackage/dist/build/h5/static/img/huak.34230231.png
  64. BIN
      unpackage/dist/build/h5/static/img/huak.png
  65. BIN
      unpackage/dist/build/h5/static/img/i7.7074ee26.png
  66. BIN
      unpackage/dist/build/h5/static/img/icon1.b77b3f81.png
  67. BIN
      unpackage/dist/build/h5/static/img/icon3.154daed2.png
  68. BIN
      unpackage/dist/build/h5/static/img/icon4.b5d7039a.png
  69. BIN
      unpackage/dist/build/h5/static/img/listtop.636363df.jpg
  70. BIN
      unpackage/dist/build/h5/static/img/mourn-bg.b3b850b0.png
  71. BIN
      unpackage/dist/build/h5/static/img/mourn-bg.png
  72. BIN
      unpackage/dist/build/h5/static/img/mourn-btm.69a4cc9c.png
  73. BIN
      unpackage/dist/build/h5/static/img/mourn-btm.png
  74. BIN
      unpackage/dist/build/h5/static/img/online-tit.26147048.png
  75. BIN
      unpackage/dist/build/h5/static/img/online-tit.png
  76. BIN
      unpackage/dist/build/h5/static/img/online00.56174202.png
  77. BIN
      unpackage/dist/build/h5/static/img/online00.png
  78. BIN
      unpackage/dist/build/h5/static/img/online01.76c05afd.png
  79. BIN
      unpackage/dist/build/h5/static/img/online01.png
  80. BIN
      unpackage/dist/build/h5/static/img/online02.3fea40f4.png
  81. BIN
      unpackage/dist/build/h5/static/img/online02.png
  82. BIN
      unpackage/dist/build/h5/static/img/online03.c62473fe.png
  83. BIN
      unpackage/dist/build/h5/static/img/online03.png
  84. BIN
      unpackage/dist/build/h5/static/img/up-img.png
  85. BIN
      unpackage/dist/build/h5/static/img/zffw.da8fd5d1.jpg
  86. BIN
      unpackage/dist/build/h5/static/img/zffw.jpg
  87. 0 0
      unpackage/dist/build/h5/static/index.a5c69d49.css
  88. 0 0
      unpackage/dist/build/h5/static/index.f4fc78fe.css
  89. 0 0
      unpackage/dist/build/h5/static/js/chunk-vendors.2289ab77.js
  90. 0 0
      unpackage/dist/build/h5/static/js/chunk-vendors.5609f4ed.js
  91. 0 0
      unpackage/dist/build/h5/static/js/index.7618f6cb.js
  92. 0 0
      unpackage/dist/build/h5/static/js/index.d748940b.js
  93. 0 0
      unpackage/dist/build/h5/static/js/pages-applic-aed.f19ac380.js
  94. 0 0
      unpackage/dist/build/h5/static/js/pages-applic-aed~pages-applic-aid~pages-applic-contribution~pages-applic-helprecords~pages-applic-lo~7aea9a4a.7db0df8b.js
  95. 0 0
      unpackage/dist/build/h5/static/js/pages-applic-aed~pages-applic-aid~pages-applic-location.db953604.js
  96. 0 0
      unpackage/dist/build/h5/static/js/pages-applic-aid.eaeb61ec.js
  97. 0 0
      unpackage/dist/build/h5/static/js/pages-applic-appliSystem.3180282c.js
  98. 0 0
      unpackage/dist/build/h5/static/js/pages-applic-appliSystem.385dca3f.js
  99. 0 0
      unpackage/dist/build/h5/static/js/pages-applic-applic.3ef53f37.js
  100. 0 0
      unpackage/dist/build/h5/static/js/pages-applic-applic.67d017c3.js

+ 27 - 0
api/ask.js

@@ -115,4 +115,31 @@ export function getCertificate(data) {
 		method: 'get',
 		data
 	});
+}
+
+// 获取code  api/register/verify
+export function verify(data) {
+	return request({
+		url: '/api/register/verify',
+		method: 'post',
+		data
+	});
+}
+
+// 报名孕妇求助
+export function sub_list(data) {
+	return request({
+		url: '/api/sub_list',
+		method: 'post',
+		data
+	});
+}
+
+// 查询进度
+export function search(data) {
+	return request({
+		url: '/api/check',
+		method: 'post',
+		data
+	});
 }

+ 8 - 0
api/index.js

@@ -16,6 +16,14 @@ export function bannerlist(data) {
 		method: 'get',
 		data
 	});
+}
+
+export function crtItemList(data,id) {
+	return request({
+		url: '/api/article/list/' + id,
+		method: 'get',
+		data
+	});
 }
 // 获取博爱项目文章列表
 export function itemList(data) {

+ 36 - 0
api/mourn.js

@@ -0,0 +1,36 @@
+import request from '@/utils/request'
+// 获取器官捐献哀悼列表
+export function getMournList(data) {
+	return request({
+		url: '/api/mourn/page',
+		method: 'get',
+		data
+	});
+}
+
+// 获取个人悼念详情
+export function getMournDetail(data) {
+	return request({
+		url: '/api/mourn/lst',
+		method: 'get',
+		data
+	})
+}
+
+// 个人祭拜
+export function mournGive(data) {
+	return request({
+		url: '/api/mourn/give',
+		method: 'get',
+		data
+	})
+}
+
+// 获取zong哀数
+export function getMournNum(data) {
+	return request({
+		url: '/api/mourn/gets',
+		method: 'get',
+		params: data
+	})
+}

+ 8 - 0
api/order.js

@@ -67,4 +67,12 @@ export function orderTake(data) {
 		method: 'post',
 		data
 	});
+}
+
+export function loveList(data) {
+	return request({
+		url: '/api/bulletin',
+		method: 'get',
+		data
+	});
 }

+ 5 - 1
components/espempty.vue

@@ -2,7 +2,7 @@
 	<view class="empty-content">
 		<image class="empty-content-image" :src="setSrc" mode="aspectFit"></image>
 		<view class="empty-info">
-			救援列表为空
+			{{tit}}
 		</view>
 	</view>
 </template>
@@ -14,6 +14,10 @@
 				type: String,
 				default: 'espempty'
 			},
+			tit: {
+				type: String,
+				default: '救援列表为空'
+			}
 		},
 
 		data() {

+ 51 - 23
components/top-title/top-title.vue

@@ -1,40 +1,64 @@
-<template>
+<template>
 	<view class="top-title">
-		<view class="title-before">
+		<view class="" style="justify-self: flex-start;">
+			<view class="title-before"></view>
+			<view class="title">{{title}}</view>
 		</view>
-		<view class="title">{{title}}</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		name:"top-title",
-		data() {
-			return {
-				
-			};
+		<view class="gd" @click="navTo" v-if="show_more">
+			更多 >
+		</view>
+	</view>
+</template>
+
+<script>
+	export default {
+		name: "top-title",
+		data() {
+			return {
+
+			};
 		},
 		props: {
 			title: {
 				type: String,
 				default: ''
+			},
+			navurl: {
+				type: String,
+				default: ''
+			},
+			show_more: {
+				type: Boolean,
+				default: false
 			}
-		}
-	}
-</script>
-
-<style lang="scss">
-.top-title {
+		},
+		methods: {
+			navTo() {
+				console.log('dianji')
+				uni.navigateTo({
+					url: this.navurl
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss">
+	.top-title {
+
+		width: 100%;
 		display: flex;
 		align-items: center;
+		justify-content: space-between;
 		.title-before {
 			display: inline-block;
-			background-color: $m-color;
+			background-color: #F0433C;
 			width: 10rpx;
 			height: 30rpx;
 			margin-right: 16rpx;
-			
+			border-radius: 4rpx;
 		}
+
 		.title {
 			display: inline-block;
 			font-size: 32rpx;
@@ -42,8 +66,10 @@
 			font-weight: bold;
 			color: #333333;
 		}
+
 		.title-after {
 			display: inline-block;
+
 			.a1 {
 				width: 8rpx;
 				height: 8rpx;
@@ -53,6 +79,7 @@
 				margin-top: 16rpx;
 				margin-left: 25rpx;
 			}
+
 			.a2 {
 				width: 28rpx;
 				height: 4rpx;
@@ -60,8 +87,9 @@
 				opacity: 0.1;
 				border-radius: 2rpx;
 				margin-bottom: 6rpx;
-				
+
 			}
+
 			.a3 {
 				width: 28rpx;
 				height: 4rpx;
@@ -71,5 +99,5 @@
 				margin-left: 11rpx;
 			}
 		}
-	}
+	}
 </style>

+ 20 - 6
main.js

@@ -50,16 +50,30 @@ Vue.prototype.ScanAudio = function(e){
 			console.log('暂停播放')
 		}
 }
-// Vue.prototype.stopAudio = function(){
-//         music.pause(); //暂停播放
-// 				console.log('暂停播放')
-// }
-
+var musict = null
+musict = uni.createInnerAudioContext();
+musict.autoplay = false;
+musict.loop = true;
+musict.src= "./static/audio/bg-music.mp3"; //选择播放的音频
+function playMusic(e){
+	let player = e;
+		if (player == true ) {
+			musict.play(); //执行播放
+			console.log('执行播放1', player)
+		} else {
+			musict.pause(); //暂停播放
+			console.log('暂停播放')
+		}
+}
+musict.onPlay(() => {
+  console.log('开始播放');
+  store.state.isPlay = true
+});
 
 Vue.config.productionTip = false
 Vue.prototype.$fire = new Vue();
 Vue.prototype.$store = store;
-Vue.prototype.$api = {msg, prePage};
+Vue.prototype.$api = {msg, prePage,playMusic};
 
 App.mpType = 'app'
 

+ 5 - 1
manifest.json

@@ -98,7 +98,11 @@
         // "^/api" : ""
         "template" : "",
         "sdkConfigs" : {
-            "maps" : {}
+            "maps" : {
+                "qqmap" : {
+                    "key" : "VYZBZ-P2TRG-RMIQ3-ITAIN-2DKBK-CKFQQ"
+                }
+            }
         }
     }
 }

+ 99 - 12
pages.json

@@ -46,6 +46,19 @@
 				"navigationBarTextStyle": "white",
 				"navigationBarTitleText": "温岭市红十字会爱心捐赠"
 			}
+		},
+		{
+			"path": "pages/form/loveitem",
+			"style": {
+				// #ifndef MP
+				"app-plus": {
+					"titleNView": false
+				},
+				// #endif
+				"navigationBarBackgroundColor": "#457DBF",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "爱心项目"
+			}
 		},
 		// donaSuccess
 		{
@@ -202,6 +215,32 @@
 				"navigationBarTextStyle": "white",
 				"navigationBarTitleText": "定位"
 			}
+		},
+		{
+			"path": "pages/applic/aid",
+			"style": {
+				// #ifndef MP
+				"app-plus": {
+					"titleNView": false
+				},
+				// #endif
+				"navigationBarBackgroundColor": "#457DBF",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "救护站"
+			}
+		},
+		{
+			"path": "pages/applic/aed",
+			"style": {
+				// #ifndef MP
+				"app-plus": {
+					"titleNView": false
+				},
+				// #endif
+				"navigationBarBackgroundColor": "#457DBF",
+				"navigationBarTextStyle": "white",
+				"navigationBarTitleText": "智能AED"
+			}
 		},
 		{
 			"path": "pages/applic/tocontrilist",
@@ -745,6 +784,54 @@
 				// #endif
 				"navigationBarTitleText": "电子名片"
 			
+			}
+		},
+		{
+			"path": "pages/share/subsidy",
+			"style": {
+				// #ifndef MP
+				"app-plus": {
+					"titleNView": false
+				},
+				// #endif
+				"navigationBarTitleText": "补助申请"
+			
+			}
+		},
+		{
+			"path": "pages/share/search",
+			"style": {
+				// #ifndef MP
+				"app-plus": {
+					"titleNView": false
+				},
+				// #endif
+				"navigationBarTitleText": "申请进度查询"
+			
+			}
+		},
+		{
+			"path": "pages/mourn/index",
+			"style": {
+				// #ifndef MP
+				"app-plus": {
+					"titleNView": false
+				},
+				// #endif
+				"navigationBarTitleText": "网上缅怀"
+			
+			}
+		},
+		{
+			"path": "pages/mourn/detail",
+			"style": {
+				// #ifndef MP
+				"app-plus": {
+					"titleNView": false
+				},
+				// #endif
+				"navigationBarTitleText": "网上缅怀"
+			
 			}
 		}
 	],
@@ -766,18 +853,18 @@
 				"selectedIconPath": "static/tabBar/home-action.png",
 				"text": "首页"
 			},
-			{
-				"pagePath": "pages/category/category",
-				"iconPath": "static/tabBar/dengji.png",
-				"selectedIconPath": "static/tabBar/dengji-action.png",
-				"text": "救护员登记"
-			},
-			{
-				"pagePath": "pages/cart/cart",
-				"iconPath": "static/tabBar/zuce.png",
-				"selectedIconPath": "static/tabBar/zuce-action.png",
-				"text": "会员报名"
-			},
+			// {
+			// 	"pagePath": "pages/category/category",
+			// 	"iconPath": "static/tabBar/dengji.png",
+			// 	"selectedIconPath": "static/tabBar/dengji-action.png",
+			// 	"text": "救护员登记"
+			// },
+			// {
+			// 	"pagePath": "pages/cart/cart",
+			// 	"iconPath": "static/tabBar/zuce.png",
+			// 	"selectedIconPath": "static/tabBar/zuce-action.png",
+			// 	"text": "会员报名"
+			// },
 			{
 				"pagePath": "pages/user/user",
 				"iconPath": "static/tabBar/user.png",

+ 555 - 0
pages/applic/aed.vue

@@ -0,0 +1,555 @@
+<template>
+	<view class="content">
+		<view id="map" class="map">
+			<map @updated='mapChange' id="map_1" ref='map_1' style="width:750rpx; height: 600rpx" :latitude="latitude"
+				:longitude="longitude" :markers="aedmarker"></map>
+		</view>
+		<scroll-view scroll-y="true" class="scroll-wrapper" :style="{'height': height}" @scrolltolower="loadData">
+			<espempty v-if="loaded && AEDList.length === 0" :tit="'智能AED列表为空'"></espempty>
+			<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>
+			<uni-load-more :status="loadtype"></uni-load-more>
+		</scroll-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>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex';
+	import espempty from '@/components/espempty';
+	import uniPopup from '@/components/uni-popup/uni-popup.vue';
+	import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+	import {
+		getdis,
+		tocall,
+		getListAED
+	} from '@/api/index.js';
+	import {
+		userinfo
+	} from '@/api/user.js';
+	import {
+		getcomAddress
+	} from '@/api/index.js';
+	export default {
+		components: {
+			uniPopup,
+			espempty,
+			uniLoadMore
+		},
+		//相关配置参数
+		data() {
+			return {
+				aedmarker: [],
+				loaded: false,
+				loadtype: 'more',
+				page: 1,
+				limit: 20,
+				AEDList: [],
+				height: '',
+				list: [],
+				latitude: '',
+				longitude: '',
+				current: 0,
+				name: '',
+				uid: '',
+				name: '',
+				phone: '',
+				to_phone: '',
+				marker: [],
+				specificAdd: '',
+				addressData: {
+					name: '',
+					mobile: '',
+					latitude: 0, //纬度
+					longitude: 0, //经度
+					address: {
+						province: '',
+						city: '',
+						district: '',
+						detail: '',
+					},
+					area: '',
+					default: false
+				},
+			}
+		},
+		onReady(res) {
+			var _this = this;
+			uni.getSystemInfo({
+				success: resu => {
+					const query = uni.createSelectorQuery();
+					query.select('.scroll-wrapper').boundingClientRect();
+					query.exec(function(res) {
+						console.log(res, 'ddddddddddddd');
+						_this.height = resu.windowHeight - res[0].top + 'px';
+						console.log('打印页面的剩余高度', _this.height);
+					});
+				},
+				fail: res => {}
+			});
+		},
+		onLoad() {
+			let obj = this;
+			console.log('开始加载事件');
+			// obj.loadBaseData();
+			// obj.loadData();
+			try {
+				let locationAddress
+				// #ifdef H5
+				let wxOjb = require('jweixin-module');
+				locationAddress = wxOjb.getLocation;
+				// #endif
+				// #ifdef MP
+				locationAddress = uni.getLocation;
+				// #endif
+				wxOjb.ready(() => {
+					console.log('加载完毕注册事件');
+					locationAddress({
+						type: 'gcj02',
+						success: function(res) {
+							console.log('获取经纬度', res);
+							obj.longitude = res.longitude
+							obj.latitude = res.latitude
+							obj.marker = [{
+								latitude: obj.latitude,
+								longitude: obj.longitude,
+								iconPath: '/static/img/img19.png',
+								width: '45',
+								height: '45',
+							}, ]
+							obj.loadData();
+						},
+						fail(e) {
+							console.log('失败', e);
+							window.location.reload();
+						}
+					});
+				})
+
+			} catch (e) {
+				console.log(e);
+				let locationAddress
+				// #ifdef H5
+				let wxOjb = require('jweixin-module');
+				locationAddress = wxOjb.getLocation;
+				// #endif
+				// #ifdef MP
+				locationAddress = uni.getLocation;
+				// #endif
+				wxOjb.ready(() => {
+					console.log('加载完毕注册事件');
+
+					locationAddress({
+						type: 'gcj02',
+						success: function(res) {
+							console.log('获取经纬度1', res);
+							obj.longitude = res.longitude
+							obj.latitude = res.latitude
+							obj.loadData();
+						},
+						fail(e) {
+							console.log('失败', e);
+						}
+					});
+				})
+
+			}
+		},
+		computed: {
+			...mapState('user', ['hasLogin', 'userInfo'])
+		},
+		methods: {
+			...mapMutations('user', ['setUserInfo']),
+			// 地图渲染完毕事件
+			mapChange(e) {
+				console.log(e);
+			},
+			// 载入数据
+			async loadData() {
+				let obj = this;
+				if(obj.loadtype == 'loading' || obj.loadtype == 'noMore') {
+					return 
+				}
+				obj.loadtype = 'loading'
+				getListAED({
+					page: obj.page,
+					limit: obj.limit,
+				}).then(({data}) => {
+					console.log(data, 999);
+					for (let i = 0; i < data.length; i++) {
+						data[i].space = obj.space(obj.latitude, obj.longitude, data[i].latitude, data[i].longitude);
+					}
+					obj.AEDList = obj.AEDList.concat(data);
+					console.log(obj.AEDList, 'obj.AEDList+++++++');
+					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
+					}));
+					if(obj.page == 1) {
+						obj.aedmarker = obj.marker.concat(arr)
+					}else {
+						obj.aedmarker = obj.aedmarker.concat(arr)
+					}
+					
+					// obj.markerList = data;
+					obj.loaded = true
+					obj.page++;
+					if (obj.limit == data.length) {
+						obj.loadtype = 'more';
+						
+					} else {
+						obj.loadtype = 'noMore';
+					}
+				})
+			},
+			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; // 单位米
+			},
+			openAddress(item) {
+				let obj = this;
+				obj.latitude2 = item.latitude;
+				obj.longitude2 = item.longitude;
+				obj.address = item.address;
+				this.$refs.popup.open();
+			},
+			// 调用高德
+			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=${longitude},${latitude}&name=${address}`;
+			},
+			// 调用腾讯
+			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.latitude;
+				let longitude6 = this.longitude;
+				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 `
+			},
+			
+		}
+	}
+</script>
+
+<style lang="scss">
+	body,
+	page {
+		height: 100%;
+		width: 100%;
+		background-color: #fff;
+	}
+
+	.content {
+		height: 100%;
+		width: 100%;
+		background-color: #fff;
+	}
+
+	.map {
+		width: 100%;
+		height: 600rpx;
+	}
+
+	/* #ifdef H5 */
+	.location {
+		overflow-y: scroll; //溢出就滑动起来
+		// z-index: 990;
+		position: fixed;
+		bottom: 0;
+		height: 55%;
+		width: 100%;
+		background-color: #fff;
+		padding: 24rpx;
+
+		//搜索框
+		.Search-box {
+			// z-index: 999;
+			height: 80rpx;
+			// position: fixed;
+			// 		top: 0;
+			// 		left: 0;
+			// 		width: 100%;
+			// background: #FFFFFF;
+			// padding-top: 10rpx;
+			padding-right: 24rpx;
+			padding-left: 24rpx;
+
+			.Search-box-sort {
+				float: left;
+				margin-left: 32rpx;
+				margin-right: 19rpx;
+
+				.sort-text {
+					width: 57rpx;
+					height: 29rpx;
+					font-size: 30rpx;
+					font-weight: 500;
+					color: rgba(51, 51, 51, 1);
+					line-height: 58rpx;
+					margin-right: 19rpx;
+				}
+
+				.sort-img {
+					width: 21rpx;
+					height: 11rpx;
+					margin-bottom: 4rpx;
+				}
+			}
+
+			.Search-box-size {
+				// width:70%;
+				height: 58rpx;
+				border-radius: 32rpx;
+				background-color: #f1f1f1;
+				padding-left: 36rpx;
+				display: flex;
+				align-items: center;
+
+				.box-img {
+					height: 32rpx;
+					width: 32rpx;
+					margin-right: 16rpx;
+				}
+
+				// .box-right{
+				// 	height: 58rpx;
+				// 	// width: 100%;
+				// 	background-color: pink;
+				// }
+
+				.box-word {
+					width: 100%;
+					font-size: 26rpx;
+					font-weight: 500;
+					color: rgba(205, 203, 203, 1);
+					line-height: 55rpx;
+				}
+			}
+		}
+
+		.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;
+				}
+			}
+		}
+	}
+
+	/* #endif */
+
+	.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;
+			}
+		}
+	}
+	.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;
+			}
+		}
+	}
+</style>

+ 559 - 0
pages/applic/aid.vue

@@ -0,0 +1,559 @@
+<template>
+	<view class="content">
+		<view id="map" class="map">
+			<map @updated='mapChange' id="map_1" ref='map_1' style="width:750rpx; height: 600rpx" :latitude="latitude"
+				:longitude="longitude" :markers="jhzmarker"></map>
+		</view>
+		<scroll-view scroll-y="true" class="scroll-wrapper" :style="{'height': height}" @scrolltolower="loadData">
+			<espempty v-if="loaded && AEDList.length === 0" :tit="'救护站列表为空'"></espempty>
+			<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.name }}</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>
+			<uni-load-more :status="loadtype"></uni-load-more>
+		</scroll-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>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex';
+	import espempty from '@/components/espempty';
+	import uniPopup from '@/components/uni-popup/uni-popup.vue';
+	import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
+	import {
+		getdis,
+		tocall,
+		getListMechanism
+	} from '@/api/index.js';
+	import {
+		userinfo
+	} from '@/api/user.js';
+	import {
+		getcomAddress
+	} from '@/api/index.js';
+	export default {
+		components: {
+			uniPopup,
+			espempty,
+			uniLoadMore
+		},
+		//相关配置参数
+		data() {
+			return {
+				loaded: false,
+				jhzmarker: [],
+				loadtype: 'more',
+				page: 1,
+				limit: 10,
+				AEDList: [],
+				height: '',
+				list: [],
+				latitude: '',
+				longitude: '',
+				current: 0,
+				name: '',
+				uid: '',
+				name: '',
+				phone: '',
+				to_phone: '',
+				marker: [],
+				specificAdd: '',
+				addressData: {
+					name: '',
+					mobile: '',
+					latitude: 0, //纬度
+					longitude: 0, //经度
+					address: {
+						province: '',
+						city: '',
+						district: '',
+						detail: '',
+					},
+					area: '',
+					default: false
+				},
+			}
+		},
+		onReady(res) {
+			var _this = this;
+			uni.getSystemInfo({
+				success: resu => {
+					const query = uni.createSelectorQuery();
+					query.select('.scroll-wrapper').boundingClientRect();
+					query.exec(function(res) {
+						console.log(res, 'ddddddddddddd');
+						_this.height = resu.windowHeight - res[0].top + 'px';
+						console.log('打印页面的剩余高度', _this.height);
+					});
+				},
+				fail: res => {}
+			});
+		},
+		onLoad() {
+			let obj = this;
+			console.log('开始加载事件');
+			// obj.loadBaseData();
+			// uni.showLoading({
+			// 	title: '加载中',
+			// 	mask: true
+			// });
+			// obj.loadData();
+			try {
+				let locationAddress
+				// #ifdef H5
+				let wxOjb = require('jweixin-module');
+				locationAddress = wxOjb.getLocation;
+				// #endif
+				// #ifdef MP
+				locationAddress = uni.getLocation;
+				// #endif
+				wxOjb.ready(() => {
+					console.log('加载完毕注册事件');
+					locationAddress({
+						type: 'gcj02',
+						success: function(res) {
+							console.log('获取经纬度', res);
+							obj.longitude = res.longitude
+							obj.latitude = res.latitude
+							obj.marker = [{
+								latitude: obj.latitude,
+								longitude: obj.longitude,
+								iconPath: '/static/img/img19.png',
+								width: '45',
+								height: '45',
+							}, ]
+							obj.loadData();
+						},
+						fail(e) {
+							console.log('失败', e);
+							window.location.reload();
+						}
+					});
+				})
+
+			} catch (e) {
+				console.log(e);
+				let locationAddress
+				// #ifdef H5
+				let wxOjb = require('jweixin-module');
+				locationAddress = wxOjb.getLocation;
+				// #endif
+				// #ifdef MP
+				locationAddress = uni.getLocation;
+				// #endif
+				wxOjb.ready(() => {
+					console.log('加载完毕注册事件');
+
+					locationAddress({
+						type: 'gcj02',
+						success: function(res) {
+							console.log('获取经纬度1', res);
+							obj.longitude = res.longitude
+							obj.latitude = res.latitude
+							obj.loadData();
+						},
+						fail(e) {
+							console.log('失败', e);
+						}
+					});
+				})
+
+			}
+		},
+		computed: {
+			...mapState('user', ['hasLogin', 'userInfo'])
+		},
+		methods: {
+			...mapMutations('user', ['setUserInfo']),
+			// 地图渲染完毕事件
+			mapChange(e) {
+				console.log(e);
+			},
+			// 载入数据
+			async loadData() {
+				let obj = this;
+				if(obj.loadtype == 'loading' || obj.loadtype == 'noMore') {
+					return 
+				}
+				getListMechanism({
+					page: obj.page,
+					limit: obj.limit,
+				}).then(({data}) => {
+					uni.hideLoading();
+					console.log(data, 999);
+					for (let i = 0; i < data.length; i++) {
+						data[i].space = obj.space(obj.latitude, obj.longitude, 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
+					}));
+					if(obj.page == 1) {
+						obj.jhzmarker = obj.marker.concat(arr)
+					}else {
+						obj.jhzmarker = obj.jhzmarker.concat(arr)
+					}
+					
+					obj.AEDList = obj.AEDList.concat(data);
+					console.log(obj.AEDList, 'obj.AEDList+++++++');
+					// obj.markerList = data;
+					obj.loaded = true
+					if (obj.limit == data.length) {
+						obj.loadtype = 'more';
+						obj.page++;
+					} else {
+						obj.loadtype = 'noMore';
+					}
+				})
+			},
+			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; // 单位米
+			},
+			openAddress(item) {
+				let obj = this;
+				obj.latitude2 = item.latitude;
+				obj.longitude2 = item.longitude;
+				obj.address = item.address;
+				this.$refs.popup.open();
+			},
+			// 调用高德
+			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=${longitude},${latitude}&name=${address}`;
+			},
+			// 调用腾讯
+			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.latitude;
+				let longitude6 = this.longitude;
+				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 `
+			},
+			
+		}
+	}
+</script>
+
+<style lang="scss">
+	body,
+	page {
+		height: 100%;
+		width: 100%;
+		background-color: #fff;
+	}
+
+	.content {
+		height: 100%;
+		width: 100%;
+		background-color: #fff;
+	}
+
+	.map {
+		width: 100%;
+		height: 600rpx;
+	}
+
+	/* #ifdef H5 */
+	.location {
+		overflow-y: scroll; //溢出就滑动起来
+		// z-index: 990;
+		position: fixed;
+		bottom: 0;
+		height: 55%;
+		width: 100%;
+		background-color: #fff;
+		padding: 24rpx;
+
+		//搜索框
+		.Search-box {
+			// z-index: 999;
+			height: 80rpx;
+			// position: fixed;
+			// 		top: 0;
+			// 		left: 0;
+			// 		width: 100%;
+			// background: #FFFFFF;
+			// padding-top: 10rpx;
+			padding-right: 24rpx;
+			padding-left: 24rpx;
+
+			.Search-box-sort {
+				float: left;
+				margin-left: 32rpx;
+				margin-right: 19rpx;
+
+				.sort-text {
+					width: 57rpx;
+					height: 29rpx;
+					font-size: 30rpx;
+					font-weight: 500;
+					color: rgba(51, 51, 51, 1);
+					line-height: 58rpx;
+					margin-right: 19rpx;
+				}
+
+				.sort-img {
+					width: 21rpx;
+					height: 11rpx;
+					margin-bottom: 4rpx;
+				}
+			}
+
+			.Search-box-size {
+				// width:70%;
+				height: 58rpx;
+				border-radius: 32rpx;
+				background-color: #f1f1f1;
+				padding-left: 36rpx;
+				display: flex;
+				align-items: center;
+
+				.box-img {
+					height: 32rpx;
+					width: 32rpx;
+					margin-right: 16rpx;
+				}
+
+				// .box-right{
+				// 	height: 58rpx;
+				// 	// width: 100%;
+				// 	background-color: pink;
+				// }
+
+				.box-word {
+					width: 100%;
+					font-size: 26rpx;
+					font-weight: 500;
+					color: rgba(205, 203, 203, 1);
+					line-height: 55rpx;
+				}
+			}
+		}
+
+		.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;
+				}
+			}
+		}
+	}
+
+	/* #endif */
+
+	.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;
+			}
+		}
+	}
+	.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;
+			}
+		}
+	}
+</style>
+

+ 507 - 265
pages/applic/contribution.vue

@@ -3,184 +3,142 @@
 		<!-- <view class="top">
 			爱心捐款
 		</view> -->
-		<view class="box">
-			<view class="box-item">
-				<view class="box-left">
-					<text class="imp">*</text>捐款意向
-				</view>
-				<view class="box-right">
-					<picker :value="index" @change="PickerDire" :range="chooseDire" class="box-right" @click="addType">
-						<text>{{ intention || '请选择捐款意向'}}</text>
-					</picker>
-				</view>
-			</view>
-			<view class="box-item">
-				<view class="box-left">
-					<text class="imp">*</text>捐款方式
-				</view>
-				<view class="box-right">
-					<!-- <input type="text" placeholder="请选择捐款方式" /> -->
-					<picker @change="PickerType" :value="index" :range="chooseType" class="box-right">
-						<text>{{ way || '请选择捐款方式'}}</text>
-					</picker>
-				</view>
-			</view>
-			<!-- <view class="box-item">
-					<view class="box-left">
-						捐款金额
-					</view>
-					<view class="box-right">
-						<picker @change="PickerMoney" :value="index" :range="chooseMoney" class="box-right">
-							<text>{{ money || '请选择捐款金额'}}</text>
-						</picker>
-					</view>
-			</view> -->
-			<view class="box-item1" @click="tochooseMoney">
-				<!-- <view class="box-item1" @click="tochooseMoney"> -->
-				<view class="box-main">
-					<view class="box-left">
-						<text class="imp">*</text>捐款金额
-					</view>
-					<view class="box-right">
-						<input type="text" placeholder="请选择金额" v-model="money" disabled />
-						<!-- <picker @change="PickerMoney" :value="index" :range="chooseMoney" class="box-right">
-							<text>{{ money || '请选择捐款金额'}}</text>
-						</picker> -->
-					</view>
-
-				</view>
-
-				<view class="box-bottom">
-					个人满500,单位满2000可打印纸质证书
-				</view>
+		<view class="jg" style="height: 43rpx;"></view>
+		<view class="nav flex">
+			<view class="nav-item" v-for="(item,indez) in navList" :class="{'action': currentIndex == indez}"
+				@click="navClick(indez)">
+				{{item.tit}}
 			</view>
-
 		</view>
-		<!-- <view class="infoOptional">
-			信息(选填)
-		</view> -->
-		<view class="box">
-			<view class="box-item">
-				<view class="box-left">
-					<view v-if="is_show">
-						<text class="imp">*</text>姓名
-					</view>
-					<view v-else>
-						<text class="imp">*</text>单位
-					</view>
-				</view>
-				<view class="box-right">
-					<input type="text" placeholder="请真实填写" v-model="donate_er" />
-				</view>
+		<template v-if="currentIndex == 1">
+			<view class="tit">
+				捐赠意向
 			</view>
-			<view class="box-item">
+			<picker :value="index" @change="PickerDire" :range="chooseDire" class="choose-yx-box">
+				<view class="">{{ intention || '请选择捐款意向'}}</view>
+			</picker>
+			<view class="list-box" v-for="(item,index) in gyList" :key='index' @click="Jump(item)" v-if="item.title == intention">
 				<view class="box-left">
-					<text class="imp">*</text>手机号
+					<image :src="item.image_input[0]" mode="" class="left-img"></image>
 				</view>
 				<view class="box-right">
-					<input type="text" placeholder="请填写手机号" v-model="mobile" />
+					<view class="right-top word1_ellipsis">
+						{{item.title}}
+					</view>
+					<view class="right-center">
+						{{item.synopsis}}
+					</view>
+					<!-- <view class="right-foot">
+						已阅读人数:{{item.visit || 0}}
+					</view> -->
 				</view>
 			</view>
-		</view>
-
-		<view class="switch-box">
-			<view class="switch-left">
-				实名公开
-			</view>
-			<view class="switch-right">
-				<switch :checked="is_public" color='#E63931' style="transform: scale(0.7,0.7)" @change="switch1Change" />
+		</template>
+		<template v-if="currentIndex == 0">
+			<view class="tit">
+				类型
 			</view>
+			<picker :value="index" @change="PickerHf" :range="hfList" class="choose-yx-box">
+				<view class="">{{ hfType || '请选择会费类型'}}</view>
+			</picker>
+		</template>
+		<view class="tit">
+			{{currentIndex == 1? '捐款方式' : '缴费方式'}}
 		</view>
-
-		<view class="switch-box">
-			<view class="switch-left">
-				寄发票
-			</view>
-			<view class="switch-right">
-				<switch :checked="is_receipts" color='#E63931' style="transform: scale(0.7,0.7)" @change="switch2Change" />
-			</view>
-
+		<picker :value="index" @change="PickerType" :range="chooseType" class="choose-yx-box">
+			<view class="">{{ way || '请选择捐款方式'}}</view>
+		</picker>
+		<view class="tit">
+			{{currentIndex == 1? '捐赠者' : '缴费者'}}
 		</view>
-
-		<view class="box">
-			<view class="box-item">
-				<view class="box-left">
-					联系地址
-				</view>
-				<view class="box-right">
-					<input type="text" placeholder="请输入联系地址" v-model="address" />
+		<template v-if="currentIndex == 1">
+			<view class="flex" style="align-items: center;">
+				<input type="text" placeholder="请输入姓名" v-model="donate_er" v-if="way=='个人'" class="name-ipt" />
+				<input type="text" placeholder="请输入单位名称" v-model="donate_er" v-else class="name-ipt" />
+				<view class="">
+					<switch :checked="!is_public" color='#E63931' style="transform: scale(0.7,0.7)"
+						@change="switch1Change" />匿名捐赠
+					<switch :checked="is_receipts" color='#E63931' style="transform: scale(0.7,0.7)"
+						@change="switch2Change" />寄发票
 				</view>
 			</view>
+		</template>
+		
+		<template v-if="currentIndex == 0">
+			<input type="text" placeholder="请输入姓名" v-model="donate_er" v-if="way=='个人'" class="name-ipt name-ipt-t" />
+			<input type="text" placeholder="请输入单位名称" v-model="donate_er" v-else class="name-ipt name-ipt-t" />
+		</template>
+		<input type="text" placeholder="请输入手机号" v-model="mobile" class="name-ipt name-ipt-t" style="margin: 40rpx 0 40rpx 30rpx"/>
+		<view class="tit">
+			{{currentIndex == 1? '捐赠金额' : '缴费金额'}}
 		</view>
+		<input type="text" placeholder="请输入金额" v-model="money" class="name-ipt name-ipt-t money-box" />
+		<template v-if="is_receipts">
+			<view class="tit">
+				联系地址
+			</view>
+			<input type="text" placeholder="请输入联系地址" v-model="address" class="name-ipt name-ipt-t" />
+		</template>
+		
+		
 		<view class="submit" @click="confirm()">
 			立即提交
 		</view>
-
-		<uni-popup ref="popup" type="bottom" @click="close">
-			<view class="popup_row">
-				<view class="title">
-
-					<view class="title-left">
-						一份爱心,一份力量!
+		
+		<template v-if="currentIndex == 1 ">
+			<view class="tit">
+				爱心榜
+			</view>
+			<scroll-view class="love-wrap" scroll-y @scrolltolower="getLoveList()">
+				<view class="love-item" v-for="item in loveList" >
+					<view class="itemt clamp">
+						{{item.donate_er}}
 					</view>
-					<view class="cancel" @click="cancel">
-						<!-- <image src="../../static/img/取消.png" mode=""></image> -->
+					<view class="itemt clamp" style="text-align: center;">
+						{{item.pay_time | time}}
 					</view>
-				</view>
-				<view class="money-btn">
-					<view class="btn" v-for="item in moneyList" :key="item.id">
-						<button type="default" @click="addmoney(item)">{{ item.money}}</button>
+					<view class="itemt clamp" style="text-align: right;">
+						¥{{item.money}}
 					</view>
 				</view>
-				<view class="pop-main">
-					<view class="money-left">
-						金额数
-					</view>
-					<view class="money-iup">
-						<input type="text" value="" v-model="popmoney" placeholder="请选择金额或者自定义金额" />
+				<uni-load-more :status="loadingType"></uni-load-more>
+			</scroll-view>
+			<view class="" style="height: 20rpx;">
+				
+			</view>
+		</template>
+		
+		<uni-popup ref="popup1" type="center">
+			<view class="popup-box">
+				<!-- <view class="img">
+					<image src="../../static/img/WechatIMG662.png" mode=""></image>
+				</view> -->
+				<view class="mian">
+					<view class="delivery">
+						支付失败
+						<!-- {{ i18n.qrhwsdm }} -->
 					</view>
-					<view class="">
-						元
+					<view class="nocancel">
+						请退出页面,重新登录
+						<!-- {{ i18n.wfcx }} -->
 					</view>
-				</view>
-				<view class="comfirm">
-					<view class="comfirm1" @click="comfirm1()">
-						确认
+					<view class="comfirm-box">
+						<view class="cancel" @click="cancel1">
+							取消
+						</view>
+						<view class="comfirm" @click="comfirmExit()">
+							确认
+						</view>
 					</view>
 				</view>
-
 			</view>
-		</uni-popup>
-		<uni-popup ref="popup1" type="center">
-			<view class="popup-box">
-				<!-- <view class="img">
-					<image src="../../static/img/WechatIMG662.png" mode=""></image>
-				</view> -->
-				<view class="mian">
-					<view class="delivery">
-						支付失败
-						<!-- {{ i18n.qrhwsdm }} -->
-					</view>
-					<view class="nocancel">
-						请退出页面,重新登录
-						<!-- {{ i18n.wfcx }} -->
-					</view>
-					<view class="comfirm-box">
-						<view class="cancel" @click="cancel1">
-							取消
-						</view>
-						<view class="comfirm" @click="comfirmExit()">
-							 确认
-						</view>
-					</view>
-				</view>
-			</view>
-		
+
 		</uni-popup>
 	</view>
 </template>
 
 <script>
+	import { getArticleList } from '@/api/index.js'
 	import {
 		chosintention,
 		joinDona
@@ -203,16 +161,61 @@
 	import {
 		userinfo
 	} from '@/api/user.js';
+	import { loveList } from '@/api/order.js'
 	export default {
+		filters: {
+			time(val) {
+				let str = ''
+				if(val) {
+					let date = new Date(val*1000)
+					let y = date.getFullYear()
+					let m = date.getMonth() + 1
+					let d = date.getDate()
+					return str = y + '/' + m + '/' + d
+				}
+				return str
+			}
+		},
 		components: {
 			uniPopup,
 			// uniLoadMore
 		},
+		watch: {
+			currentIndex(newValue,oldValue) {
+				if(newValue == 0) {
+					uni.setNavigationBarTitle({
+						title: '会费缴纳'
+					})
+				}else if(newValue == 1) {
+					uni.setNavigationBarTitle({
+						title: '在线捐赠'
+					})
+				}else if(newValue == 2) {
+					uni.setNavigationBarTitle({
+						title: '我的记录'
+					})
+				}
+					
+			}
+		},
 		data() {
 			return {
+				hfType: '',
+				hfList: [],
+				navList: [{
+						tit: '会费缴纳',
+					},
+					{
+						tit: '在线捐赠',
+					},
+					// {
+					// 	tit: '我的记录',
+					// }
+				],
+				currentIndex: 0,
 				index: 0,
 				intention: '', // 捐款意向
-				way: '', // 捐款方式
+				way: '个人', // 捐款方式
 				money: '', // 捐款金额
 				// elsemoney: '', // 其他金额
 				popmoney: '', // 按钮金额 弹窗金额
@@ -252,13 +255,26 @@
 				froms: '', //保存h5中数据来源对象
 				type: '', //判断是否从订单中进入
 				payName: 'weixin',
+				loveList: [],
+				page: 1,
+				limit: 20,
+				loadingType: 'more',
+				loaded: false,
+				gyList: []
+				
 				// orderInfo: {},
 			}
 		},
 		onLoad(options) {
 			// console.log(333,options)
+			this.getYxList()
+			this.getLoveList()
+			this.getGyList()
+			this.currentIndex = 1
 		},
 		onShow() {
+			// this.getYxList()
+			
 			saveUrl()
 			// let token = uni.getStorageSync('token');
 			console.log(1, this);
@@ -294,6 +310,74 @@
 			...mapState(['weichatObj']),
 		},
 		methods: {
+			// 获取公益项目
+			getGyList() {
+				getArticleList({
+					page: 1,
+					limit: 20
+				},17).then(({data}) => {
+					console.log(data,'17')
+					this.gyList = data.list
+				})
+			},
+			Jump(item) {
+				console.log(item.url,'item.url')
+				if(item.url != '') {
+					window.location.href = item.url
+				}else {
+					// uni.navigateTo({
+					// 	url: '/pages/article/detail?id=' + index
+					// })
+				}
+				
+			},
+			ceshi() {
+				window.location.href = 'weixin://dl/business/?t=gLuI4kyK2mj'
+			},
+			getLoveList() {
+				let obj = this
+				if(obj.loadingType == 'loading' || obj.loadingType == 'noMore') {
+					return
+				}
+				obj.loadingType = 'loading'
+				loveList({
+					page: this.page,
+					limit: this.limit
+				}).then(res => {
+					console.log(res,'loveList')
+					this.loveList = this.loveList.concat(res.data.list)
+					this.page++
+					if(res.data.list.length == this.limit) {
+						this.loadingType = 'more'
+					}else {
+						this.loadingType = 'noMore'
+					}
+					obj.loaded = true
+				})
+			},
+			navClick(indez) {
+				this.currentIndex = indez
+			},
+			//获取捐赠意向
+			getYxList() {
+				chosintention({}).then(({
+					data
+				}) => {
+					console.log(data)
+
+					let arr = data.filter(item => {
+						return item.title.indexOf('会费') == -1
+					})
+					let arr2 = data.filter(item => {
+						return item.title.indexOf('会费') != -1
+					})
+					this.hfList = arr2.map(item => item.title)
+					this.hfType = this.hfList[0]
+					this.chooseDire = arr.map(item => item.title)
+					this.intention = this.chooseDire[0]
+					console.log(this.chooseDire, 'filter')
+				}).catch()
+			},
 			// 点击捐赠意向
 			addType(e) {
 				chosintention({}).then(({
@@ -305,10 +389,14 @@
 			},
 			// 选择捐赠意向
 			PickerDire: function(e) {
-				console.log(334, this.chooseDire)
+				// console.log(334, this.chooseDire)
 				this.intention = this.chooseDire[e.target.value];
 				this.index = e.target.value + 1;
 			},
+			PickerHf(e) {
+				// console.log(334, this.chooseDire)
+				this.hfType = this.hfList[e.target.value];
+			},
 			// 选择捐款方式
 			PickerType: function(e) {
 				this.way = this.chooseType[e.target.value];
@@ -345,9 +433,9 @@
 			},
 			cancel() {
 				this.$refs.popup.close();
-			},
-			cancel1() {
-				this.$refs.popup1.close();
+			},
+			cancel1() {
+				this.$refs.popup1.close();
 			},
 			comfirm1: function() {
 				let obj = this
@@ -359,14 +447,14 @@
 					obj.popmoney = ''
 					this.$refs.popup.close();
 				}
-			},
-			comfirmExit() {
-				console.log('点击comfirmExit')
-				this.$refs.popup1.close()
-				uni.switchTab({
-				    url: '/pages/home/home'
-				});
-				
+			},
+			comfirmExit() {
+				console.log('点击comfirmExit')
+				this.$refs.popup1.close()
+				uni.switchTab({
+					url: '/pages/home/home'
+				});
+
 			},
 			// 是否实名公开
 			switch1Change(e) {
@@ -417,9 +505,10 @@
 				if (!obj.address) {
 					obj.address = '用户未填写联系地址'
 				}
+				
 				createOrderkey({
 					money: obj.money, //捐款金额
-					intention: obj.intention, //捐款意向
+					intention: obj.currentIndex == 0? obj.hfType : obj.intention, //捐款意向
 					way: obj.way, //捐款方式
 					is_public: obj.is_public, //是否实名公开
 					is_receipts: obj.is_receipts, //是否开发票
@@ -429,7 +518,7 @@
 				}).then(({
 					data
 				}) => {
-					console.log(345, data)
+					console.log(345, data)
 					console.log(666, obj)
 					let res = data.result.jsConfig;
 					console.log(res)
@@ -442,11 +531,11 @@
 						paySign: res.paySign,
 						success: function(res) {
 							// obj.$api.msg('支付成功')
-							uni.navigateTo({
-								url: '/pages/form/donaSuccess?money=' + obj.money
+							uni.navigateTo({
+								url: '/pages/form/donaSuccess?money=' + obj.money
 							})
 						},
-						fail: function(res) {
+						fail: function(res) {
 							this.$refs.popup1.open()
 							console.log(res, "失败")
 							console.log(res.errMsg)
@@ -473,27 +562,32 @@
 	}
 
 	.box {
-		margin-top: 10rpx;
-		.box-item2{
-			background-color: #FFFFFF;
-			padding: 18rpx 24rpx;
-			// display: flex;
-			border-bottom: 1rpx solid #F2F2F2;
-			.box-left{
-				color: #E63931;
-			}
-			.box-info{
-				text-indent: 68rpx;
-				margin-top: 16rpx;
-				color: #7b7b7b;
-			}
-			.box-phone{
-				text-indent: 68rpx;
-				margin-top: 6rpx;
-				// text-align: center;
-				color: #7b7b7b;
-			}
+		margin-top: 10rpx;
+
+		.box-item2 {
+			background-color: #FFFFFF;
+			padding: 18rpx 24rpx;
+			// display: flex;
+			border-bottom: 1rpx solid #F2F2F2;
+
+			.box-left {
+				color: #E63931;
+			}
+
+			.box-info {
+				text-indent: 68rpx;
+				margin-top: 16rpx;
+				color: #7b7b7b;
+			}
+
+			.box-phone {
+				text-indent: 68rpx;
+				margin-top: 6rpx;
+				// text-align: center;
+				color: #7b7b7b;
+			}
 		}
+
 		.box-item1 {
 			background-color: #FFFFFF;
 			padding: 18rpx 24rpx;
@@ -570,17 +664,19 @@
 	}
 
 	.submit {
-		position: fixed;
-		bottom: 0;
-		left: 0;
-		right: 0;
-		width: 750rpx;
-		height: 100rpx;
-		background: #FA7E67;
+		// position: fixed;
+		// bottom: 0;
+		// left: 0;
+		// right: 0;
+		width: 675rpx;
+		height: 95rpx;
+		background: #ff5c5c;
 		color: #FFFFFF;
 		display: flex;
 		align-items: center;
 		justify-content: center;
+		margin: 40rpx auto;
+		border-radius: 10rpx;
 	}
 
 	.popup_row {
@@ -669,78 +765,224 @@
 				background-color: #E63931;
 			}
 		}
-	}
-	.popup-box {
-		width: 522rpx;
-		height: 605rpx;
-		background-color: #FFFFFF;
-		border-radius: 20rpx;
-	
-		.img {
-			border-radius: 20rpx 20rpx 0 0;
-			width: 522rpx;
-			height: 307rpx;
-	
-			image {
-				border-radius: 20rpx 20rpx 0 0;
-				width: 522rpx;
-				height: 307rpx;
-			}
-		}
-	
-		.mian {
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			padding: 32rpx 32rpx;
-			background-color: #FFFFFF;
-			border-radius: 0 0 20rpx 20rpx;
-			text-align: center;
-	
-			.delivery {
-				font-size: 36rpx;
-				color: #333333;
-				// margin-top: 46rpx;
-			}
-	
-			.nocancel {
-				font-size: 30rpx;
-				color: #999999;
-				margin-top: 26rpx;
-			}
-	
-			.comfirm-box {
-				margin-top: 52rpx;
-				display: flex;
-				// margin-bottom: 32rpx;
-	
-				// justify-content: space-around;
-				.cancel {
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					width: 197rpx;
-					height: 61rpx;
-					border: 1px solid #C90F1B;
-					border-radius: 31rpx;
-	
-					font-size: 24rpx;
-					color: #C90F1B;
-				}
-	
-				.comfirm {
-					margin-left: 32rpx;
-					display: flex;
-					align-items: center;
-					justify-content: center;
-					width: 197rpx;
-					height: 61rpx;
-					background: #FA7E67;
-					border-radius: 31px;
-					font-size: 24rpx;
-					color: #FFFFFF;
-				}
-			}
-		}
+	}
+
+	.popup-box {
+		width: 522rpx;
+		height: 605rpx;
+		background-color: #FFFFFF;
+		border-radius: 20rpx;
+
+		.img {
+			border-radius: 20rpx 20rpx 0 0;
+			width: 522rpx;
+			height: 307rpx;
+
+			image {
+				border-radius: 20rpx 20rpx 0 0;
+				width: 522rpx;
+				height: 307rpx;
+			}
+		}
+
+		.mian {
+			display: flex;
+			flex-direction: column;
+			align-items: center;
+			padding: 32rpx 32rpx;
+			background-color: #FFFFFF;
+			border-radius: 0 0 20rpx 20rpx;
+			text-align: center;
+
+			.delivery {
+				font-size: 36rpx;
+				color: #333333;
+				// margin-top: 46rpx;
+			}
+
+			.nocancel {
+				font-size: 30rpx;
+				color: #999999;
+				margin-top: 26rpx;
+			}
+
+			.comfirm-box {
+				margin-top: 52rpx;
+				display: flex;
+				// margin-bottom: 32rpx;
+
+				// justify-content: space-around;
+				.cancel {
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					width: 197rpx;
+					height: 61rpx;
+					border: 1px solid #C90F1B;
+					border-radius: 31rpx;
+
+					font-size: 24rpx;
+					color: #C90F1B;
+				}
+
+				.comfirm {
+					margin-left: 32rpx;
+					display: flex;
+					align-items: center;
+					justify-content: center;
+					width: 197rpx;
+					height: 61rpx;
+					background: #FA7E67;
+					border-radius: 31px;
+					font-size: 24rpx;
+					color: #FFFFFF;
+				}
+			}
+		}
+	}
+
+	.nav {
+		height: 84rpx;
+		width: 660rpx;
+
+		margin: auto;
+		color: #ff5c5c;
+		font-size: 32rpx;
+		font-weight: bold;
+
+		.nav-item {
+			flex-grow: 1;
+			line-height: 84rpx;
+			text-align: center;
+			border: 1px solid #ff5c5c;
+		}
+
+		.action {
+			background-color: #ff5c5c;
+			color: #fff;
+		}
+	}
+
+	.tit {
+		font-size: 34rpx;
+		font-weight: bold;
+		padding-left: 30rpx;
+		margin: 40rpx 0;
+	}
+
+	.choose-yx-box {
+		width: 676rpx;
+		height: 92rpx;
+		border: 1px solid #989898;
+		background-color: #dddddd;
+		margin-left: 30rpx;
+
+		view {
+			line-height: 92rpx;
+			width: 676rpx;
+			height: 92rpx;
+			padding-left: 28rpx;
+			font-size: 32rpx;
+		}
+
+	}
+
+	.name-ipt {
+		width: 470rpx;
+		height: 120rpx;
+		font-size: 32rpx;
+		line-height: 120rpx;
+		border: 1px solid #989898;
+		padding-left: 30rpx;
+		margin-left: 30rpx;
+		background-color: #ffffff;
+	}
+	.name-ipt-t {
+		width: 676rpx;
+	}
+	.money-box {
+		position: relative;
+		&::after {
+			content: '元';
+			position: absolute;
+			top: 0;
+			bottom: 0;
+			right: 20rpx;
+			margin: auto;
+		}
+	}
+	.love-wrap {
+		width: 693rpx;
+		height: 380rpx;
+		margin: auto;
+		border-radius: 10rpx;
+		background-color: #fff;
+		.love-item {
+			height: 60rpx;
+			line-height: 60rpx;
+			display: flex;
+			justify-content: space-between;
+			align-items: center;
+			.itemt {
+				width: 231rpx;
+				height: 60rpx;
+				font-size: 30rpx;
+			}
+		}
+	}
+	.list-box{
+		width: 725rpx;
+		height: 200rpx;
+		margin: 20rpx auto 0;
+		background: #FFFFFF;
+		box-shadow: 0px 5rpx 5rpx 0px rgba(35, 24, 21, 0.06);
+		border-radius: 7rpx;
+		padding:0 20rpx;
+		display: flex;
+		align-items: center;
+		.box-left{
+			width: 230rpx;
+			height: 145rpx;
+			margin-right: 20rpx;
+			.left-img{
+				width: 230rpx;
+				height: 145rpx;
+			}
+		}
+		.box-right{
+			width: 430rpx;
+			height: 145rpx;
+			position: relative;
+			.right-top{
+				font-size: 25rpx;
+				font-weight: bold;
+				color: #333333;
+				margin-bottom: 24rpx;
+			}
+			.right-center{
+				width: 362rpx;
+				// height: 53rpx;
+				font-size: 21rpx;
+				font-weight: bold;
+				color: #999999;
+				line-height: 33rpx;
+				overflow: hidden;
+				text-overflow: ellipsis;
+				display: -webkit-box;
+				-webkit-line-clamp: 2;//在第几行显示...
+				-webkit-box-orient: vertical;
+			}
+			.right-foot{
+				font-size: 21rpx;
+				font-weight: bold;
+				color: #999999;
+				line-height: 31rpx;
+				text-align: right;
+				// margin-top: 13rpx;
+				position: absolute;
+				right: 0;
+				bottom: 0;
+			}
+		}
 	}
 </style>

+ 1 - 1
pages/applic/location.vue

@@ -3,7 +3,7 @@
 		<view id="map" class="map">
 			<map @updated='mapChange' id="map_1" ref='map_1' style="width:750rpx; height: 600rpx" :latitude="latitude"
 			 :longitude="longitude" :markers="marker"></map>
-		</view>i
+		</view>
 			<view class="location">
 				<!-- <view class="Search-box"  @click="getLocation">
 					<view class="Search-box-size">

+ 1 - 1
pages/applic/science.vue

@@ -150,7 +150,7 @@
 	}
 
     .content{
-		line-height: 1;
+		line-height: 1.5;
 		.list-box{
 			width: 725rpx;
 			height: 200rpx;

+ 10 - 4
pages/article/detail.vue

@@ -3,8 +3,8 @@
 		<view class="article-tit">
 			{{article.title}}
 		</view>
-		<view class="article-time">
-			{{article.release_time}} | <text style="color: #c7455a;" @click="navTo(article.cid)">{{ ' ' + article.cart_name}}</text>
+		<view class="article-time" v-if="loaded">
+			{{article.release_time}} | <text style="color: #c7455a;" @click="navTo(article.cid)">{{ ' ' + (article.cart_name || '')}}</text>
 		</view>
 		<view class="article-content" v-html="article.content">
 			
@@ -18,7 +18,8 @@
 		data() {
 			return {
 				articleId: '',
-				article: {}
+				article: {},
+				loaded: false
 			}
 		},
 		onLoad(opt) {
@@ -31,7 +32,7 @@
 		methods: {
 			navTo(cid) {
 				let url = ''
-				if(cid !=6 ) {
+				if(cid !=6 && cid != 14 && cid == 15 && cid == 16) {
 					url = '/pages/article/list?cid=' + cid
 				}else {
 					url = '/pages/article/lists?cid=' + cid
@@ -45,6 +46,7 @@
 				getDetail({},obj.articleId).then( ({data}) => {
 					obj.article = data
 					obj.article.content = obj.article.content.replace(/\<img/gi, '<img class="rich-img"');
+					obj.loaded = true
 				})
 			}
 		}
@@ -52,6 +54,10 @@
 </script>
 
 <style lang="scss" scoped>
+	page {
+		background-color: #fff;
+		height: 100%;
+	}
 	.detail {
 		padding:0 20rpx;
 	}

+ 62 - 2
pages/article/list.vue

@@ -1,5 +1,13 @@
 <template>
 	<view class="list">
+		<view class="top flex">
+			<image src="../../static/img/002.png" mode="aspectFill"></image>
+			<view class="font">
+				<view class="china-font">温岭市红十字会</view>
+				<!-- <view class="english-font">Red Cross Society of China Wen Ling Branch</view> -->
+			</view>
+		</view>
+		<image src="../../static/images/listtop.jpg" mode="" class="list-top"></image>
 		<template v-if="cid == 11">
 			<view class="order-item" @click="ToDetail(1)">
 				<view class="list-cell">
@@ -25,9 +33,12 @@
 		<template v-if="cid != 11 && cid != 12">
 			<empty v-if="loaded && list.length==0"></empty>
 		</template>
+		<view class="pagetit" v-if="list.length != 0">
+			{{name}}
+		</view>
 		<view class="list-item" v-for="item in list" @click="navTo('/pages/article/detail?id=' + item.id)">
 			<view class="article-tit">{{item.title}}</view>
-			<view class="article-time">{{item.release_time}}</view>
+			<view class="article-time">({{item.release_time}})</view>
 		</view>
 		<uni-load-more :status="loadingType"></uni-load-more>
 	</view>
@@ -45,6 +56,7 @@
 		},
 		data() {
 			return {
+				name: '',
 				cid: '',
 				list: [],
 				page: 1,
@@ -53,10 +65,16 @@
 				loaded: false
 			}
 		},
+		onReachBottom() {
+			this.getList()
+		},
 		onLoad(opt) {
 			if(opt.cid) {
 				this.cid = opt.cid
 			}
+			if(opt.name) {
+				this.name = decodeURI(opt.name)
+			}
 			this.getList()
 		},
 		methods: {
@@ -78,7 +96,7 @@
 					console.log(data)
 					obj.list = obj.list.concat(data.list)
 					obj.page++
-					if(data.length == obj.limit) {
+					if(data.list.length == obj.limit) {
 						obj.loadingType = 'more'
 					}else {
 						obj.loadingType = 'noMore'
@@ -109,6 +127,10 @@
 </script>
 
 <style lang="scss" scoped>
+	page {
+		background-color: #fff;
+		height: 100%;
+	}
 	.list-item {
 		border-bottom: 1px solid #ccc;
 		border-top: 1px solid #ccc;
@@ -119,6 +141,7 @@
 			color: #000000;
 			font-weight: 500;
 			letter-spacing: 3rpx;
+			font-weight:700;
 		}
 		.article-time {
 			font-size: 28rpx;
@@ -149,5 +172,42 @@
 				font-weight:500;
 			}
 		}
+	}
+	.pagetit {
+		padding: 70rpx 0 70rpx 30rpx;
+		color: #000;
+		font-size: 40rpx;
+	}
+	.list-top {
+		width: 750rpx;
+		height: 366rpx;
+	}
+	.top {
+		align-items: center;
+		width: 100%;
+		padding: 10rpx 0 10rpx 20rpx;
+		image {
+			width: 64rpx;
+			height: 64rpx;
+			border-radius: 50%;
+		}
+		.font {
+			margin-left: 20rpx;
+			.china-font {
+				font-size: 36rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #101010;
+				letter-spacing:20rpx;
+			}
+			.english-font {
+				margin-top: 6rpx;
+				font-size: 12rpx;
+				font-family: PingFang SC;
+				// font-weight: bold;
+				color: #101010;
+				// letter-spacing:1rpx;
+			}
+		}
 	}
 </style>

+ 41 - 9
pages/article/lists.vue

@@ -3,9 +3,9 @@
 		<view class="nav">
 			<view class="nav-item" v-for="(nav , index) in navList" :class="{'action': currentIndex == index}" @click="navClick(index)">{{nav.tit}}</view>
 		</view>
-		<swiper :autoplay="false" :interval="3000" :duration="500" circular class="swiper-box" :style="{'height': height}" :current="currentIndex">
-			<swiper-item v-for="navItem in navList" :style="{'height': height}">
-				<scroll-view scroll-y="true">
+		<swiper :autoplay="false" :interval="3000" :duration="500" circular class="swiper-box" :style="{'height': height}" :current="currentIndex" disable-touch>
+			<swiper-item v-for="navItem in navList">
+				<scroll-view scroll-y="true" @scrolltolower="getList()" :style="{'height': height}">
 					<empty v-if="navItem.loaded && navItem.list.length==0"></empty>
 					<view class="list-item" v-for="item in navItem.list" @click="navTo('/pages/article/detail?id=' + item.id)">
 						<view class="article-tit">{{item.title}}</view>
@@ -59,15 +59,26 @@
 						loadingType: 'more',
 						loaded: false,
 						cid: 16,
+					},
+					{
+						tit: '救在身边',
+						list: [],
+						page: 1,
+						limit: 10,
+						loadingType: 'more',
+						loaded: false,
+						cid: 16,
 					}
 				],
-				cid: ''
+				cid: '',
+				openlink: ''
 			}
 		},
 		onLoad(opt) {
+			let obj = this
 			if (opt.cid) {
 				this.cid = opt.cid
-				if(this.cid == 6) {
+				if(this.cid == 6 ) {
 					this.currentIndex = 0
 				}else {
 					this.currentIndex = this.cid*1 - 14
@@ -75,6 +86,17 @@
 				
 			}
 			this.getList('tab')
+			uni.request({
+				url: 'https://sos.igxys.com/api/index/getScheme',
+				data: {
+					path: '/pages/index/index'
+				},
+				method: 'post',
+				success(res){
+					// console.log(res.data.data.openlink,'++++++++++++++++++++++++++')
+					obj.openlink = res.data.data.openlink
+				}
+			})
 		},
 		onReady(res) {
 			var _this = this;
@@ -93,8 +115,14 @@
 		},
 		methods: {
 			navClick(index) {
-				this.currentIndex = index
-				this.getList('tab')
+				
+				if(index == 3) {
+					window.location.href = this.openlink
+				}else {
+					this.currentIndex = index
+					this.getList('tab')
+				}
+				
 			},
 			navTo(url) {
 				uni.navigateTo({
@@ -122,7 +150,7 @@
 					console.log(data)
 					navItem.list = navItem.list.concat(data.list)
 					navItem.page++
-					if (data.length == navItem.limit) {
+					if (data.list.length == navItem.limit) {
 						navItem.loadingType = 'more'
 						return
 					} else {
@@ -154,6 +182,10 @@
 </script>
 
 <style lang="scss" scoped>
+	page {
+		background-color: #fff;
+		height: 100%;
+	}
 	.nav {
 		display: flex;
 		flex-wrap: wrap;
@@ -166,7 +198,7 @@
 			font-weight: bold;
 		}
 		.nav-item {
-			width: 50%;
+			width: 100%;
 			line-height: 70rpx;
 			text-align: center;
 		}

+ 510 - 467
pages/category/category.vue

@@ -1,7 +1,9 @@
 <template>
 	<view class="content">
-		<view class="top"><image src="../../static/img/jiuzai.png" mode="widthFix" class="bgi"></image></view>
-<!-- 		<view class="top-xtitle">
+		<view class="top">
+			<image src="../../static/img/jiuzai.png" mode="widthFix" class="bgi"></image>
+		</view>
+		<!-- 		<view class="top-xtitle">
 			红十字
 		</view>
 		<view class="top-title">
@@ -10,7 +12,9 @@
 		<view class="pop-box">公众参与</view>
 		<view class="pop-list">
 			<view class="list-box1" v-for="(item, index) in peoplelist" :key="index" v-if="index < 20">
-				<view class="list-top"><image :src="item.avatar" mode="" class="avatar-img"></image></view>
+				<view class="list-top">
+					<image :src="item.avatar" mode="" class="avatar-img"></image>
+				</view>
 				<view class="nickname">{{ item.name }}</view>
 			</view>
 		</view>
@@ -32,29 +36,33 @@
 				<!-- <picker-address class="box-right" @change="onCityClick">{{ address }}</picker-address> -->
 				<input type="text" v-model="showaddress" class="list-input" placeholder="请选择定位地址" />
 			</view>
-			<view class="list" @click="Toshow">
+			<!-- 		<view class="list" @click="Toshow">
 				<view class="list-left">机构 <text>*</text></view>
-				<!-- <input type="text" v-model="mechanism" @click="tosearch" class="list-input" placeholder='请输入机构关键字'/> -->
 				<input type="text" v-model="mechanism" class="list-input" placeholder="请填写您的所在机构" disabled />
-			</view>
+			</view> -->
+
+
+
+			<picker @change="bindMechanismChange" :range="mechanismList" style="width: 100%;">
+				<view class="list">
+					<view class="list-left">机构 <text>*</text></view>
+					<!-- <view class="list-input">{{ mechanism || '请选择您所在机构'}}</view> -->
+					<input type="text" v-model="mechanism" class="list-input" placeholder="请选择机构" disabled />
+				</view>
+			</picker>
+
 
 			<view class="upload-box">
 				<view class="upload-left">证件 <text>*</text></view>
 				<view class="upload-right">
-					<image :src="certificates" mode="" class="upload-img" @click.stop="imgsub" v-if="certificates"></image>
-					<image src="../../static/images/upload.png" class="upload-img" mode="" v-if="!certificates" @click.stop="imgsub"></image>
+					<image :src="certificates" mode="" class="upload-img" @click.stop="imgsub" v-if="certificates">
+					</image>
+					<image src="../../static/images/upload.png" class="upload-img" mode="" v-if="!certificates"
+						@click.stop="imgsub"></image>
 				</view>
 			</view>
-			<zhilin-picker
-				v-model="show"
-				:title="title"
-				:data="list"
-				:initSelected="initSelected"
-				:showSearch="true"
-				@change="onChange"
-				@searchInput="onSearchInput"
-				@confirm="onConfirm1"
-			/>
+			<zhilin-picker v-model="show" :title="title" :data="list" :initSelected="initSelected" :showSearch="true"
+				@change="onChange" @searchInput="onSearchInput" @confirm="onConfirm1" />
 		</view>
 		<view class="sub" :class="{ action: loding }" @click="!loding ? join() : ''">提交申请</view>
 	</view>
@@ -69,227 +77,248 @@
 		saveUrl,
 		interceptor
 	} from '@/utils/loginUtils.js';
-import { mechanism } from '@/api/ask.js';
-import { getNumber } from '@/api/index.js';
-import pickerAddress from '@/components/wangding-pickerAddress/wangding-pickerAddress.vue';
-import zhilinPicker from '@/components/zhilin-picker/zhilin-picker.vue';
-import { upload, addrescuer } from '@/api/ask.js';
-export default {
-	components: {
-		pickerAddress
-	},
-	data() {
-		return {
-			longitude: '',
-			latitude: '',
-			name: '',
-			phone: '',
-			mechanism: '',
-			title: '选择机构',
-			show: false,
-			list: [],
-			initSelected: [],
-			searchVal: '',
-			address: '',
-			certificates: '',
-			loding: false, //是否提交中
-			showaddress: '', //显示用的地址
-			count: 0,
-			peoplelist: [],
-			addressData: {
-				name: '',
-				mobile: '',
-				latitude: 0, //纬度
-				longitude: 0, //经度
-				address: {
-					province: '',
-					city: '',
-					district: '',
-					detail: ''
-				},
-				area: '',
-				default: false
-			}
-		};
-	},
-	computed: {
-		...mapState('user', ['hasLogin', 'userInfo']),
-	},
-	onShow() {
-		this.loadData();
-		if (this.hasLogin) {
-			// this.loadBaseData();
-		} else {
-			saveUrl();
-			uni.showModal({
-				title: '登录',
-				content: '您未登录,是否马上登陆?',
-				success: e => {
-					if (e.confirm) {
-						interceptor();
-					}
-				},
-				fail: e => {
-					console.log(e);
-				}
-			});
-		}
-	},
-	watch: {
-		searchVal() {
-			this.ListDate();
-		}
-	},
-	methods: {
-		tosearch() {
-			console.log(123);
-			uni.navigateTo({
-				url: '/pages/category/search'
-			});
-		},
-		async loadData() {
-			let obj = this;
-			getNumber({}).then(({ data }) => {
-				// console.log(12)
-				// console.log(data)
-				obj.count = data.count;
-				obj.peoplelist = data.data;
-			});
+	import {
+		mechanism
+	} from '@/api/ask.js';
+	import {
+		getNumber
+	} from '@/api/index.js';
+	import pickerAddress from '@/components/wangding-pickerAddress/wangding-pickerAddress.vue';
+	import zhilinPicker from '@/components/zhilin-picker/zhilin-picker.vue';
+	import {
+		upload,
+		addrescuer
+	} from '@/api/ask.js';
+	export default {
+		components: {
+			pickerAddress
 		},
-		// 选择当前位置
-		getLocation() {
-			console.log('选择当前位置');
-			let obj = this;
-			uni.chooseLocation({
-				success: function(res) {
-					obj.addressData.area = res.name;
-					console.log('位置名称:' + res.name);
-					console.log('详细地址:' + res.address);
-					console.log('纬度:' + res.latitude);
-					console.log('经度:' + res.longitude);
-					obj.addressData.latitude = res.latitude;
-					obj.addressData.longitude = res.longitude;
-					// let	dizhi = obj.addressData.latitude + ','+ obj.addressData.longitude;
-					obj.showaddress = res.address;
+		data() {
+			return {
+				mechanismList: ['温岭红十字会'],
+				longitude: '',
+				latitude: '',
+				name: '',
+				phone: '',
+				mechanism: '',
+				title: '选择机构',
+				show: false,
+				list: [],
+				initSelected: [],
+				searchVal: '',
+				address: '',
+				certificates: '',
+				loding: false, //是否提交中
+				showaddress: '', //显示用的地址
+				count: 0,
+				peoplelist: [],
+				addressData: {
+					name: '',
+					mobile: '',
+					latitude: 0, //纬度
+					longitude: 0, //经度
+					address: {
+						province: '',
+						city: '',
+						district: '',
+						detail: ''
+					},
+					area: '',
+					default: false
 				}
-			});
+			};
 		},
-		// 机构
-		Toshow() {
-			console.log('点击选择机构');
-			this.show = true;
+		computed: {
+			...mapState('user', ['hasLogin', 'userInfo']),
 		},
-		onChange(val) {
-			let obj = this;
-			console.log(val, 'onChange');
-			// let arr = val.split(',');
-			// console.log(999,arr)
-			// obj.hospital = arr[1];
-			// obj.hospital_id = arr[0];
-			// obj.city = arr[2];
-			// obj.city_id = arr[3];
-			// obj.district = arr[4];
-			// obj.district_id = arr[5];
-			// obj.province = arr[6];
-			// obj.province_id = arr[7];
-			// obj.addr = obj.province + obj.city + obj.district;
-			// console.log(obj.hospital,obj.hospital_id)
-			// console.log(obj.city,obj.city_id)
-			// console.log(obj.district,obj.district_id)
-			// console.log(obj.province,obj.province_id)
-		},
-		onSearchInput(val) {
-			this.searchVal = val.value;
-		},
-		// 选择机构
-		ListDate() {
-			let obj = this;
-			let data = '';
-			console.log('obj.searchVal', obj.searchVal);
-			if (!obj.searchVal) {
-				console.log('!obj.searchVal');
-				data = {
-					keyword: '',
-					// sort:'id desc',
-					page: 1,
-					limit: 1500
-				};
+		onShow() {
+			this.loadData();
+			// this.getmechanism()
+			if (this.hasLogin) {
+				// this.loadBaseData();
 			} else {
-				console.log('else');
-				console.log('当前input值', obj.searchVal);
-				data = {
-					keyword: obj.searchVal,
-					// sort:'id desc',
-					page: 1,
-					limit: 1500
-				};
+				saveUrl();
+				uni.showModal({
+					title: '登录',
+					content: '您未登录,是否马上登陆?',
+					success: e => {
+						if (e.confirm) {
+							interceptor();
+						}
+					},
+					fail: e => {
+						console.log(e);
+					}
+				});
 			}
-			mechanism(data).then(data => {
-				console.log('请求成功', data);
-				this.list = data.data.map(item => item);
-				// this.show = true
-			});
-			// getHospitalList(data).then(e => {
-			// 	obj.list = e.data.list;
-			// }).catch((e) => {
-			// 	console.log(e)
-			// });
 		},
-		onConfirm1(e) {
-			console.log('点击确认');
-			// let arr = e
-			this.mechanism = e.split(',')[1];
-			this.list = [];
-		},
-		imgsub() {
-			console.log('imgsub');
-			upload({
-				filename: ''
-			}).then(data => {
-				this.certificates = data[0].url;
-			});
-		},
-		join() {
-			let obj = this;
-			if (obj.name == '') {
-				obj.$api.msg('请输入您的姓名');
-				return;
+		watch: {
+			searchVal() {
+				this.ListDate();
 			}
+		},
+		methods: {
+			bindMechanismChange(e) {
+				this.mechanism = this.mechanismList[e.target.value];
+			},
+			getmechanism() {
+				mechanism().then(data => {
+					console.log('请求成功', data);
+					this.mechanismList = data.data;
+					// this.show = true
+				})
+			},
+			tosearch() {
+				console.log(123);
+				uni.navigateTo({
+					url: '/pages/category/search'
+				});
+			},
+			async loadData() {
+				let obj = this;
+				getNumber({}).then(({
+					data
+				}) => {
+					// console.log(12)
+					// console.log(data)
+					obj.count = data.count;
+					obj.peoplelist = data.data;
+				});
+			},
+			// 选择当前位置
+			getLocation() {
+				console.log('选择当前位置');
+				let obj = this;
+				uni.chooseLocation({
+					success: function(res) {
+						obj.addressData.area = res.name;
+						console.log('位置名称:' + res.name);
+						console.log('详细地址:' + res.address);
+						console.log('纬度:' + res.latitude);
+						console.log('经度:' + res.longitude);
+						obj.addressData.latitude = res.latitude;
+						obj.addressData.longitude = res.longitude;
+						// let	dizhi = obj.addressData.latitude + ','+ obj.addressData.longitude;
+						obj.showaddress = res.address;
+					}
+				});
+			},
+			// 机构
+			Toshow() {
+				console.log('点击选择机构');
+				this.show = true;
+			},
+			onChange(val) {
+				let obj = this;
+				console.log(val, 'onChange');
+				// let arr = val.split(',');
+				// console.log(999,arr)
+				// obj.hospital = arr[1];
+				// obj.hospital_id = arr[0];
+				// obj.city = arr[2];
+				// obj.city_id = arr[3];
+				// obj.district = arr[4];
+				// obj.district_id = arr[5];
+				// obj.province = arr[6];
+				// obj.province_id = arr[7];
+				// obj.addr = obj.province + obj.city + obj.district;
+				// console.log(obj.hospital,obj.hospital_id)
+				// console.log(obj.city,obj.city_id)
+				// console.log(obj.district,obj.district_id)
+				// console.log(obj.province,obj.province_id)
+			},
+			onSearchInput(val) {
+				this.searchVal = val.value;
+			},
+			// 选择机构
+			ListDate() {
+				let obj = this;
+				let data = '';
+				console.log('obj.searchVal', obj.searchVal);
+				if (!obj.searchVal) {
+					console.log('!obj.searchVal');
+					data = {
+						keyword: '',
+						// sort:'id desc',
+						page: 1,
+						limit: 1500
+					};
+				} else {
+					console.log('else');
+					console.log('当前input值', obj.searchVal);
+					data = {
+						keyword: obj.searchVal,
+						// sort:'id desc',
+						page: 1,
+						limit: 1500
+					};
+				}
+				mechanism(data).then(data => {
+					console.log('请求成功', data);
+					this.list = data.data.map(item => item);
+					// this.show = true
+				});
+				// getHospitalList(data).then(e => {
+				// 	obj.list = e.data.list;
+				// }).catch((e) => {
+				// 	console.log(e)
+				// });
+			},
+			onConfirm1(e) {
+				console.log('点击确认');
+				// let arr = e
+				this.mechanism = e.split(',')[1];
+				this.list = [];
+			},
+			imgsub() {
+				console.log('imgsub');
+				upload({
+					filename: ''
+				}).then(data => {
+					this.certificates = data[0].url;
+				});
+			},
+			join() {
+				let obj = this;
+				if (obj.name == '') {
+					obj.$api.msg('请输入您的姓名');
+					return;
+				}
 
-			const reg = /^(\+?0?86-?)?1[\d]\d{9}$/;
-			if (!reg.test(obj.phone)) {
-				obj.$api.msg('请填写正确的手机号码');
-				return;
-			}
-			if (obj.showaddress == '') {
-				obj.$api.msg('请选择您的所在地区');
-				return;
-			}
+				const reg = /^(\+?0?86-?)?1[\d]\d{9}$/;
+				if (!reg.test(obj.phone)) {
+					obj.$api.msg('请填写正确的手机号码');
+					return;
+				}
+				if (obj.showaddress == '') {
+					obj.$api.msg('请选择您的所在地区');
+					return;
+				}
 
-			if (obj.mechanism == '') {
-				obj.$api.msg('请输入机构关键字');
-				return;
-			}
+				if (obj.mechanism == '') {
+					obj.$api.msg('请选择机构');
+					return;
+				}
 
-			if (obj.certificates == '') {
-				obj.$api.msg('请上传救护员证书或身份证');
-				return;
-			}
-			obj.loding = true;
-			addrescuer({
-				name: obj.name,
-				phone: obj.phone,
-				address: obj.showaddress,
-				latitude: obj.addressData.latitude,
-				longitude: obj.addressData.longitude,
-				mechanism: obj.mechanism,
-				certificates: obj.certificates
-			})
-				.then(data => {
-					obj.loding = false;
-
-					if (data.status == 200) {
-						(obj.name = ''),
+				if (obj.certificates == '') {
+					obj.$api.msg('请上传救护员证书或身份证');
+					return;
+				}
+				obj.loding = true;
+				addrescuer({
+						name: obj.name,
+						phone: obj.phone,
+						address: obj.showaddress,
+						latitude: obj.addressData.latitude,
+						longitude: obj.addressData.longitude,
+						mechanism: obj.mechanism,
+						certificates: obj.certificates
+					})
+					.then(data => {
+						obj.loding = false;
+
+						if (data.status == 200) {
+							(obj.name = ''),
 							(obj.phone = ''),
 							(obj.showaddress = ''),
 							(obj.certificates = ''),
@@ -302,19 +331,19 @@ export default {
 									console.log('success');
 								}
 							});
-						uni.navigateTo({
-							url: '../joinSuc/joinNow'
-						});
-					} else if (data.status == 400) {
-						obj.$api.msg(data.msg);
-					}
-				})
-				.catch(err => {
-					console.log(err);
-				});
+							uni.navigateTo({
+								url: '../joinSuc/joinNow'
+							});
+						} else if (data.status == 400) {
+							obj.$api.msg(data.msg);
+						}
+					})
+					.catch(err => {
+						console.log(err);
+					});
+			}
 		}
-	}
-};
+	};
 </script>
 
 <style lang="scss">
@@ -322,270 +351,284 @@ export default {
 		// background-color: #FD3B34;
 		background-image: url();
 	}
-.content {
-	line-height: 1;
-	// background-color: #FD3B34;
-	.top {
-		width: 750rpx;
-		
-		.bgi {
-			display: block;
-			
-			width: 564rpx;
-			height: 678rpx;
-			margin: 53rpx auto;
-			// position: relative;
-			// top: -20rpx;
+
+	.content {
+		line-height: 1;
+
+		// background-color: #FD3B34;
+		.top {
+			width: 750rpx;
+
+			.bgi {
+				display: block;
+
+				width: 564rpx;
+				height: 678rpx;
+				margin: 53rpx auto;
+				// position: relative;
+				// top: -20rpx;
+			}
 		}
-	}
-	.top-xtitle {
-		font-size: 65rpx;
-		font-family: Microsoft YaHei;
-		font-weight: bold;
-		color: #FFFFFF;
-		line-height: 110rpx;
-		text-shadow: 0px 5px 8px rgba(96, 1, 0, 0.61);
-		text-align: center;
-	}
-	.top-title {
-		font-size: 85rpx;
-		font-family: PingFang SC;
-		font-weight: bold;
-		color: #FD424B;
-		font-family: Microsoft YaHei;
-		font-weight: bold;
-		color: #FFFFFF;
-		line-height: 110rpx;
-		text-shadow: 0px 5px 8px rgba(96, 1, 0, 0.61);
-		text-align: center;
-		padding-bottom: 69rpx;
-	}
 
-	.pop-box {
-		padding-top: 31rpx;
-		margin: 0 auto;
-		position: relative;
-		z-index: 99;
-		width: 156rpx;
-		height: 36rpx;
-		font-size: 38rpx;
-		font-family: PingFang SC;
-		font-weight: bold;
-		color: #FA7E67;
-		&::after {
-			content: '';
-			width: 220rpx;
-			height: 17rpx;
-			background: #FDCBC2;
-			opacity: 0.26;
-			position: absolute;
-			bottom: -35rpx;
-			left: -40rpx;
+		.top-xtitle {
+			font-size: 65rpx;
+			font-family: Microsoft YaHei;
+			font-weight: bold;
+			color: #FFFFFF;
+			line-height: 110rpx;
+			text-shadow: 0px 5px 8px rgba(96, 1, 0, 0.61);
+			text-align: center;
 		}
-	}
 
-	.red-box {
-		padding-top: 31rpx;
-		margin: 0 auto ;
-		position: relative;
-		z-index: 99;
-		width: 156rpx;
-		height: 36rpx;
-		font-size: 38rpx;
-		font-family: PingFang SC;
-		font-weight: bold;
-		color: #FA7E67;
-		&::after {
-			content: '';
-			width: 220rpx;
-			height: 17rpx;
-			background: #FDCBC2;
-			opacity: 0.26;
-			position: absolute;
-			bottom: -35rpx;
-			left: -40rpx;
+		.top-title {
+			font-size: 85rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #FD424B;
+			font-family: Microsoft YaHei;
+			font-weight: bold;
+			color: #FFFFFF;
+			line-height: 110rpx;
+			text-shadow: 0px 5px 8px rgba(96, 1, 0, 0.61);
+			text-align: center;
+			padding-bottom: 69rpx;
 		}
-	}
 
-	.red-box2 {
-		position: relative;
-		width: 405rpx;
-		line-height: 66rpx;
-		text-align: center;
-		background: linear-gradient(0deg, #c90f1b, #f14d33);
-		border-radius: 10rpx;
-		font-size: 30rpx;
-		font-weight: 500;
-		color: #ffffff;
-		margin: -80rpx auto 0;
-		position: relative;
-		z-index: 1;
-	}
+		.pop-box {
+			padding-top: 31rpx;
+			margin: 0 auto;
+			position: relative;
+			z-index: 99;
+			width: 156rpx;
+			height: 36rpx;
+			font-size: 38rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #FA7E67;
 
-	.pop-list {
-		width: 686rpx;
-		background: #ffffff;
-		border-radius: 29rpx;
-		position: relative;
-		margin: -33rpx auto 78rpx;
-		padding: 150rpx 0rpx 30rpx 30rpx;
-		display: flex;
-		flex-wrap: wrap;
-		box-shadow: 0px 10rpx 20rpx 0px rgba(254, 0, 8, 0.28);
-		.list-box1 {
+			&::after {
+				content: '';
+				width: 220rpx;
+				height: 17rpx;
+				background: #FDCBC2;
+				opacity: 0.26;
+				position: absolute;
+				bottom: -35rpx;
+				left: -40rpx;
+			}
+		}
+
+		.red-box {
+			padding-top: 31rpx;
+			margin: 0 auto;
+			position: relative;
+			z-index: 99;
+			width: 156rpx;
+			height: 36rpx;
+			font-size: 38rpx;
+			font-family: PingFang SC;
+			font-weight: bold;
+			color: #FA7E67;
+
+			&::after {
+				content: '';
+				width: 220rpx;
+				height: 17rpx;
+				background: #FDCBC2;
+				opacity: 0.26;
+				position: absolute;
+				bottom: -35rpx;
+				left: -40rpx;
+			}
+		}
+
+		.red-box2 {
+			position: relative;
+			width: 405rpx;
+			line-height: 66rpx;
 			text-align: center;
-			margin-right: 30rpx;
-			margin-bottom: 30rpx;
+			background: linear-gradient(0deg, #c90f1b, #f14d33);
+			border-radius: 10rpx;
+			font-size: 30rpx;
+			font-weight: 500;
+			color: #ffffff;
+			margin: -80rpx auto 0;
+			position: relative;
+			z-index: 1;
+		}
+
+		.pop-list {
+			width: 686rpx;
+			background: #ffffff;
+			border-radius: 29rpx;
+			position: relative;
+			margin: -33rpx auto 78rpx;
+			padding: 150rpx 0rpx 30rpx 30rpx;
+			display: flex;
+			flex-wrap: wrap;
+			box-shadow: 0px 10rpx 20rpx 0px rgba(254, 0, 8, 0.28);
 
-			.list-top {
-				width: 100rpx;
-				height: 100rpx;
+			.list-box1 {
+				text-align: center;
+				margin-right: 30rpx;
+				margin-bottom: 30rpx;
 
-				.avatar-img {
+				.list-top {
 					width: 100rpx;
 					height: 100rpx;
-					border-radius: 50%;
+
+					.avatar-img {
+						width: 100rpx;
+						height: 100rpx;
+						border-radius: 50%;
+					}
+				}
+
+				.nickname {
+					margin-top: 12rpx;
 				}
-			}
-			.nickname {
-				margin-top: 12rpx;
 			}
 		}
-	}
 
-	.list-box {
-		width: 686rpx;
-		background: #ffffff;
-		border-radius: 29rpx;
-		position: relative;
-		margin: -33rpx auto 0;
-		padding: 100rpx 30rpx 0rpx 30rpx;
-		display: flex;
-		flex-wrap: wrap;
-		box-shadow: 0px 10rpx 20rpx 0px rgba(254, 0, 8, 0.28);
-		.upload-box {
-			width: 100%;
-			height: 290rpx;
+		.list-box {
+			width: 686rpx;
 			background: #ffffff;
-			// border: 1px solid #E63931;
-			border-radius: 15rpx;
+			border-radius: 29rpx;
+			position: relative;
+			margin: -33rpx auto 0;
+			padding: 100rpx 30rpx 0rpx 30rpx;
 			display: flex;
-			flex-direction: column;
-			padding-top: 24rpx;
-			margin: 0 auto 50rpx;
-
-			.upload-left {
-				font-weight: 400;
-				color: #000;
-				text {
-					color: #FD424B;
-					font-size: 30rpx;
-				}
-			}
+			flex-wrap: wrap;
+			box-shadow: 0px 10rpx 20rpx 0px rgba(254, 0, 8, 0.28);
 
-			.upload-right {
-				margin-top: 16rpx;
+			.upload-box {
 				width: 100%;
-				height: 100%;
-				border: 1px solid #888888;
+				height: 290rpx;
+				background: #ffffff;
+				// border: 1px solid #E63931;
 				border-radius: 15rpx;
-				flex: 1;
 				display: flex;
-				align-items: center;
-				justify-content: center;
-
-				.upload-img {
-					width: 102rpx;
-					height: 102rpx;
-					// border: 1px solid #888888;
-					// border-radius: 3rpx;
-					// width: 133rpx;
-					// height: 133rpx;
-					// margin-top: 44rpx;
-				}
-			}
-		}
+				flex-direction: column;
+				padding-top: 24rpx;
+				margin: 0 auto 50rpx;
 
-		.list {
-			display: flex;
-			flex-direction: column;
-			align-items: center;
-			width: 100%;
-			margin-top: 32rpx;
-			// height: 133rpx;
+				.upload-left {
+					font-weight: 400;
+					color: #000;
 
-			.list-left {
-				width: 100%;
-				text-align: left;
-				color: #000;
-				text {
-					color: #FD424B;
-					font-size: 30rpx;
+					text {
+						color: #FD424B;
+						font-size: 30rpx;
+					}
 				}
-			}
 
-			input {
-				height: 66rpx;
-				// line-height: 66rpx;
-				margin-top: 32rpx;
-				// height: 88rpx;
-			}
+				.upload-right {
+					margin-top: 16rpx;
+					width: 100%;
+					height: 100%;
+					border: 1px solid #888888;
+					border-radius: 15rpx;
+					flex: 1;
+					display: flex;
+					align-items: center;
+					justify-content: center;
 
-			.list-input {
-				padding-left: 24rpx;
-				// margin: 12rpx 0 ;
+					.upload-img {
+						width: 102rpx;
+						height: 102rpx;
+						// border: 1px solid #888888;
+						// border-radius: 3rpx;
+						// width: 133rpx;
+						// height: 133rpx;
+						// margin-top: 44rpx;
+					}
+				}
+			}
 
-				line-height: 66rpx;
+			.list {
 				display: flex;
+				flex-direction: column;
 				align-items: center;
 				width: 100%;
-				font-size: 26rpx;
-				flex: 1;
-				color: #000;
-				border: 1rpx solid #929292;
-				border-radius: 15rpx;
-				text-align: left;
+				margin-top: 32rpx;
+				// height: 133rpx;
 
-				.input-placeholder {
-					height: 70rpx;
-					color: #929292;
+				.list-left {
+					width: 100%;
+					text-align: left;
+					color: #000;
+
+					text {
+						color: #FD424B;
+						font-size: 30rpx;
+					}
+				}
+
+				input {
+					height: 66rpx;
+					// line-height: 66rpx;
+					margin-top: 32rpx;
+					// height: 88rpx;
+				}
+
+				.list-input {
+					padding-left: 24rpx;
+					// margin: 12rpx 0 ;
+
+					line-height: 66rpx;
+					height: 66rpx;
+					display: flex;
+					align-items: center;
+					width: 100%;
 					font-size: 26rpx;
+					flex: 1;
+					color: #000;
+					border: 1rpx solid #929292;
+					border-radius: 15rpx;
+					text-align: left;
+
+					.input-placeholder {
+						height: 70rpx;
+						color: #929292;
+						font-size: 26rpx;
+					}
 				}
-			}
 
-			.box-right {
-				display: flex;
-				align-items: center;
-				padding-left: 24rpx;
-				height: 66rpx;
-				line-height: 66rpx;
-				border: 1rpx solid #f3afad;
-				border-radius: 22rpx;
-				margin: 32rpx 36rpx 0 36rpx;
-
-				width: 96%;
-				font-size: 36rpx;
-				color: #ff9797;
-				text-align: left;
-				line-height: 1;
+				.box-right {
+					display: flex;
+					align-items: center;
+					padding-left: 24rpx;
+					height: 66rpx;
+					line-height: 66rpx;
+					border: 1rpx solid #f3afad;
+					border-radius: 22rpx;
+					margin: 32rpx 36rpx 0 36rpx;
+
+					width: 96%;
+					font-size: 36rpx;
+					color: #ff9797;
+					text-align: left;
+					line-height: 1;
+				}
 			}
 		}
-	}
-	.sub {
-		width: 690rpx;
-		height: 83rpx;
-		background: #FF5056;
-		border-radius: 42rpx;
-		font-size: 32rpx;
-		font-family: PingFang SC;
-		font-weight: 500;
-		color: #FFFFFF;
-		line-height: 83rpx;
-		text-align: center;
-		margin: 53rpx auto 60rpx;
-		&.action {
-			background: #999999;
+
+		.sub {
+			width: 690rpx;
+			height: 83rpx;
+			background: #FF5056;
+			border-radius: 42rpx;
+			font-size: 32rpx;
+			font-family: PingFang SC;
+			font-weight: 500;
+			color: #FFFFFF;
+			line-height: 83rpx;
+			text-align: center;
+			margin: 53rpx auto 60rpx;
+
+			&.action {
+				background: #999999;
+			}
 		}
 	}
-}
 </style>

+ 5 - 5
pages/form/donaSuccess.vue

@@ -186,10 +186,10 @@ export default {
 			let obj = this;
 			// let money = obj.money;
 			let item = {
-				link: 'http://http://jz.red.igxys.com/index/#/pages/form/donaSuccess?money=' + obj.money, // 分享链接
-				imgUrl: 'http://http://jz.red.igxys.com/index/#/static/img/thinks.png',
-				desc: '感谢信',
-				title: '温岭市红十字会',
+				link: 'http://wl.igxys.com/index/#/pages/form/donaSuccess?money=' + obj.money, // 分享链接
+				imgUrl: 'http://jz.red.igxys.com/index/static/img/002.png',
+				desc: '弘扬红十字精神,传播红十字观念,宣传红十字工作,这是一个汇聚爱心、救助之家力量的平台!',
+				title: '来自温岭市红十字会的感谢信',
 				success: console.log('分享加载成功')
 			};
 			console.log('分享加', item);
@@ -242,7 +242,7 @@ export default {
 				duration: 1000
 			});
 			this.animationData = this.animation.export();
-		}
+		},
 		// ScanAudio(){
 		// 	this.$api.music.play(); //执行播放
 		// 				console.log('执行播放')

+ 214 - 0
pages/form/loveitem.vue

@@ -0,0 +1,214 @@
+<template>
+	<view class="content">
+		<view class="js" style="height: 20rpx;">
+
+		</view>
+		<view class="list-box" v-for="(item,index) in science" :key='index' @click="Jump(item)">
+			<view class="box-left">
+				<image :src="item.image_input[0]" mode="" class="left-img"></image>
+			</view>
+			<view class="box-right">
+				<view class="right-top word1_ellipsis clamp">
+					{{item.title}}
+				</view>
+				<view class="right-center clamp2">
+					{{item.synopsis}}
+				</view>
+				<!-- <view class="right-foot">
+					已阅读人数:{{item.visit || 0}}
+				</view> -->
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	import {
+		crtItemList
+	} from '@/api/index.js';
+	export default {
+		data() {
+			return {
+				keyword: '',
+				science: [],
+				cartId: '',
+			}
+		},
+		onLoad(opt) {
+			this.cartId = opt.id
+			if(this.cartId == 17) {
+				uni.setNavigationBarTitle({
+					title: '公益项目'
+				})
+			}else if(this.cartId == 18){
+				uni.setNavigationBarTitle({
+					title: '造血干细胞捐献'
+				})
+			}else if(this.cartId == 19) {
+				uni.setNavigationBarTitle({
+					title: '器官遗体捐献'
+				})
+			}
+			this.loadData();
+		},
+		filters: {
+			time(val) {
+				let arr = val.split(' ')
+				return arr[0]
+			}
+		},
+		methods: {
+			loadData() {
+				let obj = this;
+				crtItemList({
+					pages: 1,
+					limit: 20
+				}, obj.cartId).then(({
+					data
+				}) => {
+					console.log(data);
+					obj.science = data.list;
+					console.log(obj.science, '999999999999999999')
+				});
+			},
+			Jump(item) {
+				if(item.url) {
+					console.log(item.url)
+					window.location.href = item.url
+				}else {
+					uni.navigateTo({
+						url: "/pages/applic/info?id=" + item.id
+					})
+				}
+				
+			},
+		}
+	}
+</script>
+
+<style lang="scss">
+	//搜索框
+	.Search-box {
+		padding-left: 20rpx;
+		padding-right: 20rpx;
+		height: 100rpx;
+		background: #ffffff;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+
+		.Search-box-sort {
+			font-size: 30rpx;
+
+			font-weight: 500;
+			color: rgba(102, 102, 102, 1);
+
+			.sort-text {
+				width: 57rpx;
+				height: 29rpx;
+				font-size: 30rpx;
+				font-weight: 500;
+				color: rgba(51, 51, 51, 1);
+				line-height: 58rpx;
+				margin-right: 19rpx;
+			}
+
+			.sort-img {
+				width: 21rpx;
+				height: 11rpx;
+				margin-bottom: 4rpx;
+			}
+		}
+
+		.Search-box-size {
+			width: 630rpx;
+			height: 65rpx;
+			border-radius: 32rpx;
+			background-color: #f1f1f1;
+			padding-left: 36rpx;
+			display: flex;
+			align-items: center;
+
+			.box-img {
+				height: 32rpx;
+				width: 32rpx;
+				margin-right: 16rpx;
+			}
+
+			.box-word {
+				width: 100%;
+				font-size: 22rpx;
+				font-weight: 500;
+				color: rgba(205, 203, 203, 1);
+				line-height: 55rpx;
+			}
+		}
+	}
+
+	.content {
+		line-height: 1.5;
+
+		.list-box {
+			width: 725rpx;
+			height: 200rpx;
+			margin: 0 auto 20rpx;
+			background: #FFFFFF;
+			box-shadow: 0px 5rpx 5rpx 0px rgba(35, 24, 21, 0.06);
+			border-radius: 7rpx;
+			padding: 0 20rpx;
+			display: flex;
+			align-items: center;
+
+			.box-left {
+				width: 230rpx;
+				height: 145rpx;
+				margin-right: 20rpx;
+
+				.left-img {
+					width: 230rpx;
+					height: 145rpx;
+				}
+			}
+
+			.box-right {
+				width: 430rpx;
+				height: 145rpx;
+				position: relative;
+
+				.right-top {
+					line-height: 1.5;
+					font-size: 25rpx;
+					font-weight: bold;
+					color: #333333;
+					margin-bottom: 24rpx;
+				}
+
+				.right-center {
+					width: 362rpx;
+					// height: 53rpx;
+					font-size: 21rpx;
+					font-weight: bold;
+					color: #999999;
+					line-height: 33rpx;
+					overflow: hidden;
+					text-overflow: ellipsis;
+					display: -webkit-box;
+					-webkit-line-clamp: 2; //在第几行显示...
+					-webkit-box-orient: vertical;
+				}
+
+				.right-foot {
+					font-size: 21rpx;
+					font-weight: bold;
+					color: #999999;
+					line-height: 31rpx;
+					text-align: right;
+					// margin-top: 13rpx;
+					position: absolute;
+					right: 0;
+					bottom: 0;
+				}
+			}
+		}
+	}
+</style>

+ 335 - 279
pages/index/index.vue

@@ -7,7 +7,7 @@
 			</swiper>
 		</view>
 		<view class="bk-box">
-			<view class="box-item" v-for="item in navList" @click="navItemTo(item.cid)">
+			<view class="box-item" v-for="item in navList" @click="navItemTo(item.cid,item.name)">
 				<view class="item-logo">
 					<image :src="item.logo" mode=""></image>
 				</view>
@@ -48,42 +48,65 @@
 			<image src="../../static/img/sciencelogo.png" mode=""></image>
 		</view>
 		<!--  sos急救系统 -->
-		<view class="system" @click="tolocation">
-			<top-title :title="'救在身边'" @click="tolocation"></top-title>
+		<!-- <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="marker"
-					:scale="scale"
-					:latitude="latitude4"
-					:longitude="longitude4"
-					ref="map"
-					@markertap="markertap"
-				></map>
-				<!-- <view class="map-box" ><image src="../../static/img/map.jpg" mode=""></image></view> -->
+				<map class="map-box" id="map" show-location :markers="jzsbmarker" :scale="scale" :latitude="latitude4"
+					:longitude="longitude4" ref="map" @markertap="markertap"></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>
-
-		<view class="list-box">
-			<view class="system-title"><top-title :title="'救护站'" @click="tolocation"></top-title></view>
 			<view id="container">
-				<map
-					class="map-box"
-					id="map"
-					show-location
-					:markers="marker"
-					:scale="scale"
-					:latitude="latitude4"
-					:longitude="longitude4"
-					ref="map"
-					style="height: 450rpx"
-					@markertap="markertap"
-				></map>
+				<map class="map-box" id="map" show-location :markers="jhzmarker" :scale="scale" :latitude="latitude4"
+					:longitude="longitude4" ref="map" style="height: 450rpx" @markertap="jhzmarkertap"></map>
 			</view>
 			<view class="">
-				<view class="list-tpl flex" @click="openAddress(item)" v-for="(item, index) in Mechanism" :key="item.id">
+				<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">
@@ -98,28 +121,19 @@
 						</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'" @click="tolocation"></top-title></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="marker"
-					:scale="scale"
-					:latitude="latitude4"
-					:longitude="longitude4"
-					ref="map"
-					style="height: 450rpx"
-					@markertap="markertap"
-				></map>
+				<map class="map-box" id="map" show-location :markers="aedmarker" :scale="scale" :latitude="latitude4"
+					:longitude="longitude4" ref="map" style="height: 450rpx" @markertap="aedmarkertap"></map>
 			</view>
 			<view class="">
 				<view class="list-tpl flex" @click="openAddress(item)" v-for="(item, index) in AEDList" :key="item.id">
-					<template >
+					<template>
 						<view class="list-left">
 							<view class="info">
 								<view class="title">{{ item.introduction }}</view>
@@ -133,20 +147,37 @@
 						</view>
 					</template>
 				</view>
-				<!-- <uni-load-more :status="loadingType"></uni-load-more> -->
 			</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 class="rows-item" @click="toGoogleMap">
-						Google地图
-					</view> -->
-					<!-- <view class="row-1"><image class="first_aid" src="../../static/img/img03.jpg"></image></view> -->
-					<!-- <view class="row-2">扫码进入急救平台</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>
@@ -161,7 +192,7 @@ 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 { getcomAddress, getArticleList } from '@/api/index.js';
 import topTitle from '../../components/top-title/top-title.vue';
 export default {
 	components: {
@@ -179,7 +210,7 @@ export default {
 				},
 				{
 					logo: '../../static/icon/index2.png',
-					name: '认识红会',
+					name: '走近红会',
 					cid: 4,
 				},
 				{
@@ -199,7 +230,7 @@ export default {
 				},
 				{
 					logo: '../../static/icon/index6.png',
-					name: '器官捐献',
+					name: '器官遗体捐献',
 					cid: 8,
 				},
 				{
@@ -222,17 +253,30 @@ export default {
 					name: '志愿服务',
 					cid: 12,
 				},
+				// {
+				// 	logo: '',
+				// 	name: '红十字青少年',
+				// 	cid: 20,
+				// },
 				{
 					logo: '../../static/icon/index11.png',
 					name: '博爱家园',
 					cid: 13,
 				},
-				{
-					logo: '',
-					name: '',
-					cid: 0,
-				}
+				// {
+				// 	logo: '',
+				// 	name: '',
+				// 	cid: 0,
+				// }
 			],
+			name: '',
+			uid: '',
+			phone: '',
+			to_phone: '',
+			jzsbmarker: [],
+			jzsblist: [],
+			jhzmarker: [],
+			aedmarker: [],
 			carouselList: [], //轮播
 			science: [], //文章列表
 			page: 1,
@@ -296,130 +340,23 @@ export default {
 	},
 	onLoad() {
 		saveUrl();
-		let obj = this;
-		// obj.getNavList()
-		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: 'wgs84',
-					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: 'wgs84',
-				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: 'wgs84',
-					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: 'wgs84',
-				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'])
 	},
 	// 下拉加载
 	onReachBottom() {
-		this.loadData();
+		// this.loadData();
 	},
 	methods: {
 		...mapMutations('user', ['setUserInfo']),
 		//获取导航列表
-		navItemTo(cid) {
+		navItemTo(cid,name) {
 			let url = ''
 			if(cid == 0) {
 				return
 			}else if(cid !== 6) {
-				url = '/pages/article/list?cid=' + cid
+				url = '/pages/article/list?cid=' + cid + '&name=' + encodeURI(name)
 			}else {
 				url = '/pages/article/lists?cid=' + cid
 			}
@@ -525,115 +462,108 @@ export default {
 		loadData() {
 			let obj = this;
 			console.log('打印当前经纬度', obj.longitude4, obj.latitude4);
-			userinfo({}).then(({ data }) => {
+			userinfo({}).then(({
+				data
+			}) => {
 				obj.setUserInfo(data);
-				loadIndexs({}).then(({ data }) => {
+				loadIndexs({}).then(({
+					data
+				}) => {
 					obj.carouselList = data.banner; //轮播图
-					bannerlist().then(({ data }) => {
+					bannerlist().then(({
+						data
+					}) => {
 						console.log(data);
 						obj.science = data;
 					});
 				});
 			});
-			if (obj.loadingType === 'noMore') {
-				//防止重复加载
-				return;
-			}
-			// 修改当前对象状态为加载中
-			obj.loadingType = 'loading';
-			getListAED({
-				page: obj.page,
-				limit: obj.limit
-			}).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 = obj.AEDList.concat(data);
-				console.log(obj.AEDList, '999++++++++++++++++++++++++++');
-				obj.markerList = data;
-				obj.page++;
-				if (obj.limit == data.length) {
-					obj.loadingType = 'more';
-				} else {
-					obj.loadingType = 'noMore';
-				}
-			});
-			getListMechanism({
-				page: obj.page,
-				limit: obj.limit
-			}).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);
-				}
-				obj.Mechanism = obj.Mechanism.concat(data);
-				console.log(obj.Mechanism, '888++++++++++++++++++++++++++');
-				// obj.markerList = data;
-				obj.page2++;
-				if (obj.limit2 == data.length) {
-					obj.loadingType2 = 'more';
-				} else {
-					obj.loadingType2 = 'noMore';
-				}
-			})
-			getDistance({
-				lng1: obj.longitude4,
-				lat1: obj.latitude4
-			}).then(({ data }) => {
-				console.log(data, 980);
-				obj.AEDList = data;
-				obj.AEDList = data.slice(0, 5);
-				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.marker = obj.marker.concat(arr);
-				obj.marker = obj.marker.slice(0, 6);
-				// uni.showModal({
-				// 	title: '提示',
-				// 	content: JSON.stringify(obj.marker)
-				// })
-			});
+			// 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);
+			// });
 		},
-		// 选择当前位置
-		// chooseAddress() {
-		// 	console.log('233')
-		// 	let obj = this;
-		// 	uni.chooseLocation({
-		// 		success: function(res) {
-		// 			console.log(res)
-		// 			obj.addressData.area = res.name;
-		// 			console.log('位置名称:' + res.name);
-		// 			console.log('详细地址:' + res.address);
-		// 			console.log('经度:' + res.longitude);
-		// 			console.log('纬度:' + res.latitude);
-		// 			obj.addressData.latitude = res.latitude;
-		// 			obj.addressData.longitude = res.longitude;
-		// 			obj.addressDetail = res.address;
-		// 			console.log('common_address123',obj.addressDetail )
-		// 			console.log('latitude123',obj.addressData.latitude )
-		// 			console.log('longitude123',obj.addressData.longitude )
-		// 			getcomAddress({
-		// 				common_address: obj.addressDetail,
-		// 				longitude: obj.addressData.longitude,
-		// 				latitude: obj.addressData.latitude
-		// 			}).then(data => {
-		// 				console.log(333)
-		// 				console.log(data);
-		// 				if (data.status == 200) {
-		// 					obj.$api.msg('保存成功')
-		// 				}
-		// 			})
-		// 		}
-		// 	});
-		// },
 		// 导航
 		openAddress(item) {
 			let obj = this;
@@ -673,7 +603,68 @@ export default {
 			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>
@@ -1050,16 +1041,16 @@ a {
 .bk-box {
 	width: 750rpx;
 	height: 779rpx;
-	background-color: #eee;
+	background-color: #fff;
 	margin-top: 10rpx;
 	// background-color: red;
 	display: flex;
 	justify-content: flex-start;
 	flex-wrap: wrap;
 	.box-item {
-		width: 33%;
+		width: 250rpx;
 		height: 194rpx;
-		margin: 1rpx;
+		border: 1px solid #eee;
 		display: flex;
 		background-color: #fff;
 		flex-direction: column;
@@ -1083,4 +1074,69 @@ a {
 		}
 	}
 }
+.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;
+			}
+		}
+	}
 </style>

+ 463 - 0
pages/mourn/detail.vue

@@ -0,0 +1,463 @@
+<template>
+	<view class="content">
+		<view class="top-bg">
+			<image src="../../static/img/mourn-bg.png" mode="widthFix"></image>
+		</view>
+		<view class="list-wrap">
+			<view class="list flex">
+				<view class="list-tit">
+					{{peo.name}}简介
+				</view>
+				<!-- 				<view class="search-wrap">
+					<input type="text" value="" placeholder="请输入捐赠者" placeholder-class="search-placeholder" />
+					<image src="../../static/icon/search.png" mode=""></image>
+				</view> -->
+				<view class="mourn-mun">
+					<image src="../../static/icon/blackf.png" mode="widthFix"></image>
+					悼念总数:{{mournNum}}
+				</view>
+				<!-- 捐赠人信息 start -->
+				<view class="user-info">
+					<view class="user-img">
+						<image :src="peo.image" mode=""></image>
+						<image src="../../static/img/huak.png" alt="" />
+					</view>
+					<view class="user-base">
+						<view class="base-item">
+							<view class="base-item-name">姓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;名</view>
+							<view class="base-val">&nbsp;&nbsp;{{peo.name || ''}}</view>
+						</view>
+						<view class="base-item">
+							<view class="base-item-name">性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;别</view>
+							<view class="base-val">&nbsp;&nbsp;{{peo.age}}</view>
+						</view>
+						<view class="base-item">
+							<view class="base-item-name">享&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;年</view>
+							<view class="base-val">&nbsp;&nbsp;{{peo.dies}}</view>
+						</view>
+						<view class="base-item">
+							<view class="base-item-name">籍&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;贯</view>
+							<view class="base-val">&nbsp;&nbsp;{{peo.native}}</view>
+						</view>
+						<view class="base-item">
+							<view class="base-item-name">捐献项目</view>
+							<view class="base-val">&nbsp;&nbsp;{{peo.project}}</view>
+						</view>
+						<view class="base-item">
+							<view class="base-item-name">捐献日期</view>
+							<view class="base-val">&nbsp;&nbsp;{{peo.times }}</view>
+						</view>
+					</view>
+				</view>
+				<!-- 捐赠人信息 end -->
+				<!-- 悼念行为 start -->
+				<view class="online">
+					<view class="" style="height: 50rpx;">
+
+					</view>
+					<view class="online-tit">
+						<image src="../../static/img/online-tit.png" alt="" />
+						<view class="tit-tit">在线悼念</view>
+					</view>
+					<view class="online-tb">
+						<view class="tb-item">
+							<image src="../../static/img/online00.png" alt="" class="tb-item-logo"  @click="mournGive(1)"/>
+							<view class="tb-item-tit hand" @click="mournGive(1)">献花:{{ peo.flower }}</view>
+						</view>
+						<view class="tb-item">
+							<image src="../../static/img/online01.png" alt="" class="tb-item-logo" @click="mournGive(2)"/>
+							<view class="tb-item-tit hand" @click="mournGive(2)">点烛:{{ peo.candle }}</view>
+						</view>
+						<view class="tb-item">
+							<image src="../../static/img/online02.png" alt="" class="tb-item-logo" @click="mournGive(3)"/>
+							<view class="tb-item-tit hand" @click="mournGive(3)">上香:{{ peo.scented }}</view>
+						</view>
+						<view class="tb-item">
+							<image src="../../static/img/online03.png" alt="" class="tb-item-logo"  @click="mournGive(4)"/>
+							<view class="tb-item-tit hand" @click="mournGive(4)">祈祷:{{ peo.pray }}</view>
+						</view>
+					</view>
+					<view class="btm-img">
+						<image src="../../static/img/mourn-btm.png" mode=""></image>
+					</view>
+				</view>
+				<!-- 悼念行为 end -->
+			</view>
+
+		</view>
+	</view>
+</template>
+
+<script>
+	import { weixindata } from '@/utils/wxAuthorized.js';
+	import {
+		getMournDetail,
+		mournGive
+	} from '@/api/mourn.js'
+	export default {
+		data() {
+			return {
+				mournNum: 0,
+				peo: {},
+				id: 0,
+				loaded: false
+			}
+		},
+		filters: {
+			showTime(val) {
+				let str = ''
+				if (val) {
+					str = val.split(' ')[0]
+				}
+				return str
+			}
+		},
+		onShow() {
+			this.getMournDetail()
+		},
+		onLoad(opt) {
+			let obj = this
+			obj.id = opt.id
+			if (this.$store.state.isPlay) {} else {
+				if (this.$store.state.isAllow) {
+					uni.showModal({
+						title: '温馨提醒',
+						cancelText: '否',
+						confirmText: '是',
+						content: '是否播放背景音乐?',
+						success: function(res) {
+							if (res.confirm) {
+								obj.$api.playMusic(true)
+							} else if (res.cancel) {
+								obj.$store.state.isAllow = false
+							}
+						}
+					})
+				}
+			}
+			this.IndexShare()
+		},
+		methods: {
+			navto(url) {
+				//判断是否播放音乐
+				// 
+				uni.navigateTo({
+					url: url
+				})
+			},
+			//个人祭拜
+			mournGive(id) {
+				let obj = this
+				if (obj.loaded) {
+					obj.$api.msg('请勿频繁操作')
+				}
+				obj.loaded = true
+				mournGive({
+					id: obj.id,
+					type: id
+				}).then(res => {
+					if (id == 1) {
+						obj.peo.flower++
+					} else if (id == 2) {
+						obj.peo.candle++
+					} else if (id == 3) {
+						obj.peo.scented++
+					} else if (id == 4) {
+						obj.peo.pray++
+					}
+					obj.mournNum++
+					obj.loaded = false
+				})
+			},
+			// 获取个人悼念情况
+			getMournDetail() {
+				let obj = this
+				getMournDetail({
+					id: obj.id,
+				}).then((res) => {
+					obj.peo = res.data.data
+					obj.mournNum = res.data.count
+				});
+			},
+			IndexShare() {
+				let obj = this;
+				let item = {
+					link: obj.$store.state.baseURL + '/index/#/pages/mourn/detail?id=' + obj.id, // 分享链接
+					imgUrl: obj.$store.state.baseURL +'/index/static/img/002.png',
+					desc: '生命有限/大爱无限/器官(遗体、组织)捐献/让生命在爱中传递......',
+					title: '在线悼念捐献者',
+					success: console.log('分享加载成功')
+				};
+				console.log('分享加', item);
+				weixindata(item);
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page {
+		min-height: 100%;
+		background-color: #e0e3ea;
+	}
+
+	.top-bg {
+		width: 750rpx;
+
+		image {
+			width: 750rpx;
+		}
+	}
+
+	.list-wrap {
+		position: relative;
+		width: 710rpx;
+		margin: auto;
+		margin-top: -415rpx;
+		padding: 5rpx;
+		background-color: #fff;
+
+		.list {
+			width: 100%;
+			height: 752rpx;
+			border: 5rpx solid #006061;
+			position: relative;
+			padding-top: 124rpx;
+			flex-wrap: wrap;
+			// align-items: flex-start;
+			align-content: flex-start;
+
+			.list-tit {
+				// width: 314rpx;
+				position: absolute;
+				top: 0;
+				display: inline-block;
+				padding: 0 15rpx;
+				height: 54rpx;
+				line-height: 54rpx;
+				font-size: 20rpx;
+				background-color: #006061;
+				color: #fff;
+			}
+
+			.search-wrap {
+				width: 200rpx;
+				height: 32rpx;
+				// background-color: red;
+				position: absolute;
+				right: 10rpx;
+				top: 16rpx;
+				font-size: 20rpx;
+
+				.search-placeholder {
+					font-size: 20rpx;
+				}
+
+				input {
+					display: inline-block;
+					border-radius: 10rpx;
+					width: 200rpx;
+					height: 32rpx;
+					border: 1rpx solid #999;
+					padding: 0 10rpx;
+				}
+
+				image {
+					display: block;
+					position: absolute;
+					width: 25rpx;
+					height: 25rpx;
+					right: 10rpx;
+					top: 10rpx;
+				}
+			}
+
+			.mourn-mun {
+				position: absolute;
+				top: 10rpx;
+				text-align: right;
+				display: inline-block;
+				flex-wrap: nowrap;
+				align-items: center;
+				right: 10rpx;
+				font-weight: bold;
+
+				image {
+					width: 26rpx;
+					margin-right: 10rpx;
+				}
+			}
+
+			.list-item {
+				height: 245rpx;
+				width: 25%;
+
+				// text-align: center;
+				.item-img {
+					width: 121rpx;
+					height: 145rpx;
+					margin: auto;
+					position: relative;
+
+					image {
+						width: 100%;
+						height: 100%;
+						position: absolute;
+					}
+				}
+
+				.item-name {
+					text-align: center;
+					color: #000;
+					font-size: 22rpx;
+					font-weight: bold;
+					padding-top: 20rpx;
+					padding-bottom: 10rpx;
+				}
+
+				.item-btn {
+					width: 92rpx;
+					height: 30rpx;
+					background-color: #006061;
+					margin: auto;
+					text-align: center;
+					color: #fff;
+					border-radius: 10rpx;
+					font-size: 17rpx;
+					line-height: 30rpx;
+				}
+			}
+		}
+
+	}
+
+	.user-info {
+		// padding: 101rpx 0 96rpx 205rpx;
+		padding: 0 22rpx 0 25rpx;
+		width: 100%;
+		display: flex;
+
+		.user-img {
+			width: 121rpx;
+			height: 145rpx;
+			position: relative;
+
+			image {
+				width: 121rpx;
+				height: 145rpx;
+				position: absolute;
+			}
+
+			// position;
+		}
+
+		.user-base {
+			margin-left: 40rpx;
+			width: 546rpx;
+			display: flex;
+			//   flex-direction: ;
+			flex-wrap: wrap;
+			align-content: center;
+
+			.base-item {
+				width: 50%;
+				flex-shrink: 0;
+				// flex-grow: 0;
+				border-bottom: 1px dashed rgba(23, 18, 21, 0.21);
+				display: flex;
+				line-height: 50rpx;
+				height: 50rpx;
+				font-size: 19rpx;
+				font-family: PingFang SC;
+				font-weight: 500;
+				color: #0b1c29;
+
+				// line-height: 31rpx;
+				.base-item-name {
+					&::after {
+						content: ":";
+					}
+				}
+				.base-val {
+					padding-left: 10rpx;
+				}
+			}
+		}
+	}
+
+	.online {
+		width: 100%;
+
+		.online-tit {
+			position: relative;
+			width: 640rpx;
+			height: 70rpx;
+			margin: auto;
+
+			image {
+				width: 640rpx;
+				height: 70rpx;
+			}
+
+			.tit-tit {
+				width: 640rpx;
+				height: 70rpx;
+				line-height: 65rpx;
+				position: absolute;
+				top: 0;
+				left: 0;
+				right: 0;
+				bottom: 0;
+				margin: auto;
+				text-align: center;
+				font-size: 24rpx;
+				font-family: PingFang SC;
+				font-weight: bold;
+				color: #ffffff;
+			}
+		}
+
+		.online-tb {
+			width: 645rpx;
+			height: 180rpx;
+			// margin: auto;
+			margin: 47rpx auto 0;
+			display: flex;
+			justify-content: space-between;
+
+			.tb-item {
+				width: 132rpx;
+				height: 180rpx;
+				position: relative;
+
+				.tb-item-logo {
+					width: 132rpx;
+					height: 180rpx;
+				}
+
+				.tb-item-tit {
+					font-size: 16rpx;
+					font-family: PingFang SC;
+					font-weight: 500;
+					color: #ffffff;
+					line-height: 27rpx;
+					line-height: 40rpx;
+					position: absolute;
+					bottom: 0;
+					text-align: center;
+					width: 132rpx;
+				}
+			}
+		}
+	}
+	.btm-img {
+		width: 589rpx;
+		height: 30rpx;
+		margin: auto;
+		margin-top: 45rpx;
+		image {
+			width: 589rpx;
+			height: 30rpx;
+		}
+	}
+</style>

+ 302 - 0
pages/mourn/index.vue

@@ -0,0 +1,302 @@
+<template>
+	<view class="content">
+		<view class="top-bg">
+			<image src="../../static/img/mourn-bg.png" mode="widthFix"></image>
+		</view>
+		<view class="list-wrap">
+			<view class="list flex">
+				<view class="list-tit">
+					器官(遗体、器官)捐献网上缅怀
+				</view>
+				<view class="search-wrap">
+					<input type="text" v-model="keyword" placeholder="请输入捐赠者" placeholder-class="search-placeholder" />
+					<image src="../../static/icon/search.png" mode="" @click="search()"></image>
+					<!-- <image src="../../static/icon/blackf.png" mode=""></image> -->
+				</view>
+				<view class="mourn-mun">
+					<image src="../../static/icon/blackf.png" mode="widthFix"></image>
+					悼念总数:{{mournAll}}
+				</view>
+				<scroll-view scroll-y="true" class="scroll-wrap flex" :style="{'height': height}" @scrolltolower="getMournList">
+					<view class="list-item" v-for="item in list">
+						<view class="item-img">
+							<image :src="item.image" mode=""></image>
+							<image src="../../static/img/huak.png" mode=""></image>
+						</view>
+						<view class="item-name clamp">
+							{{item.name}}
+						</view>
+						<view class="item-btn" @click="navto('/pages/mourn/detail?id=' + item.id)">
+							在线悼念
+						</view>
+					</view>
+					<uni-load-more :status="loadingType"></uni-load-more>
+				</scroll-view>
+
+			</view>
+
+		</view>
+	</view>
+</template>
+
+<script>
+	import { weixindata } from '@/utils/wxAuthorized.js';
+	import {
+		getMournList,
+		getMournNum
+	} from '@/api/mourn.js'
+	export default {
+		data() {
+			return {
+				height: '',
+				mournAll: 0,
+				list: [],
+				keyword: '',
+				page: 1,
+				limit: 20,
+				loadingType: 'more'
+			}
+		},
+		onShow() {
+			// this.playMusic()
+			this.getMournList()
+			this.getAllNum()
+		},
+		onLoad() {
+			let obj = this
+			if (this.$store.state.isPlay) {} else {
+				if (this.$store.state.isAllow) {
+					uni.showModal({
+						title: '温馨提醒',
+						content:'是否播放背景音乐?',
+						cancelText:'否',
+						confirmText:'是',
+						success: function(res) {
+							if (res.confirm) {
+								obj.$api.playMusic(true)
+							} else if (res.cancel) {
+								obj.$store.state.isAllow = false
+							}
+						}
+					})
+				}
+			}
+			this.IndexShare()
+		},
+		onReady(res) {
+			var obj = this;
+			uni.getSystemInfo({
+				success: resu => {
+					const query = uni.createSelectorQuery();
+					query.select('.scroll-wrap').boundingClientRect();
+					query.exec(function(res) {
+						obj.height = resu.windowHeight - res[0].top - 210 + 'px';
+					});
+				},
+				fail: res => {}
+			});
+		},
+		methods: {
+			// 页面跳转
+			navto(url) {
+				console.log(this.$store.state.isPlay,'this.$store.state.isPlay')
+				if(!this.$store.state.isPlay) {
+					console.log('ddd')
+					this.$api.playMusic(true)
+				}
+				uni.navigateTo({
+					url: url
+				})
+			},
+			// 关键字查询
+			search() {
+				let obj = this
+				obj.list = []
+				obj.page = 1
+				obj.loadingType = 'more'
+				console.log(obj.keyword)
+				obj.getMournList()
+			},
+			// 获取捐赠人列表
+			getMournList() {
+				let obj = this
+				if(obj.loadingType == 'loading' || obj.loadingType == 'noMore') {
+					return
+				}
+				obj.loadingType = 'loading'
+				getMournList({
+					page: obj.page,
+					search: obj.keyword,
+					rows: obj.limit
+				}).then(res => {
+					console.log(res)
+					obj.list = obj.list.concat(res.data.data)
+					// obj.total = res.data.total
+					obj.page++
+					if(res.data.data.length == obj.limit) {
+						obj.loadingType = 'more'
+					}else {
+						obj.loadingType = 'noMore'
+					}
+				})
+			},
+			// 获取全部数据
+			getAllNum() {
+				getMournNum().then(res => {
+					console.log(res)
+					this.mournAll = res.msg
+				})
+			},
+			IndexShare() {
+				let obj = this;
+				let item = {
+					link: obj.$store.state.baseURL + '/index/#/pages/mourn/index', // 分享链接
+					imgUrl: obj.$store.state.baseURL +'/index/static/img/002.png',
+					desc: '生命有限/大爱无限/器官(遗体、组织)捐献/让生命在爱中传递......',
+					title: '在线悼念捐献者',
+					success: console.log('分享加载成功')
+				};
+				console.log('分享加', item);
+				weixindata(item);
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	page {
+		min-height: 100%;
+		background-color: #e0e3ea;
+	}
+
+	.top-bg {
+		width: 750rpx;
+
+		image {
+			width: 750rpx;
+		}
+	}
+
+	.list-wrap {
+		position: relative;
+		width: 710rpx;
+		margin: auto;
+		margin-top: -415rpx;
+		padding: 5rpx;
+		background-color: #fff;
+
+		.list {
+			width: 100%;
+			// min-height: 850rpx;
+			border: 5rpx solid #006061;
+			position: relative;
+			padding-top: 124rpx;
+			
+			.scroll-wrap {
+				flex-wrap: wrap;
+				// align-items: flex-start;
+				align-content: flex-start;
+			}
+			.list-tit {
+				// width: 314rpx;
+				position: absolute;
+				top: 0;
+				display: inline-block;
+				padding: 0 15rpx;
+				height: 54rpx;
+				line-height: 54rpx;
+				font-size: 20rpx;
+				background-color: #006061;
+				color: #fff;
+			}
+
+			.search-wrap {
+				width: 200rpx;
+				height: 32rpx;
+				// background-color: red;
+				position: absolute;
+				right: 10rpx;
+				top: 16rpx;
+				font-size: 20rpx;
+
+				.search-placeholder {
+					font-size: 20rpx;
+				}
+
+				input {
+					display: inline-block;
+					border-radius: 10rpx;
+					width: 200rpx;
+					height: 32rpx;
+					border: 1rpx solid #999;
+					padding: 0 10rpx;
+				}
+
+				image {
+					display: block;
+					position: absolute;
+					width: 25rpx;
+					height: 25rpx;
+					right: 10rpx;
+					top: 10rpx;
+				}
+			}
+
+			.mourn-mun {
+				position: absolute;
+				top: 70rpx;
+				text-align: right;
+				display: inline-block;
+				flex-wrap: nowrap;
+				align-items: center;
+				right: 10rpx;
+
+				image {
+					width: 26rpx;
+					margin-right: 5rpx;
+				}
+			}
+
+			.list-item {
+				height: 245rpx;
+				width: 25%;
+				display: inline-block;
+				// text-align: center;
+				.item-img {
+					width: 121rpx;
+					height: 145rpx;
+					margin: auto;
+					position: relative;
+
+					image {
+						width: 100%;
+						height: 100%;
+						position: absolute;
+					}
+				}
+
+				.item-name {
+					text-align: center;
+					color: #000;
+					font-size: 22rpx;
+					font-weight: bold;
+					padding-top: 20rpx;
+					padding-bottom: 10rpx;
+				}
+
+				.item-btn {
+					width: 92rpx;
+					height: 30rpx;
+					background-color: #006061;
+					margin: auto;
+					text-align: center;
+					color: #fff;
+					border-radius: 10rpx;
+					font-size: 17rpx;
+					line-height: 30rpx;
+				}
+			}
+		}
+
+	}
+</style>

+ 5 - 5
pages/redirect/redirect.vue

@@ -53,11 +53,11 @@
 				}) => {
 					obj.wchatAuth(data);
 				}).catch((e) => {
-					uni.showModal({
-						title: '错误',
-						content: JSON.stringify(e),
-						showCancel: false,
-					});
+					// uni.showModal({
+					// 	title: '错误',
+					// 	content: JSON.stringify(e),
+					// 	showCancel: false,
+					// });
 				});;
 			},
 			// #endif

+ 259 - 0
pages/share/search.vue

@@ -0,0 +1,259 @@
+<template>
+	<view class="content">
+		<image src="../../static/img/bz-bg.png" mode="widthFix" class="bz-bg"></image>
+		<view class="bz-tit flex">
+			<view class="hx"></view>
+			<view class="">
+				申请进度查询
+			</view>
+			<view class="hx"></view>
+		</view>
+		<view class="tab ">
+			<view class="bd-wrap flex">
+				<!--  -->
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入您的身份证号" class="val-ipt" v-model="cid"/>
+				</view>
+				<view class="btn" @click="search">
+					查询
+				</view>
+			</view>
+		</view>
+		<view class="tab" >
+			<view class="search-tit">
+				查询结果:
+			</view>
+			<view class="search-result" v-show="msg">
+				<view class="">
+					进度:{{msg}}
+				</view>
+				<view class="flex" style="padding-top: 20rpx;" v-show="resoon">
+					<text style="flex-shrink: 0;">拒绝理由:</text><text >{{resoon}}</text>
+				</view>
+			</view>
+			<view class="" v-show="msg == ''" style="padding: 20rpx;background-color: #fff;">
+				您提交的身份证号码未查到提交记录
+			</view>
+		</view>
+	</view>
+</template>
+
+<script>
+	//孕期检查信息(母子健康中心小程序上将带有孕妇姓名 的检查页进行截屏上传)
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex';
+	import {
+		saveUrl,
+		interceptor
+	} from '@/utils/loginUtils.js';
+	import {
+		upload,
+		addrescuer,
+		verify,
+		sub_list,
+		search
+	} from '@/api/ask.js';
+	export default {
+		data() {
+			return {
+				cid: '',
+				msg: '',
+				resoon: ''
+			}
+		},
+		filters: {
+			
+		},
+		watch:{
+			
+		},
+		computed: {
+
+		},
+		onShow() {
+			
+		},
+		methods: {
+			search() {
+				let obj = this
+				search({
+					cid: obj.cid
+				}).then(res => {
+					if(res.msg == '未发起申请') {
+						console.log(res,'dd')
+						obj.msg = ''
+					}else {
+						console.log(res)
+						obj.msg = res.data.msg
+						if(res.data.refuse) {
+							obj.resoon = res.data.refuse
+						}
+					}
+					
+					
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.search-tit {
+		padding: 20rpx;
+		background-color: #fff;
+		color: #f74342;
+		font-size: 28rpx;
+	}
+	.search-result {
+		padding: 20rpx 20rpx 20rpx 60rpx;
+		background-color: #fff;
+		font-size: 26rpx;
+	}
+	.bz-bg {
+		width: 750rpx;
+	}
+
+	.bz-tit {
+		align-items: center;
+		justify-content: center;
+		margin-top: 40rpx;
+		font-size: 36rpx;
+		font-weight: bold;
+		color: #f3392c;
+
+		.hx {
+			width: 70rpx;
+			height: 2rpx;
+			background-color: #f99a93;
+			margin: 0 25rpx;
+		}
+	}
+
+	.tab {
+		width: 690rpx;
+		border-radius: 20rpx;
+		overflow: hidden;
+		margin: 36rpx auto 0;
+		box-shadow: 0rpx 0rpx 10rpx rgba(0, 0, 0, 0.2);
+	}
+
+	.bd-wrap {
+		width: 690rpx;
+		height: 100rpx;
+		background-color: #fff;
+		border-bottom: 1px solid #f2f2f2;
+		line-height: 100rpx;
+		font-size: 32rpx;
+		position: relative;
+		.code {
+			position: absolute;
+			width: 100rpx;
+			height: 100rpx;
+			right: 10rpx;
+			color: #f64342;
+			font-size: 23rpx;
+		}
+		.bg-name {
+			width: 260rpx;
+			height: 100%;
+			padding-left: 20rpx;
+		}
+
+		.bg-val {
+			width: 540rpx;
+			height: 100%;
+
+			.val-ipt {
+				display: inline-block;
+				width: 100%;
+				height: 100%;
+				// background-color: #009100;
+				padding-left: 10rpx;
+
+			}
+		}
+		.btn {
+			width: 150rpx;
+			height: 100rpx;
+			background-color: #f74342;
+			color: #fff;
+			text-align: center;
+		}
+	}
+
+	.sub {
+		margin-top: 100rpx;
+		text-align: center;
+		font-size: 40rpx;
+		color: #fff;
+		font-weight: bold;
+		line-height: 100rpx;
+		width: 750rpx;
+		background-color: #f3392c;
+	}
+
+	.sm-wrap {
+		background-color: #fff;
+		padding-bottom: 28rpx;
+		border-bottom: 1px solid #f2f2f2;
+		position: relative;
+
+		.sm-tit {
+			// line-height: 87rpx;
+			padding: 20rpx;
+			font-size: 32rpx;
+			line-height: 1.5;
+			// padding-left: 20rpx;
+		}
+
+		.text-area {
+			height: 156rpx;
+			width: 634rpx;
+			border-radius: 20rpx;
+			border: 1px solid #e8e8e8;
+			margin: auto;
+			padding: 10rpx;
+		}
+
+		.pic-num {
+			position: absolute;
+			width: 75rpx;
+			line-height: 34rpx;
+			border-radius: 17rpx;
+			background-color: #f3392c;
+			color: #fff;
+			font-size: 28rpx;
+			text-align: center;
+			right: 10rpx;
+			top: 22rpx;
+		}
+
+		.img-list {
+			padding-left: 28rpx;
+
+			.img-item {
+				width: 160rpx;
+				height: 160rpx;
+				position: relative;
+				margin-right: 20rpx;
+
+				.upimg {
+					width: 160rpx;
+					height: 160rpx;
+				}
+
+				.delimg {
+					width: 39rpx;
+					height: 38rpx;
+					position: absolute;
+					top: 0;
+					right: 0;
+				}
+
+			}
+
+		}
+	}
+</style>

+ 582 - 0
pages/share/subsidy.vue

@@ -0,0 +1,582 @@
+<template>
+	<view class="content">
+		<image src="../../static/img/bz-bg.png" mode="widthFix" class="bz-bg"></image>
+		<view class="bz-tit flex">
+			<view class="hx"></view>
+			<view class="">
+				报名申请
+			</view>
+			<view class="hx"></view>
+		</view>
+		<view class="tab ">
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					姓名:
+				</view>
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入您的姓名" class="val-ipt" v-model="name"/>
+				</view>
+			</view>
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					年龄:
+				</view>
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入您的年龄" class="val-ipt" v-model="age"/>
+				</view>
+			</view>
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					身份证号:
+				</view>
+				<view class="bg-val">
+					<input type="idcard" value="" placeholder="请输入您的身份证号" class="val-ipt" v-model="cid"/>
+				</view>
+			</view>
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					配偶姓名:
+				</view>
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入您的配偶姓名" class="val-ipt" v-model="sname"/>
+				</view>
+			</view>
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					配偶年龄:
+				</view>
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入您的配偶年龄" class="val-ipt" v-model="sage"/>
+				</view>
+			</view>
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					配偶身份证号:
+				</view>
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入配偶身份证号" class="val-ipt" v-model="scid"/>
+				</view>
+			</view>
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					银行卡号:
+				</view>
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入银行卡号" class="val-ipt" v-model="bcd"/>
+				</view>
+			</view>
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					开户行:
+				</view>
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入开户行" class="val-ipt" v-model="bank"/>
+				</view>
+			</view>
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					联系电话:
+				</view>
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入联系电话" class="val-ipt" v-model="phone"/>
+				</view>
+			</view>
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					产检次数:
+				</view>
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入产检次数" class="val-ipt" v-model="check"/>
+				</view>
+			</view>
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					家庭年总收入:
+				</view>
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入家庭年总收入" class="val-ipt" v-model="income"/>
+				</view>
+			</view>
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					家庭人口:
+				</view>
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入家庭人口" class="val-ipt" v-model="person"/>
+				</view>
+			</view>
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					现居住地址:
+				</view>
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入现居住地址" class="val-ipt" v-model="address"/>
+				</view>
+			</view>
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					户籍地址:
+				</view>
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入户籍地址" class="val-ipt" v-model="reg"/>
+				</view>
+			</view>
+			<view class="bd-wrap flex">
+				<view class="bg-name">
+					验证码:
+				</view>
+				<view class="bg-val">
+					<input type="text" value="" placeholder="请输入验证码" class="val-ipt" v-model="code"/>
+				</view>
+				<view class="code" @click="verification">{{ countDown == 0 ? '获取验证码' : countDown }}</view>
+			</view>
+			<view class="sm-wrap">
+				<view class="sm-tit">
+					有无其他妊娠合并疾病,如有,请说明:
+				</view>
+				<textarea value="" placeholder="" class="text-area" v-model="explain"/>
+			</view>
+			<view class="sm-wrap">
+				<view class="sm-tit">
+					孕产妇身份证正反面:
+				</view>
+				<view class="pic-num">
+					{{cidimg | showNum}}/2
+				</view>
+				<view class="img-list flex">
+					<view class="img-item" v-for="(sfzItem,sfzIndex) in cidimg" @click="upImag(sfzIndex,cidimg)" v-show="sfzShow">
+						<image :src="sfzItem" mode="" class="upimg" v-if="sfzItem"></image>
+						<image src="../../static/img/up-img.png" mode="" class="upimg" v-else></image>
+						<image src="../../static/icon/delimg.png" mode="" class="delimg" @click.stop="delImg(sfzIndex,cidimg)"
+							v-if="sfzItem"></image>
+					</view>
+				</view>
+			</view>
+			<view class="sm-wrap">
+				<view class="sm-tit" style="padding-right: 30rpx;">
+					孕期检查信息(母子健康中心小程序上将带有孕妇姓名的检查页进行截屏上传)
+				</view>
+				<view class="img-list flex">
+					<view class="img-item" v-for="(checkItem,checkIndex) in checkimg" @click="upImag(checkIndex,checkimg)">
+						<image :src="checkItem" mode="" class="upimg" v-if="checkItem"></image>
+						<image src="../../static/img/up-img.png" mode="" class="upimg" v-else></image>
+						<image src="../../static/icon/delimg.png" mode="" class="delimg" @click.stop="delImg(checkIndex,checkimg)"
+							v-if="checkItem"></image>
+					</view>
+				</view>
+			</view>
+			<view class="sm-wrap">
+				<view class="sm-tit" style="padding-right: 100rpx;">
+					银行卡带有账号信息面(须为孕产妇本人名下)
+				</view>
+				<view class="img-list flex">
+					<view class="img-item" @click="upImag1()">
+						<image :src="bcdimg" mode="" class="upimg" v-if="bcdimg"></image>
+						<image src="../../static/img/up-img.png" mode="" class="upimg" v-else></image>
+						<image src="../../static/icon/delimg.png" mode="" class="delimg" @click.stop="delImg1()"
+							v-if="bcdimg"></image>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="sub" @click="sub">
+			提交申请
+		</view>
+	</view>
+</template>
+
+<script>
+	//孕期检查信息(母子健康中心小程序上将带有孕妇姓名 的检查页进行截屏上传)
+	import {
+		mapState,
+		mapMutations
+	} from 'vuex';
+	import {
+		saveUrl,
+		interceptor
+	} from '@/utils/loginUtils.js';
+	import {
+		upload,
+		addrescuer,
+		verify,
+		sub_list
+	} from '@/api/ask.js';
+	export default {
+		data() {
+			return {
+				name: '', //姓名
+				age: '', //年龄
+				cid: '', //身份证号
+				sname: '', //配偶姓名
+				sage: '', //配偶年龄
+				scid: '', //配偶身份证号
+				bcd: '', //银行卡号
+				bank: '', //开户行
+				phone: '', //联系电话
+				check: '', //产检次数
+				income: '', //收入
+				person: '', //人口
+				address: '', //地址
+				explain: '', //说明
+				cidimg: ['',''], //身份证正反面
+				checkimg: ['','',''], //检查图片截图
+				bcdimg: '', //银行卡图片
+				code: '', //验证码
+				reg: '', //户籍
+				sfzShow: true,
+				checkShow: true,
+				sfzNum: 0,
+				countDown: 0,
+				loadingType: 'more'
+			}
+		},
+		filters: {
+			showNum(val) {
+				let i = 0
+				if(val) {
+					val.forEach(e => {
+						if(e) {
+							i++
+						}
+					})
+				}
+				return i
+			}
+		},
+		watch:{
+			countDown(i) {
+				if (i == 0) {
+					clearInterval(this.time);
+				}
+			}
+		},
+		computed: {
+			...mapState('user', ['hasLogin', 'userInfo']),
+		},
+		onShow() {
+			console.log(this);
+			//	判断是否已经登录
+			if (this.hasLogin) {
+				
+			} else {
+				saveUrl();
+				uni.showModal({
+					title: '登录',
+					content: '您未登录,是否马上登陆?',
+					success: e => {
+						if (e.confirm) {
+							interceptor();
+						}
+					},
+					fail: e => {
+						console.log(e);
+					}
+				});
+			}
+		},
+		methods: {
+			//发送验证码
+			verification() {
+				let obj = this;
+				if (this.phone == '') {
+					this.$api.msg('请输入电话号码');
+					return;
+				}
+				if (this.phone.length < 11) {
+					this.$api.msg('请输入正确的手机号');
+					return;
+				}
+				// 判断是否在倒计时
+				if (obj.countDown > 0) {
+					return false;
+				} else {
+					obj.countDown = 60;
+					obj.time = setInterval(() => {
+						obj.countDown--;
+					}, 1000);
+					//调用验证码接口
+					verify({
+						phone: obj.phone,
+						type: 'VERIFICATION_CODE'
+					})
+						.then(({ data }) => {})
+						.catch(err => {
+							console.log(err);
+						});
+				}
+			},
+			// 
+			upImag(index,list) {
+				console.log('上传')
+				let obj = this
+				upload({
+					filename: ''
+				}).then(res => {
+					console.log(res[0].url)
+					obj.sfzShow = false
+					list[index] = res[0].url
+					obj.sfzShow = true
+				});
+			},
+			upImag1() {
+				console.log('上传')
+				let obj = this
+				upload({
+					filename: ''
+				}).then(res => {
+					console.log(res[0].url)
+					obj.bcdimg = res[0].url
+				});
+			},
+			delImg(index,list) {
+				console.log('删除')
+				this.sfzShow = false
+				list[index] = ''
+				this.sfzShow = true
+				
+			},
+			delImg1() {
+				this.bcdimg = ''
+			},
+			sub() {
+				let obj = this
+				if(obj.loadingType == 'loading') {
+					return
+				}
+				// 校验
+				if (obj.name == '') {
+					return obj.$api.msg('请输入您的姓名')
+				}
+				if (obj.age == '') {
+					return obj.$api.msg('请输入您的年龄')
+				}
+				if (obj.cid == '') {
+					return obj.$api.msg('请输入您的身份证号')
+				}
+				if (obj.sname == '') {
+					return obj.$api.msg('请输入您的配偶姓名')
+				}
+				if (obj.sage == '') {
+					return obj.$api.msg('请输入您的配偶年龄')
+				}
+				if (obj.scid == '') {
+					return obj.$api.msg('请输入您的配偶身份证号')
+				}
+				if (obj.bcd == '') {
+					return obj.$api.msg('请输入您的银行卡号')
+				}
+				if (obj.bank == '') {
+					return obj.$api.msg('请输入开户行')
+				}
+				if (obj.phone == '') {
+					return obj.$api.msg('请输入您的联系电话')
+				}
+				if (obj.check == '') {
+					return obj.$api.msg('请输入您的产检次数')
+				}
+				if (obj.income == '') {
+					return obj.$api.msg('请输入家庭年总收入')
+				}
+				if (obj.address == '') {
+					return obj.$api.msg('请输入现居住地址')
+				}
+				if (obj.reg == '') {
+					return obj.$api.msg('请输入户籍地址')
+				}
+				if(obj.code == '') {
+					return obj.$api.msg('请输入验证码')
+				}
+				// 身份证正反面拼接 
+				let cidimg = obj.cidimg[0] + ',' + obj.cidimg[1]
+ 				if(obj.cidimg[0] == '' || obj.cidimg[1] == '') {
+					return obj.$api.msg('请上传身份证正反面')
+				}
+				// 孕期检查信息拼接
+				let checkimg = ''
+				obj.checkimg.forEach(e => {
+					if(e) {
+						checkimg = e + ',' + checkimg 
+					}
+				})
+				
+				if(checkimg.length == 0) {
+					return obj.$api.msg('请上传孕期检查信息')
+				}else {
+					checkimg = checkimg.substr(0, checkimg.length - 1)
+				}
+				if (obj.bcdimg == '') {
+					return obj.$api.msg('请上传银行卡照片')
+				}
+				obj.loadingType = 'loading'
+				sub_list({
+					name: obj.name, //姓名
+					age: obj.age, //年龄
+					cid: obj.cid, //身份证号
+					sname: obj.sname, //配偶姓名
+					sage: obj.sage, //配偶年龄
+					scid: obj.scid, //配偶身份证号
+					bcd: obj.bcd, //银行卡号
+					bank: obj.bank,//开户行
+					phone: obj.phone, //联系电话
+					check: obj.check, //产检次数
+					income: obj.income, //收入
+					person: obj.person, //人口
+					address: obj.address, //地址
+					explain: obj.explain, //说明
+					cidimg: cidimg, //身份证正反面
+					checkimg: checkimg, //检查图片截图
+					bcdimg: obj.bcdimg, //银行卡图片
+					code: obj.code, //验证码
+					reg: obj.reg, //户籍
+				}).then(res => {
+					obj.loadingType = 'more'
+					uni.showToast({
+						title: '提交成功',
+						duration: 2000
+					});
+				})
+			}
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.bz-bg {
+		width: 750rpx;
+	}
+
+	.bz-tit {
+		align-items: center;
+		justify-content: center;
+		margin-top: 40rpx;
+		font-size: 36rpx;
+		font-weight: bold;
+		color: #f3392c;
+
+		.hx {
+			width: 70rpx;
+			height: 2rpx;
+			background-color: #f99a93;
+			margin: 0 25rpx;
+		}
+	}
+
+	.tab {
+		width: 690rpx;
+		border-radius: 20rpx;
+		overflow: hidden;
+		margin: 36rpx auto 0;
+		box-shadow: 0rpx 0rpx 10rpx rgba(0, 0, 0, 0.2);
+	}
+
+	.bd-wrap {
+		width: 690rpx;
+		height: 100rpx;
+		background-color: #fff;
+		border-bottom: 1px solid #f2f2f2;
+		line-height: 100rpx;
+		font-size: 32rpx;
+		position: relative;
+		.code {
+			position: absolute;
+			width: 100rpx;
+			height: 100rpx;
+			right: 10rpx;
+			color: #f64342;
+			font-size: 23rpx;
+		}
+		.bg-name {
+			width: 260rpx;
+			height: 100%;
+			padding-left: 20rpx;
+		}
+
+		.bg-val {
+			width: 430rpx;
+			height: 100%;
+
+			.val-ipt {
+				display: inline-block;
+				width: 100%;
+				height: 100%;
+				// background-color: #009100;
+				padding-left: 10rpx;
+
+			}
+		}
+	}
+
+	.sub {
+		margin-top: 100rpx;
+		text-align: center;
+		font-size: 40rpx;
+		color: #fff;
+		font-weight: bold;
+		line-height: 100rpx;
+		width: 750rpx;
+		background-color: #f3392c;
+	}
+
+	.sm-wrap {
+		background-color: #fff;
+		padding-bottom: 28rpx;
+		border-bottom: 1px solid #f2f2f2;
+		position: relative;
+
+		.sm-tit {
+			// line-height: 87rpx;
+			padding: 20rpx;
+			font-size: 32rpx;
+			line-height: 1.5;
+			// padding-left: 20rpx;
+		}
+
+		.text-area {
+			height: 156rpx;
+			width: 634rpx;
+			border-radius: 20rpx;
+			border: 1px solid #e8e8e8;
+			margin: auto;
+			padding: 10rpx;
+		}
+
+		.pic-num {
+			position: absolute;
+			width: 75rpx;
+			line-height: 34rpx;
+			border-radius: 17rpx;
+			background-color: #f3392c;
+			color: #fff;
+			font-size: 28rpx;
+			text-align: center;
+			right: 10rpx;
+			top: 22rpx;
+		}
+
+		.img-list {
+			padding-left: 28rpx;
+
+			.img-item {
+				width: 160rpx;
+				height: 160rpx;
+				position: relative;
+				margin-right: 20rpx;
+
+				.upimg {
+					width: 160rpx;
+					height: 160rpx;
+				}
+
+				.delimg {
+					width: 39rpx;
+					height: 38rpx;
+					position: absolute;
+					top: 0;
+					right: 0;
+				}
+
+			}
+
+		}
+	}
+</style>

+ 5 - 5
pages/user/user.vue

@@ -3,7 +3,7 @@
 		<view class="top">
 			<view class="avater">
 				<image :src="userInfo.avatar" class="avater-img" mode="" v-if="userInfo.avatar"></image>
-				<image src="../../static/img/002.png" mode="" v-else></image>
+				<image src="../../static/img/002.png" mode="" v-else class="avater-img"></image>
 			</view>
 			<view class="name-box">
 				<view class="name-top">
@@ -17,7 +17,7 @@
 			</view>
 		</view>
 		<view class="nav-wrapper">
-			<view class="nav-item flex" @click="tohelp">
+			<!-- <view class="nav-item flex" @click="tohelp">
 				<view class="item-left flex">
 					<image src="../../static/icon/i6.png" mode="" class="img1"></image>
 					<view class="title">我的求救</view>
@@ -25,8 +25,8 @@
 				<view class="item-right">
 					>
 				</view>
-			</view>
-			<view class="nav-item flex" @click="torreco">
+			</view> -->
+			<!-- <view class="nav-item flex" @click="torreco">
 				<view class="item-left flex">
 					<image src="../../static/icon/i7.png" mode="" class="img2"></image>
 					<view class="title">我的救援</view>
@@ -34,7 +34,7 @@
 				<view class="item-right">
 					>
 				</view>
-			</view>
+			</view> -->
 			<view class="nav-item flex" @click="commonaddress">
 				<view class="item-left flex">
 					<image src="../../static/icon/i8.png" mode="" class="img3"></image>

BIN
static/audio/bg-music.mp3


BIN
static/icon/blackf.png


BIN
static/icon/delimg.png


BIN
static/icon/search.png


BIN
static/images/listtop.jpg


BIN
static/img/bz-bg.png


BIN
static/img/huak.png


BIN
static/img/mourn-bg.png


BIN
static/img/mourn-btm.png


BIN
static/img/online-tit.png


BIN
static/img/online00.png


BIN
static/img/online01.png


BIN
static/img/online02.png


BIN
static/img/online03.png


BIN
static/img/up-img.png


+ 2 - 0
store/index.js

@@ -16,6 +16,8 @@ const store = new Vuex.Store({
 		token:'',
 		// #ifdef H5 
 		setWeiChatInfo:'',
+		isPlay: false,//音乐是否在播放
+		isAllow: true,//是否允许播放
 		Spread:'',
 		weichatInfo: {}, //保存微信注册信息
 		weichatObj: '', //微信对象

+ 1 - 1
unpackage/dist/build/h5/index.html

@@ -1,2 +1,2 @@
 <!DOCTYPE html><html lang=zh-CN><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><title>温岭市红十字会</title><script>var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
-            document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/index/static/index.f4fc78fe.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/index/static/js/chunk-vendors.2289ab77.js></script><script src=/index/static/js/index.7618f6cb.js></script></body></html>
+            document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')</script><link rel=stylesheet href=/index/static/index.a5c69d49.css></head><body><noscript><strong>Please enable JavaScript to continue.</strong></noscript><div id=app></div><script src=/index/static/js/chunk-vendors.5609f4ed.js></script><script src=/index/static/js/index.d748940b.js></script></body></html>

BIN
unpackage/dist/build/h5/static/audio/bg-music.mp3


BIN
unpackage/dist/build/h5/static/icon/blackf.png


BIN
unpackage/dist/build/h5/static/icon/delimg.png


BIN
unpackage/dist/build/h5/static/icon/index1.png


BIN
unpackage/dist/build/h5/static/icon/index10.png


BIN
unpackage/dist/build/h5/static/icon/index11.png


BIN
unpackage/dist/build/h5/static/icon/index2.png


BIN
unpackage/dist/build/h5/static/icon/index3.png


BIN
unpackage/dist/build/h5/static/icon/index4.png


BIN
unpackage/dist/build/h5/static/icon/index5.png


BIN
unpackage/dist/build/h5/static/icon/index6.png


BIN
unpackage/dist/build/h5/static/icon/index7.png


BIN
unpackage/dist/build/h5/static/icon/index8.png


BIN
unpackage/dist/build/h5/static/icon/index9.png


BIN
unpackage/dist/build/h5/static/icon/search.png


BIN
unpackage/dist/build/h5/static/images/listtop.jpg


BIN
unpackage/dist/build/h5/static/img/bz-bg.9e05be61.png


BIN
unpackage/dist/build/h5/static/img/bz-bg.png


BIN
unpackage/dist/build/h5/static/img/huak.34230231.png


BIN
unpackage/dist/build/h5/static/img/huak.png


BIN
unpackage/dist/build/h5/static/img/i7.7074ee26.png


BIN
unpackage/dist/build/h5/static/img/icon1.b77b3f81.png


BIN
unpackage/dist/build/h5/static/img/icon3.154daed2.png


BIN
unpackage/dist/build/h5/static/img/icon4.b5d7039a.png


BIN
unpackage/dist/build/h5/static/img/listtop.636363df.jpg


BIN
unpackage/dist/build/h5/static/img/mourn-bg.b3b850b0.png


BIN
unpackage/dist/build/h5/static/img/mourn-bg.png


BIN
unpackage/dist/build/h5/static/img/mourn-btm.69a4cc9c.png


BIN
unpackage/dist/build/h5/static/img/mourn-btm.png


BIN
unpackage/dist/build/h5/static/img/online-tit.26147048.png


BIN
unpackage/dist/build/h5/static/img/online-tit.png


BIN
unpackage/dist/build/h5/static/img/online00.56174202.png


BIN
unpackage/dist/build/h5/static/img/online00.png


BIN
unpackage/dist/build/h5/static/img/online01.76c05afd.png


BIN
unpackage/dist/build/h5/static/img/online01.png


BIN
unpackage/dist/build/h5/static/img/online02.3fea40f4.png


BIN
unpackage/dist/build/h5/static/img/online02.png


BIN
unpackage/dist/build/h5/static/img/online03.c62473fe.png


BIN
unpackage/dist/build/h5/static/img/online03.png


BIN
unpackage/dist/build/h5/static/img/up-img.png


BIN
unpackage/dist/build/h5/static/img/zffw.da8fd5d1.jpg


BIN
unpackage/dist/build/h5/static/img/zffw.jpg


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/build/h5/static/index.a5c69d49.css


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/build/h5/static/index.f4fc78fe.css


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/build/h5/static/js/chunk-vendors.2289ab77.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/build/h5/static/js/chunk-vendors.5609f4ed.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/build/h5/static/js/index.7618f6cb.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/build/h5/static/js/index.d748940b.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-applic-aed.f19ac380.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-applic-aed~pages-applic-aid~pages-applic-contribution~pages-applic-helprecords~pages-applic-lo~7aea9a4a.7db0df8b.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-applic-aed~pages-applic-aid~pages-applic-location.db953604.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-applic-aid.eaeb61ec.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-applic-appliSystem.3180282c.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-applic-appliSystem.385dca3f.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-applic-applic.3ef53f37.js


Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
unpackage/dist/build/h5/static/js/pages-applic-applic.67d017c3.js


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels